多路舵机控制PWM发生器的设计与Proteus仿真
现以四路舵机控制为例来定义五个变量count,servo1,servo2,servo3,servo4。变量count用于对中断计数,servo1~4用于存储四个PWM信号的脉宽值,程序中使用0.05 ms的定时器周期,定时器每0.05 ms产生一次中断,同时变量count加1,当count加到400时,表示20 ms时间到,count归零重新计数,在每一次重新计数开始时,单片机的所有舵机控制I/O口置高,当count加到等于servo1时,控制舵机1的I/O口置低,这样就会产生一个周期为20 ms,脉冲宽度等于servo1×0.05 ms的PWM脉冲,其他三路与之类似。servo1~4的值可通过按键输入改变,因定时器周期为0.05 ms,故PWM可控脉宽步进值为0.05 ms,对应被控舵机的输出角度步进4.5°。如果需要更小的步进值,只需改变定时器周期和几个变量的值即可,如果需要更多路的PWM波输出,也仅需相应增加几个变量即可;如果需要更多按键来控制舵机输出转角,最好将按键接称阵列式,这样比较节省I/O口。经计算,当需要0.05 ms的计数周期时,应将THX和TLX都写入0xCE。设4个舵机的信号端口分别为IO1~IO4,其中断程序流程图如图3所示。
系统中的主程序包含定时器的设置与使能、按键检测、变量赋值等,在此不再赘述。
4 系统仿真
在Proteus中绘制好电路,同时设置好相关参数,然后运行程序,即可直观地看到程序执行结果,通过按键还可改变舵机的输出角度。舵机输出角度执行结果如图4所示。本文引用地址:https://www.eepw.com.cn/article/172636.htm
通过系统中连接的示波器可以显示多路PWM波输出结果。其PWM波形如图5所示,图中的方格横向每格代表0.2 ms,纵向每格代表5 V。从示波器仿真结果来看,输出的四路PWM波与四个舵机输出转角相对应,其波形都非常好。
5 结语
本文通过在Proteus中对电路的设计和Keil中对软件的编写,用51单片机实现了多路PWM脉冲的输出,该系统具有硬件电路简单、软件可靠、资源节省等特点。可用于航模、机器人等设计制作过程中的舵机控制和辅助系统调试,也可以用于其他需要多路PWM脉冲的系统。
pwm相关文章:pwm原理
评论