求解 单片机控制下的舵机只能向一个方向旋转

用单片机控制SG90舵机 无论在20ms内用0.5ms或者是2.5ms的高电平 舵机只能向一个方向旋转90° 但手动可以调整其旋转角度范围在0-180° 何解?程序如下:#include<reg51.h>
#define uchar unsigned char#define uint unsigned int
sbit MM=P1^2;
void D1us(uint y)
{ while(y--);}
void main()
{ while(1)
{MM=1;D1us(2500);
MM=0;D1us(17500);}
}

舵机的位置要看你的占空比是多少,你这里没有说清楚你是否由给边占空比后转动了九十度,那么你应该是弄出来了才是,吧占空比调回他会回到“复位时”的位置才是。
如果是你手动拨到“0”,然后单片机开启舵机转动九十度要回转那你就调整占空比就好了。
(我这有个初学的程序,可以给你参考,需要的话)追问

麻烦你把程序发到邮箱:[email protected] 谢谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-13
1. 实际用示波器看看给出来的波形是不是50Hz的方波,占空比是不是12.5%,这和你的延时程序、晶振频率有关,还有就是波形的完整性如何,高、低电平是否失真,例如高电平电压不到4V,有这种情况的话就要使用合适的上拉电阻,必要的话可以加一个三极管驱动。
2. 最好还是用定时器中断实现波形的输出,现在这种方式测试一下还行,软件复杂些的话会非常麻烦,其他软件根本没办法实现,要么会打断计时,要么效率低下追问

用定时器中断实现PWM调制输出 但还是会出现如上问题 为什么呢

追答

拿示波器看看波形吧,如果波形正常(周期、占空比、幅值)的话,找到舵机的说明手册,确认一下舵机特性、接线是否正确,还不行的话,就换一个试试吧

本回答被提问者采纳
第2个回答  2012-04-19
示波器看脉冲