記事一覧

M5Stack用の電源を3端子レギュレータで作って動作させてみた。

M5Stack用の電源を3端子レギュレータで作って動作させてみた。


I made a power supply for M5Stack with regulator and tried it.



m5stack_pca9685_10.jpg

こんにちはRoboTakaoです。
Hello everyone! I'm RoboTakao!

以前、M5StackでダイレクトにESPservoライブラリーとPCA9685サーボドライバと使ってサーボを複数個動かしてみました
また、前回はサーボ用の6V電池でM5Stackを動作させるためにDCDCコンバータを試して失敗しました
Previously, I tried several servos using ESPservo library and PCA 9685 servo driver directly with M5Stack.Last time I tried DCDC converter to operate M5Stack with 6V battery for servo and failed.

失敗の原因としてはDCDCの出力電流がM5Stackの消費電流に対して十分では無かったようです。
It seems that the DCDC output current was not sufficient for the current consumption of M5Stack as a cause of failure.

そこで今回は3端子レギュレータで作って動作させてみました。
So I made it with regulator this time and tried it.

使ったレギュレータは昔使ったものを引っ張り出して来たものです。
The regulator I used has pulled out old used items.

m5stack_pca9685_08.jpg

M5Stackはボトムモジュールを外して直接M Busに接続しています。
From the M5Stack, the bottom module is removed and connected directly to M Bus.

m5stack_pca9685_09.jpg

結果 Result

ちゃんと動きました。
右側がPCA9685で動作させた7つのサーボ
左がM5StackからESP32servoで動作させた2つのサーボです。
It worked properly.
Seven servos operated on PCA 9685 on the right side
The left is two servos operated from M5Stack using ESP32servo.



スケッチ Scketch


#include
#include //ESPservo
#include // I2C setting
#include //PCA9685用ヘッダーファイル

// create four servo objects (ESP32servo)
Servo servo1;
Servo servo2;

//PCA9685のアドレス指定
PCA9685 pwm = PCA9685(0x40);

// Published values for SG90 servos; adjust if needed (ESP32servo)
int minUs = 700;
int maxUs = 2300;

#define SERVOMIN 150 //最小パルス幅 (GWS Micro2BBMG) (PCA9685)
#define SERVOMAX 500 //最大パルス幅 (GWS Micro2BBMG) (PCA9685)

// These are all GPIO pins on the ESP32
// Recommended pins include 2,4,12-19,21-23,25-27,32-33
int servo1Pin = 18; //ESP32servo
int servo2Pin = 19; //ESP32servo

int pos[3] = {90, 135, 45}; // position in degrees

void setup() {
servo1.setPeriodHertz(50); // Standard 50hz servo (ESP32servo)
servo2.setPeriodHertz(50); // Standard 50hz servo (ESP32servo)

servo1.attach(servo1Pin, minUs, maxUs); // ESP32servo
servo2.attach(servo2Pin, minUs, maxUs); // ESP32servo


pwm.begin(); //初期設定 (アドレス0x40用) (PCA9685)
pwm.setPWMFreq(50); //PWM周期を50Hzに設定 (アドレス0x40用) (PCA9685)
}

void loop() {
for (int i=0; i <= 2; i++) {

// ESP32servo
servo1.write(pos[i]);
servo2.write(pos[i]);

// PCA9685
servo_write(0,pos[i]);
servo_write(1,pos[i]);
servo_write(2,pos[i]);
servo_write(3,pos[i]);
servo_write(4,pos[i]);
servo_write(5,pos[i]);
servo_write(6,pos[i]);

delay(1000);
}
}

void servo_write(int ch, int ang){ //動かすサーボチャンネルと角度を指定
ang = map(ang, 0, 180, SERVOMIN, SERVOMAX); //角度(0~180)をPWMのパルス幅(150~500)に変換
pwm.setPWM(ch, 0, ang);
}

スポンサードリンク

コメント

コメントの投稿

非公開コメント

プロフィール

RoboTakao

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

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

スポンサーリンク