什么是舵机
舵机是一种小型伺服电机系统。通过向伺服发送编码信号,可以将该轴定位到特定的角度位置。当编码信号存在于输入线上时,伺服将保持轴的角位置;当编码信号改变时,轴的角位置改变。控制信号一般为T=20ms的PWM信号。
比例控制:施加到电机上的功率与其需要行进的距离成比例,即偏差角越大,电机转速越快。
闭环控制:控制电路监视伺服电机的当前角度,如果角度正确,则电机关闭;否则转动电机直到处于所需的角度。
接线:红色接电源,黑色/棕色接地,橙色/黄色/白色为控制线。
MG995参数
产品尺寸 40.719.742.9mm
工作扭矩 13KG/cm
反应转速 53-62R/M
死区设定 4微秒
转动角度 最大180度
舵机类型 模拟舵机
工作电流 100mA
使用电压 3~7.2V
Tip:鉴于过去的使用经验,MG995的扭矩其实并不是很大,整机装成后,狗儿的运动可能会稍显吃力。此外,此前多个舵机连接至控制板后,曾出现过”抽搐“的情况,目前暂时没有出现,日后若遇到再说。
机械腿的伸直与弯曲
我们通过设置初始值使其呈伸直状态。要使其呈直角前曲,只需使连接大腿的舵机向前转45°,连接小腿的舵机向后转90°即可(旋转对轴不对地!)。
此处的前曲没有考虑大小腿长度不同。若要保持支撑点落在大腿与躯干连接点的投影上,应适当增加连接大腿的舵机的转动度数,而连接小腿的舵机依旧后转90°。
代码实现
该代码实现让机械腿呈直角弯曲。相关语法可查看Arduino伺服电机教程。
#include <Servo.h>
Servo leg;//create a servo object
Servo foot;
int leg_straight=95,foot_straight=90;
void setup() {
leg.attach(9);//attach the servo on specific pin to the servo object
foot.attach(10);
}
void loop() {
//leg.write(leg_straight);//set the servo position
//foot.write(foot_straight);
leg.write(leg_straight+45);
foot.write(foot_bent-90);
}