机器人轮驱电池掉电就减速怎么破:TPIC2101电压补偿与休眠限流七步讲透

AGV 和巡检机器人常用 12V 电池供电,满电时标定好的速度,电池一掉就跑偏——同一 PWM 占空比下轮速按电池电压比例下滑。本文基于 TI 官方数据手册,讲清 TPIC2101 有刷电机控制器把 Vbat 放进传递方程分母的电压补偿机制、AUTO 脉冲与 MAN 电位器两种接法、低于 200µA 的休眠功耗、2048 周期判停与 8192 窗口化限流的约 3.3 秒关断时序,附推荐外围参数表、STM32 配合代码及七步落地清单。

2026-10-19
TPIC2101有刷电机电压补偿PWM机器人低功耗

结论先给三条:第一,开环 PWM 调速的有效电机电压等于占空比乘以电池电压,电池从 12V 掉到 10.5V,同一占空比下轮速就掉约 12%,这账没法靠改代码抹平——TPIC2101 把 Vbat 直接放进输出占空比传递方程的分母,硬件自动补偿,全工况输出精度 ±7%;第二,它是一颗三态机器件:正常工作电流 4~10mA,无命令 2048 个时钟后进入休眠(典型 150µA、最大 200µA),过压则进入故障态,休眠唤醒全靠输入侧自动判别,MCU 不用管;第三,限流保护用的是 8192 时钟窗口化判据——瞬时浪涌一两个窗口内出现不会触发关断,连续 8 个窗口(约 3.3 秒)持续限流才切断栅极驱动,堵转保护与启动浪涌这对老矛盾被出厂时序固定解决了。

一、满电标定的速度,掉电就跑偏

先算一笔账。PWM 调速加载在电机上的有效电压,等于占空比乘以供电电压:Vmotor = D × Vbat。满电 12.6V 时用 50% 占空比标定,有效电压 6.3V;跑到电池剩 10.5V,同样 50% 只剩 5.25V——直流电机的稳态转速近似与电枢电压成正比,轮速直接掉了 16% 以上。调度端看到的是任务节拍漂移,返航 SOC 判断跟着失真,多机编队更是队形全乱。

软件补偿的路线不是不能走:ADC 采样 Vbat、按公式修正占空比、再配编码器做速度闭环——每一层都占资源、都要调参,掉电瞬间 ADC 采样与 PWM 更新的时序偏差还会引入二次扰动。另一条路是把补偿交给硬件:TPIC2101 这颗 TI 的有刷直流电机控制器(1995 年发布的老牌片子,至今仍在车厂与工业产线上用),把电池电压直接做进了输出传递方程。

场景开环 PWM(MCU 直驱)TPIC2101 电压补偿
Vbat = 12V,命令 50%有效电压 6.0V输出 78.7%,有效电压约 9.4V
Vbat = 16V,命令 50%有效电压 8.0V(偏快 33%)输出 59%,有效电压约 9.4V
Vbat = 8V,命令 50%有效电压 4.0V(偏慢 33%)输出钳到 100%,有效电压 8V(补偿饱和)
补偿方式软件采样 + 算法修正传递方程分母自带 Vbat
输出精度取决于 ADC 与算法全工况 ±7%(手册交流特性表)

表中 TPIC2101 数据按传递方程 PWMout = (2.88 + 13.12×(1−Din))/Vbat × 100% 计算,数据来自 TI 数据手册。

二、这颗芯片管什么:外部低边 NMOS 加 20kHz 定频

TPIC2101 的定位要先用一句话钉住:它本身不带功率管,而是输出 0~Vbat 的 PWM 栅极信号,驱动一颗外部低边 NMOS,给电机做固定频率、可变占空比的功率调制;PWM 关断期间,电机绕组的感性电流经外部续流二极管回收。手册明确它也能控电磁阀和白炽灯泡这类阻性或感性负载。注意这是单向调速方案——需要正反转和制动,还是要回到 H 桥架构(我们之前写过的 IRFP064 双 H 桥那篇正好补位)。

开关频率由两个外围件决定:fosc = 2/(ROSC×COSC),按推荐值 45.3kΩ 加 2200pF 算出来正是 20kHz(实测范围 19~21kHz)。选 20kHz 不是随便定的——超出人耳听觉范围,机器人旁边站人不会听到啸叫。

项目参数备注
Vbat 推荐范围8~16V(标称 12V)绝对最大 -0.3~40V,抛负载 1ms 内可到 40V
休眠静态电流典型 150µA,最大 200µAVbat=13V,AUTO/MAN 开路
运行工作电流4~10mAVbat=16V,GD 开路,20kHz
工作频率20kHz 典型(19~21kHz)f = 2/(ROSC×COSC)
栅极驱动能力±50mA(绝对最大)负载电容最大 3300pF,上升 1µs/下降 0.8µs
输出占空比精度±7%9V<Vbat<16V,两种模式同
最小速度平台15~21%DC命令最低速时输出也不降到零
工作温度-40°C~105°CD 封装 131°C/W,N 封装 78°C/W
封装14 脚 DIP(N)/ SOIC(D)—

数据来自 TI《TPIC2101 DC BRUSH MOTOR CONTROLLER》(SLIS060)数据手册电气特性表与开关特性表。

三、电压补偿怎么算:一条传递方程说清楚

AUTO 模式下,芯片内部的传递方程是:

PWMout = (2.88 + 13.12×(1−Din)) / Vbat × 100%

分子里没有 Vbat,分母里有——这就是补偿的全部秘密。代入 Din=50%:Vbat=12V 时输出 78.7%,有效电压 0.787×12=9.44V;Vbat=16V 时输出 59%,有效电压 0.59×16=9.44V。两个电压下有效电机电压完全一致,轮速自然一致。Vbat=8V 时方程算出 118%,输出被钳位到 100%——8V 已接近推荐范围下限,芯片补不满了,但方向始终正确。

MAN 模式的方程同理:PWMout = (2.88 + 6.56×(VMAN−VAUTO))/Vbat × 100%,把差分电压换成分子变量而已。

有个细节容易被忽略:最小速度平台。手册开关特性表里有一条"Minimum speed pedestal",15~21%DC——即便命令端要求最低速(AUTO 端 99% 占空比),输出占空比也停在这个台阶上,不会降到零。需要"真正零速"的场合(对位、驻车),靠的是让芯片进休眠把 GD 拉死,而不是把命令打到最低。

四、两种接法:AUTO 脉冲与 MAN 电位器

这颗片子同时支持两套完全不同的命令输入,芯片自己识别,不用外部配置。

AUTO 模式给 MCU 用:开集 PWM 信号进 AUTO 脚,MAN 悬空。芯片内部给 AUTO 挂了 1mA 上拉,速度信息是反向的——10% 高电平比 20% 高电平命令的转速更高。它还能容忍 ±2V 的地偏移,MCU 板和功率板之间共地不干净也不影响占空比。另外有个 2048 时钟判停机制:AUTO 端持续高或持续低、2048 个 20kHz 时钟(按 20kHz 换算约 102ms)没有任何跳变,芯片判定"命令消失",自动进休眠。

MAN 模式给人机电位器用:MAN 接 Vbat 且高于 5.5V 即切入,AUTO 与 MAN 之间接一只 0~1kΩ 电位器。芯片从两个脚各灌 2mA 电流沉,电位器上的压差 0~2.2V 就是满量程速度命令。值守面板、手动调试台,一只电位器搞定,MCU 都不用上。

维度AUTO 模式MAN 模式
命令信号开集 PWM,100Hz 典型AUTO/MAN 间 0~1kΩ 电阻
满量程0~100% 占空比(反向)0~2.2V 差分电压
接线特征MAN 悬空,内部 1mA 上拉MAN 接 Vbat(>5.5V 触发)
判停休眠条件AUTO 无跳变 2048 时钟AUTO/MAN 回路开路
地偏移容忍±2V最大 2.2V 源偏移
适合谁MCU、上位机数字调速电位器面板、人工调速

五、休眠与唤醒:200µA 这笔账

电池供电设备的待机功耗是硬指标。TPIC2101 的休眠状态下 GD 拉低、内部 5.5V 基准(AREF)与负载断开,静态电流典型 150µA、最大 200µA;对应的运行状态是 4~10mA——差了两个数量级。休眠的触发全自动:AUTO 模式下命令消失 2048 时钟,或 MAN 模式下回路开路;任何有效的速度命令又把它唤醒回运行态。MCU 只管"发命令/停命令",状态机芯片自己维护。

这笔账落到实机上:一台配 12V/10Ah 电池的巡检机器人,按 200µA 上限估算,控制器待机一年只吃约 1.75Ah,理论待机时间远超电池自放电能撑的年限——整机待机功耗的短板反而在电池自放电和其它常供电外设上,控制器这块板不再是负担。

唤醒后还有一层内置保险:过压事件或休眠期间,INT 脚被内部小于 500Ω 的阻抗拉向地,积分器电容放空;电压恢复正常后 PWM 占空比从低处缓慢爬升——软启动不用软件参与。

六、过压欠压与窗口化限流:为什么它不怕浪涌误动作

过压保护:Vbat 升到 17~20V(典型 18.5V)芯片进故障态、切断栅极驱动,回差 0.5~0.99V,不会在阈值边上反复抖动。欠压保护:Vbat 跌破 7~8V(典型 7.5V)直接进休眠,回升到 8~9V(典型 8.5V)才恢复,回差 0.5~1V。抛负载(load dump)场景手册在绝对最大额定里给了 1ms 内 40V 的耐受值,推荐工况仍是 8~16V。

限流的判据更有意思。ILS 脚感测外部功率管漏极电压,与 ILR 脚(由 AREF 分压设定)比较,比较器偏移仅 ±10mV,共模范围 0.5~2.75V。ILS 高于 ILR 且栅极驱动为高时,先做闭环限流——把 INT 拉低压占空比;如果限流状态持续,就走窗口化锁存:

阶段判据时长(按 20kHz 换算)
单窗口监视8192 时钟内出现至少一次限流即置位约 0.41 秒
连续计数连续 8 个窗口全部置位才触发关断约 3.28 秒
关断期GD 拉低 65536 时钟,INT 保持放电约 3.28 秒
自动重启关断期满自动重试—
锁死条件重启后 8 窗仍全限流,需休眠→运行循环复位—
计数复位任一窗口内无限流,8 窗计数清零—

窗口与周期数来自 TI 数据手册 Current fault operation 节,秒数按 20kHz 振荡频率换算。

这套时序的价值在工程上:电机启动浪涌、越障瞬间的冲击电流,只会让个别窗口置位,下一窗口电流回落计数就清零——不误杀;真正的堵转或短路,电流持续超限,连续 8 窗约 3.3 秒后坚决切断。做 MCU 软件限流的都体会过那对矛盾:阈值定高了保护不来、定低了频繁误动作,还得配上复杂的延时退避逻辑。这颗芯片把时序固化在硬件里,出厂就是一套成熟的折中。

七、外围 9 件套与 STM32 怎么配合

芯片外围按手册推荐值搭即可,没有需要反复调试的参数:

引脚元件推荐值作用
V5P5钽电容4.7µF内部 5.5V 稳压稳定
MAN电阻 + 电容499Ω 1% + 0.1µF手动模式输入滤波
AUTO电阻 + 电容499Ω 1% + 0.47µF自动模式输入滤波
SPEED–INT电阻100kΩ 1%(最小 20kΩ)积分器,约 1 秒软启动
INT电容4.7µF与 SPEED 电阻构成 RC
ROSC电阻45.3kΩ定频,配 COSC 得 20kHz
COSC电容2200pF同上
CCS电阻27.4kΩ 1%ICCS = AREF/(2×RCCS)
ILR/ILS分压 + 检流点共模 0.5~2.75V限流阈值与检测

推荐值来自 TI 数据手册 Recommended external components 表。

MCU 侧用 AUTO 模式最省事:定时器输出 100Hz 命令 PWM,经开漏输出接到 AUTO 脚,高电平由芯片内部 1mA 上拉给出,MCU 与芯片之间天然没有电平冲突。代码里唯一要记住的是反向映射——命令速度越快,AUTO 端高电平占空比越短。

/* TPIC2101 AUTO接口:100Hz命令PWM + 开漏输出 */
/* 速度反向:AUTO端高电平占空比越小,命令转速越高 */
TIM_HandleTypeDef htim2;

void tpic_cmd_init(void)
{
    GPIO_InitTypeDef g = {0};
    TIM_OC_InitTypeDef oc = {0};

    __HAL_RCC_TIM2_CLK_ENABLE();
    __HAL_RCC_GPIOA_CLK_ENABLE();
    g.Pin   = GPIO_PIN_1;
    g.Mode  = GPIO_MODE_AF_OD;      /* 开漏输出 */
    g.Pull  = GPIO_NOPULL;
    g.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOA, &g);

    htim2.Instance = TIM2;
    /* 72MHz/7200 = 10kHz 计数 */
    htim2.Init.Prescaler = 7200 - 1;
    /* 10kHz/100 = 100Hz 命令频率 */
    htim2.Init.Period = 100 - 1;
    htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
    HAL_TIM_PWM_Init(&htim2);

    oc.OCMode = TIM_OCMODE_PWM1;
    oc.Pulse  = 100;                /* 初值常高:芯片保持休眠 */
    HAL_TIM_PWM_ConfigChannel(&htim2, &oc, TIM_CHANNEL_2);
    HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);
}

void tpic_cmd_set(uint8_t speed_pct)   /* 期望速度 0~100 */
{
    if (speed_pct > 100) speed_pct = 100;
    /* 反向映射:速度越快,高电平越短 */
    __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2,
                          (uint32_t)(100 - speed_pct));
}

void tpic_cmd_stop(void)   /* 停发命令,芯片自动入眠 */
{
    HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_2);
    /* 引脚回开漏高阻,内部1mA上拉,
       2048时钟无跳变后芯片进休眠 */
}

停机逻辑不用专门写:停掉 PWM 输出,引脚回开漏高阻,内部上拉把 AUTO 抬成持续高电平,约 102ms 后芯片自行入睡——固件不需要休眠指令,也不存在忘发命令导致整夜耗电的问题。

八、七步落地清单

步骤动作要点
1 定场景单向调速(轮驱/风机/泵)才用它正反转与制动需求换 H 桥方案
2 定输入MCU 用 AUTO 开集命令,人工面板用 MAN 电位器两种模式芯片自识别,不混接
3 照抄外围ROSC 45.3kΩ + COSC 2200pF 定 20kHzV5P5 的 4.7µF 钽电容不能省
4 设限流ILR 经 AREF 分压取阈值共模 0.5~2.75V 内,偏移 ±10mV
5 选功率管NMOS 栅极电容 ≤3300pF续流二极管按电机电流选
6 写固件100Hz 命令、占空比反向映射停机即停 PWM,休眠自动完成
7 上电验证变 Vbat 测有效电压恒定性堵转验证约 3.3 秒关断时序

总结

电池压降这件事,TPIC2101 的答案是把 Vbat 写进传递方程的分母:命令不变,电池从 16V 掉到 9V,输出占空比自动变大,有效电机电压纹丝不动,全工况精度 ±7%。它把三件 MCU 本来要自己扛的事做成了硬件——电压补偿(一条方程)、休眠管理(无命令 2048 时钟自动入睡,静态电流低于 200µA)、堵转保护(8192 窗口化判据,瞬时浪涌不误杀、持续堵转约 3.3 秒坚决切断)。定位也要说清楚:低边单管、单向调速,风机、水泵、单轮驱动正合适,需要正反转制动就回到 H 桥。下次给轮式机器人选电机控制方案时,先问一句:这 12V 电池的压降,打算让控制环路买单,还是让分母买单。

本文基于《TPIC2101 DC BRUSH MOTOR CONTROLLER》(Texas Instruments,SLIS060,1995 年 10 月)数据手册整理优化,并结合轮式移动机器人电机驱动方案的工程实践进行了系统化梳理。

需要定制开发?

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

立即微信咨询

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