用Arduino和舵机自己动手组装一台桌面机械臂,是学习机器人控制的最佳实践项目。本文从结构设计到完整控制代码一步步讲解。
一、机械结构设计
桌面机械臂推荐4自由度(4DOF)设计:基座旋转、肩关节、肘关节、腕关节。
材料选择:
方案一:3D打印PLA结构件 + MG995舵机 × 4
方案二:铝合金U型支架(淘宝"机器人手臂支架")+ MG996R舵机 × 4
方案三:亚克力激光切割套件(最便宜,约80元)
关键尺寸参考:基座到底臂80mm,底臂到前臂120mm,前臂到腕部100mm。
二、舵机选择
MG90S(微型,1.5kg扭力):适合轻量级(总重200g以下),供电5V 1A
MG995(标准,10kg扭力):适合大多数桌面臂,供电5V 3A
MG996R(增强,13kg扭力):适合较重负载,供电5V 5A
基座和肩关节用大扭力舵机,肘部和腕部可以用稍小的。
三、电路连接
Arduino提供PWM信号(数字引脚9、10、11、6分别控制4个舵机)。
舵机红线(VCC)统一接5V 5A外置电源正极。
舵机棕线(GND)统一接外置电源负极和Arduino GND(共地)。
舵机橙线(信号)分别接Arduino各PWM引脚。
注意:绝对不要通过Arduino的5V引脚给舵机供电!Arduino的板载稳压只能提供500mA。
四、Arduino控制代码
#include <Servo.h>
Servo base; // 基座旋转 0-180度
Servo shoulder; // 肩关节 0-180度
Servo elbow; // 肘关节 0-180度
Servo wrist; // 腕关节 0-180度
// 预设位置
int pos_base = 90;
int pos_shoulder = 90;
int pos_elbow = 90;
int pos_wrist = 90;
void setup() {
base.attach(9);
shoulder.attach(10);
elbow.attach(11);
wrist.attach(6);
// 初始化到中间位置
base.write(pos_base);
shoulder.write(pos_shoulder);
elbow.write(pos_elbow);
wrist.write(pos_wrist);
Serial.begin(9600);
Serial.println("机器人手臂就绪,输入指令:");
Serial.println("格式: B90 S90 E90 W90 (B=基座 S=肩 E=肘 W=腕)");
}
void loop() {
if (Serial.available()) {
char cmd = Serial.read();
switch(cmd) {
case 'B': pos_base = Serial.parseInt(); base.write(pos_base); break;
case 'S': pos_shoulder = Serial.parseInt(); shoulder.write(pos_shoulder); break;
case 'E': pos_elbow = Serial.parseInt(); elbow.write(pos_elbow); break;
case 'W': pos_wrist = Serial.parseInt(); wrist.write(pos_wrist); break;
}
}
}
五、动作序列录制与回放
// 在全局定义
int actions[50][4]; // 存储50个动作
int actionCount = 0;
// 录制动作
void recordAction() {
actions[actionCount][0] = base.read();
actions[actionCount][1] = shoulder.read();
actions[actionCount][2] = elbow.read();
actions[actionCount][3] = wrist.read();
actionCount++;
Serial.println("动作已录制");
}
// 回放所有动作
void playbackAll() {
for (int i = 0; i < actionCount; i++) {
base.write(actions[i][0]);
shoulder.write(actions[i][1]);
elbow.write(actions[i][2]);
wrist.write(actions[i][3]);
delay(1000); // 每个动作持续1秒
}
}
六、常见问题
Q:舵机发出嗡嗡声但不转? A:舵机被卡住或过载。先手动检查关节是否顺滑,供电是否充足。
Q:手臂抖动严重? A:结构件螺丝松动或舵机齿轮打滑。检查所有螺丝并紧固。

微信联系
淘宝联系