步進電機按定子上繞組來分,有二相、三相和五相等系列,最受歡迎的是兩相混合式步進電機,約占97%以上的市場份額,其原因是性價比高,配上細分驅動器后效果良好,該種電機的基本步距角為1.8°/步,配上半步驅動器后,步距角減少為0.9°,配上細分驅動器后其步距角可細分達256倍(0.007°/微步),由于摩擦力和制造精度等原因,實際控制精度略低,同一步進電機可配不同細分的驅動器以改變精度和效果,
此篇檔案以二相四線制步進電機演示
一、 效果演示

二、 單片機程式
寫程式之前,先把前提作業做好了,本次用的是STC89C52RC芯片(用別的也行,改一下頭檔案),keil軟體和燒寫軟體以及主板驅動CH340程式,
程式解讀:
A:
1.0引腳是脈沖引腳
1.1引腳是使能引腳
1.2引腳是方向引腳
2.0引腳控制電機正轉
2.1引腳控制電機反轉
2.2引腳控制電機加速
2.3引腳控制電機減速
2.4引腳控制電機停止
2.5引腳控制電機步距角加
2.6引腳控制電機步距角減
2.7引腳控制電機以一定步距角轉動
sbit CLK = P1^0;
sbit ENA = P1^1;
sbit DIR = P1^2;
sbit P_TS = P2^0;
sbit N_TS = P2^1;
sbit P_ADJ = P2^2;
sbit N_ADJ = P2^3;
sbit StopStart = P2^4;
sbit P_Step = P2^5;
sbit N_Step = P2^6;
sbit SS_Step = P2^7;
B:
初始化電機;呼叫定時器,初始化定時器;呼叫鍵控掃描程式
void main()
{
ENA=1;
CLK=0;
DIR=0;
Init_time();
while(1)
{
Key_scan();
}
}
C:
初始化定時器,給T0裝初值,打開中斷
void main()
{
ENA=1;
CLK=0;
DIR=0;
Init_time();
while(1)
{
Key_scan();
}
}
D:
進入定時器中斷
void Enter_Timer0() interrupt 1
{
TH0=(65536-CYCLE)/256;
TL0=(65536-CYCLE)%256;
CLK=~CLK;
PWM_count++;
if(PWM_count==(2*cy_count)&&CY_status)
{
PWM_count=0;
TR0=0;
ENA=0;
}
}
E:
控制步進電機正反轉,以一定步距角轉動,調速,調脈沖
void Key_scan()
{
static char i=0,j=0;
if(P_TS==0)
{
if(P_TS==0)
{
while(!P_TS);
DIR=1;
}
}
if(N_TS==0)
{
if(N_TS==0)
{
while(!N_TS);
DIR=0;
}
}
if(P_ADJ==0)
{
if(P_ADJ==0)
{
while(!P_ADJ);
i--;
if(i<1)
i=0;
CYCLE=Tspeed[i];
}
}
if(N_ADJ==0)
{
if(N_ADJ==0)
{
while(!N_ADJ);
i++;
if(i>2)
i=2;
CYCLE=Tspeed[i];
}
}
if(StopStart==0)
{
if(StopStart==0)
{
while(!StopStart);
Run_Status=~Run_Status;
if(Run_Status)
{
ENA=1;
TR0=1;
}
else
{
ENA=0;
TR0=0;
CY_status=0;
}
}
}
if(P_Step==0)
{
if(P_Step==0)
{
while(!P_Step);
j++;
if(j>3)
j=3;
Step(StepAngle[j]);
}
}
if(N_Step==0)
{
if(N_Step==0)
{
while(!N_Step);
j--;
if(j<1)
j=0;
Step(StepAngle[j]);
}
}
if(SS_Step==0)
{
if(SS_Step==0)
{
while(!SS_Step);
Step(StepAngle[j]);
}
}
}
F:
角度控制
void Step(unsigned int step_count)
{
PWM_count=0;
CY_status=1;
cy_count=step_count;
ENA=1;
TR0=1;
}
單片機程式下載:
鏈接: https://pan.baidu.com/s/1uCTHYBnQcke1_4By6ps_WA
提取碼:zplc
三、 實物接線

接線圖如圖所示
驅動器可采用共陽極接法或共陰極接法,但在這里我們選擇共陽極接法
因為驅動器的介面是光驅動的,而選擇共陰接法的話,就意味著我們得靠單片機I/0口的電流來驅動里面的發光二極管,我們都知道單片機I/O口的驅動能力非常小,查看手冊可知I/O口的拉電流只有幾uA根本不足以驅動發光二極管,共陽極接法的灌電流可達15mA,此時足以驅動發光二極管,這就是為什么要選擇共陽接法,
Ps:拉電流是邏輯門輸出為高電平時的負載電流,
外部電流通過芯片引腳向芯片內‘流入’稱為灌電流
實物接線圖:

細分:
就是驅動器的6個撥碼,它提高了步進電機轉角精度和運行平穩性,
不過細分怎么調呢?
下圖是細分的調節方式,可以按照自己的需求回應的調整,具體可以參照步進電機驅動器說明書

說明書詳情網站:
https://wenku.baidu.com/view/4e003934dcccda38376baf1ffc4ffe473368fd26.html
OK,51單片機控制二相四線制步進電機到這里就結束啦,您學廢了嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/5682.html
標籤:其他
上一篇:ESP32 開發筆記(三)原始碼示例 7_WS2812_RMT 使用ESP32的RMT實作彩虹變色效果
下一篇:等保2.0簡單介紹
