2015年7月1日 星期三

步進電機 (一) : 28BYJ-48 + ULN2003 驅動板

用 Arduino 玩 步進電機, 最基本套餐應該係 28BYJ-48 配合 ULN2003 驅動板了.


28BYJ-48 5V DC 步進電機

ULN2003 步進電機驅動板


電機跟驅動板的連接, 不會有難度吧, 直接把 5-pin 頭插到驅動板上就可以了.
28BYJ-48 連接 ULN2003


基本資料:

電壓:5V



相關資料下載:
28BYJ-48 (簡體)
ULN2003

接線方法:

UNOULN2003
D8IN1
D9IN2
D10IN3
D11IN4
5V+
GND-

雖然 28BYJ-48 只係 5V, 但係可以既話, 最好都係用番外接電源.  記得共地.


測試程式:
SM_28YBJ48_ULN2003.ino

Arduino 既 IDE, 本身已有 4 個 Stepper 既測試程式:
File->Examples->Stepper->
1. MotorKnob
2. stepper_oneRevolution
3. stepper_oneStepAtATime
4. stepper_speedControl

不過, 我試既時候, 反時針轉都係出順時針, 仲研究緊.
而網上 instructables.com 有比較詳細既介紹, 而且佢入面既 sample 係可以正反都無問題.
http://www.instructables.com/id/BYJ48-Stepper-Motor/?ALLSTEPS

呢隻係 4相步進電機, IDE example 入面只有 4 個 steps, 而 instructables 果個有 7 個 steps.
而 instructables.com 條 link 入面, 亦有講下點計數既.
不過, 就算跟佢計算, 改左 stepsPerRevolution 做 4096, 結果仲連行都唔行添.
可能真係同佢既幾個steps 有關,

Arduino IDE 既 example:
StepsPIN (1-2-3-4)
0H-L-H-L
1L-H-H-L
2L-H-L-H
3H-L-L-H

Instructables 既 example:
StepsPIN (1-2-3-4)
0L-L-L-H
1L-L-H-H
2L-L-H-L
3L-H-H-L
4L-H-L-L
5H-H-L-L
6H-L-L-L
7H-L-L-H

而我個測試程式, 就係基於 instructables 上面既例子, 作左少少改動.
主要係可以設定 轉一個圈既時間, 程式會自己轉番每一格既時間.
而結果會顯示設定既時間, 同實際執行時量度出既時間, 有少少出入.
由於有一定既 overhead, 一般量度出既時間, 會比預設既多左 0.02s 左右.
所以設定為 6 秒時, 執行結果每 round 大約係 6.02 秒.




有一點要提提, 大家可能發覺, 每個 step 順住或者反方向行, 同之前既 step 實際變化只有一個, 如果計埋反方向都係得兩個變化, 咁每次輸出兩個就夠了.

我嘗試過咁樣改, 每次只係出兩條 pin, 初時行無問題, 但試過行行下中途停下再開, 有機會進入左一個唔知點解再行唔到既狀態.  呢樣野可能要再研究下, 但如果每次都出哂四條 pin 既變化, 就肯定無問題.

沒有留言:

張貼留言