在前面的几节的学习笔记中,我们学习了几种传感器及用法,这一节学习笔记带领大家学习舵机及使用Arduino对舵机进行控制。
舵机(英文叫Servo):它由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统。通过发送信号,指定输出轴旋转角度。舵机一般而言都有最大旋转角度(比如180度。)与普通直流电机的区别主要在,直流电机是一圈圈转动的,舵机只能在一定角度内转动,不能一圈圈转(数字舵机可以在舵机模式和电机模式中切换,没有这个问题)。普通直流电机无法反馈转动的角度信息,而舵机可以。用途也不同,普通直流电机一般是整圈转动做动力用,舵机是控制某物体转动一定角度用(比如机器人的关节)。【文献1】如图1所示为9g舵机。一般的舵机接线为三线,VCC、GND和信号线。
如图2所示,舵机主要有以下几部分组成:齿轮组、直流电机、电位器、电机控制板、壳体。其中,齿轮组通过降低速度以提高扭矩;直流电机提供舵机的动力;电机控制板负责接收电位器的信号,通过算法驱动电机;电位器为位置编码器的作用,作为电机驱动之后的反馈信号。【文献1】
舵机的控制信号是脉冲位置调制(PPM)信号,是一种宽度可调的周期性方波脉冲信号,周期一般为20ms,当方波的脉冲宽度改变时,舵机转轴的角度发生变化,角度变化与脉冲宽度的变化成正比。一般舵机的输出轴转角与输入信号的脉冲宽度之间的关系可用图3表示。【文献2】
首先,我们需要proteus仿真里面添加舵机,在元器件搜索栏中输入“servo”,并添加至元器件选择栏中,如图4所示。并将其中间的管脚接至数字口9脚,也就是ATmega328P的15管脚,同时上管脚接至+5V,下管脚接至地端,修改后的Proteus仿真图如图5所示。
Arduino代码清单:
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int pos = 0; // variable to store the servo position
void setup()
{
}
void loop()
{
}
调试与演示