导航:首页 > 操作系统 > 舵机抖动单片机复位

舵机抖动单片机复位

发布时间: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电源上并一个大的电容,但这个不是根本的办法。

阅读全文

与舵机抖动单片机复位相关的资料

热点内容
加密机操作手册 浏览:860
dos命令自动关闭 浏览:328
心田花开app在哪里评价 浏览:449
求索记录频道哪个app可以看 浏览:730
金梅瓶pdf下载 浏览:985
机器软件用什么编程 浏览:843
java虚拟机指令 浏览:671
shell编程入门书籍 浏览:946
大连桶装水溯源码售价 浏览:302
php怎么跳转到电脑 浏览:414
如何在电脑上创建新网络连接服务器 浏览:61
c语言编译之后如何运行 浏览:569
mfc多线程编程视频 浏览:411
c编译的中文怎么写 浏览:92
单片机连接蜂鸣器电路 浏览:845
程序员买房前后对比照 浏览:1006
cmdjava中文乱码 浏览:949
窗口app哪个好 浏览:732
xzforandroid 浏览:580
程序员那么可爱歌曲完整版 浏览:926