例のごとく,非常に参考になるこの記事を参考に,コンデンサ・抵抗を選定していこうと思います.ノイズの除去等が主な目的です.
電気回路設計は初心者なので,何か間違っているところがあったら指摘してくださるとうれしいです.m(+.+)m
MOSFET
MOSFETにはモータを駆動させるためのNch MOSFET,逆電流保護の役割で用いるPch MOSFETがあります.
Nch MOSFET
Nch MOSFETに関しては,この記事で選定しました.
Pch MOSFET
※この素子は,逆電流保護のためにつけようかと考えていますが,以下の理由から導入するかどうか迷っています.
- バッテリのコネクタにPHコネクタを用いる場合,逆接続をする可能性はない.
- ダイオードを使った場合の逆電流保護に比べて電圧降下は少量だが,全く電圧降下しないわけではない.Rds(on) x Idだけ電圧降下する.
- 選定した昇圧DCDCコンバータにショート防止の機能がある.
この動画が非常にわかりやすかったです.
PMOSFETの選定方法についてまとめると,選定基準は以下のようです.
- Vdsの定格電圧が,供給電圧よりも高いこと.(3.7V以上)
- Rds(on)が小さいこと
- Vgsの定格電圧が,供給電圧よりも高いこと.(3.7V以上)
テストとしては,以前購入したこれで十分だなと思いました.
Vds=-60V, Rds(on)=0.25Ω(at max), Vgs=±20V
他にも「PMOSFET 逆電流保護」で検索すると,以下の日本語のサイトが出てきました.あまり有名ではなさそうですが,Pch MOSFETで逆電流保護をするのは界隈ではよく知られたテクニックなのかもしれません.
抵抗
抵抗は,以下の2つの目的で導入します.
ゲート抵抗
瞬間的に大きな電流が流れてしまうため,抵抗を挟んでおいた方がよいみたいです.現在は150Ωの抵抗にしていますが,100Ω程度でよいみたいです.
この抵抗がないと大きなインラッシュカレントが流れてバッテリの電圧がかなり落ちてしまい,マイコンがリセットされるようなこともあるようです.
If we did not include these resistors, the current rushed into the Gate of the MOSFET when output pin state is HIGH would be very large and would thus turn the MOSFET instantaneously on. This would create a very large inrush current due to the nature of the motors inductor, which would drop the battery voltage significantly enough to even reset the Arduino or the electronics.
https://www.instructables.com/id/Arduino-micro-Quadcopter/
ゲート・ソース間抵抗
ゲート・ソース間抵抗の役割は以下です.
・入力信号がない時(オープンになった時)に確実にゲートの電位を0Vにするため
https://detail-infomation.com/mosfet-gate-to-source-resistor/
・ドレインに高dv/dtの電圧が印可された時にMOSFETがターンオンするのを防ぐため
・制御ICのシンク電流が十分でないときに補助するため
esp32がoutput pinをLOWに設定するまでの間,確実にmosfetをオフにするという役割もあります.これを導入することで,esp32が立ち上がる前にモータが回るのを防ぎます.
Before Arduino sets each output pin to LOW the gate will have a floating point, meaning the voltage is unknown. It may as well be that the motors will turn on for just a brief moment! Thus providing a pull-down resistor will guarantee that each MOSFET is turned off at the start.
https://www.instructables.com/id/Arduino-micro-Quadcopter/
コンデンサ
コンデンサは主にノイズ除去や電圧のスパイク除去の目的で導入します.コンデンサがないと数百mVの電圧の揺れが生じてしまい,ビデオや無線にノイズが入ったり,マイコンが意図せずリセットしたり,IMUの読み取り値が狂ったりしてしまいます.
簡潔にコンデンサの役割をまとめているのが以下です.
1. Reduce the noise at the source of disturbance, thus the motors
https://www.instructables.com/id/Arduino-micro-Quadcopter/
2. Remove the voltage spikes from power supply close to the chips and other sensitive parts
コンデンサには,電解コンデンサ,タンタルコンデンサ,セラミックコンデンサ等がありますが,どれを選べばいいの?っていうのは,この動画を見ると良さそうです.すごいわかりやすい.
コンデンサ選定のポイントとしては,ESR(Equivalent Series Resistance)の小さいコンデンサを選ぶのが必須のようです.モータは高い周波数のノイズを発生させるため,高い周波数帯域でインピーダンスが低いものを選ぶ必要があるみたい.それを踏まえると,セラミックコンデンサが一番良いという結論です.
ドローンのノイズをコンデンサでこれくらい抑えられるよっていうのは,この動画がわかりやすく解説していました.コンデンサを入れたら,電源電圧のノイズが6Vから1Vくらいに減ったと言っています.モータを高速回転させたときのノイズと,モータを回している最中に機体に振動を与えたときのノイズをオシロスコープで計測しています.
今回は,バイパスコンデンサとモータとダイオードに並列につけるコンデンサを導入しようと考えています.
instructable circuitsさんでは,以下の場所にもコンデンサをつけていますが,私が使うBMX055, DOIT ESP32 DEVKITにはそれぞれ適切な箇所にコンデンサが内蔵されているので,これらのコンデンサは私のフライトコントローラには付け加えない予定です.
場所 | 電気容量 |
IMUのVccとGNDの間 | 100nF |
リセットピンとGNDの間 | 200nF |
バイパスコンデンサ
バイパスコンデンサ(パスコン)には以下の役割があります.
・役割1:ICにノイズが流入する、ICからノイズが流出するのを防ぐ
https://detail-infomation.com/bypass-capacitor/
・役割2:電源電圧の変動を防ぐ
・役割3:ICが必要な電力を補充する
・役割4:ノイズを閉じ込める
英語だと,decoupling capacitorかbypass capacitorと呼ぶそうです.
パスコンのつなぎ方は以下のとおりです.
https://detail-infomation.com/bypass-capacitor/
パスコンを配線する位置に関しては,電源ピン(ノイズを抑制したい場所)の近傍にするというのが重要みたいです.
パスコンをICの電源ピン(VCC)の近傍に接続することによって、ICから電源側を見たときにおいて、電源ラインとグラウンドに対する交流的なインピーダンスを下げることができます。
パスコンは電源ピン(VCCピン)から最短で配線してください。電源ピン(VCCピン)から離れれば離れるほど効果が薄くなります。
https://detail-infomation.com/bypass-capacitor/
バイパスコンデンサ(モータ側)
instructable circuitsさんでは,22uFの電気容量のコンデンサをそれぞれのモータの正極側とGNDの間に取り付けています.
バイパスコンデンサ(電源側)
モータの近くだけではなく,電源ピンの近くにもバイパスコンデンサは必要そうです.instructable circuitsさんでは,100uFのコンデンサ2つと10uFのコンデンサ1つをこの役割で使っています.
私の回路の場合,昇圧DCDCコンバータとDOIT ESP32 DEVKITに,10uFの電気容量のコンデンサが合わせて4つ搭載されているので,別途100uFと0.1uFのコンデンサを取り付けようかと思っています(備え付けのものだけで十分かもしれませんが).
モータとダイオードに並列につけるコンデンサ
モータとダイオードに並列にコンデンサをつけます.
instructable circuitsさんでは,10nFのコンデンサを取り付けています.これを取り付けることにより,3Vのripple(モータノイズによる電圧変動)を0.5Vにまで抑えられるみたいです.
ただ,この役割のコンデンサを導入しているドローンは少ないです.たぶんドローン用のブラシモータだとこのコンデンサが必要なほどのノイズは生じないのかな…わかんないけど.
ダイオード
スイッチオフ時にモータに生じる逆起電力からMOSFETトランジスタを守るため,モータと並列にダイオードをつなぐ必要があります.このようなダイオードをフリーホイーリングダイオードと呼ぶそうです.
フリーホイーリングダイオードは以下のように取り付けます.スイッチを切っても矢印の方向に電流を流し続けることができ,急激な逆起電力の発生を防ぐことができるようです.
http://pelab.nagaokaut.ac.jp/~nagayosi/robocon/motordrive/motordrive.html
ダイオードには種類があり,ショットキーダイオードやツェナーダイオードと呼ばれるものがあるそうですが,前者は高い周波数でも安定動作し,電圧降下が小さいというメリットがあるそうです.(instructable circuitsさんの記事参照.)
ショットキーダイオードの選定に関しては,以下2点を守ればよいかと思います.
- 平均順電流が3A程度(1つのモータにつき,最大で流れる電流が3A程度なので.)
- 逆電圧が3.7Vよりも十分大きい.
ちなみに私が以前秋月で選んだ1S4は平均順電流が上記の基準を満たしていませんでした.
世の中のドローンで使っている抵抗・コンデンサについて
それぞれのドローンで,以下の抵抗・コンデンサを使っています.回路図を見て調べていますが,CbmとCbvはちょっと自信がありません…
マシン | Rg | Rgs | Cbm | Cbv | Cmd |
STEVAL-DRONE01 | 1kΩ | 10kΩ | – | 4.7uF 100nF x 5 1uF x 2 | – |
ELECTRONOOBS | 100Ω | 10kΩ | – | 10uF x 3 0.1uF x 2 | – |
FlyBrix | – | 2kΩ | – | 100nF x 6 22uF x 4 10uF, 10pF | – |
instructable circuitsさん | 100Ω | 10kΩ | 22uF x 4 | 100uF x 2 10uF | (10nF x 4) |
Crazy file 2.1 | 47Ω | 10kΩ | 100n x 4 | 10nF 4.7uF | – |
CJMCU2 | 20kΩ | – | – | 0.1uF x 6 4.7uF x 2 | – |
※上記の表の表記はそれぞれ以下のようになっています.
- Rg:ゲート抵抗
- Rgs:ゲート・ソース間抵抗
- Cbm:バイパスコンデンサ(モータ側)
- Cbv:バイパスコンデンサ(電源側)
- Cmd:モータとダイオードに並列に接続するコンデンサ
Rgsはだいたい10kΩになっていること,Cbvは必要そうだということが確認できました.Cbvに関しては,どの周波数のノイズを抑えたいという設計思想がドローンごとにマチマチなので,値が異なるのかと思っています.それともここの部分はしっかり設計しなくても動くからあんまり真剣に設計をしていないか.
instructable circuitsさんの最新の回路図では,Cmdがなくなっていました.(やっぱりこのコンデンサは導入する必要ないかも.)
最終的な回路図(一部)
今回設計した回路をKicadに起こしてみると以下のような感じになります.まだ,発注するわけではないのでテキトーです.(モータ1個分のみの回路図です.)
おわりに
抵抗・コンデンサ・ダイオードの役割についてまとめてみました.実際にPCBを発注する段階になったら,改めてそれぞれの値を決めて別記事でまとめたいと思います.
コメント