Arduino RCサーボを動かす(サンプル:Servo→Sweep )
前回に引き続き、いまだに重い腰を上げてArduinoのスケッチ例を試してArduinoの使い方を学んでみる。今回はServoのスケッチ例:Sweep を動かしてみる。SweepはPWMを利用してRCサーボを動かすサンプルプログラム。
スケッチ例:Servo→Sweepの起動
今回は内蔵の「スケッチ例」からではなく、「あらゆるボード用のスケッチ例」を使用する。このあらゆるボード用のスケッチ例はArduinoUNO以外のArduinoボードやmbedとの共通のサンプルプログラム。どのボードに対応しているかはスケッチ例ごとに微妙に異なるらしいので使用する前には確認が必要。下に、今回使うServo→Sweepの場所をしめす。
Sweepを開いたら下の様な画面が開く。Sweepはこれまでになかったヘッダファイルのインクルードがあることがわかる。このヘッダファイルが
配線
Sweepを実行して試してみるためにはRCサーボを用意する必要がある。これはPWMで動作するサーボであればなんでもよい。ただし、今後もマイコンで使用したいならば、ドキュメントにPWMのON時間と動作角度が明記されているものを購入したほうが良い。中華製の廉価なものを購入すると、同じサーボで同じ信号を送っても動作角度が異なることがあるの注意が必要だ。
今回はS.BUS解析のときにしようした、双葉電子工業製のS-U300 を使用した。このサーボはS.BUSとPWM信号を自動認識しているのでPWM信号でも動作させることが出来る。
ArduinoとRCサーボ(S-U300)を配線した写真を下に示す。サンプルプログラムのドキュメントにはRCサーボの電源もArduinoからジャンパピンを通してとると書かれていたが、電流的にあまりArduinoから電源を取りたくなかったのでS.BUS解析の際の電源供給用の基板を流用した。
このように別電源を用意するときに、RCサーボのコネクタの真ん中の端子とArduinoの+5Vピンを接続しないように注意が必要。RCサーボを動作させるときには電流が必要で、逆にRCサーボを手で回したときにサーボの中のモータが発電してしまい、+5V以上の電圧になってしまうことがある。そのため、別電源と電源分岐回路を用意することを強くお勧めする。
Sweepの実行
ArduinoとS-U300を接続して、Seepを実行した結果を下に示す。
まとめ
今回は、スケッチ例:Servo→Sweepを使用したみた。このサンプルプログラムはよくできていて、Arduinoとmbed共通でつかえて、RCサーボごとに最小パルス幅、最大パルス幅を設定できるので色々のRCサーボやボードで使えそう。