第一:你的伺服電機(jī)是什么樣的?是不是就是舵機(jī)?如果是舵機(jī)——SG90——它的控制是這樣的:知識(shí):舵機(jī)的控制一般需要一個(gè)20ms左右的時(shí)基脈沖,該脈沖的高電平部分一般為0.5ms~2.5ms范圍內(nèi)的角度控制脈沖部分。以180度角度伺服為例,那么對(duì)應(yīng)的控制關(guān)系是這樣的:
0.5ms--------------0度; 1.0ms------------45度; 1.5ms------------90度; 2.0ms-----------135度; 2.5ms-----------180度; 程序是這樣的: void DJZD (void)//舵機(jī)轉(zhuǎn)動(dòng)子函數(shù) { unsigned char i;//舵機(jī)信號(hào)脈沖次數(shù) for (i=0;i<75;i++)//通過(guò)試驗(yàn),從0度轉(zhuǎn)動(dòng)到180度,至少要循環(huán)75次 { DJ=1; Delay50us(GT); DJ=0; Delay50us(DT); } DJ=0;
} GT=20;DT=380;轉(zhuǎn)動(dòng)到45度
GT=30;DT=370;轉(zhuǎn)動(dòng)到90度,其它角度自己可以算。
這里的角度是固定的,不存在45度加45度的說(shuō)法。注意。!
第二:步進(jìn)電機(jī)——以下以四相五線步進(jìn)電機(jī)為例
知識(shí):我的步進(jìn)電機(jī)參數(shù)為:步距角5.625度,是減速電機(jī)1:64;即是說(shuō):每一次脈沖,電機(jī)轉(zhuǎn)動(dòng)角度為5.625/64度
所以,轉(zhuǎn)動(dòng)45度,就應(yīng)該有45*64/5.625=512次脈沖。
程序如下:
- void Motor() //電機(jī)旋轉(zhuǎn)子函數(shù)
- {
- unsigned char i;
- for(i=0;(i<8);i++) //四相單雙八拍
- {
- if (jd==0) //jd為0則停轉(zhuǎn)
- {
- Rotation=0xf0;
- break;
- }
- if (k==0)
- {
- Rotation=FFW2[i]; //輸出正轉(zhuǎn)的相
- }
- else
- {
- Rotation=FFW1[i]; //輸出反轉(zhuǎn)的相
- }
- Delay(Time); //Time改變這個(gè)參數(shù)可以調(diào)整電機(jī)轉(zhuǎn)速
- jd--;
- }
- }
復(fù)制代碼
其中,變量jd(角度)在主程序中就應(yīng)該賦值512,若再加45度,則可以再來(lái)一次就行。這里的角度,是可以累加的,不是固定的。其它角度自己可以算,當(dāng)然要注意自己的步進(jìn)電機(jī)參數(shù)。
|