{{publish any}} {{tag 容量計,AVR,ATmega168,LCメーター}} 「AVRを使ったコンデンサー容量計の製作」で実際に作成しました。(2008-08-30) !header 「LCメーターの製作」で作ったLCメーターでは、電解コンデンサ等の極性のあるコンデンサが測定できません。また、1μF以上の容量の大きなコンデンサを測定することもできないので、AVRを使って容量計をテスト作成してみます。 !body 以前、作ったLCメーターは、フランクリン発振回路の発振周波数の変化からインダクタンスやキャパシタンスを測定しています。コンデンサの静電容量(キャパシタンス)は、実測から1μF程度までは測定できますが、それ以上はうまく測定できません。(発振周波数が低くなりすぎるためだと思われる。) また、極性を持つコンデンサの測定は出来ないため、電解コンデンサの測定にも使えません。 コレまでのところ、特別、必要というわけではありませんが、CR回路の過渡現象を使った容量計の製作記事をインターネットでいくつか目にしたので、AVRのアナログコンパレータ機能とタイマー機能を使って実験してみました。 コンデンサ容量の測定原理は、コンデンサの充電時間(ある電圧からある電圧に達するまでの時間)を測定し、その時間を容量に換算する方式とします。 今回は、あらかじめ容量誤差の小さなコンデンサ1μFが抵抗を介して0.96Vから2.5Vに達するまでの時間を基準として、測定コンデンサの充電時間を基準時間で除算することにより容量を求めています。 実験回路は、以下です。 {{image c-meter.PNG,,,size:95%}} 作成したプロクラムの動作シーケンスは以下のとおり。 *スタート時はTr1がONとなった状態で測定するコンデンサは両端がGNDでショートされた状態(つまり、完全に放電された状態)。Tr2もONとなり、抵抗によって分圧された電圧0.96VがAVRのコンパレータの反転入力AIN1に入力される。 *プッシュSWを押すとTr1がOFFとなり、測定コンデンサへの充電を開始すると同時にタイマー1をスタート。 *測定コンデンサの電圧が上昇し、0.96Vに達するとコンパレータの比較出力に連動したタイマー1の値がキャプチャ(補足)され割り込みがかかる。 *タイマー1の値を記録し、Tr2をOFFとしてコンパレータの反転入力AIN1に2.5Vをセットする。 *測定コンデンサの電圧がさらに上昇し、2.5Vに達すると、再びコンパレータの比較出力に連動したタイマー1の値がキャプチャされて割り込みがかかる。 *タイマー1の値から先ほど記録したタイマー1の値を減算して充電時間を求める。 *充電時間を基準コンデンサの充電時間で除算し、容量を求める。 基準コンデンサの測定。 {{image DSC01216.jpg,,,size:45%}} 10μFの測定。→結果:10μF {{image DSC01217.jpg,,,size:45%}} 47μFの測定。→結果:56μF {{image DSC01218.jpg,,,size:45%}} 100μFの測定。→結果:102μF {{image DSC01219.jpg,,,size:45%}} 470μFの測定。→結果:533μF {{image DSC01220.jpg,,,size:45%}} 1000μFの測定。→結果:1075μF {{image DSC01221.jpg,,,size:45%}} ・・という具合で、なんとか使えそうです。 問題は、CR回路の抵抗値が固定されている現状では、大きな容量のコンデンサの充電に時間がかかることです。1000μFの場合は15秒程度かかります。 コンデンサの容量に応じて抵抗値をスイッチで手動切替にするか、プログラムで自動切換えにするなどの工夫が必要です。