NゲージをAruduinoで制御 [その他]
PCを使ってAruduinoからNゲージを簡単に制御できるらしいということを知ってやってみた。
参考:http://www.geocities.jp/y_taka216/ramonino/home.html
家にある材料を使って、TA8429があったので、それで作ったのがこれ。
実際はブレッドボードを使って、こんな感じ。
・DCモーター用ICのTA8429はIN1、IN2にPWMを入れるやり方と、STにPWMを入れるやり方があるようだが、今回は、AruduinoのPWM端子をケチりたい気分だったのと、ブレーキ機能がよくわからないので、STに入れることにした。
In1,In2をPWMにする 参考:http://www.maizuru-ct.ac.jp/control/machida/elec/motor/motorbody.htm
STをPWMにする 参考:http://hirose.sendai-nct.ac.jp/~ckuma/micom/3664/motor4.html
・なんとなく方向を確認したかったのでIn1,In2にLEDをつけて、どっち向きへの信号かをわかるようにした。
・12Vがショートしていろんなものが壊れるのはいやだったので、電源はパワーパックのものを流用した(安全装置ついているので)。でも、TA8429に-12Vとか入れたら何かが壊れるかも。
プログラムはこんな感じでAruduinoのCOM通信でスピード、方向を変更できるようにした。
------------------------------------------------------------------------
------------------------------------------------------------------------
動かし方は、
a:左に加速する
s:ストップ
d:右に加速する
(AruduinoのシリアルモニタはEnterを押さないと送信されない)
そのときの動画がこれ。
ピーピーうるさいかも。
参考:http://www.geocities.jp/y_taka216/ramonino/home.html
家にある材料を使って、TA8429があったので、それで作ったのがこれ。
実際はブレッドボードを使って、こんな感じ。
・DCモーター用ICのTA8429はIN1、IN2にPWMを入れるやり方と、STにPWMを入れるやり方があるようだが、今回は、AruduinoのPWM端子をケチりたい気分だったのと、ブレーキ機能がよくわからないので、STに入れることにした。
In1,In2をPWMにする 参考:http://www.maizuru-ct.ac.jp/control/machida/elec/motor/motorbody.htm
STをPWMにする 参考:http://hirose.sendai-nct.ac.jp/~ckuma/micom/3664/motor4.html
・なんとなく方向を確認したかったのでIn1,In2にLEDをつけて、どっち向きへの信号かをわかるようにした。
・12Vがショートしていろんなものが壊れるのはいやだったので、電源はパワーパックのものを流用した(安全装置ついているので)。でも、TA8429に-12Vとか入れたら何かが壊れるかも。
プログラムはこんな感じでAruduinoのCOM通信でスピード、方向を変更できるようにした。
------------------------------------------------------------------------
#define DIR1 12 #define DIR2 13 #define PWM_PORT 11 #define ADD 10 void setup() { // put your setup code here, to run once: pinMode(DIR1,OUTPUT); pinMode(DIR2,OUTPUT); Serial.begin(9600); Serial.print("Ready"); } void loop() { // put your main code here, to run repeatedly: static int v = 0; if(Serial.available() > 0) { int ch = Serial.read(); //Serial.write(ch); switch (char(ch)) { case 'a': if(v < 250) v += ADD; break; case 'd': if (v > -250) v -= ADD; break; case 's': v = 0; break; default: break; } Serial.println(v); } //blink analogWrite(PWM_PORT,abs(v)); if (v > 0 ) { digitalWrite(DIR1,HIGH); digitalWrite(DIR2,LOW); } else { digitalWrite(DIR1,LOW); digitalWrite(DIR2,HIGH); } delay(10); }
------------------------------------------------------------------------
動かし方は、
a:左に加速する
s:ストップ
d:右に加速する
(AruduinoのシリアルモニタはEnterを押さないと送信されない)
そのときの動画がこれ。
ピーピーうるさいかも。
2015-03-01 14:22
nice!(0)
コメント(0)
トラックバック(0)
コメント 0