テクノロジーの出現により、当社の電子機器およびアプライアンスは、より機能的で複雑なアプリケーションとともにますます小さくなっています。この複雑さの増大に伴い、回路の電力要件も増大し、デバイスを可能な限り小型でポータブルにするために、長期間にわたって大電流を供給できるバッテリーが必要です。時間は、デバイスがポータブルのままであるように、はるかに軽量です。バッテリーについて詳しく知りたい場合は、バッテリーの基本的な用語に関するこの記事を読むこともできます。
利用可能なさまざまな種類のバッテリーのうち、鉛蓄電池、Ni-Cdバッテリー、およびNi-MHバッテリーは、重量が大きいか、アプリケーションに必要な電流を供給できないため、適切ではありません。これにより、リチウムイオンバッテリーが残ります。軽量でコンパクトなサイズを保ちながら、大電流を供給できます。以前は、18650バッテリー充電器とブースターモジュール、およびIoTベースのバッテリー監視システムも構築しました。興味があればチェックしてください。
なぜバッテリー容量テスターが必要なのですか?
市場には多くの電池ベンダーがLi-ion電池の安価な模造品を販売しており、非常に低価格で奇妙な仕様を主張しています。これらのセルを購入すると、まったく機能しないか、機能する場合は、充電容量または電流の流れが非常に低いため、アプリケーションでまったく機能しません。では、セルがこれらの安価なノックオフの1つでない場合、リチウム電池をテストするにはどうすればよいでしょうか。方法の1つは、無負荷および無負荷での開回路電圧を測定することですが、これはまったく信頼できません。
そこで、Li-Ion 18650セル用の18650 バッテリー容量テスターを構築します。このテスターは、抵抗器を流れる電流を測定して容量を計算しながら、抵抗器を介して完全に充電された18650セルを放電します。セル電圧が指定された制限内にあるときに要求されたバッテリー容量が得られない場合、そのセルは故障しています。セルの充電状態は負荷がかかると非常に速い速度で消耗し、バッテリーパックで使用すると、局所的な電流ループが発生し、加熱して火災が発生する可能性があります。それでは、すぐにそれに飛び込みましょう。
必要なコンポーネント
- Arduino Nano
- 16×2文字LCD
- LM741オペアンプIC
- 2.2Ω、5ワット抵抗
- 7805正電圧レギュレータIC
- 12V電源
- 10kΩトリマポテンショメータ
- 0.47uFコンデンサ
- 33kΩ抵抗
- DC電源バレルジャックコネクタ
- PCBネジ留め式端子
- IRF540NNチャネルMOSFETIC
- パフォーマンスボード
- はんだ付けキット
- ヒートシンク
Arduinoバッテリー容量テスターの回路図
18650バッテリ容量テスターの完全な回路図を以下に示します。回路の説明は以下の通りです-
計算および表示ユニット:
この回路はさらに2つの部分に分かれています。1つはArduinoNano用の低5V電源と16×2英数字LCD画面、およびそれらの接続で電流と電圧の測定結果をリアルタイムで表示します。回路はSMPSを使用して12V電源から電力を供給されるか、12Vバッテリーを使用できます。また、ArduinoおよびLCD画面に電力を供給するための最大電流は約60〜70mAになります。
電圧を5Vに下げるには、リニア電圧レギュレーターを使用します。これは、最大35Vを使用でき、安定化された5V電源を提供するために少なくとも7.5Vの入力電源が必要であり、過剰な電圧は熱として放散されます。電圧LM7805電圧レギュレータICが12Vを超える場合は、損傷しないようにヒートシンクを追加することを検討してください。LCDは7805からの5V電源で給電され、Arduinoに接続され、4ビットモードで動作します。我々はまた、追加したの10k ΩのポテンショメータワイパーLCDディスプレイのコントラストを制御します。
定負荷電流回路:
2つ目はPWMベースの定電流負荷回路で、抵抗を流れる負荷電流を制御可能で一定にし、セルの電圧が下がるにつれて電流が時間とともに変化することによるエラーの忍び込みがないようにします。それから成るLM741 OPAMP ICとIRF540N NチャネルMOSFET、米国による電圧レベルのセットに応じてONとOFF MOSFETを切り替えることにより、MOSFETを流れる電流を制御します。
オペアンプはコンパレータモードで動作していますが、したがって、このモードでは。オペアンプの非反転ピンの電圧が反転ピンよりも高い場合は常に、オペアンプの出力はハイになります。同様に、オペアンプの反転ピンの電圧が非反転ピンよりも高い場合、オペアンプの出力はプルダウンされます。与えられた回路では、非反転ピンの電圧レベルは、ArduinoNANOのD9PWMピンによって制御されます。ArduinoNANOは500Hzの周波数で切り替わり、抵抗値33kΩのローパスRC回路フィルターと0.47の静電容量を持つコンデンサを通過します。 uF、非反転ピンでほぼ一定のDC信号を提供します。反転ピンは負荷抵抗に接続されており、負荷抵抗は抵抗と共通GND間の電圧を読み取ります。 OPAMPの出力ピンはMOSFETのゲート端子に接続され、オンまたはオフに切り替わります。OPAMPは、接続されているMOSFETを切り替えることにより、両方の端子の電圧を等しくしようとします。これにより、抵抗を流れる電流は、NANOのD9ピンに設定したPWM値に比例します。このプロジェクトでは、最大電流、回路を1.3Aに制限しました。これは、セルの最大電流定格が10Aであるため妥当です。
電圧測定:
一般的な完全に充電されたリチウムイオンセルの最大電圧は4.1V〜4.3Vであり、内部抵抗が10kΩを超えるArduino Nanoのアナログ入力ピンの5V電圧制限よりも低いため、直接接続できます。アナログ入力ピンに流れる電流を気にせずに、アナログ入力ピンのいずれかにセルします。したがって、このプロジェクトでは、セルの電圧を測定して、セルが正しい電圧動作範囲内にあるかどうか、および完全に放電されているかどうかを判断できるようにする必要があります。
回路の複雑さが増し、負荷経路の抵抗が増えるとセルの放電率が低下するため、電流シャントを使用できないため、抵抗を流れる電流も測定する必要があります。より小さなシャント抵抗を使用すると、そこからの電圧読み取り値をArduinoで読み取り可能にするために、追加の増幅器回路が必要になります。
したがって、負荷抵抗の両端の電圧を直接読み取り、オームの法則を使用して、負荷抵抗の値によって得られた電圧を除算して、負荷抵抗に流れる電流を取得します。抵抗器の負端子はGNDに直接接続されているため、抵抗器で読み取っている電圧は抵抗器の電圧降下であると安全に推測できます。
バッテリー容量を測定するArduinoプログラム
ハードウェア回路を完成させた後、Arduinoプログラミングに移ります。 PCにArduinoIDEがインストールされていない場合は、ここで何をしているのでしょうか。 Arduinoの公式Webサイトにアクセスし、Arduino IDEをダウンロードしてインストールするか、他のエディターでコーディングすることもできますが、それは今のところArduinoIDEに固執するトピックです。現在、Arduino Nanoを使用しているので、[ツール]> [ボード]に移動してArduinoNanoボードを選択していることを確認し、そこで[ARDUINO NANO]を選択します。次に、[ツール]> [プロセッサ]に移動して、nanoにある正しいプロセッサを選択します。また、そこにいる間に、Arduinoが接続されているPC上のポートも選択します。前のセクションで説明したように、Arduinoを使用して接続された16×2英数字LCDを駆動し、セルの電圧と負荷抵抗を流れる電流を測定します。16×2を駆動するヘッダーファイルを宣言することからコードを開始します。英数字LCDスクリーン。このセクションをスキップして、ページの最後に完全にクックされて提供されるコードを取得できますが、コードを小さなセクションに分割して説明しようとする間、我慢してください。
ヘッダーファイルが定義されたので、変数の宣言に移ります。コードで使用して、電圧と電流を計算します。また、このセクションでは、LCDの駆動に使用するピンと、PWM出力を提供し、セルと抵抗からのアナログ電圧を読み取るために使用するピンを定義する必要があります。
#include
セットアップの部分に移ります。Arduinoを常にPCに接続したままにし、シリアルモニターを使用して進行状況を監視し、ここでLCD画面を初期化します。また、画面に「バッテリー容量テスター回路」というウェルカムメッセージが3秒間表示されます。
void setup(){Serial.begin(9600); lcd.begin(16、2); lcd.setCursor(0、0); //最初の列と最初の行にカーソルを置きます。lcd.print( "バッテリー容量"); lcd.setCursor(0,1); lcd.print( "テスター回路"); delay(3000); lcd.clear(); }
ここで、メインループで使用する AnalogWrite 関数がこの部分を処理するため、 ArduinoPWM ピンを出力として宣言する必要はありません。コード内のそのピンに書き込まれるPWM値を定義する必要があります。アプリケーションに必要な放電電流に応じて、PWM値を慎重に選択してください。 PWM値が大きすぎると、リチウムイオンセルの電圧降下が大きくなり、電流が大きくなります。PWM値が小さすぎると、セルの放電時間が長くなります。メインループ機能では、Arduinoに10ビットADCが搭載されているため、ピンA0とA1の電圧を読み取ります。したがって、0〜1023の範囲のデジタル出力値を取得する必要があります。これをスケールバックする必要があります。5.0 /1023.0を掛けて0-5Vの範囲。ほとんどの場合、安定化電圧は正確に5.0Vではなく、この基準電圧のわずかな違いでもエラーが発生するため、校正済みの電圧計またはマルチメーターを使用して、ArduinoNanoの5VピンとGNDピンの間の電圧を正しく測定してください。電圧測定値で正しい電圧を測定し、上記のマルチプライヤの5.0を交換してください。
コードのロジックを説明するために、セルの電圧を継続的に測定し、セルの電圧がコードで指定された上限を超えている場合は、エラーメッセージがLCDに表示され、セルが過充電されているか、接続に問題があり、MOSFETゲートピンへの電力が停止しているため、負荷抵抗に電流が流れません。総充電容量を計算できるように、容量テスターボードに接続する前に、まずセルを完全に充電することが重要です。
AnalogWrite(MOSFET_Pin、PWM_VALUE); //アナログピン0の入力を読み取ります:int sensorValue_volatile_Cell = analogRead(A0); //アナログ読み取り値(0〜1023)を電圧(0-5V)に変換します。float電圧= sensorValue_voltage_Cell *(5.08 / 1023.0); Serial.print( "VOLTAGE:"); Serial.println(電圧); //ここでは、電圧がシリアルモニターに出力されていますlcd.setCursor(0、0); //最初の列と最初の行にカーソルを置きます。 lcd.print( "電圧:"); //電圧の読み取り値を画面に出力しますlcd.print(voltage); delay(100); int sensorValue_Shunt_Resistor = analogRead(A1);フロート電圧1 = sensorValue_Shunt_Resistor *(5.08 / 1023.0);フロート電流=電圧1 /抵抗; Serial.print( "現在:"); Serial.println(current); lcd.setCursor(0、1);//カーソルを最初の列と2番目の行に設定します(カウントは0から始まります!)。 lcd.print( "現在:"); lcd.print(current);
これで、セル電圧が指定された電圧の上限と下限の範囲内にある場合、Nanoは上記の方法で電流値を読み取り、測定中に経過した時間を乗算して、前に定義した容量変数に保存します。 mAh単位で。この間、リアルタイムの電流と電圧の値が付属のLCD画面に表示され、必要に応じてシリアルモニターでも確認できます。セルの放電プロセスは、セルの電圧がプログラムで指定された下限を下回るまで続き、セルの総容量がLCD画面に表示され、MOSFETゲートを引くことによって抵抗を流れる電流が停止します。ピンが低い。
else if(電圧> BAT_LOW &&電圧<BAT_HIGH){//バッテリー電圧が安全限界内にあるかどうかを確認しますmillisPassed = millis()-previousMillis; mA =電流* 1000.0; 容量=容量+(mA *(millisPassed / 3600000.0)); // 1時間= 3600000msでmAh単位に変換previousMillis = mills(); delay(1000); lcd.clear(); }
精度の向上
これは、電圧と電流を読み取るのに十分な方法ですが、完全ではありません。実際の電圧と測定されたADC電圧の関係は線形ではなく、これは電圧と電流の測定にいくらかの誤差をもたらします。
結果の精度を上げたい場合は、さまざまな既知の電圧源を適用して得られたADC値をグラフにプロットし、任意の方法を使用して乗数方程式を決定する必要があります。これにより、精度が向上し、実際の結果に非常に近くなります。
また、使用したMOSFETはロジックレベルのMOSFETではないため、電流チャネルを完全にオンにするには7V以上が必要であり、5Vを直接印加すると、電流の読み取り値が不正確になります。ただし、ロジックレベルIRL520N NチャネルMOSFETを使用すると、12V電源の使用を排除し、Arduinoで使用している5Vロジックレベルを直接操作できます。
回路の構築とテスト
ブレッドボード上で回路のさまざまなセクションを設計およびテストし、それらがすべて意図したとおりに機能していることを確認した後、回路をテストするためのはるかに専門的で信頼性の高い方法であるため、Perfboardを使用してすべてのコンポーネントをはんだ付けします。必要に応じて、AutoCAD Eagle、EasyEDA、Proteus ARES、またはその他の任意のソフトウェアで独自のPCBを設計できます。 Arduino Nano、16×2英数字LCD、およびLM741 OPAMPは、後で再利用できるようにFemaleBergstikに取り付けられています。
定負荷電流回路用のDCバレルジャックコネクタを介して12V電源を供給し、LM7805を使用して、ナノおよびLCD画面用の5Vを供給しました。次に、回路に電力を供給し、トリマポットを調整して、LCD画面のコントラストレベルを設定します。これで、LCD画面にウェルカムメッセージが表示されます。セルの電圧レベルが動作範囲内にある場合は、電流-バッテリーからの電圧と電流がそこに表示されます。
これは、使用しているセルの容量を計算するための非常に基本的なテストであり、データを取得してExcelファイルに保存し、データ後の処理とグラフィカルな方法による視覚化を行うことで改善できます。今日のデータ駆動型の世界では、このセル放電曲線を使用して、バッテリーの正確な予測モデルを構築し、NI LabVIEW、MATLAB Simulinkなどのソフトウェアを使用して、実際のテストを行わなくても、負荷状態でのバッテリーの応答をシミュレートおよび確認できます。 。そしてもっとたくさんのアプリケーションがあなたを待っています。このプロジェクトの完全な動作は、以下のビデオで見つけることができます。このプロジェクトについて質問がある場合は、下のコメントセクションに書き込むか、フォーラムを使用してください。行って楽しんでください。必要に応じて、以下のコメントセクションで、ここからさらに先に進む方法をご案内します。それからアディオスまで!!!