[二]单片机控制舵机


我们知道,舵机和步进电机、直流电机等都是感性负载,单片机的驱动电流较小,我们驱动直流电机、步进电机的时候都使用了驱动模块,也就是功率放大器件。那驱动舵机的时候是否需要呢?因为舵机内部集成了驱动电路,可以对我们输入的PWM信号直接采样,所以,控制舵机的时候,用一个单片机的PWM输出引脚即可,这大大精简了电路的设计。

  1. 供电电压与电流
    在这里插入图片描述

5641

2.舵机的速度控制
舵机的驱动是比较容易的,当我们使用单片机控制的时候,通过输出50HZ (20ms的周期)的PWM,控制PWM的脉宽调节舵机的转角。为节约篇幅,冗长的PWM初始化的代码就不贴出来了,大家翻看我们的程序即可。前面的章节有说明:舵机的转角和脉宽(高电平长度)存在- -一对应关系,如果要控制舵机转到某一角度,就改变输出的脉宽即可,比如从1ms到1.5ms,显然,很容易就实现了舵机的位,置控制,但是我们如何进行舵机的速度控制呢?

65415

其中我们使用Velocity1用于代表舵机的速度,这个值根据目标值和舵机的实际位置计算得到,然后通过累积的方法,赋值给相关的寄存器作用到舵机。这样我们就把舵机的速度调节变成了PID参数大小的调节。另外,在接近目标位置的时候还可以实现减速,防止因为惯性的问题造成舵机齿轮减速箱的损坏。
下面我们看一下Position_ PID1 这个函数

在这里插入图片描述
其中
在这里插入图片描述
在这里插入图片描述