标题:
有个关于舵机的问题,渴望得到解答
[打印本页]
作者:
JIN_zi
时间:
2017-4-11 21:48
标题:
有个关于舵机的问题,渴望得到解答
这个是程序,想请各位看一下有没有什么错误,下载到51单片机上没有反应
#include<reg52.h>
sbit out=P0^0;
void init();
void main()
{
out=0;
init();
while(1)
;
}
void init()
{
TMOD=0x01;
EA=1;
ET0=1;
TR0=1;
TH0=(65536-500)/256; //5ms=5000
TL0=(65536-500)%256;
}
void aaa() interrupt 1
{
static int num=0;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
num++;
if(num<4) out=1;
else out=0;
if(num==8) {num=0;out=0;}
}
作者:
你像风儿来了
时间:
2017-4-12 08:39
1.舵机的pwm应该是20ms周期,0.5~2.5ms高电平控制舵机正反转
2.你这个程序pwm信号不对,占空比不对
/**************************************************************************/
//PWM调速程序,P1口输出pwm
/****************************************************************************/
#include <reg51.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit S2 = P3^0;
sbit S3 = P3^1;
uint8 t = 0;
uint8 PWM_T = 0; //占空比控制变
void delay_1ms(uint16 t)
{
uint16 x,y;
for(x=t;x>0;x--)
for(y=120;y>0;y--);
}
/****************************************************
主程序
****************************************************/
void main(void)
{
TMOD = 0x02; //定时器0,工作模式2,8位定时模式
TH0=210; //写入预置初值(取值1-255,数越大PWM频率越高)
TL0=210; //写入预置值 (取值1-255,数越大PWM频率越高)
TR0=1; //启动定时器
ET0=1; //允许定时器0中断
EA=1; //允许总中断
P1=0xff; //初始化P1,输出端口
PWM_T=30;
while(1)
{
if(!S3)//S3==0
{
if(PWM_T<250)
{
PWM_T++;
}
delay_1ms(10);
}
if(!S2)
{
if(PWM_T>0)
{
PWM_T--;
}
delay_1ms(10);
}
}
}
/****************************************************
/定时器0中断模拟PWM
****************************************************/
timer0() interrupt 1
{
t++; //每次定时器溢出加1
if(t==250) //PWM周期 100个单位
{
t=0; //使t=0,开始新的PWM周期
P1=0x00; //输出端口
}
if(PWM_T==t) //按照当前占空比切换输出为高电平
{
P1=0xff; //
}
}
这里给你个可调占空比的程序作为参考
作者:
imxuheng
时间:
2017-4-12 09:06
估计两方面原因,
1. 电路方面
P0口驱动能力不行,加上上拉电阻。
2. 程序方面
舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;
你的定时器部分,定时器周期为500us×8=4ms,而舵机的控制一般需要一个20ms左右的时基脉冲,所以这里不对
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1