バッテリーの残量を可能な限り簡単かつ高速にするために、バッテリーの残量をどのように決定するのか疑問に思いました。
そもそも、バッテリーの残存容量を測定する方法と必要なものを理解するための小さな理論です。
充放電の制御およびトレーニングサイクルは、硫酸化を防ぎ、バッテリー容量を決定するために実行されます。 制御およびトレーニングサイクルは、少なくとも年に1回実行され、次のように実行されます。通常の電流でバッテリーをフル充電します。 充電停止の3時間後にABに耐える。 電解質の密度を調整します。 電解質を混合するために20〜30分間充電する。 10時間モードの一定の通常電流で制御放電を実行し、完全放電の時間を1缶あたり1.7 V(バッテリーあたり10.2 V)に制御します。 バッテリー容量は、放電電流と放電時間の積として定義されます。 チェック放電後、バッテリーはすぐに充電され、完全に充電されます。 バッテリー容量が公称値の50%未満であることが判明した場合は、故障していると見なされます。
手動制御放電では、放電電流を修正および調整するために、保守要員が常に存在する必要があります。 (c) ここから取られた
つまり、残存容量を決定するには、既知の一定の電力で10.2までの負荷でバッテリーを放電する必要があります(他のソースでは、10.8V以上の12Vバッテリーを放電することをお勧めします)。 このようなデバイスを購入するだけで、自転車の発明に困惑することはありませんが、怠との日々の闘いには新しい成果と発明が必要です。
そのため、「よりシンプルで信頼性の高い」という原則に基づいて、バッテリーの残存容量を測定すると同時に、CTCを実施するための独自の自動装置を組み立てることが決定されました。 私はすでに充電器を持っていたので、車輪を再発明する必要はありませんでした。 必要なのは、この充電を時間通りにオンにすることだけでした。 ただし、周囲温度やバッテリー電圧に関係なく、一定の負荷を持つものを放電する必要があります。 最も簡単な方法は、車の白熱電球を放電することです。 電力定格はそれらに直接書き込まれるため、消費電流は単純な算術計算で計算できます。W/ 12 =負荷電流。 つまり、60 Wランプは5アンペアを消費します。 バッテリーは10%の容量または0.1Cの電流で放電され、同じ電流で充電されます。
5分間のリフレクションの結果、ToRが将来のデバイス用にコンパイルされました。
1.放電プロセスの開始時間を修正する
2.バッテリー電圧の追跡
3.臨界電圧に達すると、デバイスは負荷を切断し、充電器をオンにする必要があります
4.排出プロセスの終了時間の修正
これらすべてから、次のことが必要になります。
1. Arduino Nano -175ルーブル
2. RTC1307-56ルーブル
3. リレー -131ルーブル
4. LCD 2x16 i2c -222ルーブル
5. 10 kOhmの3つの抵抗、一定数のワイヤ-50ルーブル
合計:634摩擦
Arduinaがバッテリーの各瞬間の電圧を理解するためには、バッテリーをarduinoに接続する必要がありました。 これを直接行うことはできません。コントローラのアナログ入力は5Vしか受け入れられないため、10 kOhmの3つの抵抗から分圧器を組み立てることになりました。 バッテリーのマイナスとコントローラーのマイナスは直接接続されていました。 コントローラには、別の電源から電力が供給されていました。 接続図とコードを以下に示します。
Sketch CTC
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib #include <EEPROM.h> #include <Wire.h> #include <DS1307.h> #include "RTClib.h" #include <LiquidCrystal_I2C.h> int rtc[7]; byte rr[7]; LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display #define RELE_NAGRUZKA 2 // 2 #define RELE_ZARYADKA 3 // 3 int analogPin = 0; int flag=0; float val=0; float valkoef=0; void setup () { DDRC|=_BV(2) |_BV(3); // POWER:Vcc Gnd PORTC |=_BV(3); // VCC PINC3 RTC.get(rtc,true); lcd.init(); // initialize the lcd lcd.backlight(); lcd.home(); pinMode(RELE_NAGRUZKA, OUTPUT); // pinMode(RELE_ZARYADKA, OUTPUT); // lcd.clear(); digitalWrite(RELE_NAGRUZKA, HIGH); digitalWrite(RELE_ZARYADKA, HIGH); RTC.SetOutput(DS1307_SQW32KHZ); EEPROM.write (0, rtc[2]); // , EEPROM.write (1, rtc[1]); // , } void loop () { val = analogRead(analogPin); // valkoef=val/74,49; // RTC.get(rtc,true); lcd.setCursor (0,0); lcd.print (rtc[2]); lcd.print (":"); lcd.print (rtc[1]); lcd.print (":"); lcd.print (rtc[0]); lcd.print (" str"); lcd.print (EEPROM.read(0)); lcd.print (":"); lcd.print (EEPROM.read(1)); lcd.setCursor (0,1); lcd.print (valkoef); lcd.print (" "); lcd.print (flag); if (valkoef < 10.72) { flag=1; EEPROM.write(2, rtc[2]); // , EEPROM.write (3, rtc[1]); // , } if (flag==1) { digitalWrite(RELE_ZARYADKA, LOW); // digitalWrite(RELE_NAGRUZKA, HIGH); // lcd.print (" stp"); lcd.print (EEPROM.read(2)); // lcd.print (":"); lcd.print (EEPROM.read(3)); } if ((valkoef > 10.72) && (flag==0)) { digitalWrite(RELE_NAGRUZKA, LOW); } else { digitalWrite(RELE_NAGRUZKA, LOW); } delay(500); }
デバイスはどのように機能しますか? 小学校!
負荷は、最初のリレー、2番目のメモリに接続されます。 さらに、バッテリーなしでデバイスの電源を入れたままにしないように、充電器の高電圧電源回路を切断することをお勧めします。 コントローラの電源を入れると、最初の行に現在の時間とロードの開始時間が表示されます。 2行目には、バッテリーの現在の電圧と、バッテリーが臨界電圧に達したときの放電の終了時間が表示されます。 値に達するとすぐに、負荷リレーがオフになり、充電リレーがオンになります。 いくつかのボタンを追加すると、電圧しきい値調整またはリアルタイムクロック設定を簡単に調整できます。 この段階では、そのようなタスクはなかったため、コードは可能な限りシンプルで機能的です。 終了時間から放電開始時間を減算すると、時間を負荷で消費される電流で乗算すると容量を取得できます。
おわりに
したがって、充電器、部品用の600〜700ルーブル、および数時間のバッテリーを備えた制御およびトレーニングサイクルを編成するのは非常に簡単です。 充電されたバッテリーの寿命が長くなることを忘れないでください。定期的なCTCを使用すると、霜が降っても朝に確実に車が始動することを確信できます。