Arduinoでダイセン電子工業のモータードライバを動かす実験です。
結果から言うとうまくいきませんでした。
このモータードライバは6つのモーターを駆動でき、小型のモーターであれば十二分に動かせるパワーもあります。
価格も高くなくコストパフォーマンスに優れたボードだと思います。
ロボカップジュニア(サッカー)ではおなじみのボードで、うちの子供も使っています。
I2Cでコントロールできるので、Arduinoから簡単に動かせると考えました。
ダイセン電子工業のサイト
http://www.daisendenshi.com/detail/ddkit_0601.html
【接続】
- Arduinoの5VとGNDをモータードライバのI2C端子の5VとGNDへ接続。
- Arduinoのアナログ4pinをSDAへ接続、アナログ5pinをSCLへ接続、各々3KΩの抵抗を介してプルアップ。
【スケッチ(プログラム)】
プログラムは上記のURLからダウンロードできるマニュアルを参考に作成しました。
#include <Wire.h> #define TJ3M_ADDR 0x14 int ret; byte b[6]; void setup() { Wire.begin(); delay(100); } void loop() { Wire.beginTransmission(TJ3M_ADDR); b[0] = 50; b[1] = 50; b[2] = 0; b[3] = 0; b[4] = 0; b[5] = 0; Wire.send(b, 6); ret=Wire.endTransmission(); delay(100); }
結果は冒頭の通りうまくいかなかったのですが、ごく稀に(10回に1回ぐらい?)動くこともありますので、タイミングの問題でしょうかね?よくわかりません。
なお、ArduinoのI2Cは100KHzで動いているようです。モータードライバのマニュアルによれば100KHzでも大丈夫なようです。
ArduinoのI2Cの使い方としては温度センサのLM73ではうまく動いたので、問題はないと思うのですが。
はじめまして、こんにちは。
ぽよこまだんなと申します。
ダイセンのモータードライバですが、回路図をみるとI2Cのラインにプルアップ抵抗が入っています。
この状態でさらにブレッドボード上でプルアップしてますので、
Lowに落ちるのに時間が掛かってるのではないでしょうか?