Posts Tagged ‘ラジコン’
サーボのコントロール
昨夜は遅くまでラジコンに実装予定の組み込みLinuxを触ってました。
組み込みLinuxのファーストステップとして、シリアル接続が前提となるのですが、RS-232シリアルケーブルがそのまま繋がると思っていましたら、組み込みのRS-232 は10pin だったのです!
9pinのRS-232 ケーブルは用意してたのですが、これには困りました。
実際使われるpinはTX/RX、GNDと3本のケーブルのみでしたので、ピンを直刺しすることで対応できました。
また、この話は後日まとめてから書きます。
今日はサーボの制御について書きます。
サーボの制御はArduinoというイタリア生まれのマイコンで行っています。
普通の基盤だと決まったことしか出来ませんが、Arduinoは普通の基盤と違い配線の仕方と、プログラム制御で様々なことが出来ます。
サーボのコントロール方法は、パルス幅の信号長で角度を制御します。
実際はサーボ向けにライブラリがあり、角度を指定するだけで制御が行えます。
気をつける点としては、ラジコンのシャーシの稼動域よりもサーボの稼動域が広いことです。
サーボの稼動域がシャーシの稼動域を超えるとサーボが負荷で嫌な音を立てて潰れます。
実際に潰しましたので間違いないです!
なので先にサーボを取り外し、ラジコンに付属のプロポと同じ稼動域であるか、確認をオススメします。
以下はサーボと前後のモーターをシリアル通信で制御するコードです。
Arduinoでは短いコードで簡潔に書けます。
よろしければ参考ください。
#include
#define servoPin 9
#define Motor 3
Servo myservo;
void setup()
{
pinMode(Motor,OUTPUT);
myservo.attach(servoPin);
Serial.begin(9600);
Serial.println(“Ready”);
}
void loop() {
static int v = 0;
if ( Serial.available() > 0) {
char ch = Serial.read();
switch(ch) {
case ‘0′…’9′:
v = v * 10 + ch – ‘0′;
break;
case ’s’:
if (v <= 45) v = 45;
if (v >= 135) v = 135;
myservo.write(v);
Serial.print(v);
Serial.println(’s’);
v = 0;
break;
case ‘w’:
if (v <= 0) v = 0;
if (v >= 255) v = 255;
analogWrite(Motor,v);
Serial.print(v);
Serial.println(‘w’);
v = 0;
break;
}
}
}
以下は簡易な回路図のつもりです。
電源は外部電源を利用してます。外部電源はvinのpinから電源を引きます。

回路図に1点間違いがありました。
モーターからのワイヤはモスの真ん中にさします。モスに繋がるマイナス電源は端にさします。
パソコンからラジコンを操作
はじめまして。ラボに初参加のinfoaliveのo2です。
時々書かせていただきますのでお見知りおきください。
普段はAMP(Apache,MySQL,PHP) で開発してますが、趣味でマイコンの制御を始めましたので、マイコンの事を書かせていただきます。
マイコンは1週間前まで触ったことすらなかったのですが、唐突にパソコンからラジコンの制御がしたくなり始めました。
きっかけはJoker Racerを見て、これは面白い是非やってみようと思った次第です。
Joker Racerはインターネットを通じて実物のラジコンを操作するサービスです。説明終わり。
では早速、インターネットを通じてラジコンを操作するにはどうすればいいかを考えます。
ラジコンをパソコンから操作するにはマイコンをパソコンに繋げば出来そうです。
マイコンが制御するのは左右に動作するサーボモーターと、前後の動作をするモーターの2つを制御することになります。
ラジコンに直接パソコンのような大きなものは乗りませんので、組み込み系に使われるARMのLinuxを利用します。
LinuxにはWEBカメラと無線LANを積めば遠隔からも操作ができますね。
ラジコンのハンドリングはキーボードで操作するのは面白くないのでWiiリモコンを利用することにします。
現段階では、パソコンにマイコンを繋いだ状態でラジコンの制御が出来るところまで完成してます。
詳しくは追々書くとしまして、Youtubeにアップした動画をどうぞ!


