步進電機是将電脈沖信号轉變為角位移或者線位移的開源控制元件。
所以我們用的時候不要擔心他的複雜,可以理解為一個元器件。靜态指标術語
1、相數:産生不同對極N、S磁場的激磁線圈對數。常用m表示。
2、拍數:完成一個磁場周期性變化所需脈沖數或
導電狀态用n表示,或指電機轉過一個齒距角所需脈沖數,以四相電機為例,有四相四拍運行方式即AB-BC-CD-DA-AB,四相八拍運行方式即 A-AB-B-BC-C-CD-D-DA-A
3、步距角:對應一個脈沖信号,電機轉子轉過的角位移用θ表示。θ=360度/(轉子齒數*運行拍數),以常規二、四相,轉子齒為50齒電機為例。四拍運行時步距角為θ=360度/(50*4)=1.8度(俗稱整步),八拍運行時步距角為θ=360度/(50*8)=0.9度(俗稱半步)。
4、定位轉矩:電機在不通電狀态下,電機轉子自身的鎖定力矩(由磁場齒形的諧波以及機械誤差造成的)。
5、靜轉矩:電機在額定靜态電壓作用下,電機不作旋轉運動時,電機轉軸的鎖定力矩。此力矩是衡量電機體積的标準,與驅動電壓及驅動電源等無關。 雖然靜轉矩與電磁激磁安匝數成正比,與定齒轉子間的氣隙有關,但過分采用減小氣隙,增加激磁安匝來提高靜力矩是不可取的,這樣會造成電機的發熱及機械噪音。
如何接線
7447芯片:是數碼管驅動,與以往不同的是僅僅用4位就可以控制顯示,裡面有編好的,通過高低電平組合來顯示數字。
L298就是起到放大電流的作用。單片機的電流太小,驅動不了電機。
效果展示:(更多效果可以去看本人拍的視頻和小視頻)
程序詳細講解:
#include "reg52.h"//頭文件
unsigned char index =0; //宏定義一個步進索引,就是引導步進如何旋轉
int n=0,n0=0;//定義周期,一個是檔位
unsigned char flag=0,step=1; //方向,開關
main() //主函數
{
P3=0xff; //由于P3是數據輸出端,所以最好就是高電平,這一句寫不寫影響大不大。
EA=1; //開總中斷
EX0=1;EX1=1;ET0=1; //打開外部中斷 和定時中斷
IT0=1;IT1=1;//開外部中斷
TMOD=0x01;//定時器為定時工作方式1
TH0=(65536-1000)/256; //每一毫秒 中斷一次
TL0=(65536-1000)%6;//每一毫秒 中斷一次
TR0=1; //開定時中斷
while(1) //為真進行不停的循環,然後等待中斷發生
{
if(P0==0xfe) { n0=70; P2= 1; } //按鍵 顯示1擋
if(P0==0xfd) { n0=90; P2= 2; }//按鍵 顯示2擋
if(P0==0xfb) { n0=110; P2= 3; } //按鍵 顯示3擋
if(P0==0xf7) { n0=150; P2= 4; }//按鍵 顯示4擋
}
}
void int0() interrupt 0 停止鍵中斷子程序,隻會在0/1之間變化。
{
step ;
if(step>=2)
step=0;
}
void int1() interrupt 2 正反轉中斷子程序 隻會在正轉和反轉之間0-1變化
{
flag ;
if(flag>=2)
flag=0;
}
void time() interrupt 1 定時器中斷子程序
{
TH0=(65536-1000)/256; //初值重裝
TL0=(65536-1000)%6;//為了每次都是延時一毫秒,
if(step==1) //如何step等于1則,開始轉,如果不等于,n就會加一。
{
if(n >= n0 )//輸出脈沖周期N0*1毫秒,
{
if(flag==1)//問正轉嘛?
{
switch(index) 如果是 就會執行這一句
{
case 0: P1=0X03;break;//因為INDEX不斷地加一,就會從上到下不斷的選擇。
case 1: P1=0X06;break;//P1口兩兩組合,進行高低電平變化。
case 2: P1=0X0c;break;
case 3: P1=0X09;break;
}
index ; 不斷地加一
if(index>=4) 如何等于4了,就再從0 開始
index=0; //從新賦值
n=0; //從新賦值
}
if(flag==0)如果是反轉
{
switch(index)//和上面的講解會一樣的
{
case 0: P1=0X09;break;
case 1: P1=0X0c;break;
case 2: P1=0X06;break;
case 3: P1=0X03;break;
}
index ;
if(index>=4)
index=0;
n=0;
}
else
n=0;//既不是正轉 也不是反轉,就停止吧
}
n ;//如果是開啟了,就會判斷脈沖是否大于周期
}
else
n=0;如果沒有開,或者啟動。好比電視插上電,但是沒有按下電視開關。則也不轉動
}
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!