一、目標功能
輸入多個目標角度,以及每個角度對應的速度,實現步進電機的多段多速度轉動
二、計算過程
**2.1 **簡化C與n函數關系
根據上一節內容,定時器初值與速度函數關系為
硬件系統確定后,angle、Xtal、X均為定值,為降低計算量,將公式中可以提前計算好的地方直接計算出來
根據硬件設置情況,step=1.8,Xtal=12000000,X=2,計算K值
2.2計算步數(step_num)與角度(angle)函數關系
三、程序代碼
//定義步進電機轉動段數及運動參數
#define para 5
unsigned int angle[5]={90,360,720,180,0}; //電機目標轉角
unsigned int v[5]={20,60,120,60,20}; //電機速度
void main()
{
//計算step_num與c
step_num=10*angle[0]/9;
c=65536-150000/v[0];//計算V[0]對應的定時器初值
while(1)
{
}
}
//定時器0中斷程序
void time0_int() interrupt 1
{
TH0=c/256;//重裝定時寄存器初值
TL0=c%256;
//低電平切換到高電平,產生一個脈沖
PUL=1;
_nop_();_nop_();nop_();nop_();
PUL=0;
DIR==1?n++:n--;//根據方向,判斷步數加或減
if(n==step_num)//當前階段完成判斷
{
i++;
if(i==para)//整個運動階段走完
{
TR0=0;//電機停止
}
else //計算下一階段參數
{
//刷新步數與速度值
step_num=10*angle[i]/9;
c=65536-150000/v[i];
//判斷方向
if(angle[i] >angle[i-1])
DIR=1;
else
DIR=0;
}
}
}
四、總結
此種方式利用定時器精確定時能力,從而控制電機轉速,同時實現步進電機的多段運動,至此實現了步進電機三個主要參數角度、速度、方向的簡單協同操作。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
寄存器
+關注
關注
31文章
5343瀏覽量
120377 -
步進電機
+關注
關注
150文章
3111瀏覽量
147486 -
定時器
+關注
關注
23文章
3248瀏覽量
114816 -
定時器中斷
+關注
關注
0文章
49瀏覽量
11189 -
控制電機
+關注
關注
0文章
240瀏覽量
18137
發布評論請先 登錄
相關推薦
基于FPGA的步進電機多軸控制器該怎么設計?
步進電機是一種完全數字化的電動執行機構,從原理上說,其角位移與驅動脈沖的個數成正比,在正常情況下,步進電機具有使用簡單、運動精確、連續運行無
發表于 09-19 06:55
步進電機控制系統的設計與實現
論文介紹了步進電機的控制原理,利用脈沖疊加原理,以Verilog HDL 為實體設計輸入,設計并實現了一套集成于FPGA 內部的步進
發表于 01-18 14:52
?314次下載
步進電機控制系統的設計與實現
論文介紹了步進電機的控制原理,利用脈沖疊加原理,以Verilog HDL為實體設計輸入,設計并實現了一套集成于FPGA內部的步進
發表于 07-13 16:14
?45次下載
如何使用FPGA實現步進電機控制器
,極大地減少了外圍元件的使用。同時,采用V HDL 語言控制可以根據步進電機的不同,改變模塊程序的參數就可以實現不同型號步進
發表于 02-05 11:37
?27次下載
步進電機最簡單的驅動方法_步進電機控制方法
最簡單的步進電機驅動方法是單相雙極驅動方式,也稱為雙相步進驅動方式。該方式只需要使用一個 H橋驅動器和一個脈沖發生器,即可實現
發表于 03-08 14:21
?1.5w次閱讀
評論