舵机简介
常见的舵机有很多种分类,我以一种不成文的分类方式有,180°舵机,360°舵机,总线舵机。这些舵机在真正使用的时候也是存在区别的。180度舵机能控制角度,360度舵机只能控制速度和方向,总线舵机为可以进行逐级串联的(当前舵机输出端为下一舵机输入端),所以串级连接中,当前舵机的供电来源于串级系统中上一个的舵机的输出端。有的数字舵机只带了通信功能在价格上也比较昂贵,达到单个数千元。二淘宝上普通的舵机价格一般在几元,十几元不等(如下图)。
图1 常见舵机
(1)180度舵机控制方式
180度是在普通场合时最常用的,一半包含三根线(VCC --> 电源正,GND --> 电源负,SINGAL --> PWM输出引脚),控制原理如下。简单地说,舵机的控制需要通过周期为20ms的PWM波来实现。对于180度舵机的20ms周期的PWM波,在0.5ms时对应左极限位置,2.5ms时对应右极限位置。1.5ms对应中间位置。
图2 不同角度PWM波下的舵机角度
(2)360度舵机控制方式
360度舵机控制方式与180度舵机不同在于,360舵机只能控制方向和速度,如上图,把角度理解成方向,如20msPWM方波中0.5ms时刻为左转(反转)最大速度,1.5ms为停止转动,2.5ms时刻为右转(正转)最大速度。
(3)总线舵机
总线舵机通常支持通信控制,如485,232等。某些昂贵的舵机自带位置反馈,但并不回给控制带来难度。所以,简单说这种舵机的内部实现逻辑我们并不需要知道,直接通过通信来完成就行了。
通过Arduino实现舵机控制
(1) Arduino Nano控制两路180舵机 - 使用Servo库
图3 控制180度舵机
(2) Arduino Nano控制两路360舵机 - 使用Servo库
图4 控制180度舵机
另,
Arduino Servo库还提供了一个比例放大的函数。servo.writeMicroseconds(PWM),这个函数中,PWM对应的范围是(1000,2000)。