前の記事で赤外線リモコンと、ソナーを使ったロボカーを作成しましたが、ロボカーのスピードが速すぎてコントロールが難しいので、モーターの回転数をさげたいと思い調べたところ。
モーターの回転数を制御するには
L298Nにはモーターの回転数を制御出来るENABLE A と ENABLE B 端子があります、ここはショートピンでHIGHTに設定されています。
このショートピンを外しArduinoのPWM端子に接続すれば速度制御が出来るとの事、早速試してみることにしました。
Arduinoの現在の使用ピンは以下のようです。
モーターA:6番7番ピン B:8番9番ピン ソナー:10番11番ピン サーボ:5番ピン リモコン:12番ピン
設定を変更したがうまく動かない
当初のピン配置を以下のように変更しましたが
モーターA:4番6番ピン ENABLE A:3番ピン モーターB:7番8番ピン ENABLE B:9番ピン リモコン、ソナー、サーボは同様
しかしこれではモーターの速度制御は出来ませんでした、制御には0~255の数値を設定するとそれに応じた速度制御が出来るはずですが、マックスの255ではフルスピードで回転しますがそれ未満ではモーターが回転しないのです、ここではまりました。
TimerとPWM使用にはいろいろ問題が
調べたところPWM 出力と、タイマーや tone() 関数など、組み合わせに制限がある機能のお話に解決策らしい記事がありました、PWM端子ならどこに繋げても良いわけではなさそうです。
で、差し障りのなさそうな 5番と6番ピンを使用することにして、以下のピン配置にしました。 サーボ:3番ピン モーターA:4番7番ピン ENABLE A:5番ピン モーターB:8番9番ピン ENABLE B:6番ピン リモコン、ソナーは前と同様
スケッチの書き込みと動作確認
この設定でスケッチを書き込み動作確認したところ、速度変更が出来ました(^_^)v PWM使用時は注意が必要ですね。
モーターの速度を変更すると、方向転換の時間など影響がでますのでその辺の設定変更も必要になります。