51单片机PWM控制舵机,为什么舵机动不起来,每次开电源只转动一点点角度,修改很多次占空比也没用 10

#include<reg51.h>sbitPWM=P0^0;unsignedchartime,duoji;//duoji是调节占空比的voidinit(){duoji=1... #include <reg51.h>
sbit PWM=P0^0;
unsigned char time,duoji; //duoji是调节占空比的
void init()
{
duoji=15;
time=0;
TMOD=0X01;
TH0=(65536-20000)/256;
TL0=(65536-20000)%256;

EA=1;
ET0=1;
TR0=1;
}
void main()
{
init();
while(1)
{
if (time<=duoji)

PWM=1;

else

PWM=0;

}
}
void time1() interrupt 1
{

TH0=(65536-20000)/256;
TL0=(65536-20000)%256;

time++;

if(time>=200)
{
time=0;

}
}
展开
 我来答
tony_sgt
2016-11-19 · TA获得超过8417个赞
知道大有可为答主
回答量:5330
采纳率:66%
帮助的人:1155万
展开全部
舵机的控制信号为周期是20ms的脉宽调制(PWM)信号,其中脉冲宽度从0.5ms-2.5ms,相对应舵盘的位置为0-180度,呈线性变化。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。
舵机的原理和控制 如下:
舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;
舵机的追随特性 假设现在舵机稳定在A点,这时候CPU发出一个PWM信号,舵机全速由A点转向B点,在这个过程中需要一段时间,舵机才能运动到B点。
更多追问追答
追问
用定时器产生了PWM波不能直接控制的吗,那个是MG995舵机
追答
1500ms对应中点,500ms对应-90度,2500ms对应90度。
如果控制舵机时候对舵机的转动速度没有要求的话,舵机会以最快的速度来工作。也就是说,在实现90度转动的过程则需要225ms,如果我们在之后好要实现其他角度的转动,那么相对应的控制pwm应该在上一个控制pwm的225ms之后发出。说得更详细点就是:在转动的225ms时间里,需要一直保持“1.5ms的高电平,18.5ms的低电平的脉宽,之后再实现其他的转动。
迪凯特科技(北京)有限公司
2023-07-28 广告
单片机串口通信的原理是利用单片机的串口通信模块,通过把数据转化为一位一位的用时序方式传送数据,实现单片机与外部设备之间的数据通信。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以... 点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
匿名用户
2016-11-25
展开全部
你的(65536-20000)这个能不能得到准确的周期20ms/200的单片机中断时间呢?
你试试下面参数,这个是12M晶振,12T,给出的是100微秒中断时间的参数

TH0 = 0x0FF;
TL0 = 0x9C;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式