LESSON 012 013 014
ステッピングモータ & サーボモータを動かす
マイコンボードで制御可能で安価で手に入りやすいモーターは
① DCモータ
② ステッピングモータ
③ サーボモータ
等がありますが、今回は② ステッピングモータ と ③ サーボモータ の制御方法について説明します。原理や用途についてはこちらをご覧下さい。
① DCモータ
② ステッピングモータ
③ サーボモータ
等がありますが、今回は② ステッピングモータ と ③ サーボモータ の制御方法について説明します。原理や用途についてはこちらをご覧下さい。
配線図
GPIO 8 ⇒ IN1 (ドライバモジュール)
GPIO 9 ⇒ IN2 (ドライバモジュール)
GPIO 10 ⇒ IN3 (ドライバモジュール)
GPIO 11 ⇒ IN4 (ドライバモジュール)
GPIO 5V ⇒ + (電源モジュール)
GPIO GND ⇒ GND(電源モジュール)
GPIO 8 ⇒ IN1 (ドライバモジュール)
GPIO 9 ⇒ IN2 (ドライバモジュール)
GPIO 10 ⇒ IN3 (ドライバモジュール)
GPIO 11 ⇒ IN4 (ドライバモジュール)
GPIO 5V ⇒ + (電源モジュール)
GPIO GND ⇒ GND(電源モジュール)
#include <Stepper.h>
const int in1=8;
const int in2=10;
const int in3=9;
const int in4=11;
const int STEPS = 2048;
const int STEPS_C = 512;
Stepper myStepper(STEPS,in1,in2,in3,in4);
void setup() {
myStepper.setSpeed(10);
}
void loop() {
myStepper.step(STEPS_C);
delay(500);
}
リンク
解説
90度毎に回転するスケッチです。
- 設定
#include <Stepper.h>
ステッピングモータを制御をするためのライブラリです。
※ 標準ライブラリ
※ モータやセンサーを使用する場合、必要に応じてライブラリを組み込む必要があります。
Stepper 変数(steps, pin1, pin2, pin3, pin4)
steps:1回転あたりのステップ数
pin1, pin2, pin3, pin4:モータに接続ピンの番号
PIN配置 正転のみ pin1, pin2, pin3, pin4 正転逆転 pin1, pin3, pin2, pin4 -
void setup() 内変数.setSpeed(rpms)
モータの速さを毎分の回転数(RPM)で設定
rpms:1分間あたりの回転数 正の数 - void loop() 内
変数. step(steps)
setSpeed()で設定した速さで、指定したステップ数だけモータを回す。
steps:モーターが回転するステップ数。
逆回転は負を設定
※ 1回転は 2048step なので
45度 なら 256step
90度 なら 512 step になります。
LESSON 013
サーボモータの速度変えて動かす
#include <Servo.h>
Servo myservo;
const int SV_PIN = 6;
void setup(){
myservo.attach(SV_PIN, 500, 2400);
}
void loop(){
myservo.write(20);
delay(1000);
myservo.write(90);
delay(1000);
myservo.write(160);
delay(1000);
myservo.write(90);
delay(1000);
}
20 ー 90 ー 160 度回転するスケッチです。
- 設定
#include <servo.h>
サーボモータを制御をするためのライブラリです。
※ 標準ライブラリ
※ モータやセンサーを使用する場合、必要に応じてライブラリを組み込む必要があります。
Servo 変数
サーボモータ の 変数変数.attach(PIN, min, max);
min: サーボの角度が0度のときのパルス幅[us]。デフォルトは544。
max: サーボの角度が180度のときのパルス幅[us]。デフォルトは2400。 -
void setup() 内変数.write(angle)
analog: 移動させたい角度(0~180)
※ 変数.writeMicroseconds
サーボモータに与える出力をマイクロ秒単位で角度指定する方法です。
サーボモータに与えられるパルスは20ms周期で
1周期中のHigh時間を直接指定
※ 変数.writeMicroseconds
サーボモータに与える出力をマイクロ秒単位で角度指定する方法です。
サーボモータに与えられるパルスは20ms周期で
1周期中のHigh時間を直接指定
反時計回り | 原点 | 時計回り |
0 | 90 | 180 |
0.5[ms] | 1.45[ms] | 2.4[ms] |
-90° | 0° | +90° |
LESSON 014
サーボモータの速度変えて動かす
#include <VarSpeedServo.h>
VarSpeedServo myservo1;
VarSpeedServo myservo2;
VarSpeedServo myservo3;
VarSpeedServo myservo4;
void setup() {
myservo1.attach(3);
myservo2.attach(4);
myservo3.attach(5);
myservo4.attach(6);
}
void loop() {
myservo1.write(180, 10, true);
myservo2.write(180, 30, true);
myservo3.write(180, 100, true);
myservo4.write(180, 255, true);
delay(1000);
myservo1.write(0, 10);
myservo2.write(0, 30);
myservo3.write(0, 100);
myservo4.write(0, 0);
delay(10000);
}
0 ー 180 度の往復運動の回転速度を替えて回転するスケッチです。
- 設定
#include <VarSpeedServo.h>
サーボモータを回転速度を制御をするためのライブラリです。
※ 外部ライブラリ
※ モータやセンサーを使用する場合、必要に応じてライブラリを組み込む必要があります。VarSpeedServo.hがインクルードされていない場合は
のメッセージが表示されます。
GitHub の VarSpeedServo.h サイトに移動し、
[code]をクリックし Download ZIP を選択しダウンロードして下さい。
arduino IDE のソフトに先程ダウンロードしたライブラリをインストールします。
スケッチ → ライブラリをインクルード ← .ZIP形式のライブラリをインストール をクリック
VarSpeedServo-master ZIP を選択しインクルードします。
-
- 設定
変数.attach(PIN) ;
使用するGPIOのピン番号
- 設定
○ Servo.h はサーボモータは非同期なので、次から次と動作が始まるため待ち時間を設ける必要がある場合もありますが、同期出来れば、この角度まで移動したら次の動作になります。
○ Arduino を 学ぶ上で書籍やWebpageを参考に作っていますが、私なりに噛み砕いて書いているつもりですが、判らない点がありましたら連絡下さい。