記事一覧

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

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



こんにちはRoboTakaoです。

今回はM5StickCで同時に4個サーボを動かしてみたいと思います。

FS90_01.jpg

今回のサーボはFEETECのFS90を秋月で1個360円で購入

FS90_02.jpeg


FS90のスペック
・電源電圧:DC4.8~6V
・応答速度:0.12秒/60°(4.8V) 0.10秒/60°(6V)
・ピークストールトルク:1.3kg・cm(4.8V) 1.5kg・cm(6V)
・ストール電流:700mA(4.8V) 800mA(6V)
・使用温度範囲:-15~70℃

パルス幅は500〜2500μsecで-90〜90動きます。

M5StickCではG0, G26, G32, FG33でパルスを出力させます。

結線

FS90_04.png

動作確認
無事回りました。



スケッチ
 
今回はパルスはledcwriteで出力させました。


#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 = 1640; i <= 8190; i=i+50) { //500μsec -> 2500μsec -90deg -> 90deg
ledcWrite(srv_CH0, i);
ledcWrite(srv_CH1, i);
ledcWrite(srv_CH2, i);
ledcWrite(srv_CH3, i);
delay(10);
}
for (int i = 8190; i > 1640; i=i-50) { //2500μsec -> 500μsec 90deg -> -90deg
ledcWrite(srv_CH0, i);
ledcWrite(srv_CH1, i);
ledcWrite(srv_CH2, i);
ledcWrite(srv_CH3, i);
delay(10);
}
}


スポンサードリンク

コメント

コメントの投稿

非公開コメント

プロフィール

RoboTakao

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

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

スポンサーリンク