どうも、なかしー(@nakac_work)です。
自動車や家電製品のマイコンにプログラミングをする仕事をしています。
今回は「Arduinoでサーボモーターを動かす方法」について紹介します。
ちなみに、サーボモーターは「二足歩行ロボットの関節」や「ラジコンカーのステアリング操作」に使われています。
LEDを光らせる時のI/Oポートの操作と違って「PWM制御」でサーボモーターを動かします。
この記事では簡単にPWM制御について紹介しますが、詳しく知りたい方はこちらの記事を読んでから、Arduinoのプログラミングを学んだ方が良いと思います。
マイコンのPWM制御とは【現役エンジニアが教える電子工作】この記事では次の内容を紹介します。
- サーボモーターの特徴
- Arduinoの接続方法
- Arduinoのプログラミング
動画でも解説しています。
サーボモーターの特徴
サーボモーターは、一般的なモーターと違って角度を制御できます。
こちらが一般的なDCモーターと呼ばれるモーターです。
電流を流すことでモーターの軸が回転します。そして、電流を流す方向に応じて回転する方向が変わります。
サーボモーターは、パルス信号のデューティ比に応じて、軸の角度が変化します。角度を自由に制御できるので、二足歩行ロボットの関節に使えるんです。
今回は安価でよく使われるサーボモーターSG-90を使用します。
SG-90の特性は次の通りです。
周期は20msec=0.02secで、パルス幅と角度は下の表を参考にしてください。
軸の角度 | -90° | 0° | 90° |
パルス幅 | 0.5msec | 1.45msec | 2.4msec |
Arduinoの接続方法
Arduinoとサーボモーターの接続方法は下の画像を参考にしてください。
- サーボモーターの赤色→+5V
- サーボモーターの黒色→GND
- サーボモーターの橙色→信号線
※信号線はPWMと書かれいてる0~13ならどこでもOK
Arduinoのプログラミング
プログラミングで大事な部分を説明します。
- #include <Servo.h>
- myservo.attach(引数1)
- myservo.write(引数1)
詳しく解説します。
#include <Servo.h>
Servo.hというヘッダーファイルの読み込みを行う命令です。
ヘッダーファイルの中にはサーボモーターを制御するのに必要な関数が入っています。
ヘッダーファイルは必ずプログラムの最初に書くのがルールになっています。
myservo.attach(引数1)
引数1には、サーボモーターの信号線と接続したArduinoのピン番号を入力します。
先ほどの画像ではピン番号11に接続したので、
myservo.attach(11)となります。
カッコの後ろにセミコロン(;)を付けるのを忘れずに!
myservo.write(引数1)
引数1には、サーボモーターの軸の角度を0°から180°で入力します。
例えば、サーボモーターの軸の角度を90°にしたい場合は
myservo.write(90)と入力すればOKです。
たったのこれだけでサーボモーターの制御が可能です。
Arduinoでサーボモーターを動かす方法|まとめ
この記事では「Arduinoでサーボモーターを動かす方法」について解説しました。
- サーボモーターはPWM制御で軸の角度を調整できる
- 信号線をArduinoのPWMピンに接続
- ヘッダーの読み込みと関数を2つ使うだけでOK
Arduino関連の人気記事
>>【Arduino入門キット】電子工作の勉強におすすめ【こんなに安くていいの?】
>>Arduinoでできることを紹介【逆にできないことは何?】
当ブログで人気のArduino入門キット