25A流せるモータードライブ回路(パワーMOSFETを用いたHブリッジ回路)
前回の記事にある回路を設計したわけですが、実際にブレッドボード上で組み立てて、モーターの代わりにLEDを光らせようとしてみました。25Aも流せる回路で、LEDを光らすなんて少しもったいない気もしますね。
ただし、あの回路図の2SC1815はなくして、上側のFETは[LOW]もしくは[ハイ・インピーダンス]で制御しました。
PSoCと回路を接続して、PSoCはArduinoから来た指令で動きます。
PSoCとArduinoはI2Cで通信します。
Arduinoの役目は、PSoCに指令することです。PSoCの役目はArduinoの指令通りにFETのゲートの開閉をすることです。
上側のFETに接続したPSoCのピンは、オープンドレインLOWに設定しました。PSoC内のレジスタに、0を書きこむとLOWが出力され、1を書きこむとハイインピーダンスが出力されます。つまり、0を書きこめばFETのゲートが開き、1を書きこめばFETのゲートが閉じます。
下側のFETに接続したPSoCのピンは、普通のHIGHもしくはLOWです。
結果:うまくいきませんでした。ドライブすると、I2C通信ができなくなりました。モータードライブ回路とPSoCの接続を電気的に切断すると、再びI2C通信ができるようになりました。
原因:様々な調査の結果、FETの入力容量が大きいため、FETのゲートを開こうとした時にPSoCのピンからFETのゲートに流れる電流が瞬間的に大きくなり、PSoCが不安定になることが推測されました。
2SJ334のCiss(入力容量)は3300pFです。
前回の記事にある回路を見ていただければ分かるように、PSoCのピンとFETのゲートの間に挟んだ抵抗は47Ωです。電源電圧は5Vですから、最大で約100mA流れる可能性があります(実際はもっと少ないはずです)。
ピン出力は10mAに抑えるべきです。
この原因を見つけるのにとても時間がかかりました。
解決方法:
パワーMOSFETのゲートにはマイコンのピンをつながず、小さいFETを間にかまして、制御しようと思います。
トランジスタを使わず小さいFETを使う理由は、トランジスタの方がFETのほうよりも反応時間が遅いからです。
また、パワーMOSFETのゲートとマイコンの間の抵抗をもっと高い抵抗にしFETを追加せずに、済ましてしまわない理由は、パワーMOSFETのゲートとマイコンの間の抵抗をもっと高い抵抗にすると、パワーMOSFET内のコンデンサ(入力容量)を充電するまでの時間が遅くなるからです。すると、ピン出力からゲートが開くまでの時間が遅くなります。
PWM制御をするにあたって、反応時間を早くすることは大切な事です。
追加するFETは、2N7000にしようと思っています。
”パワーMOSFETのゲートドライブなどのスイッチング用途に最適です”
と書いてありますので、まさに使いたいFETです。
回路を検証しながら気づいたことその①
「はじめてのPSoCマイコン」の68ページ上には
⑦オープン・ドレイン・ドライブLow('0' : ハイ・インピーダンス, '1' : High出力)
⑧オープン・ドレイン・ドライブHigh('0' : Low出力, '1' : ハイ・インピーダンス)
と書いてありますが、
70ページの回路図を見ても分かるように、
⑦オープン・ドレイン・ドライブLow('0' : Low出力, '1' : ハイ・インピーダンス)
⑧オープン・ドレイン・ドライブHigh('0' : ハイ・インピーダンス, '1' : High出力)
の間違いではないでしょうか?
回路を検証しながら気づいたことその②
オープンドレインで出力するときの注意ですが、
PRT0DR |= 0x02;
のように出力していると、
他のピンを出力するときに、オープンドレインに設定したピンに予期せぬ出力が行われることがあります。それは PRT0DR |= 0x02; は一度読み込み(入力)をしてから、出力しているからです。
これは、内部プルアップ抵抗を設定している時も同様です(問題となるのはオープンドレインよりもプルアップの方が多いでしょう)。
僕はしばらく気づかずにいていました。
回路を検証しながら気づいたことその③
I2C仕様書を見ていると、予約されたスレーブアドレスがあるとのことなので、それらのアドレスは使わないようにしなければなりません。
Hブリッジ回路部分↓
2N7000が手元になかったので、47Ωの抵抗を470Ωの抵抗に入れ替えてみました。
すると、正常に動作しました。
よって上に書いた推測した原因は正しいことが証明されました。
470Ωの抵抗に入れ替えても正常に動作しますが、反応時間を速くするため、2N7000が届けば、2N7000を用いて製作したいと思います。
470Ωの抵抗に入れ替えて動作確認したビデオ↓
« いろいろできた!? | トップページ | やっとマブチモーターRS-380PHにギヤヘッドを接続できた »
「PSoCマイコン」カテゴリの記事
- 25A流せるモータードライブ回路(パワーMOSFETを用いたHブリッジ回路)(2011.01.22)
- 超音波センサー…・・・・・・ ・ ・ ・(2010.11.28)
- IRセンサーのデータ解析(2010.11.21)
- PSoCマイコンのCPU_Clock(2010.11.20)
- LPFを通したあとの波形(2010.11.18)
コメント