8051單片機控制步進電機
步進電機是無刷直流電動機,它能以固定的步距角旋轉。步進電機一般采用200步完成360度旋轉,即每步旋轉1.8度。可以通過适當的指令将步進電機旋轉到任何特定的角度,因此步進電機可以用于許多需要精确旋轉運動的設備,如機器人,自動控制等。
步進電機基本上有兩種類型:單極步進電機和雙極步進電機。單極步進電機一般有五或六線,其中四根導線是四個定子線圈的一端(A,B,C,D),四個線圈的另一端連接在一起,代表第五根導線,這稱為公共端。單極步進電機由于其使用方便而非常普及。
整步驅動模式:在這個模式下,兩個線圈同時通電産生高扭矩,功耗較高。
Steps | A | B | C | D |
1 | 1 | 1 | 0 | 0 |
2 | 0 | 1 | 1 | 0 |
3 | 0 | 0 | 1 | 1 |
4 | 1 | 0 | 0 | 1 |
半步驅動模式:在這種模式下,兩個線圈通電,首先一個線圈通電,然後下一線圈通電,然後再下一個線圈通電,以此類推。
Steps | A | B | C | D |
1 | 1 | 0 | 0 | 0 |
2 | 1 | 1 | 0 | 0 |
3 | 0 | 1 | 0 | 0 |
4 | 0 | 1 | 1 | 0 |
5 | 0 | 0 | 1 | 0 |
6 | 0 | 0 | 1 | 1 |
7 | 0 | 0 | 0 | 1 |
8 | 1 | 0 | 0 | 1 |
8051無法提供足夠的電流來驅動線圈,因此需要使用一個電流驅動IC。ULN2003A是NPN達林頓晶體管,也可以用L293D芯片代替ULN2003A作為電流放大芯片。
電路原理圖:
電路原理圖
C語言代碼:
// drive Mode 1
#include<reg51.h>
void msdelay(unsigned int time)
{
unsigned i,j ;
for(i=0;i<time;i )
for(j=0;j<1275;j );
}
void main()
{
while(1)
{
P2=0x01; // 0001 P2_0=1,P2_1=0,P2_2=0,P2_3=0
msdelay(1);
P2=0x02; //0010
msdelay(1);
P2=0x04; //0100
msdelay(1);
P2=0x08; //1000
msdelay(1);
}
}
// drive Mode 2
#include<reg51.h>
void msdelay(unsigned int time)
{
unsigned i,j ;
for(i=0;i<time;i )
for(j=0;j<1275;j );
}
void main()
{
while(1)
{
P2 = 0x03; //0011 P2_0=1,P2_1=1,P2_2=0,P2_3=0
msdelay(1);
P2 = 0x06; //0110
msdelay(1);
P2 = 0x0C; //1100
msdelay(1);
P2 = 0x09; //1001
msdelay(1);
}
}
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!