9.DCモーター制御 (2024.2.10-2025.12.19)

電子制御に向いているArduinoですから、モーター制御ももちろん得意分野の一つです。次なる目標を掲げた「自動走行車」の製作に向けて、走行の要となるDCモーター制御を行います。製作するのは3輪自動車で、左右の前輪に独立したDCモーターを備え、後輪は単なるフリーの車輪とします。2つのモーターを制御するために、今回は2回路のモータードライバを内蔵したIC(TB6612FNG)を使うことにします。既にこのICを搭載した安価なモジュールが色々あり、簡単な配線で手軽にモーター制御をすることができます。amazonでも2個セットで700~800円程で販売されていて、TB6612FNGの互換ICでDRV8833を搭載したモジュールは更に安価(1個200円程度)で入手できます。


モータードライバ TB6612FNG

モータードライバ基板のピン配置は図右の通りです。実験回路は下の回路図を参考にして下さい。まずは左モーター(B側)だけで回転テストをしてみましょう。PWM制御を行うため、モーターに印加されるのはパルス状の電圧です。Arduinoのデジタルピンの中で、PWM出力ができるのはD3/D5/D6/D9/D10/D11です。それ以外ではPWM出力が使えないので注意して下さい。今回はモータードライバA側のPWMAにはD6ピン、B側のPWMBにはD11を接続します。AIN端子とBIN端子はそれぞれ右側、左側のモーター回転方向を設定します。

モータードライバを使用した場合、回転数の変更にはアナログのように電圧自体を増減するのでは無く、デジタル的に一定の周期で電源電圧を印加し、そのパルス幅を変えることで実現します。用意したテストプログラムでは、モーターは停止→正回転→停止→逆回転→停止の動作をし、モーター回転時はパルス幅を最小~最大の256段階で変化させることで回転速度が徐々に変化します。モータードライバにはスタンバイ端子(STBY)が用意されていて、これをHIGHにすればモーターは回転可能状態になり、LOWにすれば開放状態になって停止します。瞬間的にモーターを逆転させるとモーター自体が発電機の働きをして逆起電力が発生します。モータードライバやメカにも大きな負荷をかけるため、スタンバイを併用したりモーターの回転速度を落としてから切り替えるようにします。


接続図

●DCモーターテスト(1個用)

自動走行車では2個のモーターを制御するので、上記のスケッチを拡張して左右のモーターを同時に動作させます。ただし、車輪の配置が左右で逆になるため、片方のモーターの配線を逆にします。そうすれば同じ操作で済むので分かりやすいと思います。
●DCモーターテスト(2個用)

実験すればすぐに分かりますが、回転し始めの状態では、どちらかが少し遅れて回り出します。左右のモーターが全く同じ物と言うことはほぼありえないため、若干の特性バラツキによって回転に差が出るわけです。つまり、単に左右同じ割合でPWM制御を行うだけでは、回転数が揃わず直進すら困難なのです。これを解消するには一方的に回転力を与えるのでは無く、互いの回転数をチェックして左右を同じ回転数になるように補正する必要があります。