ATmarquinoでMhysicalna(身近な)コンピューティング 初めてのドキドキモーターコントロール [ATmarquino Arduino]
あの頃って現在みたくFET使ってPWM制御なんて無かったから、基本的にサーボにスライド抵抗が連動していて、それでスピードをコントロールしていたんだけれど、やっぱり稼働時間が短かったんだよね。7.2Vのニッカド電池パック一本で20分位しか走れなくて、中学生だからお金無いので予備の電池パックとか持てなくて、一回走行したら終了とか、、、。
友人はスライド抵抗の代わりにでっかいリレーを入れたんだけれど、当然コントロールがON/OFFしか無くって、スタートからマブチの540モーターの巨大トルクをドッカーンと効かせて、でもそんなピーキーな特性では曲がれないってば。
ははは、何もかもが懐かしい。
久しぶりにモーターなんて触るから、検索して以下のサイトを参考にさせていただきました。有難うございます。
http://www.picfun.com/motorframe.html:ここ後閑さんのサイトですね。
http://www.geocities.jp/mimiin/tips/fet/fet.html:先に見つけたのはこちら。
FETは比較的近所のサトー電気さんで全部揃いました。
Arduinoの標準のライブラリであるアナログ出力は簡単でいいですね。
スケッチは以下の様になっています。シリアルからFとかRとかSとか受けて方向と速度を制御しています。
/****************************************************************************/ /* モーターコントロール第一段 */ /****************************************************************************/ #define FORWARD 10 #define REVERSE 11 /****************************************************************************/ /* 変数定義 */ /****************************************************************************/ static const int speed[] = { 0,85,95,105,125,145,165,190,215,240,255, }; /****************************************************************************/ /* プロトタイプ宣言 */ /****************************************************************************/ /****************************************************************************/ /* 初期化処理 */ /****************************************************************************/ void setup() // run once, when the sketch starts { analogWrite( FORWARD, 0 ); //一度停止させる analogWrite( REVERSE, 0 ); //一度停止させる Serial.begin( 38400 ); //ボーレートは38400bpsとする } /****************************************************************************/ /* main?処理 */ /****************************************************************************/ void loop() { int c; static int fval,rval; if( Serial.available() > 0 ) { c = Serial.read(); if( c == 'f' || c == 'F' ) { if( rval > 0 ) { rval = 0; analogWrite( FORWARD, 0 ); //一度停止させる analogWrite( REVERSE, 0 ); //一度停止させる delay( 5 ); } if( c == 'f' ) { if( ++fval >= sizeof(speed) / sizeof(speed[0]) ) fval = (sizeof(speed) / sizeof(speed[0])) - 1; } else { if( --fval < 0 ) fval = 0; } analogWrite( FORWARD, speed[ fval ] ); //前進 Serial.print( 'F',BYTE ); Serial.print( speed[ fval ],DEC ); Serial.print( '\n',BYTE ); } else if( c == 'r' || c == 'R' ) { if( fval > 0 ) { fval = 0; analogWrite( FORWARD, 0 ); //一度停止させる analogWrite( REVERSE, 0 ); //一度停止させる delay( 5 ); } if( c == 'r' ) { if( ++rval >= sizeof(speed) / sizeof(speed[0]) ) rval = (sizeof(speed) / sizeof(speed[0])) - 1; } else { if( --rval < 0 ) rval = 0; } analogWrite( REVERSE, speed[ rval ] ); //後退 Serial.print( 'R',BYTE ); Serial.print( speed[ rval ],DEC ); Serial.print( '\n',BYTE ); } else if( c == 's' ) { analogWrite( FORWARD, 0 ); //一度停止させる analogWrite( REVERSE, 0 ); //一度停止させる fval = rval = 0; Serial.print( "STOP\n" ); } else ; } }
Make: Technology on Your Time Volume 06
- 作者:
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/03/27
- メディア: 大型本
超低コスト インターネット・ガジェット設計―USB・μIP・microSDプロトコールスタックの活用
- 作者: 武藤 佳恭
- 出版社/メーカー: オーム社
- 発売日: 2008/05
- メディア: 単行本
2009-04-11 22:47
nice!(0)
コメント(0)
トラックバック(0)
コメント 0