バッテリーには一定の電圧制限があり、充電中または放電中に電圧が規定の制限を超えると、バッテリーの寿命が影響を受けたり、低下したりします。バッテリー駆動のプロジェクトを使用するときはいつでも、充電または交換が必要かどうか、バッテリー電圧レベルをチェックする必要がある場合があります。この回路は、バッテリーの電圧を監視するのに役立ちます。このArduinoバッテリー電圧インジケーターは、バッテリー電圧に応じて10セグメントLED棒グラフのLEDを点灯させることにより、バッテリーのステータスを示します。また、Arduinoに接続されたLCDにバッテリー電圧が表示されます。
必要な材料
- Arduino UNO
- 10セグメントLED棒グラフ
- LCD(16 * 2)
- ポテンショメータ-10k
- 抵抗器(100オーム-10; 330オーム)
- バッテリー(テスト対象)
- 接続線
- Arduino用の12vアダプター
回路図
LED棒グラフ
LED棒グラフは、低消費電力で業界標準サイズで提供されます。バーは光度で分類されています。製品自体はRoHS準拠バージョンのままです。最大2.6vの順方向電圧があります。セグメントあたりの消費電力は65mWです。LED棒グラフの動作温度は-40℃〜80℃です。LED棒グラフには、オーディオ機器、インストルメントパネル、デジタル読み出しディスプレイなど、多くのアプリケーションがあります。
ピンダイアグラム
ピン配置
バッテリー電圧監視のためのArduinoプログラム:
完全なArduinoのコードとデモンストレーションビデオは、この記事の末尾に与えられています。ここでは、コードのいくつかの重要な部分について説明しました。
ここでは、LCDライブラリを定義し、Arduinoで使用するLCDのピンを指定しています。アナログ入力は、バッテリー電圧をチェックするためにピンA4から取得されます。電圧を小数点以下2桁まで取得するために、値をFloatとして設定しました。
#include
int ledPins = {2、3、4、5、6、7、8、9、10、11}; // LEDが接続されているピン番号の配列intpinCount = 10; //ピンの数(つまり、配列の長さ)
LCDとアナログピン(A0、A1、A2、A3)をOUTPUTピンとして設定します。
void setup(){Serial.begin(9600); //シリアルポートを開き、データレートを9600 bpsに設定しますlcd.begin(16、2); //// LCDの列と行の数を設定します:pinMode(A0、OUTPUT); pinMode(A1、OUTPUT); pinMode(A2、OUTPUT); pinMode(A3、OUTPUT); pinMode(A4、INPUT); lcd.print( "電圧レベル"); }
ここでは、LED棒グラフを使って簡単に使える関数を作ります。LEDを1つずつプログラミングすることで光らせることもできますが、コードが長くなります。
void LED_function(int stage){for(int j = 2; j <= 11; j ++){digitalWrite(j、LOW); } for(int i = 1、l = 2; i <= stage; i ++、l ++){digitalWrite(l、HIGH); // delay(30); この部分では、アナログピンを使用して電圧値を読み取りました。次に、アナログ-デジタル変換式を使用してアナログ値をデジタル電圧値に変換し、さらにLCDに表示します。
//電圧の変換式analogValue = analogRead(A4); Serial.println(analogValue); 遅延(1000); input_voltage =(analogValue * 5.0)/ 1024.0; lcd.setCursor(0、1); lcd.print( "Voltage ="); lcd.print(input_voltage); Serial.println(input_voltage); delay(100);
入力電圧の値に応じて、LED棒グラフLEDを制御するためのいくつかの条件を与えました。以下のコードで確認できる条件:
if(input_voltage <0.50 && input_voltage> = 0.00){digitalWrite(2、HIGH);遅延(30); digitalWrite(2、LOW);遅延(30); //電圧がゼロまたは低い場合、最初のLEDは点滅して表示されます} else if(input_volatile <1.00 && input_volatile> = 0.50){LED_function(2); } else if(input_voltage <1.50 && input_volatile> = 1.00){LED_function(3); } else if(input_voltage <2.00 && input_volatile> = 1.50){LED_function(4); } else if(input_voltage <2.50 && input_volatile> = 2.00){LED_function(5); } else if(input_voltage <3.00 && input_voltage> = 2.50){LED_function(6); } else if(input_voltage <3.50 && input_voltage> = 3.00){LED_function(7); } else if(input_voltage <4.00 && input_voltage> = 3.50){LED_function(8);} else if(input_voltage <4.50 && input_voltage> = 4.00){LED_function(9); } else if(input_voltage <5.00 && input_voltage> = 4.50){LED_function(10); }}
バッテリー電圧インジケーターの動作
バッテリー電圧インジケーターは、Arduinoアナログピンから値を読み取り、アナログ-デジタル変換(ADC)式を使用してデジタル値に変換するだけです。 Arduinoの宇野ADCは 10ビット分解能である( - 2 ^ 10 = 1024の値が0から整数値ので)。これは、0〜5ボルトの入力電圧を 0〜1023の 整数値にマップすることを意味します。したがって、入力 anlogValue を(5/1024)に乗算すると、入力電圧のデジタル値が得られます。ArduinoでADC入力を使用する方法をここで学びます。次に、デジタル値を使用して、それに応じてLED棒グラフを点灯させます。
また、マイクロコントローラーなしでこのシンプルなバッテリーレベルモニターを確認してください