1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

標題: 單片機方波控制舵機抖動得厲害的問題 [打印本頁]

作者: 錦燈籠    時間: 2019-11-9 11:56
標題: 單片機方波控制舵機抖動得厲害的問題
我想用方波控制舵機從而控制機械抓的張開與閉合,但是機械爪雖然是張開與閉合但是抖得厲害,而且會不停的張開與閉合,但是我單獨的讓它做一個動作比如張開它就反應良好,動一下就不動,為什么張開與閉合的程序放在一起它就老是抖還循環呢   例程如下,main里面的張開與閉合放在一起就有問題

單片機源程序如下:
#include <reg52.h>
#define uint unsigned int         
#define uchar unsigned char
sbit P1_0=P1^0;                         //PWM信號輸出端                 
void Init_t0(void);    //子函數聲明   
void Init_t1(void);
void delay(unsigned int x) //延時 x ms
{
unsigned int i,j;
for(i=x;i>0;i--);
for(j=110;j>0;j--);
}
void main()  
{         
        P1_0=0;                                 //置PWM初始輸出為高電平                        
      Init_t0();
       TR0=1;
  delay(9000);           //等待中斷
      // TR0=0;
      

       Init_t1();
       TR1=1;
       delay(9000);
      // TR1=0;

}
void Init_t0(void)
{   
        TMOD=0x11;                  //設置定時器0工作方式1后面運行TR位啟動
        TH0=(65536-1500)/256;
        TL0=(65536-1500)%256;         //1.5ms 的高電平
        EA=1;
        ET0=1;
      //  TR0=1;         
}
void Init_t1(void)
{   
        TMOD=0x11;                  //設置定時器1工作方式1后面運行TR位啟動
        TH1=(65536-1500)/256;
        TL1=(65536-1500)%256;         //1.5ms 的高電平
        EA=1;
        ET1=1;
      //  TR0=1;         
}
/*******************中斷服務程序**********************/  
void PWM0() interrupt 1         //定時器0中斷,產生方波
{  
        if(P1_0==1)                         //如果上個電平為1,則下個低電平的時間為18.5ms
        {  
                TH0=(65536-18000)/256;                 //試過t1=1500;t0=20000-t1;但舵機老是吱吱的響,推測:運算耗時.
                TL0=(65536-18000)%256;                 //1800是抓取
        }
        else                                         //如果上個電平為0,則下個高電平為1.5ms
        {
                TH0=(65536-2000)/256;
                TL0=(65536-2000)%256;
        }
        P1_0=~P1_0;
}
void PWM1() interrupt 3         //定時器0中斷,產生方波
{  
        if(P1_0==1)                         //如果上個電平為1,則下個低電平的時間為18.5ms
        {  
                TH1=(65536-19000)/256;                 //試過t1=1500;t0=20000-t1;但舵機老是吱吱的響,推測:運算耗時.
                TL1=(65536-19000)%256;
        }
        else                                         //如果上個電平為0,則下個高電平為1.5ms
        {
                TH1=(65536-1000)/256;
                TL1=(65536-1000)%256;
        }
        P1_0=~P1_0;
}



作者: 噗噗噗p    時間: 2019-11-9 13:15
張開或者關閉的時候可能堵轉了,建議多調試一下找準舵機旋轉的角度能使爪子剛好閉合和張開
作者: 錦燈籠    時間: 2019-11-9 14:54
噗噗噗p 發表于 2019-11-9 13:15
張開或者關閉的時候可能堵轉了,建議多調試一下找準舵機旋轉的角度能使爪子剛好閉合和張開

我剛剛調到兩個相對比較靠中間的角度,但是舵機還是不停的循環,不停的抖動
作者: 樹懶flash    時間: 2019-11-10 10:22
可以看看舵機脈沖是否適合,電壓是否穩定




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1