第7章:舵机原理与选型

学习目标

本章将深入探讨舵机(伺服电机)的工作原理、选型方法和应用技巧。作为机械控制系统的核心执行器,舵机广泛应用于机器人、云台、模型等领域。通过学习本章内容,您将掌握舵机的PWM控制原理、性能参数解读、安装调试技巧,以及在实际项目中的选型策略。我们将从基础的模拟舵机开始,逐步深入到数字舵机的高级特性,最后探讨无刷电机的FOC控制技术。

7.1 舵机工作原理(PWM控制)

7.1.1 舵机的基本构成

舵机是一个闭环控制系统,主要由以下几部分组成:

   舵机内部结构示意图

   +------------------+
   |   控制电路板      |
   |  (Control Board)  |
   +--------+---------+
            |
   +--------v---------+
   |   直流电机        |
   |  (DC Motor)      |
   +--------+---------+
            |
   +--------v---------+
   |   减速齿轮组      |
   |  (Gear Train)    |
   +--------+---------+
            |
   +--------v---------+
   |   位置传感器      |
   | (Potentiometer)  |
   +------------------+

核心组件功能

  • 直流电机:提供原始动力,通常为有刷直流电机,转速3000-6000RPM,功率0.5-5W
  • 减速齿轮组:降低转速,增大扭矩,齿轮比通常为100:1到300:1
  • 位置传感器:检测输出轴角度,传统舵机使用电位器,高端舵机使用磁编码器
  • 控制电路:接收PWM信号,比较目标位置与实际位置,驱动电机

舵机的发展历程: 舵机最初源于航模领域,用于控制飞机的舵面。早期舵机采用模拟电路控制,精度和响应速度有限。随着微控制器技术的发展,数字舵机应运而生,大幅提升了控制性能。现代舵机已经广泛应用于机器人、自动化设备、医疗器械等领域。

舵机外壳材料选择

  • 塑料外壳:成本低,重量轻,适合小型应用,散热性能差
  • 铝合金外壳:散热好,强度高,适合连续工作,成本较高
  • 碳纤维外壳:超轻量,高强度,用于竞赛级应用,价格昂贵

齿轮材料对性能的影响

  • 尼龙齿轮:噪音小,成本低,易磨损,承载能力有限(<10kg·cm)
  • 金属齿轮:耐用性好,承载能力强(>15kg·cm),噪音较大,需要润滑
  • 钛合金齿轮:极高强度,重量轻,用于高端产品,成本极高
  • 碳纤维强化齿轮:强度与重量平衡优秀,适合中高端应用

7.1.2 PWM控制信号

PWM(Pulse Width Modulation,脉宽调制)是舵机的标准控制方式:

   PWM信号时序图

   周期 T = 20ms (50Hz)

   高电平 ┌──┐     ┌──┐     ┌──┐
         │  │     │  │     │  │
   低电平 ┘  └─────┘  └─────┘  └─────

         ├─┤├────────────────┤
          tw      T-tw

   tw = 脉宽时间 (0.5ms ~ 2.5ms)

标准PWM参数

  • 信号周期:20ms(频率50Hz)
  • 脉宽范围:0.5ms ~ 2.5ms
  • 中位脉宽:1.5ms(对应90°位置)
  • 角度映射:$\theta = 90° \times \frac{t_w - 1.5}{1.0}$

控制精度计算: 对于180°舵机,脉宽范围为2ms,理论分辨率为: $$\text{分辨率} = \frac{180°}{2ms \times 1000\mu s/ms} = 0.09°/\mu s$$ 实际应用中,由于控制器PWM分辨率限制(如8位PWM),实际分辨率约为: $$\text{实际分辨率} = \frac{180°}{256} \approx 0.7°$$ PWM信号生成方法

  1. 硬件PWM:使用微控制器的定时器生成 - 优点:精确、不占用CPU资源 - 缺点:引脚数量有限 - 适用:少量舵机控制

  2. 软件PWM:程序循环生成 - 优点:可用任意GPIO引脚 - 缺点:占用CPU资源,精度受中断影响 - 适用:对精度要求不高的应用

  3. 专用PWM芯片:如PCA9685 - 优点:多通道(16路),高精度(12位) - 缺点:需要额外硬件成本 - 适用:多舵机系统

信号完整性考虑: PWM信号在传输过程中可能受到干扰,影响舵机性能:

  • 信号上升/下降时间:理想情况下<1μs,实际中受线缆电容影响
  • 振铃现象:长线缆传输时需要终端电阻匹配(通常100-200Ω)
  • 噪声抑制:使用屏蔽线缆,信号线远离电源线
  • 信号电平:标准TTL电平(0-5V),部分舵机支持3.3V逻辑

非标准PWM协议: 除了标准50Hz PWM外,还有其他控制协议:

  • 125Hz高频PWM:用于数字舵机,提高响应速度
  • 串行总线协议:如Dynamixel使用的半双工UART
  • CAN总线协议:工业级舵机采用,抗干扰能力强
  • 模拟电压控制:早期舵机使用,已基本淘汰

7.1.3 闭环控制原理

舵机内部采用简单的比例控制(P控制):

   闭环控制框图

   目标位置 ──→ [+] ──→ 误差 ──→ [控制器] ──→ 电机
   (PWM)        ↑                              │
                │                              ↓
   实际位置 ←───┴──────── [位置传感器] ←──── 输出轴

控制算法详解

  1. PWM解码:控制电路测量PWM脉宽,通过查表或线性映射转换为目标角度 - 使用计时器捕获上升沿和下降沿 - 脉宽测量精度:±1μs(硬件限制) - 滤波处理:通常采用3-5个周期的移动平均

  2. 位置采样:读取电位器分压,通过ADC转换为数字量 - ADC采样率:1-5kHz(模拟舵机50Hz,数字舵机300Hz) - 电压范围:0-Vcc对应0-270°机械角度(电位器通常270°) - 噪声处理:低通滤波去除高频干扰

  3. 误差计算:$e = \theta_{target} - \theta_{current}$ - 误差范围:-180°到+180° - 最短路径算法:考虑跨越0°/180°边界的情况 - 误差积分:高端舵机可能包含I项用于消除稳态误差

  4. 控制输出:$u = K_p \times e$(其中$K_p$为比例增益) - 典型$K_p$值:0.5-2.0(取决于电机功率和齿轮比) - 输出限幅:防止过驱动损坏电机 - PWM占空比:$duty = |u|/u_{max} \times 100\%$

  5. 电机驱动:H桥电路控制电机正反转 - 正转:误差为正,向增大角度方向转动 - 反转:误差为负,向减小角度方向转动 - 制动:误差在死区内,短路制动或能耗制动

死区设置与优化: 为避免抖动,通常设置死区(deadband):

  • 当$|e| < \epsilon$时($\epsilon$通常为1-2°),电机停止
  • 这会导致定位精度略低于理论值
  • 自适应死区:根据负载和振动情况动态调整
  • 迟滞特性:进入死区和离开死区使用不同阈值,防止临界振荡

电位器反馈机制: 舵机内部的电位器是实现闭环控制的关键元件:

   电位器工作原理

        Vcc (5V)
          │
          █ R1
          │
   输出 ──┤  ← 滑动触点(与输出轴连接)
          │
          █ R2
          │
         GND

   输出电压:Vout = Vcc × (R2/(R1+R2))
   角度映射:θ = (Vout/Vcc) × 180°

电位器的局限性

  • 线性度:±2%,影响全程精度
  • 分辨率:受ADC位数限制,通常8-10位
  • 温度漂移:电阻值随温度变化,影响精度
  • 机械磨损:长期使用后接触电阻增大,产生噪声
  • 寿命限制:典型寿命30-50万次旋转

控制器增益调节: 比例增益$K_p$的选择对舵机性能影响很大:

  • $K_p$过小:响应缓慢,定位时间长,可能无法克服摩擦力
  • $K_p$适中:快速响应,稳定定位,最佳工作状态
  • $K_p$过大:产生超调,振荡,甚至不稳定

典型的增益调节过程:

  1. 从小$K_p$开始,观察响应速度
  2. 逐步增大$K_p$,直到出现轻微超调
  3. 回调至超调刚好消失的值
  4. 该值的80%作为最终增益

改进的控制算法: 虽然大多数舵机使用简单的P控制,高端舵机可能采用更复杂的算法:

  • PD控制:加入微分项,减少超调 $$u = K_p \times e + K_d \times \frac{de}{dt}$$ 实际应用参数:

  • $K_p$:1.0-2.0(位置增益)

  • $K_d$:0.01-0.1(微分增益)
  • 微分项作用:预测误差趋势,提前制动
  • 噪声敏感性:需要对误差信号滤波

  • 带前馈的控制:提高跟踪性能 $$u = K_p \times e + K_f \times \theta_{target}$$ 前馈补偿原理:

  • 根据目标位置直接给出基础控制量

  • 减少反馈环节的负担
  • 改善动态响应,减少跟踪延迟
  • $K_f$通常为0.8-0.95倍的稳态增益

  • 自适应控制:根据负载自动调节增益 $$K_p = K_{p0} \times (1 + \alpha \times |load|)$$ 负载检测方法:

  • 监测电流:高电流表示高负载

  • 速度偏差:实际速度低于期望表示负载增加
  • 自学习:记录不同位置的负载特性
  • $\alpha$范围:0.2-0.5(负载补偿系数)

  • 积分抗饱和PID:消除稳态误差 $$u = K_p \times e + K_i \times \int e \, dt + K_d \times \frac{de}{dt}$$ 抗饱和策略:

  • 积分限幅:$|\int e \, dt| < I_{max}$

  • 条件积分:仅在误差小于阈值时积分
  • 积分分离:大误差时禁用积分项
  • 反算法(Back-calculation):输出饱和时停止积分

7.2 扭矩与速度参数

7.2.1 扭矩规格解读

舵机扭矩是选型的关键参数,通常以kg·cm为单位:

扭矩定义

  • 堵转扭矩(Stall Torque):输出轴完全锁定时的最大扭矩
  • 工作扭矩:建议不超过堵转扭矩的60-70%
  • 连续扭矩:可长时间输出的扭矩,通常为堵转扭矩的30-40%

扭矩与电压关系: $$T = T_{rated} \times \frac{V_{actual}}{V_{rated}}$$ 例如:6V时扭矩为20kg·cm的舵机,在4.8V时扭矩约为: $$T_{4.8V} = 20 \times \frac{4.8}{6} = 16kg\cdot cm$$ 负载计算示例: 机械臂关节负载计算:

      L (力臂长度)
   ├────────────┤
   O─────────────● m (负载质量)
   └─舵机轴

   所需扭矩 T = m × g × L

   例:负载2kg,力臂15cm
   T = 2kg × 10m/s² × 15cm = 300kg·cm²/s² = 30kg·cm

   考虑安全系数1.5:选择 > 45kg·cm 的舵机

扭矩单位换算: 舵机扭矩有多种表示单位,需要正确换算:

  • 1 kg·cm = 0.098 N·m = 13.89 oz·in
  • 1 N·m = 10.2 kg·cm = 141.6 oz·in
  • 1 oz·in = 0.072 kg·cm = 0.0071 N·m

动态扭矩考虑: 静态扭矩计算只考虑重力,实际应用中还需考虑动态因素: $$T_{total} = T_{static} + T_{dynamic}$$ 其中动态扭矩包括:

  • 加速扭矩:$T_{acc} = J \times \alpha$(J为转动惯量,α为角加速度)
  • 摩擦扭矩:$T_{friction} = \mu \times F_n \times r$(μ为摩擦系数)
  • 风载扭矩:$T_{wind} = 0.5 \times \rho \times C_d \times A \times v^2 \times L$

扭矩裕度设计原则

应用场景          安全系数    说明
静态定位          1.2-1.5    负载稳定,无冲击
缓慢运动          1.5-2.0    低速运动,加速度小
快速运动          2.0-3.0    高速运动,频繁加减速
冲击负载          3.0-5.0    存在突发载荷

扭矩不足的表现

  • 无法启动或启动缓慢
  • 定位误差大,无法到达目标位置
  • 舵机发热严重,电流过大
  • 齿轮打滑或损坏
  • 保持力不足,容易被外力推动

扭矩测试方法

  1. 静态测试:使用测力计在不同半径处测量最大拉力
  2. 动态测试:加载标准负载,测量加速时间和最大速度
  3. 堵转测试:锁定输出轴,测量堵转电流和发热情况
  4. 疲劳测试:长时间运行,监测扭矩衰减

7.2.2 速度参数

舵机速度通常以"秒/60°"表示:

速度计算

  • 角速度:$\omega = \frac{60°}{t_{60°}}$(度/秒)
  • 转速:$n = \frac{\omega}{360°} \times 60 = \frac{10}{t_{60°}}$(RPM)

速度与扭矩权衡

  • 高速舵机:齿轮比小,扭矩较小
  • 高扭矩舵机:齿轮比大,速度较慢
  • 通用公式:$T \times \omega \approx \text{常数}$(功率守恒)

动态响应考虑: 加速时间估算: $$t_{acc} = \frac{J \times \omega}{T - T_{load}}$$ 其中:

  • $J$:转动惯量
  • $\omega$:目标角速度
  • $T$:舵机扭矩
  • $T_{load}$:负载扭矩

速度规格的理解: 舵机速度规格通常给出无负载条件下的数据:

典型速度规格示例:
0.12s/60° @ 6V(无负载)
0.10s/60° @ 7.4V(无负载)

实际速度计算:
角速度 = 60°/0.12s = 500°/s
转速 = 500°/360° × 60 = 83.3 RPM

负载对速度的影响: 实际速度与负载呈非线性关系: $$v_{loaded} = v_{no-load} \times (1 - \frac{T_{load}}{T_{stall}})^n$$ 其中n通常在0.5-1之间,取决于电机特性。

速度控制策略

  1. 梯形速度曲线
速度
  ^
  │    ┌────────┐
  │   /          \
  │  /            \
  │ /              \
  └─────────────────→ 时间
   加速  匀速  减速
  1. S型速度曲线
速度
  ^
  │      ___
  │    /     \
  │   /       \
  │  /         \
  └─────────────────→ 时间
   更平滑的加减速

高速应用的特殊考虑

  • 惯性载荷:高速运动时,惯性力可能超过静态载荷
  • 振动问题:快速启停产生的振动需要阻尼处理
  • 发热问题:频繁高速运动导致发热增加
  • 齿轮冲击:需要软启动保护齿轮

速度测量方法

  1. 编码器测速:最精确,需要额外传感器
  2. 反电动势测速:利用电机特性,精度中等
  3. 时间测量:测量到达指定角度的时间,简单但精度低

7.2.3 功率与效率

功率消耗分析: 舵机的功率消耗包含多个组成部分:

  • 空载功率
  • 空载电流:50-200mA(小型),200-500mA(大型)
  • 主要消耗:控制电路、位置采样、摩擦损耗
  • 功率计算:$P_{idle} = V \times I_{idle}$
  • 典型值:0.3-3W

  • 负载功率

  • 工作电流:0.5-2A(取决于负载)
  • 堵转电流:1-3A(小型),3-8A(大型)
  • 峰值功率:$P_{peak} = V \times I_{stall}$
  • 连续功率:$P_{cont} = P_{peak} \times 0.3$

  • 动态功率: $$P_{dynamic} = P_{mech} + P_{loss}$$ 其中:

  • $P_{mech} = T \times \omega$(机械输出功率)

  • $P_{loss} = I^2R + P_{friction} + P_{control}$(各项损耗)

效率分析: 舵机的总效率由多个环节决定:

  • 电机效率:70-85%
  • 铜损:$P_{cu} = I^2 \times R_{coil}$
  • 铁损:涡流损耗和磁滞损耗
  • 机械损:轴承摩擦和风阻

  • 齿轮传动效率:85-95%(每级)

  • 齿面摩擦:与润滑状态相关
  • 齿轮材料:金属齿轮效率略低于尼龙
  • 级数影响:$\eta_{gear} = \eta_{stage}^n$

  • 控制电路效率:90-95%

  • H桥压降:0.2-0.5V per MOSFET
  • 开关损耗:与PWM频率成正比
  • 静态功耗:MCU和传感器消耗

  • 总效率: $$\eta_{total} = \eta_{motor} \times \eta_{gear} \times \eta_{control}$$ 典型值:40-65%

热管理设计: 连续工作时的热功率必须得到有效散发: $$P_{heat} = P_{input} \times (1 - \eta)$$ 热阻计算: $$\Delta T = P_{heat} \times R_{thermal}$$ 其中:

  • $\Delta T$:温升(°C)
  • $R_{thermal}$:热阻(°C/W)
  • 典型热阻:10-30°C/W(取决于外壳材料)

散热优化策略

  1. 被动散热: - 铝合金外壳:热导率200W/(m·K) - 增加散热筋:增大表面积30-50% - 导热垫片:填充空气间隙 - 自然对流:垂直安装优于水平

  2. 主动散热: - 强制风冷:降低热阻50-70% - 散热片:黑色阳极氧化提高辐射 - 热管耦合:用于高功率应用 - 液冷系统:极端应用场景

  3. 控制策略: - PWM占空比限制:防止过热 - 温度监控:内置NTC热敏电阻 - 过温保护:>80°C自动降功率 - 间歇工作:10%占空比可连续运行

寿命与温度关系: $$L = L_0 \times 2^{\frac{T_0 - T}{10}}$$

  • 每升高10°C,寿命减半
  • 建议工作温度:<60°C
  • 极限温度:85°C(短时)

7.3 数字舵机vs模拟舵机

7.3.1 技术差异对比

| 特性 | 模拟舵机 | 数字舵机 |

特性 模拟舵机 数字舵机
控制频率 50Hz 300-330Hz
位置采样率 50Hz 300Hz+
死区 5-8μs 1-2μs
保持力 一般
响应速度
功耗 较高
价格 便宜

7.3.2 模拟舵机特性

工作原理

   模拟舵机控制时序

   PWM输入 ──→ 每20ms采样一次 ──→ 驱动电机
                     ↓
              位置误差大时全速驱动
              接近目标时降速

优点

  • 成本低,适合预算有限的项目
  • 待机功耗低
  • 电磁干扰小

缺点

  • 响应延迟大(20ms更新周期)
  • 保持力弱,容易被外力推动
  • 精度较低,死区大

7.3.3 数字舵机优势

高频控制回路

   数字舵机内部处理

   MCU ──→ 300Hz位置采样 ──→ PID控制 ──→ PWM驱动
    ↑                                      ↓
    └──────── 编码器/电位器 ←────────────┘

关键特性

  1. 快速响应:3ms更新周期 vs 20ms
  2. 强保持力:持续修正位置偏差
  3. 可编程性:支持参数调整(部分型号)
  4. 高分辨率:12位ADC vs 8位

适用场景

  • 高动态响应要求(如直升机尾舵)
  • 需要强保持力(如机械臂关节)
  • 精密定位应用

7.4 舵机安装与连接

7.4.1 机械安装要点

安装方式选择

   常见舵机安装方式

   A. 直接安装(标准舵机支架)
   ┌──────────┐
   │  舵机本体  │
   ├──────────┤
   │□ □    □ □│ ← 安装孔
   └──────────┘

   B. 侧面安装(U型支架)
   ┌─┐      ┌─┐
   │ │██████│ │
   │ │舵机本体│ │
   └─┘      └─┘

   C. 双轴支撑(高负载应用)
       轴承
        ↓
   ─────●─────
        │
   ┌────┴────┐
   │  舵机    │
   └─────────┘

安装注意事项

  1. 对中精度:确保舵机轴与负载轴同心,偏差<0.5mm
  2. 刚性固定:使用M3或M4螺栓,避免振动松动
  3. 散热空间:预留5-10mm散热间隙
  4. 线缆预留:考虑运动范围,预留30%余量

振动隔离设计: 高精度应用需考虑振动隔离:

  • 橡胶垫片:降低高频振动传递
  • 弹性联轴器:补偿轴对中误差
  • 质量配重:降低系统固有频率

7.4.2 电气连接规范

标准接线定义

   舵机接线颜色标准

   ┌─────────────┐
   │   舵机接头   │
   │ ● ● ●       │
   │ │ │ │       │
   └─┼─┼─┼───────┘
     │ │ └─── 信号线(Signal)
     │ │      黄色/橙色/白色
     │ │      PWM控制信号
     │ │
     │ └───── 电源正(VCC)
     │        红色
     │        4.8V-7.2V
     │
     └─────── 电源负(GND)
              黑色/棕色
              共地连接

电源设计要点

  1. 独立供电:舵机电源与控制器分离
  2. 电容滤波:每个舵机并联470μF电容
  3. 线径选择: - 单个舵机:AWG22(0.64mm²) - 多舵机汇流:AWG18(0.82mm²) - 电压降计算:$\Delta V = I \times R_{wire}$

电流需求估算

舵机数量  空载总电流  峰值电流   推荐电源
1个      200mA      2A        5V/2A
4个      800mA      8A        5V/10A  
6个      1.2A       12A       5V/15A
12个     2.4A       24A       5V/30A

7.4.3 控制器接口

常见控制方式

  1. 单片机直接控制
// Arduino PWM控制示例
#include <Servo.h>
Servo myservo;
// 引脚9输出PWM,控制舵机至90度
myservo.attach(9);
myservo.write(90);
  1. 专用舵机控制板: - PCA9685:16路PWM,I2C接口 - SSC-32:32路舵机控制器 - Dynamixel协议:串行总线控制

  2. 信号隔离设计

   光耦隔离电路

   MCU侧      光耦       舵机侧
   3.3V       ┌───┐      5V
    │    1K   │   │       │
   PWM──███──→│   │──█──→舵机
    │         │   │   │   信号
   GND────────┴───┴───┴───GND

7.5 舵机臂设计要点

7.5.1 舵机臂类型与选择

标准舵机臂规格

   常见舵机臂类型

   A. 单臂          B. 双臂         C. 圆盘
      ●               ●              ●●●
      │            ───┼───          ●●●●●
      │               │            ●●●●●●●
      │               │             ●●●●●

   D. 十字臂        E. 齿轮         F. 万向节
      │               ╱│╲             ●
   ───┼───          ╱ │ ╲           ╱ ╲
      │            ╱  │  ╲         ●───●

材料选择

  • 塑料:轻量,成本低,适合小扭矩
  • 铝合金:强度高,散热好,标准选择
  • 碳纤维:超轻高强,高端应用
  • 钢制:最高强度,重型应用

7.5.2 力臂设计计算

力矩传递分析

   力臂长度与力的关系

   舵机轴 ●────────→ F
         ├───r───┤

   扭矩关系:T = F × r

   r增大 → F减小(力降低,位移增大)
   r减小 → F增大(力增大,位移减小)

最优力臂长度: $$r_{opt} = \sqrt{\frac{T_{servo}}{F_{required}}}$$ 设计示例:

  • 需要推力:10N
  • 舵机扭矩:20kg·cm = 2N·m
  • 最优力臂:$r = \frac{2}{10} = 0.2m = 20cm$

7.5.3 连接可靠性设计

花键连接

   25T花键标准(常见规格)

        ╱╲╱╲╱╲
       ╱  ╲  ╱
      ╲  ╱  ╲
       ╲╱╲╱╲╱

   优点:无间隙、扭矩大
   缺点:需要专用工具

螺栓夹紧

  • M3螺栓扭矩:0.5-0.8N·m
  • 使用弹垫防松
  • 定期检查预紧力

键槽设计

   键槽尺寸计算

   ┌─────┐
   │     │← 键宽 w = d/4
   │  ●  │← 轴径 d
   │     │← 键高 h = d/6
   └─────┘

7.6 案例研究:六足机器人关节舵机选型与控制

7.6.1 需求分析

六足机器人参数

  • 机体重量:2kg
  • 载荷能力:1kg
  • 腿长:200mm
  • 每腿3个自由度(髋关节、膝关节、踝关节)
  • 总计18个舵机

7.6.2 负载计算

静态支撑分析

   三足支撑时最恶劣工况

        ▲ 3kg
        │
   ●────┼────●  
    \   │   /
     \  │  /
      \ │ /
       \│/
        ●

   单腿负载 = 3kg ÷ 3 = 1kg

关节扭矩需求

  1. 髋关节(水平旋转): - 负载力臂:100mm - 所需扭矩:1kg × 100mm = 100kg·mm = 10kg·cm - 选择:15kg·cm舵机(安全系数1.5)

  2. 膝关节(抬腿): - 负载力臂:150mm(最大伸展) - 所需扭矩:1kg × 150mm = 15kg·cm - 选择:25kg·cm舵机

  3. 踝关节(末端调节): - 负载力臂:50mm - 所需扭矩:1kg × 50mm = 5kg·cm - 选择:9kg·cm舵机

7.6.3 舵机选型方案

选型结果: | 关节 | 型号 | 扭矩 | 速度 | 重量 | 数量 |

关节 型号 扭矩 速度 重量 数量
髋关节 MG996R 15kg·cm@6V 0.17s/60° 55g 6
膝关节 DS3235 25kg·cm@6V 0.15s/60° 60g 6
踝关节 MG90S 9kg·cm@6V 0.10s/60° 14g 6

总重量:(55×6) + (60×6) + (14×6) = 774g

7.6.4 控制系统设计

硬件架构

   控制系统框图

   主控制器          舵机控制板
   ┌────────┐      ┌──────────┐
   │RPi/STM32│─I2C→│ PCA9685×2│
   └────────┘      └────┬─────┘
                         │PWM×18
                    ┌────┴────┐
                    │18个舵机  │
                    └─────────┘

步态控制算法

# 三角步态示例(伪代码)
class TripodGait:
    def __init__(self):
        self.group_A = [0, 3, 4]  # 腿编号
        self.group_B = [1, 2, 5]

    def step_forward(self):
        # 第1相:A组抬腿,B组支撑
        self.lift_legs(self.group_A)
        self.move_body_forward(distance=50)

        # 第2相:A组落地,B组抬腿
        self.lower_legs(self.group_A)
        self.lift_legs(self.group_B)

        # 第3相:B组向前摆动
        self.swing_legs_forward(self.group_B)
        self.lower_legs(self.group_B)

7.6.5 供电系统设计

功率需求计算

  • 峰值电流:18 × 2A = 36A
  • 平均电流:18 × 0.5A = 9A
  • 电池选择:2S LiPo 5000mAh 30C
  • 工作时间:5000mAh ÷ 9000mA ≈ 33分钟

电源分配

   电源分配方案

   7.4V电池 ──→ UBEC(5A)×4 ──→ 每组4-5个舵机
            │
            └→ 主控板供电(独立5V/2A)

7.7 高级话题:无刷电机FOC控制与编码器反馈

7.7.1 无刷电机vs传统舵机

性能对比: | 特性 | 传统舵机 | 无刷伺服 |

特性 传统舵机 无刷伺服
寿命 300-500小时 5000+小时
效率 40-55% 80-90%
噪音 齿轮噪音大 静音运行
精度 ±1-2° ±0.1°
成本
控制复杂度 简单PWM 需要FOC驱动

7.7.2 FOC控制原理

磁场定向控制(Field Oriented Control)

   FOC控制框图

   位置指令 ──→ [位置环] ──→ [速度环] ──→ [电流环]
                                          
                                          
              编码器位置    编码器速度    相电流采样

   电流环内部
   Id*,Iq* ──→ [PI] ──→ [反Park] ──→ [SVPWM] ──→ 三相逆变器
                                                     
                      [Clark/Park]←──── 相电流 ←──────┘

核心变换

  1. Clark变换:三相→两相静止坐标系 $$\begin{bmatrix} I_\alpha \\ I_\beta \end{bmatrix} = \frac{2}{3}\begin{bmatrix} 1 & -\frac{1}{2} & -\frac{1}{2} \\ 0 & \frac{\sqrt{3}}{2} & -\frac{\sqrt{3}}{2} \end{bmatrix}\begin{bmatrix} I_a \\ I_b \\ I_c \end{bmatrix}$$

  2. Park变换:两相静止→两相旋转坐标系 $$\begin{bmatrix} I_d \\ I_q \end{bmatrix} = \begin{bmatrix} \cos\theta & \sin\theta \\ -\sin\theta & \cos\theta \end{bmatrix}\begin{bmatrix} I_\alpha \\ I_\beta \end{bmatrix}$$ 其中:

  • $I_d$:直轴电流(磁通分量)
  • $I_q$:交轴电流(转矩分量)
  • $\theta$:转子电角度

7.7.3 编码器类型与精度

常见编码器对比

  1. 增量式编码器: - 分辨率:512-4096 PPR - 需要初始化找零点 - 成本低

  2. 绝对值编码器: - 磁编码器:12-14位(0.088°-0.022°) - 光电编码器:17-23位(0.003°-0.00004°) - 上电即知位置

  3. 霍尔传感器: - 仅提供6个扇区位置 - 低速控制效果差 - 成本最低

分辨率计算

机械角度分辨率 = 360° / (编码器线数 × 4 × 减速比)

例:2048线编码器,50:1减速比
分辨率 = 360° / (2048 × 4 × 50) = 0.0088°

7.7.4 SimpleFOC开源方案

硬件配置示例

   SimpleFOC系统组成

   Arduino/STM32 ──→ SimpleFOC Shield ──→ 无刷电机
                                            
   位置指令            电流采样          磁编码器

代码示例(Arduino):

#include <SimpleFOC.h>

// 电机和编码器配置
BLDCMotor motor = BLDCMotor(7);  // 7对极
MagneticSensorI2C sensor = MagneticSensorI2C(AS5600_I2C);

// 驱动器配置
BLDCDriver3PWM driver = BLDCDriver3PWM(9, 5, 6, 8);

void setup() {
  // 编码器初始化
  sensor.init();
  motor.linkSensor(&sensor);

  // 驱动器初始化
  driver.voltage_power_supply = 12;
  driver.init();
  motor.linkDriver(&driver);

  // FOC控制模式
  motor.controller = MotionControlType::angle;
  motor.PID_velocity.P = 0.2;
  motor.PID_velocity.I = 2;
  motor.PID_velocity.D = 0;

  // 初始化FOC
  motor.init();
  motor.initFOC();
}

void loop() {
  motor.loopFOC();  // FOC主循环
  motor.move(target_angle);  // 位置控制
}

7.7.5 实际应用案例

机械臂关节升级方案

原方案(传统舵机):

  • MG996R舵机
  • 扭矩:15kg·cm
  • 精度:±2°
  • 噪音:55dB

升级方案(无刷FOC):

  • 5010无刷电机 + SimpleFOC
  • 配置AS5048A磁编码器(14位)
  • 扭矩:20kg·cm(含减速器)
  • 精度:±0.02°
  • 噪音:<30dB

性能提升

  • 定位精度提升100倍
  • 运行噪音降低25dB
  • 能耗降低40%
  • 寿命延长10倍

7.7.6 调试与优化

PID参数整定

  1. 位置环:P=10, I=0, D=0.5
  2. 速度环:P=0.2, I=2, D=0
  3. 电流环:P=3, I=300, D=0

常见问题解决

  • 抖动:降低位置环P值,增加D值
  • 响应慢:增加速度环P值
  • 过冲:降低速度环I值
  • 发热:检查电流环,限制$I_d$=0

性能优化技巧

  1. 使用前馈控制减少跟踪误差
  2. 实施抗积分饱和
  3. 添加速度/加速度限制
  4. 实现S曲线轨迹规划

本章小结

本章系统介绍了舵机的工作原理、选型方法和应用技术。核心要点包括:

基础知识

  • PWM控制原理:20ms周期,0.5-2.5ms脉宽对应角度位置
  • 闭环控制:通过电位器反馈实现位置闭环
  • 扭矩计算:$T = m \times g \times L$,选型需考虑1.5倍安全系数

关键参数

  • 扭矩规格:工作扭矩不超过堵转扭矩的60-70%
  • 速度与扭矩权衡:$T \times \omega \approx \text{常数}$
  • 数字舵机优势:300Hz控制频率,响应快,保持力强

实践要点

  • 电源设计:独立供电,合理估算电流需求
  • 机械安装:注意对中精度,预留散热空间
  • 舵机臂设计:力臂长度决定力与位移的权衡

高级技术

  • FOC控制:效率80-90%,精度可达±0.02°
  • 编码器选择:磁编码器性价比高,光电编码器精度高
  • SimpleFOC方案:开源易用,适合升级改造

通过本章学习,您应该能够根据项目需求选择合适的舵机,设计可靠的机械连接和供电系统,并了解从传统舵机到无刷FOC的技术演进路径。在实际应用中,要根据精度、成本、功耗等因素综合考虑,选择最适合的方案。

练习题

基础题

题目1:一个标准舵机接收到1.0ms的PWM脉冲信号,假设舵机的运动范围是0-180°,中位在90°,请计算舵机将转到什么角度?

提示:标准舵机1.5ms对应90°,脉宽范围0.5-2.5ms对应0-180°

答案

脉宽与角度的线性关系:

  • 0.5ms → 0°
  • 1.5ms → 90°
  • 2.5ms → 180°

角度计算: $$\theta = \frac{1.0 - 0.5}{2.5 - 0.5} \times 180° = \frac{0.5}{2.0} \times 180° = 45°$$

或使用公式:$\theta = 90° \times \frac{t_w - 1.5}{1.0} = 90° \times \frac{1.0 - 1.5}{1.0} = -45°$

相对于中位:90° - 45° = 45°

答案:舵机将转到45°位置。

题目2:一个机械臂需要提起500g的负载,力臂长度为20cm,请计算所需的最小舵机扭矩。如果考虑1.5倍的安全系数,应该选择多大扭矩的舵机?

提示:扭矩 = 力 × 力臂,重力加速度取10m/s²

答案

计算步骤:

  1. 负载重力:F = m × g = 0.5kg × 10m/s² = 5N
  2. 所需扭矩:T = F × L = 5N × 0.2m = 1N·m = 10kg·cm
  3. 考虑安全系数:T_safe = 10kg·cm × 1.5 = 15kg·cm

答案:最小需要10kg·cm扭矩,考虑安全系数应选择15kg·cm或以上的舵机。

题目3:有6个舵机需要同时工作,每个舵机的空载电流为200mA,堵转电流为2A。请估算电源的电流容量需求。

提示:考虑正常工作和峰值情况

答案

电流需求计算:

  1. 空载总电流:6 × 200mA = 1.2A
  2. 峰值总电流:6 × 2A = 12A
  3. 建议电源容量:15A(留有余量)

实际应用中:

  • 正常运行:5-6A(部分舵机带载)
  • 瞬时峰值:可能达到12A
  • 电源选择:5V/15A或6V/15A

答案:建议使用15A容量的电源。

挑战题

题目4:设计一个四足机器人,每条腿有3个关节(髋关节、膝关节、踝关节),机器人总重3kg,需要能够携带1kg负载。请完成以下设计: a) 计算各关节所需的舵机扭矩 b) 选择合适的舵机型号 c) 设计供电方案

提示:考虑最恶劣工况——两腿支撑

答案

a) 扭矩计算

最恶劣工况:两腿支撑

  • 单腿负载:(3kg + 1kg) ÷ 2 = 2kg

各关节扭矩(假设腿长配置):

  1. 髋关节(侧向摆动): - 力臂:~15cm - 扭矩:2kg × 15cm = 30kg·cm - 选择:35-40kg·cm

  2. 膝关节(主要承重): - 力臂:~20cm(最大伸展) - 扭矩:2kg × 20cm = 40kg·cm - 选择:50-60kg·cm

  3. 踝关节(姿态调节): - 力臂:~8cm - 扭矩:2kg × 8cm = 16kg·cm - 选择:20kg·cm

b) 舵机选型

  • 髋关节:DS3235 (35kg·cm) × 4
  • 膝关节:大扭矩舵机 (60kg·cm) × 4
  • 踝关节:MG996R (20kg·cm) × 4

c) 供电方案

  • 总舵机数:12个
  • 峰值电流:12 × 3A = 36A
  • 电池:3S LiPo 11.1V, 5000mAh, 45C
  • 降压:UBEC 11.1V→6V, 10A × 4个
  • 分组供电:每组3个舵机

题目5:你需要将一个传统的MG996R舵机(精度±2°)升级为高精度伺服系统(目标精度±0.1°)。请设计一个基于FOC控制的升级方案,包括: a) 硬件选型 b) 控制策略 c) 成本效益分析

提示:考虑使用SimpleFOC或ODrive方案

答案

a) 硬件选型

SimpleFOC方案:

  • 电机:5010-360KV无刷电机(~¥50)
  • 编码器:AS5047P磁编码器,14位分辨率(¥80)
  • 驱动器:SimpleFOC Shield(¥150)
  • 减速器:行星减速器 20:1(¥100)
  • 控制器:STM32F103(¥30)
  • 总成本:~¥410

b) 控制策略

三环控制:

  1. 位置环:P=15, I=0.1, D=1
  2. 速度环:P=0.5, I=5, D=0
  3. 电流环:P=5, I=500, D=0

特殊处理:

  • 实施S曲线轨迹规划
  • 加入前馈补偿
  • 死区补偿

c) 成本效益分析

对比项 MG996R FOC升级方案
成本 ¥30 ¥410
精度 ±2° ±0.1°
寿命 500小时 5000+小时
效率 45% 85%
噪音 55dB 30dB

投资回报:

  • 精度提升20倍
  • 寿命延长10倍
  • 能耗降低47%
  • 适合高端应用

题目6:在设计云台稳定器时,需要实现0.01°的角度分辨率,响应频率达到100Hz。请分析: a) 传统舵机能否满足要求? b) 如果不能,提出解决方案 c) 计算所需的编码器分辨率

提示:考虑控制频率和编码器精度

答案

a) 传统舵机分析

传统舵机限制:

  • PWM更新频率:50Hz(不满足100Hz要求)
  • 分辨率:~0.7°(8位PWM,远低于0.01°要求)
  • 死区:5-8μs(对应约1°)

结论:传统舵机无法满足要求

b) 解决方案

推荐方案:无刷云台电机 + FOC控制

  • 无刷电机:GM2804/GM3506
  • 控制器:Storm32/SimpleBGC
  • 编码器:磁编码器或IMU反馈
  • 控制频率:可达1000Hz

关键特性:

  • 直驱无齿轮(无回程差)
  • FOC矢量控制(平滑)
  • 高频控制环(>500Hz)

c) 编码器分辨率计算

目标:0.01°分辨率

无减速器情况:

  • 需要位数:360°/0.01° = 36000级
  • 二进制位数:log₂(36000) ≈ 15.14位
  • 选择:16位编码器(0.0055°分辨率)

有减速器(10:1):

  • 电机端需要:0.01° × 10 = 0.1°
  • 需要级数:360°/0.1° = 3600级
  • 二进制位数:log₂(3600) ≈ 11.81位
  • 选择:12位编码器即可

推荐:AS5048A(14位)或AS5047P(14位)磁编码器

常见陷阱与错误

1. PWM信号问题

错误现象:舵机抖动、不响应或位置不准

常见原因

  • PWM频率错误(不是50Hz)
  • 脉宽超出范围(<0.5ms或>2.5ms)
  • 信号线接触不良
  • 地线未共地

调试方法

1. 用示波器检查PWM信号
2. 确认控制器与舵机共地
3. 检查脉宽是否在规格范围内
4. 测试中位信号1.5ms

2. 供电不足

错误现象:舵机无力、复位、抖动

常见原因

  • 电源电流不足
  • 线径太细,压降过大
  • 多舵机同时启动造成电压跌落

解决方案

  • 使用独立大电流电源
  • 增加储能电容(1000μF/舵机)
  • 分时启动多个舵机
  • 使用更粗的电源线

3. 机械安装错误

错误现象:舵机发热、噪音大、寿命短

常见原因

  • 轴不对中,造成径向力
  • 负载超过额定扭矩
  • 舵机臂安装角度错误
  • 机械干涉限制运动

预防措施

  • 使用联轴器补偿对中误差
  • 计算负载,留足余量
  • 上电前手动检查运动范围
  • 添加机械限位保护

4. 控制逻辑错误

错误现象:舵机运动不协调、超出范围

常见代码错误

// 错误:未限制角度范围
servo.write(angle);  // angle可能>180°

// 正确:添加范围限制
angle = constrain(angle, 0, 180);
servo.write(angle);

5. 数字舵机兼容性

问题:数字舵机在模拟舵机系统中工作异常

原因

  • 更新频率不匹配
  • 死区设置不同
  • 功耗差异

解决

  • 不混用数字和模拟舵机
  • 调整控制器输出频率
  • 独立供电

最佳实践检查清单

设计阶段

  • [ ] 计算所有负载扭矩,考虑动态载荷
  • [ ] 选择舵机时留50%以上余量
  • [ ] 评估精度要求,决定数字/模拟舵机
  • [ ] 规划供电方案,估算峰值电流
  • [ ] 设计机械限位,防止超程损坏
  • [ ] 考虑散热需求,预留通风空间

安装阶段

  • [ ] 检查舵机与负载轴对中(<0.5mm)
  • [ ] 确认所有电气连接牢固
  • [ ] 舵机电源与控制器共地
  • [ ] 安装储能/滤波电容
  • [ ] 标记线缆,便于维护
  • [ ] 手动测试运动范围无干涉

调试阶段

  • [ ] 从中位(90°)开始测试
  • [ ] 逐步增加运动范围
  • [ ] 监测舵机温度(<60°C)
  • [ ] 记录空载和负载电流
  • [ ] 测试极限位置保持力
  • [ ] 验证紧急停止功能

优化阶段

  • [ ] 调整PWM死区减少抖动
  • [ ] 优化运动轨迹降低冲击
  • [ ] 实施加减速控制
  • [ ] 添加位置反馈校验
  • [ ] 设置过流/过热保护
  • [ ] 建立维护计划和备件库

维护阶段

  • [ ] 定期检查齿轮磨损
  • [ ] 清洁和润滑(如需要)
  • [ ] 检查电位器/编码器精度
  • [ ] 测试保持力是否下降
  • [ ] 更换老化的电容
  • [ ] 记录运行时间和故障

通过遵循这个检查清单,可以确保舵机系统的可靠性和长期稳定运行。