2.1.概要、全体説明
2.2.制御部:DAコンバーター
2.3.制御部:ADコンバーター
2.3.制御部:マルチプレクサー
2.4.充放電部
2.5.ATX電源
2.6.漏れ電流との戦い
2.7.その他いろいろ
基板はこんなの。
で、こんなの。
おそらく、これだけ見れば、電子回路に詳しい人なら、全部、解ってしまうレベルのものだと思います。
特に、高レベルのことはしてませんし、できません。
左側が制御部と放電部です。
パソコンからのパルスによる指示でカウンターをアップさせ、すだれ抵抗(DAコンバーター)が電圧を順々に上げていきます。その電圧と、測定対象の電圧とを、コンパレーターで比較して、パソコンに返します。
一周のカウンターアップ操作で、電池の電圧、サーミスタ(温度計)の電圧、充電電流測定用の電圧、放電電流測定用電圧、2.5Vの基準電源の電圧の5つの電圧を測定します。(ここまで左半分)
右側下半分が、マルチプレクサーで、パソコンからの指示により、どの電池について測定するかを切り替えます。
右側上半分が、放電回路です。パソコンからの指示により、トランジスタがスイッチの役目をして、放電します。放電する電流を測定できるように、0.5Ωの抵抗(1Ω2本並列)が、電池と直列につながっています。
右が、充電部です。
これも、パソコンからの指示で、トランジスタがスイッチの役目をして、充電します。同様に電流測定用の、0.125Ωの抵抗(1Ω8本直列)がついています。
パソコンとのインターフェースは、パラレルです。
電源は、古いパソコンのATX電源。この電源もプリンターポートから、ON/OFFします。
電池ボックスの裏には、サーミスタが仕込んであり、温度を測定できるようになっています。
写真の右したあたりの電池ボックスの裏、ネジのちょっと左に、サーミスタが見えてるけど、わかるかなあ。
パソコンのプリンターポートの16番ピンからパルスが来ると、12ビットカウンターIC(4040)がカウントアップされ、その結果、
電源電圧 × カウンターの値 × 2 ÷ 3 V
の電圧が、出力されます。
これ、原理は簡単なんだけど、抵抗の値が揃ってなきゃいけないです。
で、10kΩの金属皮膜抵抗を100本300円なりで、買ってきて、抵抗の値を、測定して分類しました。
デジタルテスターなんてもってない私は、こんな回路をブレッドボードに組んで、計測。
で、分類して、袋に入れてみた。
それぞれの袋ごとの本数は以下のような感じ。
しかし、−0.17%から、+0.225%の間に、90本が収まってました。公称±1%なんで、なかなか、きっちりしてるなあ。
でも、真ん中が抜けてるのは、きっちりした値の抵抗を抜き取って、精密抵抗として、高く売ってるんだろうか、、、なんて邪推してしまう。
で、回路図の抵抗の、横向きの抵抗のうち、GNDにつながっていないのは、グラフの右側の高い山から11本を使いました。
ええっと、最上位ビットのは、その中でも値が、中間のもの。その右は、ちょっと高いもの、その右はちょっと低いもの、というように、桁上がりの時の誤差が少なくなることを考慮して並べました。
次に、GNDにつながる横向きの抵抗(2本づつを2組)を、ちょうど倍になるように、高いものと、低いものを組み合わせて、選びました。
さて、グラフの右側から選んだ、というのは、ロジックICの出力インピーダンスが無視できないから、、、です。
以下のような回路でロジックICの出力インピーダンスを測定してみました。
結果はと言えば、
Hから0Vが43.5Ω、
Lから5Vが31.8Ω、
となりました。実際には、隣の端子や、一番遠い端子から負荷をかけると、この値は変わります。
あと、DAコンバーターとしては、桁上がりの時に、値が飛ぶとどうしようもないが、値が逆転するのは、ソフトでどうにでもなる、というのもあるので、
結論として、ロジックICの出力インピーダンスは、ちょっと低めに設定で35Ωと決めました。
話は戻って、ロジックICにつながる抵抗の選別です。で、さっきの横向きの抵抗より35Ωすくなくなるようにします。
こちらは2本組み合わせればいいので、割とあわせやすいんですが、さらに、精密に抵抗を分類してみました。
棒グラフの1つの山を4種類に分けてみました。
これで、2本組み合わせるんだけど、やっぱり、どうしても組み合わせがなくて、わざわざこのために買うのもなんだし。
結果、、、出来上がったADコンバーターがこんな感じ。
裏側に、1Ωの抵抗と4.7Ωの抵抗で、補正しているのが、痛々しいです。
で、作ったDAコンバーターをパソコンにつないで、パソコンから、パルスを送ります。
で、オペアンプで増幅して、テスターで測定。
3.3V÷4096=0.81mVに対し、 2048の桁上がりのところだけは、若干少なくて、0.5mV程度。
それ以外は、0.75mVから、0.875mV程度には収まってる感じです。
ま、俺にしては完璧かなと。
ブレッドボード上で、DAコンバーターとコンパレーターをつないで、ADコンバーターとしての動作をテストしてみました。
こんな感じ。
問題発生。電源ノイズのせいで、全然、測定電圧が安定しません。
時間帯にもよるが、誤差プラスマイナス5ビットぐらいある。
こんな感じで、電源を電池から取ると、安定しますが(笑)
これ、結構、素人の私にしては、苦労したんだよね。でいろいろと格闘の結果、コンデンサーで、いろんなところを、鈍く(?)することにして解決!
マルチプレクサーというか、制御部の、とりまとめ的に説明。
こんな回路にしました。
ええっと、パソコンの1番ピンと14番ピンがマルチプレクサの切り替えで、測定対象のX0からX3を選択します。
X0からX4は、電池につながっています。
これが4組あります。あと、2.5Vの基準電圧も測定します。
測定対象 | パソコンに戻すピン番号 | ||
マルチプレクサ1 | X | 電池電圧測定 | 15 |
マルチプレクサ1 | Y | 放電電流測定用電圧測定 | 12 |
マルチプレクサ2 | X | 電池温度測定用電圧測定 | 10 |
マルチプレクサ2 | Y | 充電電流測定用電圧測定 | 13 |
マルチプレクサなし | 2.5V基準電圧測定 | 11 |
ええっと、保護回路的なところ(回路図のショットキーダイオードとか抵抗とかは、ちと、いろいろとあるので、別途書きます。
で、ブレッドボードでは、X0からX4まではつながないで、X0だけつないでテストしていました。しかも、充放電の回路もつながずに、、、
これが、あとで、問題を起こすことに。顛末は、「2.6 漏れ電流との戦い」で書きます。
充放電回路は以下の通りです。
結局、全然、凝ったことはしませんでした。一応、簡単な定電流回路ですが、その電流を測定もできるようになっています。
もっと正確な定電流回路とか考えてたんですけど、例えば、吐き出し形の回路(充電回路)で、正確な定電流回路で、しかもスイッチも、となると、俺のレベルで思いつく回路だと、結構部品点数が多くなって、大変です。で、せっかく、ADコンバーターを苦労してつくったんだから、それをフル活用して、電流も測定しようか、という企画です。
ええっと、基本的な解説をば、充電回路で説明しようかな。
プリンターポート6〜9の電圧がHになると、2SC1815−YがONになります。
で、電流が、1kΩ、68Ωのところを流れてきます。
すると、2SB1642のベース電圧が、下がるので、2SB1642がONになります。
で、この流れる電流が2000mAぐらいになると、0.68Ωの抵抗の電圧差が1.36Vになり、2SB1642のベース電圧も下がっていくため、68Ωに流れる電流が少なくなり、平衡に達します。で、簡単な定電流回路で充電する、ということです。
ATX電源の、以下の端子を使ってます。
PS_ON(緑)
5VSB(紫)
5V (赤)
GND (黒)
制御回路は、5VSB(紫)で駆動します。
充電するときだけ、PS_ON(緑)とGNDとの間に電流を流してあげて、5V(赤)を使えるようにします。
電源は3種類ぐらい試して見ました。
ええっと、
A. 奥のは、MATE MA30H(Celeron300MHz)のATX電源
B. 手前右、MATE MA40H(Celeron400MHz)のATX電源
C. 手前左、IBMのPentium100MHzについてたAT電源
です。 実は、Cの電源が、一番強力で、200W。他の2つは100W程度です。
で、Cの電源はAT電源の癖に、ATX電源みたいなPS_ONの端子があります。
プリンターポートから、PS_ON端子を操作しようとしているのですが、一応、どれでも使えそうに見えます。
ところが、実際に使い物になったのは、上の中では、Bの電源だけでした。
A:電流をある程度流さないと、電源が勝手に、OFFっぽくなる。で、再び流すとONになるが、立ち上がりが遅いため、
状況によって測定条件が微妙に変わってしまう。
C:同じく、電流を流さないと、電源がOFFになる。で、再び電流を流そうとしても、PS_ON端子もどきを、
ONしてやらないとONにならない。
ということで、A、Cの電源を使うには、充電中は、常にある程度の負荷をかけておいてあげないと、いけないので、だめ。ムダに、強力なFANとかでもつなげばいいんだけど、、、
で、PS_ONの端子は、簡単に、プリンターポートの17番ピンがHになると、PS_ON端子から、GNDが道通するようなトランジスタが入ってるだけです。回路は簡単なので、省略。
全体組みあがって、充電し始めてから判明したんですけど、、、どっかから、電流が漏れてる、、、
具体的には、電池のうちひとつでも充電中の時は、4本全部の電圧測定値が高くなる。逆にひとつでも放電中の時は4本全部低くでる、という問題です。で、2本充電中、3本充電中、4本充電中、と充電する本数に応じて高く出てしまうというものです。
具体的には、1本でも、充電が終わったら、他の電池電圧測定値が、下がってしまうので、マイナスΔVの検出に引っかかってしまうといった悪さをします。あと、充電制御自体には影響ないんだけど、充電中の電圧は、0.2Vほど、高く測定されるので、気持ち悪い、というのがあります。
上記の回路をすべて基板上に実装してしまってから、判明した、というのがあり、半田ごて持って、保護回路全部とっぱらってみたり、悪あがきをした結果、推測しているので、完全には、原因が特定できていないですが、
マルチプレクサの漏れ電流の影響では(多分)ない。
電源電圧の変動の影響ではない。
という感じで、今のところ、
充電回路や放電回路と、測定回路との分離ができていないので影響を受ける。
というのが一番怪しい、と思っています。
もしそうなら、電池電圧測定の4つと、放電電流測定用電圧測定の4つと、充電電流測定用電圧測定の4つ、計12個のボルテージフォロワー(つまり、LM324を3つ)使えば、解決するんでしょうけど、これは、基板に乗り切らないなあ、、、
で、この問題は、ハードウェアとしては、諦めてしまいました。
結局ソフトで逃げることにしました。詳しくは、ソフトウェアのところで書きます。ま、そこそこな補正ができたと思っています。
といいつつ、なにやら、他にも、奇怪な現象が、、、ええっと、
1. 電圧が不安定になり始めると、1週間ぐらい、電圧が不安定という現象が起こる。なぜか、いつのまにか、安定するようになってる。
2. 4本電池を入れると、電圧測定が不安定になる場合がある。ならない場合もある。
で、、、
以上の問題は、6月1日に、ほぼすべて解決しました。
詳しくは、測定誤差との戦い解決編を、、、
その他、いろいろと工夫したことや、悩んだこととか、未だに謎なことを書いていきます。まだ工事中。
ロジックICの保護回路について
素人の私としては、ロジックICの説明書は、理解できないことがいっぱい!
例えばですねえ、、、最大最大定格に、
入力電圧は、電源電圧+0.5V以下にしなさい、
入力保護ダイオード電流は、20mA以下にしなさい、
と書いてあって、
すべて瞬時たりとも超えてはいけません。
と書いてあるのは、意図がよおわからんです。なんか嘘じゃないかと思います。
実際問題、入力保護ダイオード電流を20mAも流そうとすると、
入力電圧は、電源電圧+0.5V程度じゃ、ぜんぜーん流れないんだけど。
逆に言うと、保護ダイオード電流を20mAも流していいなら、入力電圧はもっと
高くしてもいいんだけど、、、
だったら、両方守る意味がないじゃん、と思うのは素人考えなんでしょうか。
あと、静電気対策、という意味では、どんな保護コンデンサとか、保護ダイオードつけても、
一瞬としては絶対超えるはずですよね。
で、入力電圧は、物凄い値になるはずなんだけど。だって、保護コンデンサとか、保護ダイオードって、
寄生抵抗とか、寄生コイルみたいなのが、あるはずなので。
放熱について
一応まじめに、放熱の計算しました。水谷電機工業のこのページに、詳しくかいてあります。
なんか、放熱器買うより、トランジスタ並べたほうが、安くつく、という、妙な、結果になっちゃったんだけど、、、
(買った放熱器は150円。トランジスタは60円なので、3つ並べたほうが安い、、、)
プリンターポートのピン割り当てについて
ええっと、一応パソコン側になんらかの障害が発生した時に、充電が止まるように、いろいろと、工夫したつもりですが。