エントリー

放電器の作製(その3)

充電部をブレッドボードに統合して確認しようと充電回路を試用確認したブレッドボードを見たら・・・

充電部1充電部2

焼けていた・・・ので,ブレッドボードへの展開は止めてユニバーサル基板へ載せることにした

C基板(秋月サイズ)では無理そうだったので,(2階建ても考えたが)B基板にしてみたらスペース余ったので電池ボックスも入った(スタンドアロンでロギングのためのSDカード設置もできそう)

基板1基板2

ちなみに裏は

基板3

とりあえず確実なエネループ(単三)で確認

エネループ

内部抵抗は115mΩ

内部抵抗

1000mA電流,1.0V未満で終了にして放電する

放電1放電2

放電容量は1560mAhとなったが,まだ余力はあるようだ

(ブレッドボードから基板に載せて判った事)

  • 同PWM値で流れる電流が増えた(接触抵抗が減ったのか)
  • 放電用トランジスタの発熱が多い

 

ロギング出力(定電流放電500mA,終止電圧1.0V)をOpenOfficeでグラフ化(上記の充電池のログではない)

放電器の作製(その2)

放電器の作製の続きで(時間も少なく)進みは悪いが改良や苦労してる点など記録

シャント抵抗とオペアンプの組み合わせは楽ではない

平日は少し古い充電池で放電テストを行いながら調整していたら,正常そうな放電容量とならない事(例えば1600mAhの物が2000mAhとかになることがある)が判り,どこに問題があるのか悩むことに・・・

  • プログラムの問題はない
  • リファレンス電圧は問題なくバッテリー電圧値は正常

    Ref

  • 時間カウントも正常(1時間経過で誤差1秒未満だった)
  • オペアンプのオフセット電圧も問題ではないようだ

となると,電流の測定が問題かと,そしてブレッドボードに置いたシャント抵抗が怪しい

さすがに0.01Ωのシャント抵抗をブレッドボードで使うと誤差が出るのだろう

別のボードでシャント抵抗とオペアンプを含む電流電圧回路を組み込みブレッドボードで使えるようにすることも考えたが,低抵抗だと電圧が乗らないので算出した電流値の変動が大きいこともあってシャント抵抗値を0.1Ωに変更することにして,手持ちの小さい(表面実装)0.1Ωのシャント抵抗をブレッドボードで使えるように加工する

0.1加工

ピンの間に半田付けした

ピン

0.1Ω(左),0.01Ω(右)

(しばらく確認した)結果,放電容量は若干の調整は必要だが大きな誤差は無くなった

だが使用した0.1Ωのシャント抵抗は0.2Wなので最大1.4Aが限界となり予定の仕様を超えるため0.15Ωの金属被膜抵抗を並列にして0.75Ωを作る

0.075

また正確な抵抗値を出しておきたいので4端子法で計測(低抵抗測定器が欲しいな)

抵抗計測1抵抗計測2

そこでまた問題が・・・なんか値がおかしい,そう抵抗値が4倍以上も大きいのだ

0.075Ωのはずが,24.7(mV) ÷ 50.0(mA)= 0.494

0.01Ωのはずが,2.4(mV) ÷ 50.0(mA) = 0.048

放電容量の誤差は気にならない程少ないので4倍にもなることはない

原因が特定できず仕方なく再度確認してみたら,なんと!使用したブレッドボード(緑)の接触抵抗が酷かったことが分かった(これは注意

不良品

上の緑のミニブレッドボードが異常なほど接触抵抗が酷い,下の(見え難いが)スケルトンのミニブレッドボードで再度計測したら正常に測定できた

(0.075Ω:0.078Ω,0.1Ω:0.112Ω,0.01Ω:0.012Ωという満足できる結果となる)

この緑のミニブレッドボードはaitendoで購入したプロトタイプシールドに付属していたボードで色がいまいちだったので使用せず手持ちのミニブレッドボード(白)と交換して空いていた物

現在実装しているブレッドボードは大丈夫だろうかとチェックしたら問題なくてほっとした

余談だがブレッドボードは白系がパーツを載せる時(載った時も)一番見易くてよい(スケルトンとか恰好は良いがピンとか観難い)

電池ボックスに注意

放電テストを行っていると正常な充電池の場合,表示している電流や電圧の変動が少ない事が判ってきた

また正常な放電流が表示できるようになってからだが,どんなに頑張っても1Aも放電できないこともあり,そんなはずはないのだけどな?っと充電池が劣化すると内部抵抗が悪くなるって記憶があるので内部抵抗測定を追加することを考えた

電池の内部抵抗測定とかかなり昔にやったことあるがもうやり方を覚えていない・・・で,調べてみて実験回路を作成して試験する

仕組みは充電池に抵抗器に繋いで電流を流した状態と流してない状態の電圧差で計算

①充電池の電圧をE(V)

内部抵抗2

②抵抗器の抵抗値をR(Ω)

内部抵抗1

③抵抗器に充電池を繋いで電流を流した状態の充電池の電圧をV(V)

内部抵抗3

④内部抵抗をr(Ω)として

 r = R( E / V - 1) = R(E - V)/ V

試験できたので本体に組み込み

内部抵抗4

上は946mΩで合ってそうだが,下は4.91Ωで異常そう

内部抵抗5

最小は充電池が終わっていると思って放電試験してみたら正規の放電量だったので再度内部抵抗を計測すると正常

すったもんだの挙句,充電池をボックスで動かしたら内部抵抗が変動することをつきとめた

つまり電池ボックスの接触抵抗で正常な内部抵抗が測定できていない

そこで(どこかの記事で観た)端子に(銅)線を巻く対応を施したら劇的に改善することに(素晴らしい)

電池ボックス

接触抵抗が1Ωもあれば1A放電できないし,充電池が電池ボックスに正常にセットされているか判断できるようになり,内部抵抗測定を実装したのは正解のようだ

現在の回路図

回路図3

前回からの変更点

・放電用のトランジスタをFETからバイポーラに交換

  PWMの±1に対する抵抗値の変動が大きいので変更

  ON・OFFを繰り返すため電流測定に難ありなのでLPFは外していない

・充電部のLPFは必要ないので外す

  ON・OFFで単位当たりの充電量を調整する

・R12の1Mの抵抗を追加

  バッテリが無い時0Vになるようにプルダウン

・内部抵抗測定部を追加

・オペアンプのオフセット電圧取得ため入力を短絡(回路図にない)

  モード選択画面でボタンを長押しで実行

充電回路の試験

別ボードで組み込み試験完了している

充電シーケンスは19秒充電し1秒待機で電圧確認を繰り返す(今後いろんなパターンを計画)

充電終了条件(以下のいずれか)

  • 終止電圧になった場合
  • 充電中に限界上限電圧を超えた場合
  • 充電しても電圧が上がらなくなった場合

充電

/* 充電プログラム(後に充放電器として統合)
 */

#define PIN_CHRGER         11                //充電コントロールピン
#define PIN_LED            13                //LEDピン
#define PIN_BTV            A0                //バッテリー電圧測定

#define CHG_VOLT         1450                //充電終止電圧mV(25℃時)
#define CHG_UPPER        1600                //充電中最大限界電圧mV

//25℃程度の室温において充電終止電圧1.45V
//ニッケル水素電池電圧は温度が1℃上がるごとに約3mV低下(温度係数-3mV/℃)

#define CHG_ON_TIME     19000                //充電ON時間(ms)
#define CHG_OFF_TIME     1000                //充電OFF時間(ms)
#define CHG_MON_TIME     1000               //充電監視時間間隔

#define RDC_ANALOG         10                //analogReadの平均化カウント
#define REF_VOLT         5000                //mV

//電圧測定Pinから読込み(*1000のmV)
static int readVolt() {
    int val = 0;
    for(int i = 0; i < RDC_ANALOG; i++) {
        val += analogRead(PIN_BTV);
    }
    val /= RDC_ANALOG;
    return(map(val, 0, 1023, 0, REF_VOLT));
}

void setup() {
    Serial.begin(9600);                      //Serial設定9600bps
    pinMode(PIN_CHRGER, OUTPUT);
    pinMode(PIN_LED, OUTPUT);
    analogReference(DEFAULT);
    pinMode(PIN_BTV, INPUT);
}

void loop() {
    int volt = readVolt();
    Serial.print("Volt: "); Serial.print(volt); Serial.print("mV ");
    if(volt >= CHG_VOLT) {
        //終了
        Serial.println(" End.");
        for(;;);
    }

    //充電
    digitalWrite(PIN_CHRGER, HIGH); digitalWrite(PIN_LED, HIGH);

    //監視
    int n = 0;
    do {
        delay(CHG_MON_TIME);
        Serial.print(">");
        volt = readVolt();
    } while(++n < (CHG_ON_TIME/CHG_MON_TIME) && volt < CHG_UPPER);

    Serial.print(" Voltage after charging: "); Serial.print(volt); Serial.println("mV");
    //
    digitalWrite(PIN_CHRGER, LOW);  digitalWrite(PIN_LED, LOW);
    delay(CHG_OFF_TIME);
}

本回路で充電した充電池を放電して放電量も問題なし

今後の予定

単なる放電器を超えて充電池チェッカーツールになった

今後もしばらくは試行を続け,更に自動化した充電池チェッカープログラムを検討する予定

ニッケル水素充電池の放電時の挙動(追加)

放電テストなどで気付いた点など列挙しておく

  • 新しい充電池は電圧,電流ともに安定して放電される
  • 古い充電池で大容量(500mA以上)は放電できないがある程度の電流(400mA前後)なら長く放電できる
  • 最初は少なめの放電流だが次第に放電流が増えていく古い充電池がある(定電圧放電使用で確認)

放電器の作製

放電器の機能も充実させるつもりだが目的はニッケル水素電池の残容量の検証なので充電機能も欲しい(放電>充電>放電にて残容量を自動的に検証)

そこで回路図を更新してみた(充電部は未完成)

Discharger2

ブレッドボード上でATMEGA328P-PU(DIPタイプ)と同じようにピン配置を扱える「あちゃんでいいの」を使ってみるため回路図ではAVRにしている

まずは充電部は未実装でブレッドボード上に配置してシャント抵抗電圧やPWM変動による電流,オペアンプ出力やオフセットなども検証

放電器としてまずは使えそうなので仕様(以下)を決めてコーディング,終止条件などを検証中

  • 手動放電,定電圧放電,定電流放電の3モード
  • 手動放電:放電電流を手動変更しながら放電(テスト用にもなる)
  • 定電圧放電:放電電圧が設定可能,9.50~ 1.20Vまで0.01V単位で設定,電圧を維持しながら放電
  • 定電流放電:放電電流が設定可能,100mA~2000mAまで50mA単位で設定,設定電流で放電
  • 放電停止は電圧が0.90V未満で電流が100mA未満になった場合
  • 放電時間表示をリアルタイムと結果表示
  • 放電容量表示をmAh換算でリアルタイムと結果表示

定電流

定電流放電で動作確認中

充電部を追加する際は温度センサも必要かな

放電器の作製(検証)

ニッケル水素電池の容量がどのくらい残っているのか検証するためにインテリジェントな放電器を作製する

電子負荷を使えば良い話なのだがニッケル水素電池では電圧不足で現状版では動作しないためニッケル水素電池専用という形で作製することにした

今回はFETをAVRでPWM駆動して制御する方式で回路図を簡単に作った

Discharger1

上手く制御できるものなのか不安だったので簡単に検証してみることに

ロータリーエンコーダでPWMの出力(analogWrite())を0~255まで変更させた場合FETのゲート電圧を計測

PWM:0

PWM0

PWM:100

PWM100

PWM:255

PWM255

ArduinoのPWMデジタル出力をRCローパスフィルタを通してゲートに繋いでいる訳で上手く電圧が変動している

デジタル出力PINをオシロで観る

PIN

RCローパスフィルタ後のゲートをオシロで観る

ゲート

検証終わり

不活性化した単4型ニッケル水素電池

目覚まし時計の時刻が電波式なのに狂っていて液晶も薄っすらしてるので電池を取り出し早速バッテリチェッカーを使う

計測

1.17Vは少ない方かなってことで電池交換するため新しい電池を取り出そうと戸棚の中の電池置き場を観たら,いまさらながら怪しげな箱が置いてあって,なんだったかな?と思って開けると,な!なんと単4型ニッケル水素電池が入っていた

電池

10年前の引っ越し時に箱に入れたままにして忘れていた(つまり10年間ほったらかし)

しかも3本は袋入りの新品(と言ってよいかな?)だった

手持ちのニッケル水素電池用の現状容量確認のため計測用放電器を作製しようと考えていたのでサンプル用のバッテリーを見つけたかな

まったく使えなくなっていたら残念だけど新品から復活できるかどうかチェックを開始(電圧は0Vだった)

(充電:専用急速充電器を使用)

充電

(放電:急速充電器の機能)

放電

充放電を繰り返せば活性化するか試行,他にも色々やってみるつもりなので結果は後日

ページ移動

ユーティリティ

検索

エントリー検索フォーム
キーワード

新着コメント

Re:LEDライトの改造計画(2)
2016/11/19 from admin
Re:LEDライトの改造計画(2)
2016/11/18 from イチマル
Re:XP64OSディスクのSSD換装
2016/10/18 from 権限がありません
Re:SSDのアライメント調整
2014/01/31 from admin
Re:SSDのアライメント調整
2014/01/26 from 通りすがり

Feed