記事一覧

M5StickCで360回転サーボを4つ動かしてみた

M5StickCで360回転サーボを4つ動かしてみた



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

SG90-HV_03.jpg

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

SG90-HV_01.jpeg

スペック
・電源電圧: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);
}
}

スポンサードリンク

コメント

コメントの投稿

非公開コメント

プロフィール

RoboTakao

Author:RoboTakao
みなさんご訪問ありがとうございます。ロボット作りたいけどお小遣いそんなにないし、簡単でローコストでロボットを作るための私のプロジェクトを紹介します。

ウェブサイトもありますのでそちらもよろしくお願いします。
http://robotakao.jp/

スポンサーリンク