サーボモーターをArduino、ESP32で制御する。

こんにちは、こんばんは
サーボモーターは知っていますか?
モーターにパルス信号を送ると決まった角度だけ回転できるという優れたモーターです。
今回はその使い方を解説します。

用意するもの

・Arduino、ESP32どっちか
・サーボモーター(SG-90)
・ジャンパ線
ほかに用意するものとしてサーボモーターのライブラリを持ってきます。
Pulse関数を使って書いてもいいですが面倒なのでライブラリに頼ります。
 

サーボモーターについて

サーボモーターにはACとDCタイプが存在します。
 交流と直流で使えるかどうかだけの違いなのであまり詳しくは解説しませんが、トルクの特性の違いがあります。
また似たようなモーターでステッピングモーターがありますがこれに関しては動作原理が全く違います。
サーボモーターはロータリーエンコーダを用いてフィードバックをしますが、ステッピングモーターはフィードバックは行わず、コイルに流す電流の違いで角度を変化させます。
そのためステッピングモーターを扱うときは専用のモータードライバが必要になります。
 
DCタイプ 小さいタイプ
 
ACタイプ 大きいタイプ
 

回路

Arduinoでサーボモーターを扱うときは以下のようになります。
まず、外部電源を使うときの図です。
なぜ外部電源を使うのかというと、消費電力の大きいサーボモーターを使うとarduinoのボードを破損してしまう恐れがあるからです。またサーボモーターの電圧が足りず、サーボモーターがうまく回転しないときがあるので、そういったときは外部電源を使用します。

 
次にarduinoの内部電源を使うときの図です。 
さらっと9番ピンを使っていますが、プログラムを変更すればどこでも使えるのでそこまで重要じゃないです。
 

プログラム 

サンプルプログラムに記述されているSweep.inoをそのまま使います。
#include <Servo.h>

Servo myservo;  

int pos = 0;

void setup() {
  myservo.attach(9);
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) {
    myservo.write(pos);
    delay(15);
  }
  for (pos = 180; pos >= 0; pos -= 1) {
    myservo.write(pos);
    delay(15);
  }
}


コメント

このブログの人気の投稿

DockerのNextcloudでエラーが出た SQLSTATE[08006] [7]

Arduinoで電流を測定する