モータードライバーを使ってモーターを制御する その2(DRV8835)
はじめに
今回はモータードライバーのDRV8835を使ってみました。普段からよく使っているTB6612FNGとは制御方法が異なります。基板の大きさがこちらのほうが小さいですね。
DRV8835は以前出展のお手伝いで関わっていた、自動運転アルゴリズムを開発しているRumiCarの基板に使われていました。私もRumiCarを作ってみようと思っています。
▼RumiCarのリポジトリはこちら
https://github.com/RumiCar-group/RumiCar
▼以前の記事はこちら
回路を組む
▼DRV8835の販売ページはこちら
https://akizukidenshi.com/catalog/g/gK-09848/
IN/INモードとPASE/ENABLEモードがあるのですが、今回はIN/INモードで使います。モーターへの電源は単三電池を3本直列にしています。
マイコンはXIAO ESP32C3を使います。マイコンへの給電も電池で行いたかったので、5V出力の昇降圧DC/DCコンバーターを使っています。モーターを動かすほどの電流は流せないので注意してください。
▼モーターはこちらを使いました。
▼電池はエネループを使用しています。
▼DC/DCコンバーターの販売ページはこちら
https://akizukidenshi.com/catalog/g/gK-15775/
▼回路図はこちら
▼実際の回路
プログラムを書く
取扱説明書などに掲載されている真理値表は0と1で書かれていたのですが、正しくはPWMであるところがあります。速度の制御もできます。
▼こちらのデータシートが詳しいです。
https://www.pololu.com/product/2135/
PWMの出力にはanalogWrite関数を使います。
▼前回の記事でも触れたのですが、XIAO ESP32C3はanalogWrite関数を使うことができます。
▼データシートのパターンを順番に実行するプログラムを作成しました。
▼動かしたときの様子はこちら
最後に
DRV8835でモーターを制御することができました。TB6612FNGは方向を決めるピンが2本、速度を決めるピンが1本の計3本必要でした。DRV8835は2本で速度も制御できるみたいですね。
XIAO ESP32C3で制御できたので、基板を小型にできそうです。RumiCarでは衝突を避けるのに測距センサーを使うので、さらに動作検証をしようと思います。