四相五線減速比為1/64步進電機驅(qū)動設(shè)計
一、大致介紹:
步進電機是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元步進電機件。在非超載的情況下,電機的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負載變化的影響,當(dāng)步進驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進電機按設(shè)定的方向轉(zhuǎn)動一個固定的角度,稱為“步距角”,它的旋轉(zhuǎn)是以固定的角度一步一步運行的??梢酝ㄟ^控制脈沖個數(shù)來控制角位移量,從而達到準確定位的目的;同時可以通過控制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達到調(diào)速的目的。
圖1 常見的幾種步進電機
圖2 步進電機和ULN2003合用
二、常用術(shù)語
1、相數(shù):產(chǎn)生不同對極N、S磁場的激磁線圈對數(shù)。常用m表示。
2、拍數(shù):完成一個磁場周期性變化所需脈沖數(shù)或?qū)щ姞顟B(tài)用n表示,或指電機轉(zhuǎn)過一個齒距角所需脈沖數(shù),以四相電機為例,有四相四拍運行方式即AB-BC-CD-DA-AB,四相八拍運行方式即 A-AB-B-BC-C-CD-D-DA-A。
3、步距角:對應(yīng)一個脈沖信號,電機轉(zhuǎn)子轉(zhuǎn)過的角位移用θ表示。θ=360度/(轉(zhuǎn)子齒數(shù)*運行拍數(shù)),以常規(guī)二、四相,轉(zhuǎn)子齒為50齒電機為例。四拍運行時步距角為θ=360度/(50*4)=1.8度(俗稱整步),八拍運行時步距角為θ=360度/(50*8)=0.9度(俗稱半步)。
圖3 步進電機內(nèi)部模型圖
三、驅(qū)動方式
1、1相勵磁法:每一瞬間只有一個線圈相通,其它休息。(優(yōu)點)簡單,耗電低,精確性良好。(缺點)力矩小,振動大,每次勵磁信號走的角度都是標稱角度。
2、2相勵磁法:每一瞬間有兩個線圈導(dǎo)通。(優(yōu)點)力矩大,震動小。(缺點)每勵磁信號走的角度都是標稱角度。
3、1-2相勵磁法:1相和2相交替導(dǎo)通。(優(yōu)點)精度較高,運轉(zhuǎn)平滑,每送一個勵磁信號轉(zhuǎn)動1/2標稱角度,稱為半步驅(qū)動。(前兩種稱為4相4拍,這一種稱為4相8拍)
(a)1相勵磁法 (b)2相勵磁法 (c)1-2相勵磁法
圖4 3種驅(qū)動方式
1 /*-----------------------------------------------
2 名稱:步進電機
3 論壇:www.doflye.net
4 編寫:shifang
5 日期:2009.5
6 修改:無
7 內(nèi)容:本程序用于測試4相步進電機常規(guī)驅(qū)動 使用1相勵磁
8 ------------------------------------------------*/
9 #include
10
11 sbit A1=P1^0; //定義步進電機連接端口
12 sbit B1=P1^1;
13 sbit C1=P1^2;
14 sbit D1=P1^3;
15
16 #define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通電,其他相斷電
17 #define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通電,其他相斷電
18 #define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通電,其他相斷電
19 #define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通電,其他相斷電
20 #define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部斷電
21
22 unsigned char Speed;
23 /*------------------------------------------------
24 uS延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
25 unsigned char 是定義無符號字符變量,其值的范圍是
26 0~255 這里使用晶振12M,精確延時請使用匯編,大致延時
27 長度如下 T=tx2+5 uS
28 ------------------------------------------------*/
29 void DelayUs2x(unsigned char t)
30 {
31 while(--t);
32 }
33 /*------------------------------------------------
34 mS延時函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
35 unsigned char 是定義無符號字符變量,其值的范圍是
36 0~255 這里使用晶振12M,精確延時請使用匯編
37 ------------------------------------------------*/
38 void DelayMs(unsigned char t)
39 {
40 while(t--)
41 {
42 //大致延時1mS
43 DelayUs2x(245);
44 DelayUs2x(245);
45 }
46 }
47 /*------------------------------------------------
48 主函數(shù)
49 ------------------------------------------------*/
50 main()
51 {
52 Speed=5; //調(diào)整速度
53 while(1)
54 {
55 Coil_A1 //遇到Coil_A1 用{A1=1;B1=0;C1=0;D1=0;}代替
56 DelayMs(Speed); //改變這個參數(shù)可以調(diào)整電機轉(zhuǎn)速 ,
57 //數(shù)字越小,轉(zhuǎn)速越大,力矩越小
58 Coil_B1
59 DelayMs(Speed);
60 Coil_C1
61 DelayMs(Speed);
62 Coil_D1
63 DelayMs(Speed);
64 }
65 }