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

電子工作

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

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

スポンサーリンク

回路図

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

クリックで拡大します

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%出力)は正常に動作しないと思われます。

  3. yuki より:

    モータードライバのほうが便利ですが、損失が大きいのばっかりで、意外と使えるやつないんですよね。

    ぼくも初めてライントレースカー作ったとき、T芝の有名なTP○○を使ったんですが、

    入力に9Vボタン電池を使うと、 (9-Vout)×Iout 分、丸々損失食って、たかが 500mA なのに激熱でしたよ。

    • ロットん より:

      状況が分からないので正確なことは不明ですが、定格内で扱っていても発熱するようであれば使い方を間違っている可能性が非常に高いです。

  4. よみ より:

    キャパシタのチャージ時間は最短でどのくらい必要ですか?
    また、その部分は本プログラムですと、どの部分に当たりますか?

    • ロットん より:

      Q:キャパシタのチャージ時間は最短でどのくらい必要ですか?
      A:チャージ時間はpwm周期の1%程度確保すれば十分です。

      Q:また、その部分は本プログラムですと、どの部分に当たりますか?
      A:16行目、および24行目の第2引数【254】が該当します。
       このプログラムの場合チャージ時間は 1-(254/255)=0.4%となっています。

  5. 匿名 より:

    >定格内で扱っていても発熱する

    発熱はすると思いますが(だから放熱するのでは)

    • ロットん より:

      すみません、言葉足らずでした。
      >たかが 500mA なのに激熱でしたよ。
      とありましたので
      【定格内で扱っていても異常に発熱するようであれば~】
      の意味となります。

      数十アンペアも流すような巨大ヒートシンク付きモータードライバとかならともかく、500mA程度で激熱になるのでは回路が短絡している可能性が高いと思っています。
      (TPシリーズで間違った使い方をして燃やしてしまった事例をよく聞きます)

  6. 匿名 より:

    申し訳ございません。そのとおりです。大昔(工作初心者)のことなので、おそらく短絡させてたんでしょうね。

  7. はしぐっちゃん より:

    ハイサイド側のRgsとコンデンサを,GNDに接続しても問題ありませんか?

    • ロットん より:

      未確認のため断言できませんが、基準電位がGNDに落ちてしまうため正常な動作はしないと思われます。

  8. yayuyo より:

    回路図にある10kΩの抵抗にはどのような意味があるのでしょうか?