LoginSignup
5
5

More than 5 years have passed since last update.

Arduino Nanoを使って12Vの電圧計測

Last updated at Posted at 2018-06-17

はじめに

ソーラーパネルとバッテリーで動作するシステムを開発中で、バッテリーの出力電圧を確認する必要がでてきたことからArduino Nanoを使って電圧を測定する仕組みを用意しました。

回路図

20180617152333106.gif

ちなみに、ラズパイの電源もバッテリーを使用していることから、接地(GND)の電位をあわせる必要があり、ArduinoのGNDは必ずバッテリーの(ー)に接続されるようにします。

Arduino Nanoは以下のものを使用しています。

Mini USB Arduino Nano V3.0 改造バージョン Arduino Nano V3.0互換ボード ATmega328P搭載 (5個)

Arduinoスケッチ

アナログポート0に接続された電圧を測定し、シリアル通信で出力します。
ここでは、3MΩの抵抗に電圧をかけながら1MΩにかかる電圧を測定していることから、計測される電圧値は全体の1/3となっています。そこで、測定電圧を3倍することで実際の電圧に換算できるよう計算しています。

double value;
char x;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  value = 0.0;
}

void loop() {
  // put your main code here, to run repeatedly:
  if (Serial.available()) {
    x = Serial.read();

    if (x == ' ') {
      value = analogRead(A0);
      value *= 3.0 * 5.0 / 1024;
      Serial.println(value);
    }
  }
}

受信用スクリプト

PySerialを利用するのでインストールされていない場合は以下のコマンドでインストールしておきます。

pip install pyserial

Raspberry Piの場合は以下のコマンドでインストールができます。

sudo apt install -y python-serial

Arduino NanoをUSBで接続した時に追加されるポートを確認します。Macでは「/dev/tty.wchusbserialxxx」となっており、Raspberry Piでは「ttyUSBx」でした。

※「x」は何かの数字

通信用に以下のスクリプトを作成します。

voltage.py
import serial
import time

def main():

    ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=10)
    time.sleep(2)

    while 1:
        ser.write(b' ')
        time.sleep(1)
        data = ser.readline()
        print(data)

    ser.close()

if __name__ == '__main__':
    main()

これを以下のコマンドで実行すると...

python voltage.py
13.30
13.29
13.32
13.27
13.37

と表示され、電圧が測定できました(^-^)/

やったね!

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5