先日、「マイクロビットロボカー」をつくりました(記事は こちら)。
ふたつのモーターで動く車です。マイクロビットでモーターを制御することで、前進、後進、右折、左折など、自由に動かすことができます。
このロボカーでは、秋月電子の「TC78H653FTGモータドライバモジュール(K-14746)」というモータードライバを使っているのですが、同じく秋月電子の「DRV8835使用ステッピング&DCモータドライバモジュール(K-09848)」というモータードライバの取扱説明書を見ていたところ、こちらのモータードライバを使えばモーターのスピードを変更できるようなことが書いてありました。
具体的には、モータードライバの入力に与えるアナログ値(PWM)を変えることで、モーターのスピードが変わるようです。
そんな訳で、マイクロビットロボカーのモータードライバを「TC78H653FTG」から「DRV8835」に取り替えて、ロボカーのスピードを変更できるようにしてみたいと思います。
ロボカーから「TC78H653FTG」を外し、代わりに「DRV8835」を取り付けます。
モータードライバの接続は以下のとおりです。
ブレイクアウトボード | モータードライバ |
---|---|
ソケット「P13」 | AIN2 |
ソケット「P14」 | AIN1 |
ソケット「P15」 | BIN1 |
ソケット「P16」 | BIN2 |
ソケット「3V」 | VM |
ソケット「3V」 | VCC |
ソケット「GND」 | GND |
モータードライバ | 右モーター |
---|---|
AOUT2 | 黒 |
AOUT1 | 赤 |
モータードライバ | 左モーター |
---|---|
BOUT1 | 黒 |
BOUT2 | 赤 |
*MODEのみ、空きピンになります。
プログラムは以下のとおりです。
Aボタンを押すと、「動作」関数を8回呼び出します。呼び出すたびに、スピードを表す「カウンター」の値をカウントアップします(0〜7)。
「動作」関数では、ロボカーを「1秒前進」→「1秒後進」させます。その際には、アナログ出力の値を127(カウンターが0のとき)から1023(カウンターが7のとき)まで変動させます。
結果は以下のとおりです。
カウンターが「3」(アナログ値が511)の時まで、ロボカーは動きませんでした。
カウンターが「4」(アナログ値が639)以上でロボカーが動きます。「4」と「7」ではスピード(1秒間での移動距離)が変わりますが、それほど大きな違いではありません。
一応、ロボカーのスピードを変えることはできましたが、超低速で動かすなど、きめ細かい制御まではできませんでした。
なお、私がマイクロビットの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。
初心者向けから、比較的高度なものまで、さまざまな情報が記載されているだけでなく、子供向けの作例も多数掲載されていますので、「プログラミング教育」のための題材さがしなどにもおすすめです。