基于 Arduino Nano 与 Tower Pro MG996R 舵机的精准 PC 控制机械臂
所需组件与物料
| 组件 | 数量 |
|---|---|
| Arduino Nano R3 | 1 |
| Tower Pro MG996R 舵机 | 4 |
所需应用与在线服务
- Microsoft Visual Studio 2015(C# Windows 应用)
- Arduino IDE
项目简介
我一直钦佩现代制造技术中机械臂在搬运、装配、焊接、仓储等领域的关键作用。本项目基于 fortzeroas 2016 年设计的简易机械臂,改用 C# 开发自动化控制应用,替代手动控制,实现类工业自动化的运动监控、任务录制与回放。
步骤 1:材料准备

主体材料为 MDF 木板:结构件 2mm,底座 4mm。蓝图文件见最后步骤下载,打印后粘贴在木板上按轮廓切割钻孔。我使用旋转工具切割钻孔,底座无蓝图可自行发挥。
步骤 2:喷漆与造型

利用蓝图在 Photoshop 设计贴纸与几何图案,白胶粘贴上色,提升外观质感。
步骤 3:框架组装

舵机用螺丝固定,左右侧板用木棒加强力胶连接(减轻重量)。组装过程按计划顺利,仅微调细节。
步骤 4:夹爪(捏合机构)

用钳子弯折两根金属杆,在 3mm 木块上钻孔并强力胶固定,形成夹爪机构。
步骤 5:底座制作

底座用 4mm MDF 切割约 17×10cm,钻孔安装 9g 底座舵机。为减少摩擦,使用强力纸筒(高 2.5cm、直径 10cm)做垫圈,同轴安装舵机输出轴。
步骤 6:电子电路


多舵机驱动必须外接电源。本项目使用三个 9g 微型舵机 + 一个大舵机。先在 Tinkercad 仿真验证电路,后用 4 节 AA 电池(6V)供电,制作简单的 Arduino Nano 扩展底板。
步骤 7:Arduino 代码
- 安装最新 Arduino IDE(官网下载)
- 连接 Arduino Nano 至 USB
- 工具 → 板卡 → 选择 Arduino Nano
- 复制代码到编辑器,点击验证(✔)再上传(➤)
步骤 8:自动化控制应用(C# Windows Forms)

这是我最喜欢的部分:用 PC 自动化控制 Arduino。初期用 Processing 3 模拟舵机键盘微调至目标位置,记录四轴角度(底座、大臂、小臂、夹爪)建立角度限位数组,后移植到 C# 应用作为界面滑块范围与回放依据。
功能模块:
1. 运动控制(手动/键盘)
- 夹爪:点击开/合按钮
- 底座:拖动滑块或 ←/→ 键左右旋转
- 大臂:拖动滑块或 ↑/↓ 键上下摆动
- 小臂:拖动滑块或 W/S 键上下摆动
2. 运动录制
点击“Rec. Position”或按 R 键记录当前四轴角度至列表。点击“Start Auto mood”按序列发送指令自动执行。
3. 运动监控
图形化绘制每步角度变化曲线,右侧数据表显示精确角度与时间戳,便于发现异常。可像工业自动化一样编排任务序列下发执行。
步骤 9:后续更新(2018 年 8 月)

改用 3mm MDF 激光切割,新增自制摇杆控制器,体验更佳。
代码
Task.ino(任务函数:定点抓取/放置/回放)
int delayT = 350;
void Home() { // 归位
MyServo0.write(valGripper); delay(15);
MyServo.write(valBase); delay(30);
MyServo2.write(valShoulder); delay(30);
MyServo3.write(valElbow); delay(delayT);
}
void Pick() { // 固定抓取点
MyServo.write(4); delay(delayT);
MyServo3.write(125); MyServo2.write(95); delay(delayT);
MyServo0.write(50); delay(delayT); MyServo0.write(2); delay(delayT);
MyServo2.write(60); MyServo3.write(80); delay(delayT);
Serial.println("Object Picked");
}
void Drop() { // 固定放置点
MyServo.write(145); delay(delayT);
MyServo2.write(80); delay(15); MyServo3.write(115); delay(delayT);
MyServo0.write(40); delay(delayT); MyServo3.write(90); delay(delayT);
Serial.println("Object Dropped");
}
void Playback() { // 解析串口指令串 "1:90&2:80&3:180"
char* command = strtok(ByteReceived, "&");
while (command != 0) {
char* separator = strchr(command, ':');
if (separator != 0) {
*separator = 0;
int servoId = atoi(command);
int angle = atoi(++separator);
if (servoId == 1) { MyServo.write(angle); delay(delayT); }
else if (servoId == 2) { MyServo2.write(angle); delay(delayT); }
else if (servoId == 3) { MyServo3.write(angle); delay(delayT); }
}
command = strtok(0, "&");
}
}
RobotArm.ino(主循环:串口指令解析与舵机驱动)
#include
Servo MyServo, MyServo2, MyServo3, MyServo0;
char ByteReceived;
int valGripper = 30, valBase = 70, valShoulder = 25, valElbow = 150;
void setup() {
Serial.begin(9600);
pinMode(A5, OUTPUT);
MyServo0.attach(12); MyServo.attach(11); MyServo2.attach(13); MyServo3.attach(10);
Home(); delay(300);
}
void loop() {
// 串口打印当前角度
while (Serial.available() > 0) {
ByteReceived = Serial.read();
switch (ByteReceived) {
case 'n': digitalWrite(A5, HIGH); break; // LED 开
case 'f': digitalWrite(A5, LOW); break; // LED 关
case 'l': MyServo.write(MyServo.read()+2); break; // 底座左
case 'r': MyServo.write(MyServo.read()-2); break; // 底座右
case 'u': MyServo2.write(MyServo2.read()+2); break; // 小臂上
case 'd': MyServo2.write(MyServo2.read()-2); break; // 小臂下
case 'w': MyServo3.write(MyServo3.read()+2); break; // 大臂下
case 's': MyServo3.write(MyServo3.read()-2); break; // 大臂上
case 'o': MyServo0.write(30); break; // 夹爪开
case 'c': MyServo0.write(1); break; // 夹爪合
case 'q': Pick(); Drop(); Home(); break; // 快速演示
case 'h': Home(); break; // 强制归位
default: Pick(); Playback(); Home(); break; // 自动回放
}
}
}
3D 模型文件
f98t2axin238k2n_khGWAEIqdl.skp (SketchUp 格式)
原理图

制造工艺
- 基于 Arduino MKR1000 与 ThingSpeak 的远程 IoT 机械臂控制系统
- 打造功能完整的 Arduino 驱动 3D 打印机械臂:分步指南
- Arduino Mega 驱动 Wii Nunchuk 控制 6 自由度机械臂
- 以太网远程控制机械臂 — 基于 Arduino 101 与 WIZ750SR
- DIY 智能 Arduino 机械臂:主从控制与动作记忆教程
- 工业机械臂:驱动制造业革命的核心力量
- SCARA 机器人市场 2026 年将达 147.8 亿美元,自动化增长引擎强劲
- 机械臂如何制造:设计原理与核心部件全解析
- 工业机械臂重塑制造业:核心优势、类型与头部厂商深度解析
- 工业机械臂:驱动产能跃升与劳动力价值重构的核心引擎
- 液压机械臂在制造业的应用:原理、优势与选型专家指南
- Makerarm:面向创客的一体化桌面机械臂