單片機控制步進電機1步10步100步正反轉
1)
步進電機是將電脈沖信號轉變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件.在非超載的情況下,電機的轉速,停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負載變化的影響.即給電機加一個信號,電機則轉過一個步距角.這一線形關系的存在,加上步進電機只有周期性的誤差而無積累誤差等特點,使得在線速度,位置等控制領域用步進電機來控制變的非常的簡單.
2)
使用單片機以軟件方式驅動步進電機通過編輯方法,對步進電機的轉速,往返轉動的角度以及轉動次數(shù)等進行控制使其在一定的范圍下進行,還可以方便靈活的控制步進電機的運行狀態(tài):
3)原理圖:
4)連接圖:
輸出端 | 輸入端 | ||||
A | C1 | P2.0 | KM1 | P1.0 | 1B |
B | C2 | P2.1 | KM2 | P1.1 | 2B |
C | C3 | P2.2 | KM3 | P1.2 | 3B |
D | C4 | P2.3 | KM4 | P1.3 | 4B |
P2.4 | KM5 |
5)運用元件及電路圖
元件名稱 | 型號 | 件數(shù) |
單片機 | AT89C51 | 1 |
晶振 | CRYSTAL | 1 |
電容 | CAP | 2 |
電阻 | RES | 1 |
步進電機 | STEPER | 1 |
步進電機芯片 | ULN2003A | 1 |
按鈕 | BUTTON | 6 |
二、 實驗程序
org 0000H
start:
jnb p2.0,step
jnb p2.1,step
sjmp start
step:
jnb p2.2,one
jnb p2.3,ten
jnb p2.4,hundred
ljmp start
one:
mov r0,#2
jnb p2.0,zh1
jnb p2.1,fan1
ljmp start
ten:
mov r0,#10
jnb p2.0,zh1
jnb p2.1,fan1
ljmp start
hundred:
mov r0,#100
jnb p2.0,zh1
jnb p2.1,fan1
ljmp start
zh1:
mov p1,#03H
lcall delay
jnb p2.7,stop
djnz r0,zh2
ljmp stop
zh2:
mov p1,#06H
lcall delay
jnb p2.7,stop
djnz r0,zh3
ljmp stop
zh3:
mov p1,#0cH
lcall delay
jnb p2.7,stop
djnz r0,zh4
ljmp stop
zh4:
mov p1,#09H
lcall delay
jnb p2.7,stop
djnz r0,zh1
sjmp stop
fan1:
mov p1,#09H
lcall delay
jnb p2.7,stop
djnz r0,fan2
ljmp stop
fan2:
mov p1,#0cH
lcall delay
jnb p2.7,stop
djnz r0,fan3
ljmp stop
fan3:
mov p1,#06H
lcall delay
jnb p2.7,stop
djnz r0,fan4
ljmp stop
fan4:
mov p1,#03H
lcall delay
jnb p2.7,stop
djnz r0,fan1
sjmp stop
stop:
mov p1,#00H
ljmp start
delay:
mov r2,#200
d1:mov r1,#200
djnz r1,$
djnz r2,d1
ret
end
三、調試記錄:
當程序編譯完成后,下載到單片機中后,在運行過程當中時發(fā)現(xiàn)按下10步按鈕無法運行,其他都正常運行,回到程序檢查時發(fā)現(xiàn)10步程序編寫出現(xiàn)錯誤,經過改正后,可以運行.
評論