酒と薔薇の日々(その2)

好きなことだけ求めて生きるアスペ気味のINTJ人

ステッピングモータ(28BYJ-48)到着&テスト

2022年07月21日 14時14分01秒 | マイコン(ESP32・Arduino等)

先日ポチったステッピングモータがランプと一緒に本日昼過ぎに到着
Ren He 5V ステッピングモータ+ 28BYJ-48 ULN2003ドライバーボード セット Arduino用 3個セット  699円
前回OLEDでミスったので今回は速攻でテストを実施

3セットとも無事に動きました。赤LEDの点滅が眩しい。
但し、例示されている乾電池2本:3Vではピクともしなかった。
5VならOK(携帯電話充電ACアダプタ利用)

---動作速度について---

しかし動きが遅いこちらの記事からは「フルステップ2相励磁」が最も早いらしい。
その半分のステップが「ハーフステップ1-2相励磁」

ギアを取り除きダイレクトドライブ化で高速駆動する改造記事はこちら
これで32・64倍速で回りだす。
ここに書かれていたバイポーラ駆動へのパターンカット記事はこちら

-------

分解説明記事はこちら
1相励磁で駆動させると32ステップでローターは1回転
1−2相励磁なら倍の64ステップ
駆動説明記事はこちら

秋月電子の仕様から引用
 ・ギア比:1/64
 ・励磁方式:2相ユニポーラ
 ・ステップ角:5.625°
 ・出力軸1回転のステップ数:2048(2相励磁)
 ・定格電圧:5V
 ・直流抵抗:約22Ω(センタータップ-各端子、テスターで実測)
 ※2相励磁で無負荷の最高回転数は4秒で1回転
ダイレクトドライブに改造した場合は64/4= 16回転/S となる。

秋月電子には「SPG27-1101」という国産モータが350円で売られてて、こいつのギア比は1/5
なので多分今回モータの10倍ぐらいの回転数は出るようだ。動画

---動作速度関係メモ終わり---

参考にさせてもらったサイト様はこちら
すごくわかりやすい説明で助かりまする。
1層励磁、2層励磁、1-2層励磁皆動きました。
省電力、トルク強い、細かい制御可能という特徴だそう。
ただし、下記のライブラリは同時に複数モータは駆動できない。
複数同時に扱うには「Unistep2」というライブラリが良いそうです。(解説サイト様

ーーー動作原理ーーー

まずは、東芝の細かな動作が分かり易い動画を視聴。ふむふむプロ用は細かいんだなー

以下の画像3枚は「メカトロDiyチャレンジ」様の「Arduinoで電子工作入門(ステッピングモーターを使ってみる!① 」から拝借です。


中心に磁石の棒があって、それをギア型の鉄で挟む
挟む際にギアをずらすのがキモ

その回転子(ローター)を電磁石(ステーター)で取り囲む

真横から見るとローターが微妙にズレているのがわかる。
このズレを使ってローターを思う方向へ少しずつ磁石の極性を変えて吸引・反発を利用して回転させる。
やっと、ステップ角の意味と理屈がわかりました。
動画に感謝!!!

ちょっと疑問だったのが、ArduinoのGNDをドライバ基盤のGNDに接続しなくても良いこと。
素人の私にはよくわかりませぬ

======ライブラリ使用例===========

// Arduino入門編㉕ ステッピングモーターを動かしてみる!
// https://burariweb.info
// Stepperライブラリを使用

#include ”Stepper.h”  // ライブラリのインクルード

#define PIN1 2  // 青
#define PIN2 3  // ピンク
#define PIN3 4  // 黄
#define PIN4 5  // オレンジ

// ステッピングモーター(出力軸)が1回転するのに必要なステップ数
#define STEP 2048
Stepper stepper1(STEP, PIN1, PIN3, PIN2, PIN4);  // オブジェクトを生成
 
void setup() {
  stepper1.setSpeed( 15 );  // 1分間当たりの回転数を設定(rpm)
  pinMode(PIN1, OUTPUT);    // デジタルピンを出力に設定
  pinMode(PIN2, OUTPUT);
  pinMode(PIN3, OUTPUT);
  pinMode(PIN4, OUTPUT);
}
void sleepmotor(){
  digitalWrite(PIN1, LOW);  // 出力を停止(モーターへの電流を止め発熱を防ぐ)
  digitalWrite(PIN2, LOW); 
  digitalWrite(PIN3, LOW); 
  digitalWrite(PIN4, LOW);     
  delay(1000);
}
void loop() {
  stepper1.step( 2048 );    // 360°回転させる(2048ステップ)
  sleepmotor();
  stepper1.step( -1024 );   // -180°回転させる(-1024ステップ)
  sleepmotor();
}

=====ダイレクト駆動=========

// Arduino入門編㉕ ステッピングモーターを動かしてみる!
// https://burariweb.info
//
// 2相励磁(ライブラリなし)

#define PIN1 2  // 青
#define PIN2 3  // ピンク
#define PIN3 4  // 黄
#define PIN4 5  // オレンジ

int tim = 2;  // STEPごとに停止する間隔(小さくすると回転スピードが上昇)  1はモーターは振動しているが回らなかった

void setup(){
  
  pinMode(PIN1, OUTPUT);  // デジタルピンを出力に設定
  pinMode(PIN2, OUTPUT);
  pinMode(PIN3, OUTPUT);
  pinMode(PIN4, OUTPUT); 
}
void loop(){
// STEP1
  digitalWrite(PIN1, HIGH);
  digitalWrite(PIN2, HIGH);
  digitalWrite(PIN3, LOW);
  digitalWrite(PIN4, LOW);
  delay(tim); 
// STEP2
  digitalWrite(PIN1, LOW);
  digitalWrite(PIN2, HIGH);
  digitalWrite(PIN3, HIGH);
  digitalWrite(PIN4, LOW);
  delay(tim); 
// STEP3
  digitalWrite(PIN1, LOW);
  digitalWrite(PIN2, LOW);
  digitalWrite(PIN3, HIGH);
  digitalWrite(PIN4, HIGH);
  delay(tim); 
// STEP4
  digitalWrite(PIN1, HIGH);
  digitalWrite(PIN2, LOW);
  digitalWrite(PIN3, LOW);
  digitalWrite(PIN4, HIGH);
  delay(tim);}

     :

以下Step8まで(省略)

=======micro:bitで試験==========

こちらのサイトを参考にやってみた。
A,Bボタンを押すとそれぞれの向きに回転する。
給電は外部ACアダプタから。

Micro:bit Pin3 ーーー ドライバーボード In4
Micro:bit Pin4 ーーー ドライバーボード In3
Micro:bit Pin6 ーーー ドライバーボード In2
Micro:bit Pin7 ーーー ドライバーボード In1

ソースは超長いので全部載せられないわ・・・

この記事についてブログを書く
« プロットカーもどきを作ろう... | トップ | 小型ハリケーンランプ購入&... »