導航:首頁 > 操作系統 > 舵機抖動單片機復位

舵機抖動單片機復位

發布時間:2022-09-08 10:11:14

⑴ 為什麼運行舵機就會導致單片機復位

有可能舵機需要的瞬時驅動電流超過了電池能提供的最大電流,導致供電電壓下降,引起單片機復位,這個可以用示波器觀察舵機啟停時供電電壓的波形來發現。如果是這樣,需要一定的計算,看是否需要調整更換更高容量的電池,或者在舵機驅動電源部分增加相當的儲電電容。

⑵ 這個單片機控制舵機的程序 舵機會抖動 哪位大俠幫我改一下c程序

試試這個吧,我用過的

#include<hidef.h>
//#include <math.h>
// #include <mc9s12xs128.h>
#include "derivative.h"
//#pragma LINK_INFO DERIVATIVE"mc9s12dg128b"

/*****定義變數******/

unsigned int a,c,d;
unsigned int AD_wValue,B; //AD轉換結果

int b,i,x,e,j;
void LEDShow(int x);
/*****匯流排初始化*****/

void PLL_Init(void) {
REFDV=1;
SYNR=2;
while(!(CRGFLG&0x08));
CLKSEL=0x08;
}

/******AD初始化******/
/*void AD_Init() {
//ATD0CTL1=0x00;
ATD0CTL2=0xC0;//啟動AD,快速清零,無等待模式,禁止外部觸發,中斷禁止
ATD0CTL3=0x40;//轉換序列長度8
ATD0CTL4=0x85;
ATD0CTL5=0xA0;//右對齊無符號,單通道0采樣
ATD0DIEN=0x00;//禁止數字量輸入 */

/**讀取AD轉換結果**/
/*void AD_GetValue()
{
while(!ATD0STAT0_SCF); //等待轉換結束
AD_wValue=ATD0DR0L;//讀取結果寄存器的值

} */
/*****pwm初始化********/

void PWM_Init(void)
{
PWME_PWME1=0x00; // Disable PWM (PP1) 禁止

PWMCTL_CON01=1; //0,1級聯,寄存器為通道1的
PWMCAE_CAE1=0; //通道7左對齊
PWMCNT01=0; // 計時器清零
PWMPOL_PPOL1=1; // 先置高電平,DYT反
PWMPRCLK=0; //COLCKA不分頻
PWMSCLA=4; //COLCK SA進行16分頻
PWMDTY01=1500; // 舵機靜止占空比為7.5%=1500/20000
PWMPER01=20000; //周期20MS
PWMCLK_PCLK1=1; // CLOCK SA 作時鍾源
PWME_PWME1=1;
}

/*舵機控制*/
void PWMDuo_Dutycycle(int d)
{
PWMDTY01=d;

PWME_PWME1=1; // Enable PWM 使能

}
void delay(long m){
while(m--);
}

/**************顯示輸出*******************/
const int Dtable[10] =
{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
const int CStable[4] =
{0xF7,0xFB,0xFD,0xFE};
void LEDShow1(int i,int c)
{
PTT&= CStable[i];
PORTB = Dtable[c];
delay(100);
PTT|=0xff;
}
void LEDShow(int x){
DDRB=0xFF;
DDRT=0xFF;

b = x/10; //x=126 b=12
e=x-b*10; // e=6
x=b; // x=12

for(i=0;i<=3;i++) {
LEDShow1(i,e);
b = x/10; //b=1 //b=0 b=0
e=x-b*10; // e=2 e=1 e=0
x=b; // x=1 x=0 x=0

}
}

/******主函數*********/

void main(void) {

/*put your own code here*/
//EnableInterrupts;
DisableInterrupts;
PLL_Init();
ATD0CTL1=0x00;
ATD0CTL2=0xC0;//啟動AD,快速清零,無等待模式,禁止外部觸發,中斷禁止
ATD0CTL3=0x80;//轉換序列長度8
ATD0CTL4=0x83;
ATD0CTL5=0xA0;//右對齊無符號,單通道0采樣
ATD0DIEN=0x00;//禁止數字量輸入

PWM_Init();
for(;;)
{

while(!ATD0STAT0_SCF); //等待轉換結束
AD_wValue=ATD0DR0;//讀取結果寄存器的值

B=AD_wValue;

a=1150+(1000/250)*B;
if ( a>2000 )
{
a=2000;
}
else if(a<1000)
{
a=1000;
}
else{
a=a;
}

PWMDuo_Dutycycle(a) ;
LEDShow(a) ;

// _FEED_COP(); /* feeds the dog */
}/* loop forever */
/* please make sure that you never leave main */
}

⑶ 用單片機控制舵機,為什麼一上電就轉到盡頭,然後怎麼控制也不轉,問題出在哪裡

你好!
舵機最好不用開發板上的電源,會產生干擾信號。你試試給舵機單獨供電。另外單片機和舵機要共地。
如果你運行程序時,舵機總是在小范圍內抖動,很可能就是共用一個電源
干擾引起的。
如果對你有幫助,望採納。

⑷ 為什麼我用單片機控制的舵機總是抖動

舵機供電確認和單片機分開,另外看你單片機給出的信號有沒有問題,其次舵機本身是不是存在問題,歐茲舵機為您解答。

⑸ 51單片機控制9g小舵機,轉90度後再復位。求程序。

給你個思路
0-90度
1、IO輸出高電平1.5ms
2、低電平輸出18.5ms(周期20ms)
3、循環重復100次步驟1 2
90-0度
1、IO輸出高電平0.5ms
2、低電平輸出19.5ms(周期20ms)
3、循環重復100次步驟1 2

⑹ 51單片機如何控制舵機控制板復位

有復位開發吧,用單片機控制這個開關的開啟和閉合就可以實現了。

⑺ 求一段簡單的51單片機的程序,通電後舵機順時針旋轉180度,2秒後恢復。

51單片機控制舵機程序

#include <reg52.h>

#define Stop 0 //宏定義,停止

#define Left 1 //宏定義,左轉

#define Right 2 //宏定義,右轉

sbit ControlPort = P2^0; //舵機信號埠

sbit KeyLeft = P1^0; //左轉按鍵埠

sbit KeyRight = P1^1; //右轉按鍵埠

sbit KeyStop = P1^2; //歸位按鍵埠

unsigned char TimeOutCounter = 0,LeftOrRight = 0; //TimeOutCounter:定時器溢出計數 LeftOrRight:舵機左右旋轉標志

void InitialTimer ( void )

{

TMOD=0x10; //定時/計數器1工作於方式1

TH1 = ( 65535 - 500 ) / 256; //0.25ms

TL1 = ( 65535 - 500 ) % 256;

EA=1; //開總中斷

ET1=1; //允許定時/計數器1 中斷

TR1=1; //啟動定時/計數器1 中斷

}

void ControlLeftOrRight ( void ) //控制舵機函數

{

if( KeyStop == 0 )

{

//while ( !KeyStop ); //使標志等於Stop(0),在中斷函數中將用到 LeftOrRight = Stop;

}

if( KeyLeft == 0 )

{

//while ( !KeyLeft ); //使標志等於Left(1),在中斷函數中將用到 LeftOrRight = Left;

}

if( KeyRight == 0 )

{

//while ( !KeyRight ); //使標志等於Right(2),在中斷函數中將用到 LeftOrRight = Right;

}

⑻ 機器人用的是stc5410單片機控制的舵機,啟動的時候手臂的舵機會抖動,動作過大機器人還會自動復位····

舵機的供電最好由單片機來控制,而不僅僅是由單片機來控制舵機的動作,換句話說,一定要等單片機初始化完成後,舵機的控制信號到位後,才能給舵機供電,不然的話,舵機上電後動作不確定。
一句話,先給控制部分供電,再給執行部分供電。

⑼ 請問用51單片機控制舵機時,把單片機的VCC和GND當做舵機的電源電壓,為什麼舵機工作不了,一抖一抖的

顯然是你的電源容量不夠,舵機工作時電壓下降,不工作電壓上升。

要根本解決辦法是加大電源容量,還有在5V電源上並一個大的電容,但這個不是根本的辦法。

閱讀全文

與舵機抖動單片機復位相關的資料

熱點內容
phpurl中文亂碼問題 瀏覽:889
程序員那麼可愛大結局陸漓產子 瀏覽:534
java如何從雲伺服器讀取本地文件 瀏覽:915
壓縮空氣軟管製作方法 瀏覽:911
天河三號演算法 瀏覽:924
php隊列教程 瀏覽:632
洪水命令 瀏覽:529
安卓怎麼弄成蘋果在線 瀏覽:435
谷歌web伺服器地址 瀏覽:898
安卓鎖屏圖片如何刪除 瀏覽:719
python3多進程編程 瀏覽:714
證明代碼是程序員寫的 瀏覽:397
演算法錯誤發現辦法 瀏覽:410
河南省醫院掛號是哪個app 瀏覽:629
冬日戀歌哪個APP能看 瀏覽:673
委內瑞拉加密貨 瀏覽:10
程序員寫日記哪個軟體好 瀏覽:108
加密機操作手冊 瀏覽:860
dos命令自動關閉 瀏覽:328
心田花開app在哪裡評價 瀏覽:449