DIY 双轴 FPV 摄像头云台:Arduino + 摇杆模块控制教程
硬件清单
| 元器件 | 数量 | 备注 |
|---|---|---|
| Arduino UNO R3 | 1 | 主控 |
| SG90 微型舵机 | 2 | 分别驱动俯仰/偏航 |
| 双轴 FPV 云台套件 | 1 | 含亚克力支架、螺丝、两个舵机(已含) |
| 摇杆模块 | 1 | 两轴电位器 + 按键,模拟量输出 |
| 杜邦线若干 | 1包 |
项目背景
云台套件包含亚克力结构件、两颗 SG90 舵机(已预装)。本教程提供两种控制模式代码,分别对应“跟随模式”与“速率模式”,适合 FPV 穿越机、固定翼相机稳定或地面机器人视觉跟踪。
接线说明

- 舵机 1(底部偏航)信号线 → D8
- 舵机 2(顶部俯仰)信号线 → D9
- 摇杆 X 轴 → A0,Y 轴 → A1
- 舵机 VCC/GND 接外部 5V 电源(建议独立供电,避免 Arduino 稳压器过热)
注意: 图中上下舵机位置请勿搞反;摇杆 X/Y 定义可在代码中对调。
控制模式对比
| 模式 | 行为 | 适用场景 |
|---|---|---|
| 代码 1:位置跟随 | 摇杆偏转多少,舵机即转到对应角度;回中则舵机回中 | FPV 实时跟随、云台云台稳像 |
| 代码 2:速率/积分 | 摇杆偏向某方向,舵机持续向该方向转动至限位;回中则保持当前角度 | 巡逻扫描、定点锁定、无回中弹簧的摇杆 |
代码 1:位置跟随模式
#include <Servo.h>
Servo yawServo, pitchServo;
const int X_AXIS = A0, Y_AXIS = A1;
void setup() {
Serial.begin(9600);
pinMode(X_AXIS, INPUT); pinMode(Y_AXIS, INPUT);
yawServo.attach(8); // 底部舵机
pitchServo.attach(9); // 顶部舵机
}
void loop() {
int x = analogRead(X_AXIS); // 0-1023
int y = analogRead(Y_AXIS);
// 映射到舵机范围,根据实测微调系数
x = map(x, 0, 1023, 0, 180);
y = map(y, 0, 1023, 0, 150); // 俯仰限幅 150°
x = 180 - x; // 方向修正
yawServo.write(x);
pitchServo.write(y);
delay(20); // 约 50Hz 刷新
}
代码 2:速率/积分模式
#include <Servo.h>
Servo yawServo, pitchServo;
const int X_AXIS = A0, Y_AXIS = A1;
int yawPos, pitchPos;
void setup() {
Serial.begin(9600);
pinMode(X_AXIS, INPUT); pinMode(Y_AXIS, INPUT);
yawServo.attach(8); pitchServo.attach(9);
yawPos = yawServo.read(); pitchPos = pitchServo.read();
}
void loop() {
int x = analogRead(X_AXIS);
int y = analogRead(Y_AXIS);
// 死区 ±50,避免中位抖动
if (x > 550) { yawPos--; yawServo.write(yawPos); delay(50); }
if (x < 450) { yawPos++; yawServo.write(yawPos); delay(50); }
if (y > 600) { pitchPos++; pitchServo.write(pitchPos); delay(50); }
if (y < 450) { pitchPos--; pitchServo.write(pitchPos); delay(50); }
// 可选:增加限位保护
yawPos = constrain(yawPos, 0, 180);
pitchPos = constrain(pitchPos, 0, 150);
}
调试与校准技巧
- 舵机零位校准:上电前手动拨动舵机至机械中心,再通电
- 摇杆中位校准:串口打印
analogRead值,记录静止时的 X/Y 中心值,代码中做死区判断 - 方向反转:若云台动作与预期相反,修改
map目标范围或交换正负 - 抖动抑制:加装 100μF 电解电容并联舵机电源;软件端增加滑动平均滤波
进阶扩展
- 替换为 MG996R 金属齿舵机,提升扭矩与耐用性
- 加装 MPU6050 实现姿态稳定(自动水平)
- 接入无线图传模块(如 5.8G VTX),实现真正 FPV
- 使用 PWM 驱动板(PCA9685)释放 Arduino 引脚,支持更多舵机
制造工艺
- 集成二维码、RFID与体温验证的门禁控制系统
- 树莓派摄像头安装鸟屋完整指南:NoIR 相机、LED 补光与环境监测
- ESP32-CAM 运动检测安防相机,推送照片到 Discord
- Arduino Mega 驱动紫外线消毒机器人:远程遥控杀菌系统
- 智能存钱罐:Arduino Nano 控制硬币识别器实现余额显示
- 自制 Arduino 电视遥控器:3D 打印外壳、电池供电、支持三大品牌协议
- 舵机驱动避障机器人:基于 Arduino 与 HC-SR04 构建
- Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
- Arduino Nano + 摇杆控制双步进电机:Visuino 图形化教程
- Arduino + MPU6050 姿态控制舵机:SG90 与 MG996R 精准跟随实战
- Millport SmartLathez 1740 CNC车床:精密与动力的结合
- Hurco TM8 斜床身车床:紧凑设计、精密控制、多功能刀具