M5StickCで360回転サーボを4つ動かしてみた
- 2020/04/27
- 23:13
M5StickCで360回転サーボを4つ動かしてみた
こんにちはRoboTakaoです
前回はM5StickCで4つのサーボを動かすHATを作ってみましたが、
今回は360回転サーボを動かしてみます。

360回転サーボ
秋月でTOWER PROのSG90-HVを480円で購入

スペック
・電源電圧:4.8~6V
・ストールトルク:1.3kg/cm(4.8V)、1.5kg/cm(6V)
・回転数:110RPM(4.8V)、130RPM(6V)
データシート
700μsec 〜 2300μsec のパルス幅を入れて回転速度を制御します。
1500μsecを中央値にして正転、逆転できます。
動作確認
簡単に360度回転します。
スケッチ
前回のものとほぼ同じですが、パルス幅だけ変えています。
#include <M5StickC.h>
const uint8_t Srv0 = 0, Srv1 = 26, Srv2 = 32, Srv3 = 33; //GPIO No.
const uint8_t srv_CH0 = 0, srv_CH1 = 1, srv_CH2 = 2, srv_CH3 = 3; //チャンネル
const double PWM_Hz = 50; //PWM周波数
const uint8_t PWM_level = 16; //PWM 16bit(0~65535)
void setup() {
m5.begin();
pinMode(Srv0, OUTPUT);
pinMode(Srv1, OUTPUT);
pinMode(Srv2, OUTPUT);
pinMode(Srv3, OUTPUT);
//モータのPWMのチャンネル、周波数の設定
ledcSetup(srv_CH0, PWM_Hz, PWM_level);
ledcSetup(srv_CH1, PWM_Hz, PWM_level);
ledcSetup(srv_CH2, PWM_Hz, PWM_level);
ledcSetup(srv_CH3, PWM_Hz, PWM_level);
//モータのピンとチャンネルの設定
ledcAttachPin(Srv0, srv_CH0);
ledcAttachPin(Srv1, srv_CH1);
ledcAttachPin(Srv2, srv_CH2);
ledcAttachPin(Srv3, srv_CH3);
}
void loop() {
for (int i = 2295; i <= 7535; i=i+5) { //700μsec -> 2300μsec
ledcWrite(srv_CH0, i);
ledcWrite(srv_CH1, i);
ledcWrite(srv_CH2, i);
ledcWrite(srv_CH3, i);
delay(10);
}
for (int i = 7535; i > 2295; i=i-5) { //2300μsec -> 700μsec
ledcWrite(srv_CH0, i);
ledcWrite(srv_CH1, i);
ledcWrite(srv_CH2, i);
ledcWrite(srv_CH3, i);
delay(10);
}
}
スポンサードリンク