在机器人和各种自动化装置中,舵机起着非常重要的作用,我把关于舵机的资料整理出来,方便以后的使用。
( 像这种是比较常见的舵机)
舵机与一般的直流减速电机不同,除去电机和减速机构还有一套控制电路,是一种典型的机电一体化产品,通过控制电路的精确控制,舵机可以锁定在某个角度或者以某个速度连续旋转。也正是因为这种特性,舵机才被广泛应用到机器人关节,转向机构等工作场景。
分别Vcc(正极),Gnd(负极),Signal (信号线),不同的舵机这三根线的顺序有些不同
如果遇到三根黑线,还是找舵机的说明书吧,可以根据图示颜色连接舵机。我们发现,与直流电机不同的是,舵机多了一根信号线,给这根线提供pwm信号,就可以实现对舵机的控制,如果有同学不明白可以查找什么是pwm信号。
控制信号进入舵机信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生整个周期长度为20ms,
宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出
到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0时,电
止转动
STM32或51系列主要是产生pwm信号
arduino有舵机的库函数,非常方便
有以下成员函数
attach()//连接舵机
write()//角度控制
writeMicroseconds()//
read()//读上一次舵机转动角度
attached()//
detach()//断开舵机连接
#include <servo h="">
Servo myservo;
void setup() {
myservo.attach(9);
}
void loop() {
myservo.write(50);
delay(15);
}
</servo>
舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系:
0.5ms--------------0度;50
1.0ms------------45度;100
1.5ms------------90度;150
2.0ms-----------135度;200
2.5ms-----------180度;250
20ms周期的获得
stm32系列单片机主频为72MHZ时,分频系数设置为 720,那么得到100khz,时间10us = 0.01ms,时间自己计算即可。
舵机的电压一般4.8-6,电流2a
一些舵机使用要注意的地方
- 舵机延时,否则抖动
- 舵机的电流必须满足要求。
- 舵机信号一般要大于3.3v,和信号源共地,否则一般加上拉电阻,否则会出现一些奇怪的问题。
- sg90舵机扭矩比较小,要分析下能否满足要求。
- 舵机设置到死区位置很可能会卡死,要尽量留出一定的区间。