Arduino Nano とモータードライバでDCモーターを正転・逆転してみた(1) [Arduino]
Arduino Nano とモータードライバ(DRV8830)を使ってDCモーターの制御にチャレンジしてみました。
DRV8830は、I2Cで動作するモータードライバです。下記にデータシートがあります。
シリアル・インターフェース内蔵、低電圧モーター・ドライバ
http://www.tij.co.jp/jp/lit/ds/symlink/drv8830.pdf
Arduino Nano のI2Cの端子は、SCL (A5pin)、SDA (A4pin) になります。ピン配置をネットから拝借してきました。(Arduno Nano のシルクは小さくて見にくいのでこの表にいつもお世話になってます ^^;)
http://arduino.alhin.de/index.php?n=13
DRV8830は、下記のように接続しました。
A0, A1 はデバイスのアドレスを決定するためのピンです。今回は両方ともGNDに接続しています。
この表から、 書き込みアドレス:0xC0、読み込みアドレス:0xC1 になります。Arduono から指定するデバイスアドレスは右に1ビットシフトした値になるので、「0x60」になります。
ISENSEに関しては、詳しい説明は省きますが、データシートに下記の記述がありますのでとりあえずGNDに接続しています。
I2Cのレジスタマップは、0x00:コントロール、0x01:障害状態の読込み となっています。
今回は動作テストがメインですので「障害状態の読込み」は行いません。参考までにI2Cの書き込みシーケンスを示します。
レジスタ0 (0x00:コントロール) は下記のような構成となっています。
VSET[0..5]はモーターに印加する電圧を設定します。データシートにまとまった表があります。
IN1、IN2はモーターの回転方向を制御します。
さて、これでArduino Nano でモーター制御するための予備知識は揃いました。Arduino Nano とモータードライバ、DCモータを下記のように組んでみました。
位置関係が分かりやすくなるように、斜めからも撮影しました。
スケッチを下記のようにプログラムしてみました。
動かしてみます。
あれ?期待したような動きになっていません。1秒間動き続けてほしいのですが一瞬で止まってしまいます。
ひょっとしたらと思いスケッチをプログラムし直してみました。
delay を 10msec にしたのは、データシートで下記の記述を見つけたためです。検証が必要ですが、とりあえずの仮に設定しました。
さて、動作を見てみましょう。
無事、動いたようです。分かりにくいですが、きちんと正転・逆転をしています。
もし、I2Cのレジスタを設定し続けなければいけないとするとかなりやっかいです。まだ使いこなせていないようなので、もう少し調べてみたいと思います。
今回は、DRV8830の説明をしてしまったので、ものすごく長くなってしまいました。最後まで読んでいただいた方ありがとうございますー。 「Arduino Nano とモータードライバでDCモーターを正転・逆転してみた(2)」に続きます。
(^_^)/~
関連記事
Arduino Nano とモータードライバでDCモーターを正転・逆転してみた(2)
http://makers-with-myson.blog.so-net.ne.jp/2014-05-19
Arduino でモータを動かす
http://makers-with-myson.blog.so-net.ne.jp/2013-11-11
Arduino Nano でサーボモータを動かしてみた
http://makers-with-myson.blog.so-net.ne.jp/2014-04-24
DRV8830は、I2Cで動作するモータードライバです。下記にデータシートがあります。
シリアル・インターフェース内蔵、低電圧モーター・ドライバ
http://www.tij.co.jp/jp/lit/ds/symlink/drv8830.pdf
Arduino Nano のI2Cの端子は、SCL (A5pin)、SDA (A4pin) になります。ピン配置をネットから拝借してきました。(Arduno Nano のシルクは小さくて見にくいのでこの表にいつもお世話になってます ^^;)
http://arduino.alhin.de/index.php?n=13
DRV8830は、下記のように接続しました。
A0, A1 はデバイスのアドレスを決定するためのピンです。今回は両方ともGNDに接続しています。
この表から、 書き込みアドレス:0xC0、読み込みアドレス:0xC1 になります。Arduono から指定するデバイスアドレスは右に1ビットシフトした値になるので、「0x60」になります。
ISENSEに関しては、詳しい説明は省きますが、データシートに下記の記述がありますのでとりあえずGNDに接続しています。
I2Cのレジスタマップは、0x00:コントロール、0x01:障害状態の読込み となっています。
今回は動作テストがメインですので「障害状態の読込み」は行いません。参考までにI2Cの書き込みシーケンスを示します。
レジスタ0 (0x00:コントロール) は下記のような構成となっています。
VSET[0..5]はモーターに印加する電圧を設定します。データシートにまとまった表があります。
IN1、IN2はモーターの回転方向を制御します。
さて、これでArduino Nano でモーター制御するための予備知識は揃いました。Arduino Nano とモータードライバ、DCモータを下記のように組んでみました。
位置関係が分かりやすくなるように、斜めからも撮影しました。
スケッチを下記のようにプログラムしてみました。
動かしてみます。
あれ?期待したような動きになっていません。1秒間動き続けてほしいのですが一瞬で止まってしまいます。
ひょっとしたらと思いスケッチをプログラムし直してみました。
delay を 10msec にしたのは、データシートで下記の記述を見つけたためです。検証が必要ですが、とりあえずの仮に設定しました。
さて、動作を見てみましょう。
無事、動いたようです。分かりにくいですが、きちんと正転・逆転をしています。
もし、I2Cのレジスタを設定し続けなければいけないとするとかなりやっかいです。まだ使いこなせていないようなので、もう少し調べてみたいと思います。
今回は、DRV8830の説明をしてしまったので、ものすごく長くなってしまいました。最後まで読んでいただいた方ありがとうございますー。 「Arduino Nano とモータードライバでDCモーターを正転・逆転してみた(2)」に続きます。
(^_^)/~
関連記事
Arduino Nano とモータードライバでDCモーターを正転・逆転してみた(2)
http://makers-with-myson.blog.so-net.ne.jp/2014-05-19
Arduino でモータを動かす
http://makers-with-myson.blog.so-net.ne.jp/2013-11-11
Arduino Nano でサーボモータを動かしてみた
http://makers-with-myson.blog.so-net.ne.jp/2014-04-24
サインスマート(SainSmart) Nano 3.0 互換ボード for Arduino
- 出版社/メーカー: サインスマート(SainSmart)
- メディア: Personal Computers
サインスマート(SainSmart)Nano I/O 拡張シールド for Arduino
- 出版社/メーカー: サインスマート(SainSmart)
- メディア: おもちゃ&ホビー
VNH2SP30 搭載 Arduino 用 デュアル・モーター・ドライバー・シールド (Monster Moto Shiled 互換品)
- 出版社/メーカー: Umemoto LLP
- メディア:
Nano3.0互換ボードを買ってしまいましたが、まだ何も出来ません。
とりあえずファンコントロール用に温度センサーを買う予定です。
by まいく (2014-05-16 21:51)
まいくさん、コメントありがとうございます。
Arduino Nano は小さいのがいいですよね。簡単に組めてしまうので、ぜひ活用ください。でも、温度センサーの選択はけっこう難しそうですね。。
by ys_oota (2014-05-17 01:07)
はじめまして
こちらのスケッチを参考にさせていただき
モータを使って電子工作しました!
ありがとうございました。
by homemadegarbage (2016-05-18 20:42)