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