首先发个接线图
发个实际的连接图,注意一点。引脚可以输出PWM的波形就可以
代码语言:javascript复制 */
#include <Arduino.h>
#include <Servo.h>
Servo servo;
void setup()
{
servo.attach(6); //PWM引脚设置,与GPIO引脚号对应.
}
void loop()
{
// To 0°
servo.write(0);
delay(1000);
// To 90°
servo.write(90);
delay(1000);
// To 180°
servo.write(180);
delay(1000);
}
这个类解释了你,建立一个舵机对象以后。到底生成了什么
一定要选择PWM的引脚,可以多个配置
只要用write方法就可以驱动舵机转起来~详细的分析放到明天的文章
这边有一张图就囊括了一切
其工作流程为:控制信号→控制电路板→电机转动→齿轮组减速→舵盘转动→位置反馈电位计→控制电路板反馈。
工作流程
舵机的伺服系统由可变宽度的脉冲来进行控制,控制线是用来传送脉冲的。脉冲的参数有最小值,最大值,和频率。一般而言,舵机的基准信号都是周期为20ms,宽度为1.5ms。这个基准信号定义的位置为中间位置。舵机有最大转动角度,中间位置的定义就是从这个位置到最大角度与最小角度的量完全一样。最重要的一点是,不同舵机的最大转动角度可能不相同,但是其中间位置的脉冲宽度是一定的,那就是1.5ms。如下图:
角度是由来自控制线的持续的脉冲所产生。这种控制方法叫做脉冲调制。脉冲的长短决定舵机转动多大角度。例如:1.5毫秒脉冲会到转动到中间位置(对于180°舵机来说,就是90°位置)。当控制系统发出指令,让舵机移动到某一位置,并让他保持这个角度,这时外力的影响不会让他角度产生变化,但是这个是由上限的,上限就是他的最大扭力。除非控制系统不停的发出脉冲稳定舵机的角度,舵机的角度不会一直不变。 当舵机接收到一个小于1.5ms的脉冲,输出轴会以中间位置为标准,逆时针旋转一定角度。接收到的脉冲大于1.5ms情况相反。不同品牌,甚至同一品牌的不同舵机,都会有不同的最大值和最小值。一般而言,最小脉冲为1ms,最大脉冲为2ms。如下图:
舵机的控制及追随性
舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;
舵机的追随特性
假设现在舵机稳定在A点,这时候CPU发出一个PWM信号,舵机全速由A点转向B点,在这个过程中需要一段时间,舵机才能运动到B点。
保持时间为Tw
当Tw≥△T时,舵机能够到达目标,并有剩余时间;
当Tw≤△T时,舵机不能到达目标;
理论上:当Tw=△T时,系统最连贯,而且舵机运动的最快。
实际过程中w不尽相同,连贯运动时的极限△T比较难以计算出来。
假如我们的舵机1DIV=8us,当PWM信号以最小变化量即(1DIV=8us)依次变化时,舵机的分辨率最高,但是速度会减慢。
舵机的输出功率与它所需要转动的距离成正比。如果输出轴需要转动很长的距离,马达就会全速运转,如果它只需要短距离转动,马达就会以较慢的速度运行,这叫做速度比例控制。
这个图解释了为什么舵机可以输出一个大的力矩