ロボコン向けIR2302を使用したモータドライバ・プログラム付き

Arduino

回路を設計した経緯はコチラ

前振りが長くなってしまったので分割しました。

スポンサーリンク

回路図

まずは必要最小限の構成です。

クリックで拡大します

4つすべてをNchFETで構成してます。ハイサイドのFETを動作させるためIR2302を使用したブートストラップ回路を組んでます。

SD(シャットダウン)端子は内部ブルアップされているので何もしなくて大丈夫です。

この回路でモータ1つを駆動させるにはPWM端子が2つ必要となります。

頑張ればこれくらいには小さくできます。

回路を小さくするコツはコチラを参考に・・・

サンプルプログラム

お手軽にArduino UNOを使用しました。

動作確認用です。とりあえず動いたら関数化なり機能追加なりしてくだせい。

動作確認

回路図の端子を以下のArduino端子に接続します。

  • PWM1:9番ピン
  • PWM2:10番ピン
  • VCC:5V
  • VDD:5V
    • 電源をACアダプタなどから供給しているなら、ACアダプタの+端子に接続してもよい
  • GND:GND

Arduinoにプログラムを書き込めば、モータが1秒ごとに正転→停止→逆転→停止→正転・・・の動作をします。

動作仕様

一応解説的なものを書いておきます。

ブートストラップ回路について

詳しい説明は省きますが、この回路によってハイサイドにNchのFETを使用できます。ただし、100%出力はできなくなります。

プログラムについて

ブートストラップ回路の制約でコンデンサのチャージ時間が必要となります。PWMでLOWを確保してください。サンプルプログラムでは最大出力254としています。

ロジックは以下の通りです。

PWM1PWM2出力
00ブレーキ
01逆転
10正転
11ブレーキ

ハイサイドのブレーキは非推奨です。OFF時間が必要なためローサイドのブレーキより効果が薄いです。

FETについて

用途別にお好みのものをお選びください。NchのパワーMOSFETなら問題なく動作すると思われます。私はEKI04047を使用しました。

許容電流80Aもあれば十分だと思ったのでこれにしました。

デッドタイムについて

IR2302には自動的に540nsのデッドタイムを挿入してくれます。なのでこちらで対策する必要はありません。

おわりに

今回紹介したものは動作させる必要最低限の構成です。これ以上のもの(SD端子入力、フォトカプラ等)は各自追加していってください。

コメント

  1. ハセガワ より:

    ゲート抵抗の計算をどのようにしたか?教えてください。

    • ロットん より:

      ゲート抵抗は基本的に10~1kΩの抵抗を適当に入れておけば動作するので計算はしていません。

      計算から求めたい場合は
      ゲート電圧 / ゲート電流 = ゲート抵抗
      で求めることができ、ゲート電流は
      ゲート入力容量 / 立ち上がり時間 = ゲート電流
      から求まります。

  2. takuya より:

    サンプルコードでは0v、5vのみ加えていますが、analogWrite関数の第2引数に与える数字を変更すれば(PWMのデューティ比を変更すれば)こちらの回路でDCモーターのスピードコントロールは可能なのでしょうか?

    • ロットん より:

      はい、この回路でスピードコントロールは可能です。
      ただし、このサンプルコードを使用する場合は第2引数を0~254の範囲で使用してください。
      255(100%出力)は正常に動作しないと思われます。