中華掃除機の改良3

mayumiの書いたエントリで「トランジスタが故障し」という話が出て来たので、それについて解説します。

元々「掃除機」はそんなに手間をかける予定もなかったので、PWMとかあまり考えていませんでした。ところが、テスト稼動させた時に電源線が異常に発熱することを発見して、ケーブルを交換することになりました。それだけでは問題が解決しなくて... というのが、前2つのエントリです。

以下では、どんな問題があってどう解決したかを解説します。

最初の回路

最初は考えてなかったPWMですが、「どうせラズパイ入れてるし」ということで、ラズパイのGPIOを使ってPWMをすることにしました。この時の回路はとても簡単なもので、大き目のFETをラズパイのGPIOに直接つなぐとゆーだけのものです。

こんなの。Spiceのあれこれがありますが、これは後で使います。

R2とL1は雑なモータの等価回路です。本当は回転や逆起電力を含んだものにするべきですが、今回は過渡特性やモータの回転とかはどうでも良くて、ドライブ回路としてのことなので、こーゆー雑なことにしてあります。こんなものでもとりあえずの解析は出来るんで。あと、トランジスタ(FET)が実際に使ったものと異なる型名が書いてありますが、これはモデルを作るのが面倒だったので、「似たような用途の似たようなトランジスタ」を雑に選んで描いてます。実際に使ったのは、秋月に売っているEKI04047です。EKI04047は、Ronが小さく(5.2mΩ)Vonも低め(2.0V)で耐圧(Vds)も適当(40V)電流も80Aまで流せることになっているので、とても都合が良いです。しかも安いし(@50円)。

ところがこの回路にはちょっと問題があります。まず回路上にフリーホイールダイオードがありません。これはまぁわかっている人はわかりますが、元々この手のFETには寄生ダイオードがいい感じに入っているため、入れる必要がありません(伏線)。では実際これでどんな出力電流が流れるか、計算してみます。

このグラフで緑がV1、青がM1のドレイン、赤がL1の電流です。

なんじゃこの電流波形は?V1と同じ形をするはずなのに、ちっともそうなってませんね。実はこれはシミュレーションに使ったIPP041N04NはVonが4.1Vということで、V1の3.3VのパルスではONしてくれないからです。まぁこの辺は雑にV1を4.9Vのパルスにして計算しなおしてみます。

これでなんとなくそれっぽい出力電流となってくれました(これも伏線)。実際のトランジスタと実際のラズパイの動きも、だいたいこんな感じでした。

当初、これで「あ、動いたー」なんて喜んでいたわけです。前のエントリには詳しく書いてありませんが、「デューティー比を変更すると速度が変化する」ことは達成されていました。でも、最高速(つまり100%)にしても、いまいちフルパワーで動いている感じはしませんでした。

最初に気がついたのは、トランジスタが物凄く熱くなっていることです。そもそもスイッチにしか使ってないトランジスタで、ON抵抗はとても低いはずですから、そんなに発熱するのは何かがおかしいわけです。

これは何度かシミュレーションしてると気がつきます。何が起きていたかと言えば「ゲート電圧が低くてトランジスタが完全にONしてない」状態だったのです。要するに「電子負荷」になってる。つまり、いい感じに回ってるなーと思ったのは、トランジスタがいい感じの制限抵抗になってくれて、突入電流も特に流れずに掃除機の電源もトリップしないで動いていたわけです。

ところが元々そんなに発熱させる予定でも何でもないトランジスタを「抵抗」として使うわけですから、当然に物凄く発熱して、あげくに壊れてしまいました。

改良された回路

そこで、ちょっとドライブ回路を変更して、ちゃんとVonがVonになってくれるような電圧をゲートにかけるようにします。

これがその回路です。前段に雑なトランジスタを1つつけて、ゲート電圧をV2と同じまでかけられるようにしました。こうすれば、ドライブのトランジスタをちゃんとON出来るようになります。まぁこれだけだと論理が反転してしまいますけど、そこはソフトの方で頑張ってもらいましょう。

ではシミュレートしてみましょう。

緑がV1、青がモータの電流です。

いい感じにモータに電流が流れるようになりました。これだと、ちゃんと動いてくれるようです。

さてこれを実装して... とやったら、案外に動いてくれません。と言うのも、電源をONしてモータをONすると、いきなり電源がトリップしてしまいます。そして、全く動かなくなります。

調べてみると、トランジスタが飛んでます。別に計算上過電流があったわけでもなく、熱くなったわけでもありません。ただ飛んでる。さて何が起きていたのでしょう。

これもシミュレーションで原因が判明しました。↑のグラフの中にはM1のドレイン電圧が表示されていませんね。これをちょっと見てみましょう。

赤がドレイン電圧です。

はい? スケールがいきなりおかしくなりました。グラフ上では見えていませんが、ドレイン電圧がKVのオーダになっているからです。なんじゃこれは?

これはもちろんモータの中の誘導分(L1)のせいで発生したものです。あれー、こんなことならないためのフリーホイールダイオードじゃなかったんかい?

フリーホイールダイオード

実はこのM1に寄生しているダイオードは向きが決まっていて、ソースからドレインに流れるような入り方をしているのです。ところが、この回路の場合、電流の流れる向きとか諸々のことで、はね上がっているのはドレインの電圧なので、普通のダイオードをこの向きに入れても、意味がないのです。どう入れるのが正しいかと言えば、

こうなります。D1が追加されたダイオードです。

これでシミュレーションしてみると、

となって、無事常識の範囲の電圧に落ちついてくれました。このD1を適当なダイオードで実装して試してみると、めでたくトランジスタが壊れることはなりました。モータも電源を入れる順番を意識すれば、ちゃんと期待通りに回ってくれるようになりました。

この項の最初のエントリで書いてますが、ここで使っている電源はパソコン用の電源です。普段結構雑な扱いを受けている電源だと思うのですが、実際は結構デリケートで、過電流保護とかしっかりしています。また、負荷にこんなに大電流の流れる誘導負荷がつながるなんてことは考慮されていません。こういった負荷の場合、スイッチが入った瞬間にはかなりの電流が流れます。「雑な等価回路」では1Ωの抵抗として描かれていますが、静止している時の本当の直流抵抗はほぼ0Ωです。定常回転の時は逆起電力のお陰で見掛けの抵抗は1Ωになりますが、停止状態ではほぼ0Ωなので、定格よりもはるかに大きな電流が流れようとします(突入電流)。そのため、保護回路のしっかりしているパソコン電源はトリップしてしまうわけです。一連のシミュレーションはその部分を考慮していませんが、モータのモデルをちゃんとすれば、そういった部分もわかります。

とは言え、あれこれやるのも面倒になって来たし、こういった「直接金にならないもの」にかけられる手間も知れているので、「スイッチを入れる順番を間違えない。もし間違えたら最初からやり直し」ということにして、運用でカバーすることにしました。どうせ保護回路が動いてるだけですし。

 

最近のエントリー

404 WASP not found

第12回 「パーソナルサーバ」について考える

Jar Gardenに植物を植える

新しいお友達

Google翻訳、ChatGPT、Gemini...

Node.jsでGemini 1.5 FlashをAPI経由で使う

今日は「ぴろろんの日」

Node.jsでGPT-4oをAPI経由で使う

遠隔手話通訳実験

LLMと戯れてみる

新刊情報の収集

最近のできごと

Hieronymusのインボイス番号対応について

会計システム「Hieronymus」の現状

OrangePi5にZabbixをインストールする

オープンソースのノートアプリ「SiYuan」 - CasaOS AppStoreレビュー

お気に入りの色さがし1

創立記念日

SPDX License Listをデータ化した

Orange Pi5でC3TR-Adapterを試す