一、舵机的“自白”
我(舵机)是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。
那么问题来了?我们用舵机来干嘛呢,当然是控制方向了,如今,基本上飞机或者智能车又或是机器人等等都会用到舵机这个东西,所以说,认识舵机,并且运用舵机就成为我们必不可少的知识学习了,下面附图:
图 舵机
舵机一般有三条线,一条接电源(5V即可),一条接地,最后一条接控制(即单片机输出的PWM控制),下面会给上具体实现代码,总的来说跟上一讲区别不大,主要就是PWM周期输出控制,利用 TIM_SetComparex() 函数来设置占空比实现,但是多出的是计算问题,因为舵机有对应角度的时间计算,下面具体讲解:
舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度为例,的其控制关系是这样的:
- 0.5ms--------------0度;
- 1.0ms------------45度;
- 1.5ms------------90度;
- 2.0ms-----------135度;
- 2.5ms-----------180度;
基本上,我们学生党所需要的舵机的控制角度对应就是上述关系了,至于360度舵机这里简单提一下,主要是我这个舵机做不到(哈哈哈,这舵机180°的)
这里讲一下360°舵机的
- 0.5ms--------------0度;正向持续转(最大速度)
- 1.5ms------------90度;停止转动,速度无
- 2.5ms-----------180度;逆向持续转(最大速度)
调整PWM周期即可改变转动速度和方向。
二、舵机如何控制?
舵机的信号线是做为输入线就是接收PWM信号(定时器产生)。
一般PWM的周期是20ms,那么对应的频率是50hz。那么改变不同的占空比就可以控制转动的角度。其中占空比从0.5-2.5ms(如果占空比大于2.5ms也只会在最大角度。),相对应的舵盘位置为0-180度,呈线性变化。
给它提供一定的脉宽,它的输出轴就会保持一定对应角度上,无论外界转矩怎么改变(只要目标不变就维持在这个角度类似PID自动控制算法),直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应位置上如所求。
舵机内部有一个基准电路,产生周期为20ms,宽度1.5ms的基准信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而生产电机的转动信号。由此可见,舵机是一种位置伺服驱动器,转动范围不能超过180度,适用于那些需要不断变化并可以保持的驱动器中,比如说机器人的关节、飞机的舵面等。
注:建议先写一个0度的程序,方便确定舵机转动的方向和角度
二、常见的舵机
SG90s
参考文章:
1. <STM32f1之舵机驱动+转动角度调整(含主代码和计算)>:https://blog.csdn.net/weixin_45930808/article/details/119117499
2. <舵机的控制>:https://blog.csdn.net/qq_44125275/article/details/128521102
标签:舵机,180,学习,角度,ms,PWM,2.5 From: https://www.cnblogs.com/FBsharl/p/18223325