凡亿专栏 | 伺服舵机驱动基础
伺服舵机驱动基础

本篇文章我们来讲讲伺服舵机。


1)舵机的用途

伺服舵机一般也简称为舵机,是一种可以精确控制位置的电机系统,它可以通过控制指令输出指定的旋转角度。

与普通直流电机的区别主要在:直流电机是一圈圈转动的,舵机只能在一定角度内转动,到达指定的位置后就停止;舵机一般有最大旋转角度,不能360°旋转。普通直流电机一般是整圈转动适合做动力用,舵机是控制某物体转动一定角度用,适合用于控制转向、姿态、或者用作运动关节。

一般常见的舵机如下图所示:

acae3a2aed1d556c44efd13c17c7e8.jpg
2)舵机的参数

扭力,由于舵机的动力来自于电机和减速齿轮组,它的输出扭力比较大,常见的玩具级别的9g舵机也能提供1.5kg/cm~1.8kg/cm的扭力,见下图:

8eae9d0ac782b31114cf7ac84fa683.jpg


舵机的另一个重要的参数是速度,就是上图中的Operating Speed参数,主要表征了舵机最快能转动的角速率,如上图中,在6V电压无负载的情况下,这款舵机0.1s时间能转过60°角。


3)舵机的工作原理

舵机的内部是由直流电机、减速齿轮组、传感器和控制电路组成,是一个闭环的控制系统,它的原理框图如下:

16faf51541af82eb66c665b5a62ea5.jpg

舵机的轴上连接有一个电位器作为位置检测传感器,舵轴转动时,电位器输出的电压会变化(也就是可以通过电压得知舵轴的角度)。外部输入控制信号时,控制电路会比较控制信号与舵轴位置是否有偏差,如果不同,则会控制马达驱动舵轴转到预定的位置,直到控制信号与舵轴位置相同。这个控制系统一般也是由PID实现的。


我们在使用舵机时,可以不用考虑它内部是如何工作的,只需要按规则给出合适的控制信号即可。

舵机对外的接口一般是三根线:

611ed731789af0892339e39aa62c67.jpg

正极、负极用于供电;信号线用于接收控制信号,这个控制信号一般是PWM波,利用PWM波的占空比来控制舵机的输出角度。

具体控制规则是:PWM波的周期为20ms,脉冲高电平一般为0.5ms~2.5ms。0.5ms时舵机输出最大负角度,2.5ms时舵机输出最大正角度,中间的脉宽和角度线性对应,如下图所示:

061a8408caab94ab5c8e202fdd9459.jpg


了解了上述的驱动规则,就不难理解为什么很多成品的航模遥控装置,其接收机的各通道输出,既可以接到电调上,也可以接到舵机上,因为电调和舵机都可以通过PWM波控制的。


4)舵机驱动编程实践

现在我们就编写一个程序来实现舵机的驱动,还是使用stm32f103C8t6最小系统板作为硬件。

舵机的负极连GND,正极连5V,信号线连到单片机的PB1引脚上。


在cubemx中建立工程,如下设置,使用定时器3的ch4输出pwm:

4adaa1f7fa2a13c169e2d31ac3fd02.jpg


PWM波的参数,配置为20ms周期,初值脉冲宽度为0.5ms,生成keil工程。

然后再keil工程中添加代码:

Tim.c文件中添加修改PWM脉宽的函数,调用这个函数可以方便地修改定时器3的ch4输出的pwm的脉宽:

ddf107e2d7f2420063295134895fbe.jpg


Main.c文件中,主函数初始化时添加启动PWM输出的函数,并且在主循环中每隔1s钟修改一次PWM的宽度,以观察是否能驱动舵机运动:

63234aba5d07951638d00cf0e9060b.jpg


编译上述代码下载到开发板运行,可以看到舵机每隔1s会运动到一个新位置,运动到最大角度后,下一次会回到初始位置。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论