Arduinoでサーボモータとポテンショメータを使用する
モータには直流モータや交流モータ、パルスモータなど多数の種類があります。今回使用するサーボモータはACサーボモータと言われ、ロボットの姿勢や加工機の位置決めをするために使用されています。ここでは、Arduinoでサーボモータを用いた電子回路を製作できるように紹介します。
サーボモータを用いて、超音波センサの首振りや車両のハンドルに使用して応用していきましょう。
1.必要なもの
まず必要なものとして、下記のアイテムを準備してください。
今回使用するマイクロサーボモータやポテンショメータもAmazonのスターターキットに含まれているため、セットで購入すると便利です。
2.配線図とシミュレーション
今回行うものは、ポテンショメータによって任意の位置にダイヤルを合わせた際に、その角度までマイクロサーボモータを稼働させるプログラムとなります。
今回もシミュレーションを実施しましょう。
回路は下記のようになります。
上記の回路をTinker CAD上で作成し、シミュレーションを実行してみてください。Delayの時間や、コードを変更することで、好みの動作をさせることができます。また、ソフト上でシリアル値・角度を検出することが可能ですので、非常に便利です。
上記のようにポテンショメータのダイヤルを変化させるとサーボモータの角度が変化するようになります。
include
include
int pos = 0;
int sensorValue = 0;
int i = 0;
Servo servo_9;
void setup()
{
servo_9.attach(9);
pinMode(A0, INPUT);
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(A0);
pos = map(sensorValue,0,1023,0,180);
Serial.print("sensorValue ");
Serial.println(sensorValue);
Serial.print("pos ");
Serial.println(pos);
for (i = 0; i <= pos; i++) {
// tell servo to go to position in variable 'pos' servo_9.write(i); // wait 15 ms for servo to reach the position delay(15); // Wait for 15 millisecond(s)
}
for (i= pos; i >= 0; i --) {
// tell servo to go to position in variable 'pos'
servo_9.write(i);
// wait 15 ms for servo to reach the position
delay(15); // Wait for 15 millisecond(s)
}
}
シミュレーションはできましたか?
問題なく動作しましたら、実際に制作してみましょう。
3.サーボ回路製作
実際に制作した回路が下記となります。
ポテンショメータのダイヤルを回すことで、サーボの角度が変化していることがわかります。(少しポテンショメータの接触が悪いため、微妙ですが)
このように、ポテンショメータのダイヤルを用いて、サーボモータの姿勢を制御することが可能となります。