今度は動いたよ!
前回まであらすじ
マイコンボードで鉄道模型を走らせるべく、いろいろ試していました。
マイコンボードのピンからの出力でも走るかな?と思ったんですが、これを見た方からいろいろなアドバイスやお叱り・マサカリを頂き、今回の第2話で再度チャレンジという流れです。
やっぱりモータードライバー
結論から言うと、DRV8830というモータードライバーを使いました。
秋月で230円。お手頃な価格の一方で、このモータードライバーはマイコンボードとI2C接続できるので、モータードライバーへ与える電圧の生成やanalogWrite()
といった関数がもともと用意されていないような某ボードでも簡単に扱えるものとなっています。
とりあえず逝っとけダイヤ的なアレ
いやー、結線も楽だし、ちゃんと動くし、I2C楽だわぁ・・・。ヘタレなので、これで十分でございます。一方で、スペックシートにかかれている通りに、バイト列を送信しなければいけないので、それだけはちゃんと実装する必要があります。
実装例
だんだん速くなって、急に止まって、逆方向にだんだん速くなって、また急に止まるような動作確認用のコードです。
#include <Wire.h> #define SDA 13 #define SCL 12 #define ADDR 0x60 void setup() { Wire.begin(SDA, SCL); } void loop() { writeData(0x00, 0x00, 0x00); delay(1000); for (int i = 0x06; i < 0x3F; i++) { writeData(0x00, i, 0x01); delay(1000); } writeData(0x00, 0x00, 0x00); delay(1000); for (int i = 0x06; i < 0x3F; i++) { writeData(0x00, i, 0x02); delay(1000); } } void writeData(byte reg, byte vset, byte data) { int vdata = vset << 2 | data; Wire.beginTransmission(ADDR); Wire.write(reg); Wire.write(vdata); Wire.endTransmission(true); }
これも、当たり前と言えば当たり前なんですが、ちょっと電圧をかけたぐらいでは鉄道模型は走らず、ある程度電圧をかけないと動いてくれません。例えば低速走行をやりたいときは、実際の挙動を見つつ、適切な電圧を見つけてあげる必要がありそうです。
ちなみに、嫁氏が京急のカプセルプラレールで横浜駅を引き当ててきたので、今後使わせていただきます・・・(笑)