3.5 とりあえず使ってみる(ステッピングモータ)
使用した
| ステッピングモータ | 秋月電子 P-4241 | http://akizukidenshi.com/catalog/g/gP-04241/ |
| ドライバIC | 秋月電子 I-2030 | http://akizukidenshi.com/catalog/g/gI-02030/ |
ステッピングモータを動かすには、何通りかのパルスの与え方があるが、ここでは、以下の方法で考える。
| Step | 1 | 2 | 3 | 4 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|---|---|---|
| A端子 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
| NotA端子 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
| B端子 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
| NotB端子 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
A Common および B CommonはPullUP
回路図(ステッピングモータドライバ)

JP1は操作用電源(mbedのVOUT(3.3V端子)とGND)
JP2は操作用信号線(mbedのp19とp20)
JP3はステッピングモータ用の電源(今回は9Vアダプタ)
SV1はステッピングモータを接続する。
1.とにかく回す
ステッピングモータとの接続確認のためにとにかく回します。
プログラムはここ/users/yueee_yt/programs/SteppingMotor1/ltr8h6
#include "mbed.h"
DigitalOut myled(LED1);
DigitalOut step_a(p19);
DigitalOut step_b(p20);
Ticker timer1;
void add_step(void) {
static int mode=0;
switch (mode) {
case 0 :
step_b=0;
step_a=1;
mode=1;
break;
case 1 :
step_a=1;
step_b=1;
mode=2;
break;
case 2:
step_a=0;
step_b=1;
mode=3;
break;
case 3:
step_a=0;
step_b=0;
mode=0;
break;
}
myled=!myled;
}
int main() {
timer1.attach(&add_step, 0.01);
while (1);
}
タイマーを使って定期的にadd_stepを呼び出すことにより、モータ回します。
add_stepはmodeをスタティック変数で保存することで次のステップを動かします
もちろんmain関数内のtimer1.attach(&add_step, 0.01);の0.01を小さくすれば早く、大きくすれば遅くなります。
ただし、あまり早くすると、モータが付いて行けず回らなくなります。
電圧を高くすることで速く回せますが、その分電力が必要になりますので、かなり熱くなります
制止時の省エネ設定とかドライバーの機能を使ったりしましょう。(この回路では使用できなくなっています)
2.角度を指定して回す
角度を指定して回す方法をしてみましょう。
このステッピングモータはちょうど、1パルス1度なので、パルス数を回転角度が一致する。
プログラムはここ/users/yueee_yt/programs/SteppingMotor2/lts75o
#include "mbed.h"
DigitalOut myled(LED1);
DigitalOut step_a(p19);
DigitalOut step_b(p20);
Ticker timer1;
int mode=0;
void step(int x) {
int i;
for (i=0;i<x;i++) {
switch (mode) {
case 0 :
step_a=1;
step_b=0;
mode=1;
break;
case 1 :
step_a=1;
step_b=1;
mode=2;
break;
case 2:
step_a=0;
step_b=1;
mode=3;
break;
case 3:
step_a=0;
step_b=0;
mode=0;
break;
}
myled=!myled;
wait(0.01f);
}
}
int main() {
int i;
for (i=0;i<12;i++) {
step(30);
wait(0.5f);
}
}
ポイントは、現在のステッピングモータのステップNoを記憶させておくことです。
でなければ、少しずつずれてきます。
ちなみにこれでは逆方向に回りません。
Please log in to post comments.
