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.