|
舵機(jī)不能控制速度嗎?轉(zhuǎn)的太快了,一按不到1秒時間就轉(zhuǎn)到位了。能不能慢慢的轉(zhuǎn)?轉(zhuǎn)它割10秒鐘到位
我的舵機(jī)是
MG996R按一個按鈕旋轉(zhuǎn)180度,按另一個按鈕反轉(zhuǎn)回來,
感覺速度太快了。能不能慢慢的旋轉(zhuǎn)?
我用的8腳單片機(jī)型號是STC15W204S,其實(shí)用89C52單片機(jī)測試也是一樣的效果,換下頭文件即可,
下面是單片機(jī)代碼,
網(wǎng)上資料說改定時器中斷初始時間,我也改過不同時間(0.1MS至5ms),都沒有效果。
TH0=0Xfe;
TL0=0X33; //計(jì)數(shù)初值設(shè)置為0.5ms
又說改PWM時間,下面40我改為10至500也還是改變不了速度,還是老樣子
count++;
if(count>=40)//原始是=40
{
count=0;
}
老師們,到底要怎么改,才能控制舵機(jī)速度?謝謝指導(dǎo),,
- #include "STC15Fxxxx.H"
- //#include <intrins.h>
- #define uint unsigned int //定義一下方便后面使用
- //#define uchar unsigned char //定義一下方便后面使用
- #define MAIN_Fosc 11059200L//定義主時鐘
- sbit SG_PWM=P3^2;
- sbit Key_1=P5^4;
- sbit Key_2=P5^5;
- unsigned char count=0;
- unsigned char PWM_count=1; //1--0度,2--45度,3--90度,4--135度,5--180度
- void delay(unsigned char i) //延時
- {
- unsigned char j,k;
- for(j=i;j>0;j--)
- for(k=125;k>0;k--);
- }
- void Timer_Init()
- {
- TMOD=0X01; //T0定時方式1
- TH0=0Xfe;
- TL0=0X33; //計(jì)數(shù)初值設(shè)置為0.5ms 每0.5ms進(jìn)入一次中斷,晶振頻率:11.0592MHZ
- ET0=1; //打開定時器0的中斷
- TR0=1; //打開定時器0
- EA=1; //開總中斷
- }
- void Timer() interrupt 1 //特別注意此處,0--外部中斷0,1--定時器中斷0,2--外部中斷1,3--定時器中斷1,4--串行口中斷1
- {
- TR0=0;
- TH0=0Xfe;
- TL0=0X33; //重新賦計(jì)數(shù)初值為0.5ms
-
- if(count<=PWM_count)
- {
- SG_PWM=1;
- }
- else
- {
- SG_PWM=0;
- }
- count++;
- if(count>=40)//原始是=40
- {
- count=0;
- }
- TR0=1;
- }
- void main()
- {
- Timer_Init();
- while(1)
- {
- if(Key_1==0)
- {
- delay(10);
- EA=0;
- if(Key_1==0)
- {
- PWM_count=1;//1--0度
-
- count=0;
- EA=1;
- }
- while(!Key_1);
- }
- if(Key_2==0)
- {
- delay(10);
- EA=0;
- if(Key_2==0)
- {
- PWM_count=5;//4--135度 轉(zhuǎn)動角度
-
- count=0;
- EA=1;
- }
- while(!Key_2);
- }
- }
- }
復(fù)制代碼
單片機(jī)源程序:
996舵機(jī)按鍵控制正反轉(zhuǎn).rar
(24.96 KB, 下載次數(shù): 12)
2021-8-14 10:11 上傳
點(diǎn)擊文件名下載附件
|
|