今回は、ステッピングモーターを動かしてみます。
このモーターは28BYJ-48と言って、電子工作では有名なモーターらしいです。
28BYJ-48で検索すると、動かし方から内部構造まで沢山情報が出てきます。
第1回の使用材紹介にも書きましたが、このモーターを駆動するにはArduinoの5V出力では容量が足りないという情報が有ったので、まずはモーターを駆動するための5Vの電源を用意します。
200円で、USB用の5V2.4Aが取れます。
ダイソーありがとう。
分解して12Vの入力とUSBの5V出力に0.5sqの線をハンダ付けします。
写真の5V+のハンダ付け位置は間違ってます(^_^;)
5V出力の先には、ブレッドボードに刺さるピン付きの線を仮につけておきます。
オーディオの時とカメラの取り付けのときに同じことをしているので3回目です(^_^;)
まだ1個家に在庫が有ります。
さて、今回のスケッチですが、一気に飛びます。
本当は最初から追いたいのですが、勉強に使ったスケッチが大人の事情で載せられません。
下のスケッチは何度も自分で書き直したものです。
---------------------------------
int val = 0;
#include <Stepper.h>
#define R_IN1 (4)
#define R_IN2 (5)
#define R_IN3 (6)
#define R_IN4 (7)
#define F_IN1 (8)
#define F_IN2 (9)
#define F_IN3 (10)
#define F_IN4 (11)
#define STEPS (2048)
Stepper myStepperR(STEPS,R_IN1,R_IN3,R_IN2,R_IN4);
Stepper myStepperF(STEPS,F_IN1, F_IN3,F_IN2,F_IN4);
void setup() {
Serial.begin(9600);
myStepperR.setSpeed(10);
myStepperF.setSpeed(10);
}
void loop() {
val = analogRead(5);
Serial.println(val);
switch (val) {
// REAR HARD-
case 251:
myStepperR.step(128);
break;
// REAR SOFT+
case 0:
myStepperR.step(-128);
break;
// FRONT HARD-
case 162:
myStepperF.step(128);
break;
// FRONT SOFT+
case 78:
myStepperF.step(-128);
break;
default:
digitalWrite( R_IN1, LOW);
digitalWrite( R_IN2, LOW);
digitalWrite( R_IN3, LOW);
digitalWrite( R_IN4, LOW);
digitalWrite( F_IN1, LOW);
digitalWrite( F_IN2, LOW);
digitalWrite( F_IN3, LOW);
digitalWrite( F_IN4, LOW);
}
}
---------------------------------
すべて説明しきれないので、解説はありません。
色々なスケッチを参考に、動作部分は結構オリジナル(笑)で書きました。
-(マイナス)を入れるとモータが逆転するなど、こんなスケッチで本当に大丈夫かなと思っても意外と動いてくれる印象です。
ifで書くの面倒だなと思っていたときに、Switch文を知った時は、我が意を得たりでした。
;セミコロンとコロン:の違いに気付かなかったり、全角スペースが混ざっていて動かなかったりしましたが、Arduino IDEがErrorで優しく教えてくれるので助かります。
少し理解しきれていないところがありますが、これで動いたので取り敢えず良しとします。
配線はこんな感じで繋ぎます。
モーター側
スイッチ側
とりあえずステアリングスイッチでモーターを回せました。
すげーよ、動いてるよ…
VIDEO
この2個の前後モーターの他に、モーターは左右で2つ同じ動きをしたいのですが、そちらも心配していたものの、信号線を並列につないだら左右2個同時に動いたので、良し悪しは別にしてその方法で行きます。
まだモーター関係のスケッチを書き直すところもありますが、動いたので次に進みます。
次回は OLED LCD SSD1306液晶 です。
ブログ一覧 |
自作EDFC | 日記
Posted at
2018/10/07 16:49:10