机器人关节直流伺服驱动实战:UC2637模拟PWM控制器死区与逐周期限流一次讲透

关节与云台的有刷直流伺服,用MCU定时器发PWM最省事,却把死区、死带、逐周期限流和保护全甩给了软件。UC2637把振荡器、误差放大器、双PWM比较器、限流放大器与温补关断装进一颗IC

2026-10-04 📖 约 12 分钟阅读
UC2637 UC3637 机器人关节 直流伺服 PWM调制 逐周期限流 嵌入式

核心结论

机器人关节、云台、阀门执行器的有刷直流伺服,如果只靠 MCU 通用定时器发两路 PWM,死区、死带、逐周期限流、欠压锁定、故障关断全都要软件兜底,一旦中断延迟或程序跑飞就是炸管。UC1637/UC2637/UC3637 系列把这条链路硬件化:一片 UC2637 内含锯齿波振荡器(初始精度 ±5%、全温 ±10%)、15V/µs 摆率的误差放大器、两个未指定的 PWM 比较器、带 200mV 内部失调的锁存式限流放大器,以及阈值 −2.5V 的温度补偿关断端,双电源范围 −2.5V 至 −20V,输出级持续吸灌 100mA、脉冲 500mA。三条可直接落地的结论:第一,三种调制方式(零死区/小死区/死带)不是软件参数,而是硬件接法,靠 +BIN/−BIN 与 +AIN/−AIN 上的电平差一次定死;第二,逐周期限流靠 200mV 内部失调 + 外部分流电阻实现,与 MCU 无关,掉程序也不会失效;第三,数字外环 + 模拟内环是最稳的分工——MCU 只输出速度指令,电流与保护交给这颗 IC。

一、关节伺服的驱动路线,先分清三条

协作机械臂的腕部、人形机器人的小关节、工业云台,很多场景并不需要 FOC,用有刷直流电机配减速箱反而更便宜、更耐用。这类"低精度、高可靠、要力矩"的关节,驱动方案其实有三条路:MCU 定时器直接发 PWM、用集成 H 桥驱动 IC、用模拟 PWM 控制器做内环。三者不是替代关系,而是资源与可靠性的取舍。

对比维度 MCU定时器直发PWM 集成H桥驱动IC(如DRV8871类) 模拟PWM控制器(UC2637)
环路位置 速度环、电流环全在软件 通常只做功率级,环路在MCU 内环(电流/力矩)在片内模拟实现
死区与死带 软件插入,受中断抖动影响 片内固定死区,不可调 由比较器偏置电平决定,可连续调
逐周期限流 需MCU比较器或ADC中断,延迟大 有固定限流阈值 片内200mV失调锁存,逐周期生效
程序跑飞后果 PWM失控,可能直通炸管 受驱动IC自身保护 限流与关断独立于MCU,仍有效
适用场景 低成本、低功率、低速定位 中低功率一体化模块 需力矩内环、保护要求高的关节

选第三条路的理由很直接:电流内环的带宽要求通常在几 kHz 到十几 kHz,交给 10µs 级抖动的软件中断去做,波形一定是毛的;而模拟比较器做同一件事是 ns 级。UC2637 这一族的设计初衷,就是让"误差信号 → 双向 PWM"这段完全由硬件完成。

二、UC2637 里到底装了什么

UC1637/UC2637/UC3637 是同一颗芯片的三个温度等级版本,出自 Unitrode(后被 TI 收购)的开关模式直流电机驱动控制器系列。它们的核心不是功率级,而是"模拟误差信号 → 两路双向脉宽调制输出"这套控制逻辑。内部框图可以拆成五块:锯齿波振荡器、误差放大器、两个 PWM 比较器、锁存式限流放大器、带温补阈值的关断比较器,再加两个 100mA 输出驱动。

管脚分配很能说明设计意图:+VTH(1脚)与 −VTH(3脚)设定振荡器上下阈值,CT(2脚)接定时电容,ISET(20脚)经外接电阻 RT 到 −VS 产生充电电流——手册特别指出,把 RT 接到 −VS 时,阈值电压与充电电流同时随电源差按比例变化,因此振荡频率与电源电压无关,这一点在电池供电的移动机器人上非常关键。误差放大器输入在 +E/A(17脚)/−E/A(18脚),输出在 19脚;两路 PWM 比较器的负端在 −AIN(11脚)/−BIN(10脚),正端在 +AIN(12脚)/+BIN(9脚);限流放大器差分输入在 +C/L(13脚)/−C/L(14脚);关断端 SHUTDOWN(15脚);两路输出 AOUT(4脚)/BOUT(8脚)。

关键电气参数集中在下面这张表里,它们决定了这颗 IC 能用在哪一档功率、哪一档环境:

参数 典型值 范围/条件 对设计的意义
振荡器初始精度 10kHz 9.4~10.6kHz(RT=16.7kΩ、CT=1500pF) PWM频率基准,全温漂移±10%
误差放大器 增益100dB、摆率15V/µs、带宽2MHz 失调1.5mV(典型)/5mV(最大) 决定力矩内环的稳态误差
PWM比较器失调 20mV 迟滞10mV,共模 −VS+1V~+VS−2V 决定死区/死带的最小可调粒度
限流放大器失调 200mV 180/200/220mV,温漂 −0.2mV/℃ 配分流电阻即可定限流点
关断阈值 −2.5V −2.3~−2.7V,迟滞40mV 可做精确欠压锁定或延时启动
输出驱动能力 100mA 持续 脉冲500mA;上升100~600ns、下降100~300ns 可直接推功率MOSFET或双极管的栅极/基极
温度等级 — UC1637 −55~+125℃/UC2637 −25~+85℃/UC3637 0~+70℃ 工业关节选UC2637,车规级另议

电源范围是 −2.5V 至 −20V 的负压供电,这一点让很多第一次接触的人困惑。它源于这颗 IC 的设计年代——用 −VS 做参考地,输出级可以拉到接近 +VS 的高电平,输出高低电平在 50mA 负载下分别是 +VS−2.0V 与 −VS+0.2V,摆动幅度大,适合直接驱动功率级的栅极。如果用单电源,则按手册的"单电源位置伺服"接法把 −VS 接地、+VS 取正压。

三、三种调制方式:死区与死带是接法决定的

这是 UC2637 最容易被忽略、也最有价值的部分。两个 PWM 比较器的正端电平(+BIN 与 +AIN)之间的关系,直接决定了输出的调制形态。手册给出了三种模式,本质是用偏置电平换取"刚度"与"安全"的平衡。

调制模式 偏置条件 输出行为 优点 代价
零死区(Case A) +BIN 与 +AIN 电平相等 两路输出互补切换,无空档 保持力矩/刚度最大,位置精度最高 功率级瞬时短路风险高,电机发热增加
小死区(Case B) +BIN 略高于 +AIN 互补切换间插入一段两管全关的空档 避免功率级换向瞬间直通 低占空比时输出略失真
死带(Case C) +BIN 明显高于 +AIN,窗口拉宽 误差信号落在零点附近时两路都不输出 消除零位附近来回抖动,降低静态功耗 刚度与位置精度下降,存在定位死区

怎么选?关节要求"顶得住、站得稳",选零死区或小死区;云台、阀门这类"到位即可、不要嗡嗡响"的负载,选死带更合适。

判断依据是机械系统的刚度需求与功率级耐受能力,而不是"哪个更先进"。手册原文的表述是:在位置精度与机械刚度不重要时,死带工作方式可以降低甚至消除伺服环零位附近的电机功率输入。

四、逐周期限流与保护:软件跑飞也拦得住

关节最怕的两件事是堵转过流和母线掉电时的误动作。UC2637 对这两件事都给了硬件答案。

限流部分是一颗带 200mV 内部失调的锁存式放大器。把电机回路的分流电阻两端接到 +C/L 与 −C/L,当压差达到 200mV 量级时放大器翻转并锁存,本周期输出立即被切断——这就是"逐周期限流"。它的共模输入范围可以从 −VS 一直到 +VS 减 3V,因此高端采样也能直接接,不必额外加差分放大。限流点算起来很简单:

/* UC2637 逐周期限流点估算
 * Vcl = 200mV(内部失调,典型值,温漂 -0.2mV/℃)
 * Rsense: 分流电阻(Ω)
 * Ilimit = Vcl / Rsense
 *
 * 例:关节峰值力矩对应 3A
 *   Rsense = 0.2V / 3A ≈ 66.7mΩ  → 取 0.068Ω / 2W
 * 校验功耗:P = I^2 * R = 3^2 * 0.068 ≈ 0.61W,选 1W 以上
 *
 * 若希望留 20% 余量(限流 3.6A):
 *   Rsense = 0.2 / 3.6 ≈ 55.6mΩ → 取 0.051Ω
 */
#define V_CL       0.200f
#define R_SENSE    0.068f
float ilimit_a = V_CL / R_SENSE;   /* ≈ 2.94A */

关断端(15脚)的阈值是 −2.5V,温度补偿,迟滞 40mV。手册明确说明:把该端拉到比 VIN 低 2.5V 以上时输出驱动被使能,因此可以用开集电极门或 NPN 管来实现。这个特性的两个典型用法是:

此外片内还有欠压锁定(UVLO),启动阈值约 4.15~5.0V,低于该电压时所有输出保持低电平,内部电路与输出驱动在电压建立后才启用。这层保护独立于 MCU,是"程序跑飞仍拦得住"的底气所在。

五、数字外环 + 模拟内环:和 STM32 怎么分工

正确的用法不是让 UC2637 单打独斗,而是把它当成"力矩执行器",位置与速度环仍交给 STM32。典型链路如下:MCU 读编码器得到角度与转速 → 位置环 PID 算出速度指令 → 速度指令经 DAC 或 PWM+RC 变成模拟电压 → 送入 UC2637 误差放大器 → 片内与测速/电流反馈比较,生成双向 PWM → 驱动 H 桥。

STM32 位置/速度环PID 速度指令 DAC / PWM+RC UC2637 误差放大器 PWM比较器 200mV限流锁存 H桥功率级 4×MOSFET +分流电阻 关节电机 +编码器 编码器反馈(角度/转速)→ 数字外环 电流反馈
图1:数字外环 + 模拟内环的关节伺服信号流。MCU 只负责角度与速度,力矩与保护在 UC2637 片内完成

这样做的好处是分工清晰:需要实时性、带宽高的电流环在模拟域,需要灵活性和算法迭代的位置/速度环在数字域。MCU 侧代码因此可以写得非常薄,只需按固定周期输出速度指令并读回编码器:

/* STM32 侧:只做外环与指令下发(示意)
 * TIM3_CH1 输出 PWM 经 RC 滤波成 0~2.2V 模拟速度指令
 */
#include "stm32f1xx_hal.h"

static int32_t enc_last = 0;
static float   integ    = 0.0f;

/* 每 1ms 调用:位置环 PI,输出限幅后送模拟指令 */
void joint_outer_loop(float target_deg, float actual_deg)
{
    const float Kp = 2.4f, Ki = 0.06f, dt = 0.001f;
    float err = target_deg - actual_deg;

    integ += Ki * err * dt;
    if (integ >  1.0f) integ =  1.0f;      /* 抗积分饱和 */
    if (integ < -1.0f) integ = -1.0f;

    float cmd = Kp * err + integ;          /* -1.0 ~ +1.0 */
    if (cmd >  1.0f) cmd =  1.0f;
    if (cmd < -1.0f) cmd = -1.0f;

    /* 映射到 CCR:50% 为零速,<50% 反转,>50% 正转 */
    uint32_t arr = __HAL_TIM_GET_AUTORELOAD(&htim3);
    uint32_t ccr = (uint32_t)((cmd * 0.5f + 0.5f) * (float)arr);
    __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, ccr);
}

/* 编码器读数:TIM2 编码器模式 x4,ARR 设为一转计数即为角度 */
int32_t joint_read_count(void)
{
    return (int32_t)__HAL_TIM_GET_COUNTER(&htim2);
}

六、六个最容易踩的坑

现象 根因 处理
功率管换向瞬间发烫 用了零死区接法,功率级瞬时短路 改为小死区:把 +BIN 抬高于 +AIN,插入空档
静态时电机嗡嗡响、发热 零位附近反复微调 改用死带模式,拉宽比较器窗口
限流点随温度漂移 分流电阻温漂大,未按 −0.2mV/℃ 复核 选低温漂分流电阻,按最坏温度重算
PWM频率随电池电压变化 RT 未接到 −VS,阈值与电流不同步 RT 接 −VS,让两者按电源差比例变化
上电瞬间电机猛地一跳 关断端未做延时启动 关断端加 RC,电源建立后再使能输出
MCU 复位时电机失控 速度指令随 IO 悬空乱变 指令输入端加下拉,配合关断端做安全态

七、总结

对"要力矩内环、要保护兜底"的机器人关节与云台,UC2637 这一族模拟 PWM 控制器提供了 MCU 方案给不了的两样东西:ns 级的硬件电流环,以及不依赖程序的限流与关断保护。它的三种调制方式不是软件参数而是硬件接法,死区、死带、刚度的取舍在布板阶段就定死了,必须在选型时想清楚。

落地时记住三点:RT 接 −VS 保证频率稳定;限流点用 200mV/Rsense 直接算;关断端一定留延时启动或欠压锁定。把这三件事做对,再让 STM32 只负责位置与速度外环,关节的力矩响应和抗堵转能力会比纯软件方案稳一个档次。

还想接着看

本文基于《UC1637/UC2637/UC3637 开关模式直流电机驱动控制器数据手册》等技术资料整理优化,并结合机器人关节与云台伺服的驱动工程实践进行了系统化梳理。

需要定制开发?

沧州艾诺威电子 — 国家高新技术企业,20+项国家专利
嵌入式系统开发 · 物联网方案 · AI智能硬件 · 一站式交付

立即微信咨询

电话:13930711029 | 邮箱:tech@czinv.com | 24小时内响应