我が家にサーボモーターがやってきた

今まではデジタル回路どまりだったから、実際に何かが動くというのはあまり経験がないんだけど、今考えているプロジェクトでは何かを動かさないといけない。というわけで、サーボモーターというのが簡単という噂を聞いて試してみることにした。でも、今考えているのはやっぱり3.3V系のArduino。検索していると6V品というのが多い。ただ、モーターはデジタル回路ではないので、最低限必要な電圧というのは存在するけれど、6Vぴったりじゃないと動かない、というわけではなく、単にパワーが下がるだけだと思われる。

ということで、もっとも小さそうなTower ProのSG51Rというのを買ってみました。

SG51R | Tower Pro

公式サイトにはOperating Voltage 4.8Vと書いてあるけれど、USB給電なら5Vだし、リチウムイオン電池だと4Vぐらいだし、まあそこそこいけるんじゃないか、ということで実験。

大きさは 21.511.725.1mm で非常に小型、Operating speed: 0.08 sec/60 (4.8V) 0.07 sec/60 (6.0V) というのは、60度まわるのに0.08sec必要です、という意味かな。

インターフェースは3線、茶橙黄で、茶色がGND、オレンジ色が電源、黄色が制御信号となっています。(と言いつつ、どこにも書いていなかったので、いろんなサイトを見てたぶんそうだろうということにした)

Arduinoにはもともとサンプルがついているので、ファイル - スケッチ例 - Servo - Sweep とたどります。

void setup() {
  myservo.attach(4);  // attaches the servo on pin 4 to the servo object
}

この部分はどのピンにサーボ をつなくかの設定。9になってたけど4につないだから4に変更。あとはそのまま実行!なんだかあやしくぎこちなくぎこぎこいいながら回った。。。なんだろうこれは。電源電圧が低いせい?と思って、電源を5Vに繋ぎ変えたけど変化なし。どうもdelay(15)というのはあまりよろしくないみたいですね。ということでソースコードを変更。ちょっとずつ調整しようかと思ったけど、なんだか端から端までは動かないっぽくて異音がするので10~170度という指示にしてみました。

void loop(){
  myservo.write(10);
  delay(3000);
  myservo.write(170);
  delay(3000);  
}

うん、まわる。おもしろい。そこそこ力強い気がする。これで目標のものを回すことができるのか?そもそもそれをどうやって固定するのか、それはまだ届いていないから不明。 そして、リチウムイオン電池につなぎかえてみたけど、同じ感じで動く。これは3.3Vでも動作するみたいです。あくまで個人の実験結果であり必ずしも動作することを保証するわけではありません。まあでもTinyduinoの3V3端子でSG51Rは動作しました。

買ったのはこちらです。