💥

【ポエム】商用電源電圧を測ろうとしたら爆発した

2022/12/22に公開

背景

大学院時代から約7年に渡って Raspberry Pi と BME280 を使った自宅環境観測システムを運用していましたが、そもそも、自宅において電源の監視や観測を行ったことがなく、つい最近までその利益についても考えたことはありませんでした。

https://twitter.com/nanase_coder/status/723818828841373696

https://twitter.com/nanase_coder/status/725720915678392325

もともと大学でもソフトウェア系の研究室に入り、MCUすら何を使ったら良いのかわからなかった私がとりあえず選択したのが Raspberry Pi だったことからもわかるように、当時の私はラズパイとセンサーを接続してネットに放流できたら上出来程度で考えていました。本当にそのレベルの認識でした。

https://twitter.com/nanase_coder/status/1044528097733750784

ソフトウェア系の企業に就職してからも趣味はハードウェア寄りの傾向が強く、偉大な先人たちの回路を見よう見まねで模倣したり、2017年ごろからはプリント基板を実際に設計して発注するなどの二足のわらじを履いていました。

https://twitter.com/nanase_coder/status/1235560825789673472

そのうち Arduino を扱い始めると同時に、もっといろんなセンサで計測してみたいと思うようになり、雷やCO2などのセンサに手を出し始めました。

もともと私は、音などの目で直接見ることができないものを見えるようにすることが大好きなようです。音、温度、湿度、気圧、雷(の強度)やCO2といったものはその一例に過ぎません。しかしそれでも、電気そのものを観察する機会はなかなかやって来ませんでした。

数年が過ぎた2021年初頭、日本では電力需要の増加で停電の危機に見舞われました。その頃から交流電源の周波数が目標値を下回ることを知りましたが、当時はテスターのプローブを電源タップに突っ込んで数値を見るだけのモチベーションしかありませんでした。電力需要が高まると発電機の負荷が上がって回転数が下がり、このような周波数の低下が起こるのですが、電力需要のような緩やかな変化はニュースや電力会社のサイトを見れば一目瞭然で、わざわざ監視する理由がありませんでした。

ところが、とあるきっかけで私は計測してみたいと思い始めます。

https://twitter.com/TomonoTokyo/status/1360593240936751108

2021年2月13日、福島県沖を震源とするMj7.3の地震が発生しました。この地震により東京電力管内でも停電が発生しました。この地震の場合、揺れを検知した火力発電所は直ちに発電を停止し、電力需要が高まった状態により周波数の低下が発生しました。

https://twitter.com/TomonoTokyo/status/1360599026274455554

ここで注目すべきポイントは、周波数の低下が非常に速く観測された点です。地震専門の緊急地震速報とは目的も精度も全く違いますが、電源周波数の大きな変動が観測されるほど大規模な現象が発生したという指標にはなります。当時から緊急地震速報のアラームを何らかの方法で自作したかった私は、この電源周波数の計測ならば可能性があるのではないかと考えました。

AC100Vへ...

https://twitter.com/nanase_coder/status/1506871540750905347

フォトカプラと抵抗だけで電源周波数をArduinoで計測できるようにしました。回路は以下の記事で解説しています。

https://zenn.dev/nanase_t/articles/87b71ad5c414ef

回路は至って単純で、フォトカプラが動作するだけの電流を200kΩで制限して、それをArduinoで拾うだけ。200kΩのおかげで過大な電流が流れることはないし、万が一、雷などでサージ電流が流れてもフォトカプラで電気的に絶縁されているのでArduino側はノーダメージです(Arduinoボードが同じ電源だったら話は別ですが)。

ところで、この回路は贅沢にもフォトカプラを2つも使っています。以下のように1つだけ使う回路も考えられます。

どうせなら電圧も、電源もとりたい

https://twitter.com/nanase_coder/status/1542892678223781891

周波数は比較的簡単に計測ができたので商用電源からArduinoを動かすための電源をとることにしました。手頃なトランスがあればよかったものの、小さいものは見つからなかったのでコアレスACアダプタなるものを作ることにしました。

https://twitter.com/nanase_coder/status/1543253621537513472

コンデンサは直流は通しませんが交流は通します。ある程度の大きな耐圧と1μF程度で40mA程度の電流を取り出せるので、これを全波整流します。すると電圧が40Vほどになった脈流のある直流電源が取れる。あとはツェナーダイオードと三端子レギュレータで降圧して所望の電圧を得ることができます。取り出せる電流はコンデンサの容量に依存します。トランスを使った降圧よりも効率も電流値も悪いものの、小電力ならば十分使えるACアダプタになります。

早速このACアダプタを電源とし、Arduinoで電源周波数と電圧の計測回路を作りました。

https://twitter.com/nanase_coder/status/1549014432264888321

ダイオードって破裂すると光るんですね。

https://twitter.com/nanase_coder/status/1549014894900432896

https://twitter.com/nanase_coder/status/1549018537427374082

ツイートでは「周波数カウント用ダイオード」とありますが、実際に破裂したのはコアレスACアダプタ用のダイオードでした。

なぜ破裂したのでしょう?

https://twitter.com/nanase_coder/status/1549067491233501184

つまるところ、ACアダプタ部と計測部のGNDが等電位でないにもかかわらず結線してしまい、短絡と同じ状況なりました。画像は検証のため4.7Ω抵抗が接続されていますが実際はショートしています。大電流が流れる閉回路が形成されたことにより、ダイオードとツェナーダイオードが発熱、ともに内部から破裂しました。

また、素子の破壊の他に、大電流により接続していた電源タップのサージ電流防止回路が作動しました。Arduinoやオシロスコープも接続していましたが、上記から分かる通り、これらにダメージはありませんでした。

では、どうすればよかったのでしょう?

絶縁しよう

等電位でない別々の回路のGNDを不用意に短絡させたのも問題ですが、そもそも短絡に備えて保護回路を設けたり、AC100Vを直接扱わなくても済むような絶縁を施すべきでした。周波数の計測回路はフォトカプラで絶縁されていたので、電圧の計測回路が主題になります。具体的には、やはりトランスを使ってAC100Vを降圧し、十分な電圧まで落としてからArduinoに入れるのが安全でしょう。

https://twitter.com/nanase_coder/status/1598155606950522883

実は、これを既に実現しているモジュールが流通しており、ZMPT101Bがそれになります。
内蔵されているオペアンプLM358の同相入力電圧範囲 V_\text{ICM}V_\text{CC} - 1.5 しかないので電源電圧が3.3V未満だとほとんど増幅ができない(信号が小さすぎる)という仕様があります。自分の場合はNJM2732に換装して電源5Vで3.4Vppまで増幅できるようにしました。これ以上の増幅はオペアンプの他に、内蔵されている抵抗をも換装する必要があるのでここまでにしておきます。

https://twitter.com/nanase_coder/status/1598254763438919680

近況

周波数を計測する回路自体は比較的安全で難しくもないので、基板を作って欲しい人に配ろうと思います。

https://twitter.com/nanase_coder/status/1594011616299069441

ところで、最近6年所属した企業を退職しました。

もともとハードウェアに傾倒し始めていた自分にとって二足のわらじを履いてソフトウェアをやり続けるのは無理があり、悩んだ末の退職となりました。東京にいる理由もなくなったので、地元に帰って慎ましく暮らそうと思います。次の仕事はまだ決まっていませんが、できればダイオードを破裂させたことを穏やかに笑ってくれる職場がいいなと思います。

https://twitter.com/nanase_coder/status/1587697447123357696

Discussion