歩行ロボットをつくるにはまずこれ!【サーボ編】
この記事を見ればあなたも
これだけのサーボモータを制御することができるようになりますよ
この記事について
歩くロボットをつくりたい人向けに書きます。
電子工作等の調べものをしている方ならよく見かけていること間違いなしの
Arduino(アルデュイーノ)をつかってサーボモータを動かしましょう。
Arduinoのほとんどのボードは12個までのサーボモータを制御することが
できるんです。素晴らしい。
それでも物足りないという方には後日便利なものをご紹介しましょう!
さて、これからはArduinoでサーボモータを制御するための
基本中の基本を見ていきます。
準備するもの
最低限必要なもの
・Arduino UNO(Amazonやスイッチサイエンス等で購入可能)
・USBケーブル(AオスーBオス) こういうものです↓
・サーボモータ(安いところですと、秋月電子やKKhobbyがおすすめ)
・ジャンパワイヤ(オスーオス Amazonや秋月電子等で購入可能)
関連リンク
【Amazon】 USB2.0ケーブル 1.8m (タイプAオス- タイプBオス)
サーボモータについてはトルク2kg以上で
1000円以下のものを探すといいですよ
オプション
トップの画像に貼ってあるものには、追加で
・ブレッドボード
・ピンヘッダ
・計12個のサーボモータ
・乾電池BOX直列4本
が必要になります。
Arduinoでサーボを動かすという目的を達成するだけなら
12個も動かす必要ないので、オプションは無視しても
かまいません。
サーボモータ12個買うとこうなります。
いい眺めですね(笑)
サーボモータのスペックの見方
どういうことが書いてあるのか、ちょろっとみてみましょう。
わたしが購入したCoronaのCS-939MGサーボモータのスペックを見てみます。
-ボールベアリング
-アナログ
-金属ギア
-トルク:2.5kg/cm
-スピード:0.14sec/60°
-重量:12.5g
-サイズ:22.5 x 11.5 x 24.6 mm
といった感じですね。
いつも気にしてみてるのは、ギアの種類とトルク、スピードの3点ですが
今回は説明を省きます。後日書きます。
回路の準備
準備といってもArduino UNOとサーボモータをつなぐだけです。
回路設計ツールのひとつである、fritzingをつかって回路を書いてみました。
これを実際につくってみると・・・
こうなります。
補足 コネクタの色について
サーボモータのコネクタには3色あります。
・赤(電源)
・黒or茶(GND)
・黄or白(信号線)
プログラミング
さて!
プログラミングです。簡単すぎてあっさりしてしまいますが書いていきましょう!
ArduinoをPCにインストールする必要があります。
その使い方についてもちょっと学ぶ必要がありますがその辺の解説は
ネット上にめちゃくちゃ溢れているので、当ブログでは省きます。すみません。
質問はいつでも受け付けます!
プログラム
//サーボライブラリを読み込む
#include <Servo.h>
//サーボ型の変数(s0)を作成
Servo s0;
void setup(){
//2番ピンをサーボ用に割り当てる
s0.attach(2);
}
void loop(){
//0→180へ角度指示
for(int i=0; i<180; i++){
s0.write(i);
delay(15);
}
//180→0へ角度指示
for(int i=180; i>0; i--){
s0.write(i);
delay(15);
}
}
上記のプログラムはサンプルをちょっと変えただけのものです。
これを書きこむと、サーボモータの軸が0度から180度へ角度を
変えたあとその逆方向にまた180度角度変更するものです。
上記プログラムのloop文の内容を以下の通りにしても
大体おなじ動作になるのでお試しあれ
void loop(){
s0.write(0);
delay(300);
s0.write(0);
delay(300);
}
delay( )の括弧内の数値を変えると
少し変わります。
そしてここまでの流れがArduinoでサーボモータを動かすための
最初の一歩です。
最後に
実際に動かすとこんな感じになります。
そして、当記事で学んだことを応用すると
こんな感じになります。
このブログでは今後実際に歩くロボットをつくれるよう書いていきます。
ではでは。
補足
サーボ12個を実際に動かそうという方に、
サーボの信号線をつなぐ際は、デジタルピン2~13を使います。
それと電源はArduino経由はやめたほうがいい、壊れます。
12個動かしている動画をみるとわかりますが、電池BOXからの線は
Arduinoには繋いでません。
直接サーボモータにつないでいます。
もちろんGNDは共通です(GNDは共通にしないと動かない)
関連記事(最終的にはこういう簡単なものの作り方を書きますね)