結構悩んだ。

今回のPICで作ったUSB充電電力計は、結構悩んでしまった。顛末記を書く。

問題その1

ブレッドボードでUSBに流れる電流量が計測できたので接続ポートを変更し基板を組み立てた。

さて本番とUSB端子にデバイスを接続してみても変化がない。アレレである。PICでソフトを組むのが初めてなので、ポートの設定とかが間違っているのかと確認しても問題ない。あれやこれやと調べたが問題点はみつからない。多分プログラムは間違えはないのだろうという結論になったのであるが、それでも原因が分からない。
試しに直接MPUにダイレクトに接続している端子に電池の電圧を加えて確認すると1.5Vと表示された。
アレレである。よくよく確認してみると、オペアンプに電力が供給されてない。
Eagleで回路を組むときにオペアンプのV+/V-が5V/GNDに上手く関連づけられてなかったのが原因だったようである。基板を修正して対処するとUSBの電流が計測できた。

基板の修正

基板の修正

問題その2

オペアンプに電力供給すると、期待通りの動きをした。

mp3プレーヤーへの供給電流を計測

mp3プレーヤーへの供給電流を計測

mp3プレーヤーを繋いで供給される電流量を計ってみると207mAと妥当な値を示した。

PCのソフトの表示その1

PCのソフトの表示その1

良いことばかりでない、この状態で他のポートの値をチェックしてみると、MPUに直接繋いだポートの値は0Vを示してるが、オペアンプを介して増幅したポートは3.52Vとかいう、よく分からない値を示した。 😥

PCのソフトの表示その2

PCのソフトの表示その2

PCのソフトの表示その2

PCのソフトの表示その2

オペアンプ周辺のパターン切れやショートがあるのが原因かと追ってみるが問題はない。ソフトに原因があるのかとデータシートと見比べてみたのだが、問題はない・・・ん~ん。どこかが悪いのだろうけど特定できない。困ってしまった。

問題その3

元々は電圧を計測するポートを4つにしたのだが、多すぎると感じたのでひとつをデジタル出力ポートにした。
こうすればポートにソリッドステートリレーなどを繋げばオンオフ制御ができるようなる。

PCのソフトの表示その3

PCのソフトの表示その3

この改良でまたまた問題が発生した。現象は、このスイッチポートをオン状態にすると、MPUに直接繋いだポートの値が0Vではなくなるのであるアレレである。

原因は・・・

トラブルだらけ問題だらけである。

パターンを切断し正常な反応をしていたポートにオペアンプを繋げてみたが反応は同じ、

切断したパターン修復跡

切断したパターン修復跡

試しに端子をグラントに短絡させると数値がピタリと0を示した。ん?、正常反応だ。期待通りの反応だ。

これは”測定端子に電圧を測定するターゲットがぶら下がってない”のが原因のようだ。つまり測定端子に電圧を測定するターゲットがぶら下がってないと不安定になり、期待通りの値を返さないのだろうと想像ができた。

スイッチをオン状態にするとMPUに直接繋いだポートの値が不安定になるのも、同じ原因かも知れない。

ポートに電池を接続

ポートに電池を接続

そこでポートに電池の電圧を分圧して測定してみた。
約10倍の倍率で計測、期待通りの値だ。
スイッチをオンオフしても、MPUに直接繋いだポートの値が安定している。やはりこれが原因だった。

PCのソフトの表示その4

PCのソフトの表示その4


意外なところに原因があった。電池などターゲットを接続してなかったのが原因だった。トホホである。

注意が必要

測定端子に電圧を測定するターゲットがぶら下げた状態でも、スイッチのオンオフやLEDの点滅を繰り返しすると戻ってくるデータが不安定になるのが確認された。AVRでもアナログ値を計測するときにはスリープ状態にするが、PICも同様な注意が必要なのかもしれない。測定前後でLEDの点滅などの操作などは極力さける必要がありそうだ。

さらに隠れた問題が・・・そもそも計算方法がよく分かってない

後はPCのソフトを作り込んでいけば良いのだが、mAhの計算方法が良く分からない。 😐

1000mAの電流を1時間流せるのが1000mAhらしい。そこで、一秒間隔で電圧(電流)を測定してるので総量を3600(1時間の秒数)で割ったモノを表示している。充電が完了したときに正しい値になるという仕掛け。これが正しいのかどうか分からない。

一応メドは立った

PICは初めてなので少し大変だったけど、USB充電電力計は一応メドは立った。