
给你个思路
0-90度
1、IO输出高电平15ms
2、低电平输出185ms(周期20ms)
3、循环重复100次步骤1 2
90-0度
1、IO输出高电平05ms
2、低电平输出195ms(周期20ms)
3、循环重复100次步骤1 2
这个可以用三个I/o口,用定时器0分时启动三路PWM波,代码的话,每次中断给计数器赋下次中断的时间,void T0_time() interrupt 1 //通过定时器0产生多路PWM,每次中断赋值下一次中断的时间,
{ //两个t[]一组,在20ms周期内分时启动各路PWM高电平,
TH0=(65536-9216t[i])/256; //各路的高电平只需1-2ms
TL0=(65536-9216t[i])/256;
i++;
switch(i)
{
case 1:
k1=1;
break;
case 2:
k1=0;
break;
case 3:
k2=1;
break;
case 4:
k2=0;
break;
case 5:
k3=1;
break;
case 6:
k3=0;
break;
}
舵机控制要求的是一个周期20ms高电平1ms-2ms(也有说是05ms-2ms的 这个可以用信号发生器测出来)的pwm信号 高电平时间与转过的角度是成正比的 比如1ms是0度 2ms是180度 那么15ms就是(15ms-1ms)(180-0)=90度 37度所对应的高电平时间就是37/180(2ms-1ms)+1ms=121ms就行了
舵机是通过占空比,来控制它的旋转角度,控制信号从单片机输出之后,不能直接接舵机,因为功率不够,中间接一个非门就可以了。控制信号的编程应该来说是很简单的,就是总周期是固定的,角度不同,高电平的持续时间就不同,然后,比如,50的高电平,150的低电平,那么这样的周期要多少个呢,这也是一个问题,太少了,旋转时间不够,太多了,连续的角度变化的话就会不流畅。多尝试一下吧,还有,这种例子也很多,我们那个时候调了一星期才调好,单片机的型号,引脚关系大嘛?只要是通用的io口都可以用啊
以上就是关于51单片机控制9g小舵机,转90度后再复位。求程序。全部的内容,包括:51单片机控制9g小舵机,转90度后再复位。求程序。、用51单片机控制3路舵机、51单片机控制舵机,网上都是45度90度之类的,假如,我想控制37度,就是任意度数,怎么办程序怎么弄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)