舵机(Servo motor)英文常简称 Servo,中文也有人称伺服机,由控制电路、齿轮、直流马达等组成,可使用〈mBlock & Arduino(4)利用 PWM 模拟类比讯号〉中谈过的 PWM 技术来控制舵机转动角度,像Plotclock就应用了三个舵机,以手臂在白板上绘制出目前的时间。舵机控制原理
舵机的基本原理是接受 PWM 讯号,经由内部电路计算出转动角度,根据我查到的资料来看,大多数舵机旋转角度是 0 到 180 度,PWM 讯号的频率必须是 50 Hz,控制舵机角度的脉冲持续时间约是 1.0 ms 到 2.0 ms,脉冲持续时间若为 1.0 ms 时角度为 0 度,1.2 ms 时角度为 45 度,1.5 ms 时角度为 90 度,2.0 ms 时角度为 180 度。
Plotclock 用的是Tower Pro 9g servos(SG90 digital servo),为三线式舵机,红线接电源,棕色的线接 GND,橘色线为信号线:
在 Fritzing 中,是以红色线接电源,黑色线接地,黄色为信号线作代表,你可以如下连接线路:
如果直接使用 Arduino 官方语言,可以使用delayMicroseconds函式来控制脉冲宽度,不过 mBlock 中只有“等待”方块,没办法达到这么短的时间控制,然而,mBlock 中有个“设置舵机脚位…”的方块,可以直接指定舵机转动角度,例如,以下的程式,可以一秒为间隔,不断转动舵机为 0、45、90、135 与 180