万能導通テスター作り直し

· 3min

以前作成した万能導通テスター、どうもたまに導通しているのに音が鳴らないことがあり調べていたら、ファームウェアにバグがあるのと、MOS FETブリッジのPチャネル側のバイアスが微妙に足りない事が分かった。測定するとゲート電位が-1.7Vくらいで、完全ONには足りない感じ。ファームウェアのバグを直すかとR8C用のGCCを取り出してきて調べていたのだけど、どうもGCC12ベースの移植版はバグがあるっぽく、またGCCと格闘するのも疲れるので、MCUはCH32V003に載せ替えてしまうことにした。

回路図

MOS FETブリッジは取り払ってGPIO制御に変更。間違って電圧のかかっている部分を測定してしまった時のために念のためツェナーでクランプしておいた。以前は電源offができなくてオートパワーオフ頼りだったのだけど、今回はちゃんと電源を切れるようにした。どうやっているかと言うと、電源ボタンの片側をMCU 6ピンにつないで、ここをA/D変換で監視するようにした。ここは電源ICのEN入力で、普段はMCU 3ピンがHIGHに制御されているのでほぼ5Vになっているが、電源ボタンを押すと、ここが電池に直結されるために3Vくらいに下がる。これを検出して電源を落とす(3ピンをLOWに制御)するわけだ。

動作時の電流は20mAくらいでR8Cの時よりだいぶ多くなった。まぁ、クロックを落とせば良いのだけどニッケル水素電池は2000mAhくらいあるので、100時間くらいもつ計算だから良しとした。

ファームウェアはRustで作成。Rustだとtraitを使えば簡単にハードウェアを切り離せるので、アプリケーション部分はハードウェア無しでテストするようにしてある。

ソースはこちら

CH32V003のRustのセットアップをしてから、univ_tester_rsディレクトリに行って、cargo run --releaseすれば良い。