☰
电机控制两大核心:听目标还是听力气?闭环到驱动实操
2026/10/8 13:53:30 网站建设 项目流程

干了十几年电机驱动,我最大的感受就是:电机这玩意儿,表面上都是“通电就转”,实际上每一台的“性格”都不一样。有的电机,你给它一个转速或者位置目标,它就一门心思追着目标跑,跑偏了还会自己修正;有的电机,你只告诉它“这次给我出多大力”,剩下的事它不管,你让它堵着它就堵着,电流有多大它就出多大劲。这句话往专业里翻译,就是电机控制系统里最常见的两种控制模式——位置/速度闭环控制和电流/力矩闭环控制。说白了就是:有的电机听“目标”,有的电机听“力气”。

这篇我不打算讲太虚的东西,就把电机家族里从直流有刷、空心杯、BLDC到永磁同步这些常见类型,按“听目标”和“听力气”这条线捋一遍。顺便把大家在选型、驱动、接线、调参中经常搜的那些东西,比如L293D和TB6612怎么选、ESP32C3驱动电机怎么接线、示波器怎么测极对数、S1工作制怎么算,全都串进实操里。想搞机器人、小车、无人机,或者刚接触电机控制的,可以参考着用,少走点我当年走过的弯路。

1. 先搞清楚电机在听什么:目标还是力气

1.1 一个比喻把两类控制分开

我习惯用“取快递”来给刚入行的朋友讲这个。

假设你让一个人去取快递,给他一个地址,也就是一个“目标”。他会自己看地图、躲车、再确认自己走没走偏,这是闭环。换成电机系统,就是位置环或者速度环。“听目标”的电机,控制器的核心工作是让实际值无限接近指令值:我说3000转,它就要到3000转;我说回到原点,它就要回到原点。这背后是误差在驱动控制量,所以也叫闭环控制。你给的指令是一个位置坐标、一段轨迹、一个速度值,剩下的校正工作全部由控制环完成。

另一种场景,你不需要他走到哪,只需要他“把20公斤的箱子从地上搬到桌上”。他出的力气大小,就是你要控制的量。搬到桌上可能一瞬间就结束了,但整个过程你只关心力气有没有超。对应电机控制,就是电流环或者说力矩环。“听力气”的电机,指令是电流值或转矩值,控制器不让电流超过这个值,至于转速掉到多少,它并不直接关心。你让它夹住一个鸡蛋,它就保持一个固定的夹紧力,哪怕蛋的尺寸有大有小。

需要强调一点:这不是两种电机硬件上的区别,而是控制指令层面的区别。同一个BLDC,你用FOC只给iq电流指令,它就是“听力气”的电机;你在外面套一个速度环,速度环输出的是iq指令,它就变成“听目标”的电机。甚至高端伺服里三环都有:最外层听目标(位置),中间层听目标(速度),最内层听力气(电流)。但最终判断它“听什么”,看的是最外层指令是什么。这个观点我反复跟合作方讲,因为很多项目失败,不是电机选错,而是从头到尾没有想清楚这电机应该听什么。

1.2 从热词看大家最关心的电机类型

这个比喻放回现实里,不同电机天然适配不同控制方式。我根据这些年接触的项目,把常见的几种电机类型和它们“听什么”整理了一下。大家搜索电机驱动、电机控制、电机选型时,最常遇到的就是这几类。

电机类型典型场景默认听什么常用控制方式
直流有刷电机玩具车、水泵、MG513P30_12V这类减速电机给电压就转,听“力气”居多PWM开环/速度环,H桥或单管驱动
空心杯电机医疗设备、小机器人关节、航模舵机类小惯量响应快,速度和电流环都常见小电流H桥,TB6612/L293D
步进电机3D打印机、雕刻机、开环定位本质听“脉冲目标”,靠脉冲数记位置细分驱动器,位置开环
无刷BLDC/永磁同步PMSM无人机、电动车、车用驱动电机可听目标可听力气,取决于控制器六步换相/方波,FOC/磁场定向控制
无稀土电机环保趋势下的车用/工业电机与PMSM类似,但磁阻转矩占比大FOC、最大转矩电流比MTPA
伺服电机机械臂、数控机床听目标(位置/速度),内层听力气位置-速度-电流三环,SVPWM

这里特别提一句无稀土电机。这两年车用驱动电机方向很热,无稀土电机主要靠磁阻转矩而不是稀土永磁转矩来出力,所以它的电机模型和参数辨识尤其重要,ANSYS Maxwell电机仿真里你会花很多时间在算Ld、Lq上。不做无稀土方向的可以不了解,但至少要知道这名字代表了什么,免得听到别人讨论时一头雾水。

步进电机是“听目标”的一个特例:它在位置上几乎是开环的,你给它多少个脉冲,它就走多少步,如果没有丢步,位置就是准的。所以3D打印机能靠它完成精确走位。这也是为什么步进电机适合做定位,但负载突变时容易丢步,所以才有人给它加闭环编码器,让它变成真正的“听目标”电机。步进的本质决定了它不擅长“听力气”,你要是硬让它输出恒定力矩,那电流和发热会让你非常头疼。

2. 听目标的电机:闭环控制与PID

2.1 位置环、速度环、电流环到底在听什么

博客园那篇直流有刷电机控制的老文章,我当年反复读了好几遍。它里面画的三环框图,几乎就是所有电机控制的骨架:最外层位置环,中间速度环,最内层电流环。位置环的误差经过PID变成速度指令,速度环误差再变成电流指令,电流环最后控制PWM输出给电机。每一环都在“听”上一环给的目标,但最外层目标才是人的意图。这套结构在所有伺服和大部分高性能BLDC控制里都能看到。

一个项目里,电机能不能精确停在某个角度,主要看位置环;能不能平稳加减速,主要看速度环;能不能快速响应负载突变,主要看电流环带宽。很多人调PID闭环控制电机转速时,只调速度环,不调电流环,结果就是:小负载没问题,一带负载就软绵绵,因为电流环根本没来得及把力矩提上去。电流环带宽不够,外环看到的电机就像一个反应迟钝的人,你喊他往左,他要顿半秒才动。

我自己的习惯是:先把最内环(电流环)调整为响应最快的环,再往外一层一层调。原因很简单,外环的输出是内环的指令,内环慢,外环再准也没用。就像你给一个人派了个目标,但他腿脚不利索,再好的导航也白搭。有些高端伺服还加前馈、陷波滤波器,但核心骨架从来没变过。你要理解一台伺服电机为什么能“指哪打哪”,本质上就是因为有这一层层嵌套的闭环在干活。

听目标的控制还有一个前提:必须有反馈。编码器、霍尔、磁编码器、反电动势观测器,总得有一个东西告诉控制器“现在实际在哪”。没有反馈的速度控制,本质上还是开环,负载一变转速就飘,那是“听天由命”,不是“听目标”。我见过有人用BLDC无感方案做位置控制,低速时反电动势太小根本观测不到,位置自然锁不住,最后只能换有感方案。所以在选型阶段就要想清楚:要听目标,就要给它一双能看见实际位置的眼睛。

2.2 示波器查看电机极对数:别凭感觉数磁铁

极对数这个词,玩BLDC和PMSM的人迟早要碰到。极对数就是转子转一圈,反电动势重复了多少次基本电周期。比如一台12极电机,磁钢总共12个极,那极对数就是6,转子转一圈,A相反电动势会出来6个完整正弦波。为什么这事不能凭感觉?因为FOC、六步换相、霍尔安装、速度估算全都依赖这个数字。极对数弄错了,电角度算错,FOC轻则抖动,重则飞车。别以为电机标称参数就可靠,我遇到过标称14极、拆开数出来10极的,厂家出厂铭牌都能写错。

测极对数最朴素的工具就是示波器。操作流程很直白:

  1. 把电机断电,和驱动器完全断开。
  2. 示波器两个探头分别接电机任意两相引出线,比如A相和B相。
  3. 用手或者另一台电机带动转子匀速转一圈,最好在转轴上贴个标记,数周期时容易对齐一圈起点。
  4. 观察示波器波形,数一圈里完整正弦波周期数。这个数就是极对数。

听起来简单,实际有三个坑。第一个坑,转子转得不匀速,波形频率忽高忽低,建议用电钻或另一台电机带转,转速保持稳定。第二个坑,线电压是两相信号之差,波形幅值比单相大,但周期数不变,放心数。第三个坑,极数和极对数傻傻分不清,外人常把“极数”和“极对数”混着用,14极电机的极对数是7,波形一圈也出来7个周期,不是14个。

如果你手边有MG513P30_12V这类直流有刷电机,测极对数就更简单,它是永磁有刷的,两根线输出的是换向后的脉动波形,数一圈里的脉冲个数接近极数,但不建议用这个去数有刷电机极对数,因为换向片数量和磁极数量不一定一样。有刷电机想知道极对数,直接拆开看磁钢数量最快,拆一次以后就不会忘。

顺便说个实战技巧:测极对数时,示波器时间轴不要固定死,先把时基打到能勉强看到一圈波形的量级,比如手动转一圈大概1秒,就把时基设为100ms/格。然后慢慢收紧时基,把波形展开数清楚。数的时候可以在示波器上开光标,一个光标对准波峰,另一个光标数到第十个波峰,再除以周期数,避免数着数着数丢。

2.3 电机参数辨识与仿真

“听目标”的闭环控制,最怕控制对象模型是错的。所以这几年电机参数辨识算法越来越受重视。说白了,参数辨识就是用特定激励信号去测电机,估算出绕线电阻Rs、交直轴电感Ld和Lq、永磁磁链、反电动势常数Kt等参数。传统做法是拿LCR表手测,但电感会随电流大小变化,实际运行点和LCR表测量点差很多,于是有脉冲电压注入、小幅正弦扫频、模型参考自适应(MRAS)等方法。做电机控制算法的人,绕不开这些关键词。

这些参数喂给谁?一个是电机仿真模型,一个是FOC控制器。MATLAB/Simulink里搭电机模型,或者用ANSYS Maxwell做电磁场仿真,都能看到不同电流下Ld、Lq的变化曲线。尤其Maxwell电机仿真,能直接把极对数、槽极配合、齿槽转矩、反电动势谐波都算出来。很多无人机电机选型前,会先用这个工具把候选电机扫一遍,对比反电动势波形够不够正弦、齿槽转矩够不够小。你要是纯做应用层控制,可能用不到这么深,但至少要知道:仿真是帮你提前避坑的,不是用来发论文的。

零序分量注入这个词,也常在电机控制群里出现。它和参数辨识、电机模型不直接相关,但在SVPWM调制里很有用:通过在调制波里注入三次谐波,相当于把正弦波峰值压低,让母线电压利用率更高。做高速弱磁控制时几乎绕不开。也有人研究三相电机的零序回路,在绕组不对称或共模电压过大时,零序电流会诱发轴电流,这是零序分量注入的另一个视角。新手先记住第一个就够,等做到高压电机或车用驱动电机时再深入研究也不迟。

VSG加三相电机这个组合,更多出现在车用驱动、微网研究里。VSG全称虚拟同步机,它让逆变器表现出类似同步电机的行为,控制对象还是三相PMSM,但算法里多了惯性和阻尼模拟。这不是入门内容,但如果你看到相关项目,至少知道它是在“给电机控制加一层人设”,让电机驱动系统对电网更友好。研究方向上确实能解决不少网侧振荡问题,但对做小车、机械臂的人来说,了解一下就行。

3. 听力气的电机:电流环、驱动与缓启动

3.1 电流采样与力矩换算:力气到底多大力

“听力气”的控制,核心是把电流测准。直流有刷电机和BLDC在理想模型里,输出转矩和电流成正比,T = Kt * I。这个Kt在数值上接近反电动势常数Ke(SI单位制下)。所以想控制力气,本质就是控制电流。你问一台电机“能出多大力”,最后一律要折算成“能吃多大电流”。

测电流一般通过采样电阻加放大器实现。低端采样的采样电阻放在下管和地之间,简单便宜;高端采样把采样电阻放在母线正端,适合看整体电流。控制板上的方案很多,常见是INA240这类电流放大器,直接配MCU的ADC。工业级伺服里则会用更高带宽的电流传感器或者霍尔电流传感器,来保证电流环带宽。这里要说清楚:电流环带宽决定“力气”的反应速度。电机堵转时,实际转速为零,反电动势为零,电流全部由驱动电压和绕组电阻决定。如果这时候不闭环控制电流,电机会一直吃大电流,直到发热烧毁。所以“听力气”的电机必须有一个持续的电流闭环,就像你让一个人一直搬20公斤,他不休息,早晚累坏。

实际项目里,要判断一台电机到底算不算“听力气”,就看它的最外层指令是不是电流/力矩指令。很多做张力控制、压力控制、电动夹爪的项目,都是典型“听力气”。它们不需要高速,但需要电流精确、响应快。这类控制别用普通直流电机开环糊弄,想省事也要在速度环外面再套个张力环,不然张力一波动,产品就废了。

有个容易忽略的细节:电流采样的时机。PWM在一个周期里有导通和关断两段,电流纹波也不同。如果你随便在PWM周期内采一个点,采到的可能是纹波尖峰,电流环算出来就噪声很大。正确的做法是同步采样,在PWM计数器的特定时刻触发ADC,保证每次采到的都是周期中间的平均电流。用STM32的高级定时器可以很方便做这件事,用普通MCU硬采,效果就差很多。

3.2 常用驱动芯片怎么选:L293D、TB6612、D24A、MG513P30_12V

驱动这块,问得最多的就是L293D和TB6612。两者都是老牌电机驱动模块。L293D是TI早年经典方案,单通道峰值1.2A左右,压降比较大,一堵转就烫得能煎鸡蛋。TB6612是东芝方案,单通道连续1.2A,峰值3.2A,导通电阻比L293D低不少,同样供电下电机能获得的电压更高,转速也会更接近空载转速。所以做小车、双电机底盘,我基本都推荐TB6612,除非你在跑纯教学项目,手头有L293D库存要消化掉。

D24A电机驱动板是另一种路子,常见于AGV和机器人底盘,板上自带电平转换和全桥驱动,额定电流比TB6612大一个数量级,适合接入MG513P30_12V这类负载较大的12V直流减速电机。注意,MG513P30_12V本身是一台带减速箱的直流电机,不是驱动芯片。它的标称电压12V,空载转速大概300转/分左右(不同减速比版本有差异),堵转电流能到2到3安培。如果我用TB6612驱动它,连续1.2A是扛不住的,一定要在软件里加电流限制或堵转保护;长期项目就换成D24A或更大电流的MOS驱动板。

驱动方案连续/峰值电流导通损耗适用场景要注意的坑
L293D0.6A/通道左右,峰值1.2A大,饱和压降高教学演示、小电流玩具一堵转就过热,必须加保护
TB66121.2A连续/3.2A峰值较小小车、小型减速电机连续电流别超1.2A,散热要留够
D24A驱动板数安培级较低AGV、底盘、较大减速电机逻辑电平要匹配,别把3.3V信号硬接5V板
半桥/集成MOS方案看型号,几十A都有低BLDC、伺服、车用驱动需要死区、自举电路配合

选驱动芯片还有个容易被忽略的误区:只看峰值电流不看热阻。TB6612标称峰值3.2A,那是几十毫秒级别的脉冲,你要真拿3A连续跑,芯片会热保护。工程上选型要用“连续电流×安全系数”来核对,安全系数我一般取1.5到2。驱动芯片长期工作在80度以上,寿命会很差,所以别把价格省在散热上。

3.3 电机缓启动电路原理与堵转保护

电机缓启动这个话题,几乎所有工程里的直流电机都会遇到。为什么需要缓启动?电机静止时反电动势为零,绕组电阻又很小,一上电就是满压直通,电流峰值可能是额定电流的几倍甚至十几倍。这不光烧电路,对减速齿轮箱、对机械负载也是硬冲击。你让机器人从静止直接满载起步,齿轮要是打滑过,就知道缓启动多重要了。响亮的“咣”一声,往往就是齿轮或联轴器受伤的前奏。

缓启动可以在软件里做,也可以在硬件里做。软件方案最简单:PWM占空比从0开始,按斜坡慢慢升到目标值,升速时间一般是几百毫秒到一两秒。硬件方案常见的是在电源回路串NTC热敏电阻,冷态电阻大,上电时起到限流作用,热了电阻变小,相当于自动恢复;也有用RC积分器把EN脚电压慢慢抬高的软启动电路。两套方案我都用过,软件斜坡灵活,但MCU死机时保护也没了;硬件缓启动不依赖代码,在安全相关的场合更可靠。

堵转保护和缓启动经常是一对出现。电机转不动时电流持续飙升,如果不检测、不动作,驱动芯片会先烧。实现堵转保护有两个思路:一是电流采样,设定一个阈值,超过后延迟几百毫秒强制PWM关闭;二是反电动势或测速判断,电机有指令但转速传感器长时间测到零,就判定堵转。哪怕用最简单的延时判断,也比什么都不加强。

很多人做小样机,只在MCU里加一个过流判断就完事。但别忘了,电流采样需要滤波,电机启动瞬间电流本来就高,别把启动误判成堵转。我习惯的做法是:电流超过2倍额定且持续超过200ms,才判定堵转;启动期间的800ms内不开启这个判断。这样既保护了驱动,又不会让电机动不动就“罢工”。

4. 从选型到接线:ESP32C3和STM32驱动电机实操

4.1 ESP32C3驱动电机连接图:必须有两层“保险”

现在很多原型项目喜欢用ESP32C3,便宜、WiFi/BLE都带,做个小车或IoT设备很方便。它驱动电机的连接图,网上搜到的基本都是类似下面这种,我直接给一个能用的版本,以TB6612驱动一路MG513P30_12V为例:

ESP32C3 TB6612 MG513P30_12V GPIO4 ----> AIN1 GPIO5 ----> AIN2 GPIO6 ----> PWMA 3V3 ----> VCC(逻辑电源) GND ----> GND 外部6-12V ----> VM(电机电源) 外部GND ----> PGND/GND TB6612 AO1 ---> 电机正极 TB6612 AO2 ---> 电机负极

这么接看起来简单,但要真的稳,得加两层“保险”。第一层是电源。电机电源和逻辑电源要分开,外部电源给VM和PGND,板子的3V3/5V只给逻辑。电机一启动,电流会突然吃掉几百毫安甚至几安培,如果和MCU共用一个电源,电压跌落直接导致蓝牙断连或者MCU重启。VM端还要并一个大电解电容,比如470uF到1000uF,放在驱动板附近,吸收电机换向产生的反向尖峰。

第二层是信号电平。ESP32C3是3.3V逻辑,TB6612的逻辑电平范围号称支持3.3V,但实际上有的模块在3.3V边缘时容易不稳定。我用下来最保险的做法是:AIN1/AIN2/PWMA的信号线上串一个1k电阻,并在入口处加下拉,防止上电瞬间GPIO浮空时电机猛转。如果你用D24A这类驱动板,更要先看手册确认逻辑电平是否兼容3.3V,不兼容就得加电平转换芯片或者光耦隔离。这不是玄学,是单片机复位瞬间GPIO状态不确定导致的常见“飞车”问题。

另外,ESP32C3的GPIO驱动能力和STM32不太一样,引脚输出电流小,但控制信号只要电平正确就行。真正常出问题的是PWM频率和分辨率:ESP32C3的LEDC硬件支持足够驱动直流有刷,但你要做FOC那种需要高分辨率、多路互补PWM的场景,它就不太够用了,老老实实上STM32。

4.2 从直流有刷到BLDC:PWM控制电机的基本姿势

接线没问题以后,控制方法就回到PWM占空比。对直流有刷电机,PWM控制是最好理解的:占空比越大,平均电压越大,转速越高。但PWM频率怎么选,很多人不在意,结果电机要么吱吱响,要么驱动器发热严重。一般直流有刷电机的PWM频率在10kHz到30kHz之间很常见,低于16kHz耳朵能明显听到噪声,我习惯放到20kHz以上,耳机里一片安静。

BLDC就不一样,它需要换相。方波控制靠霍尔传感器每60度电角度换一次相,六步换相;如果无感,就靠反电动势过零点检测。FOC则是把三相电流矢量分解到d轴和q轴,d轴管励磁、q轴管力矩,所以FOC天生适合“听力气”——你给q轴电流指令,它就输出对应力矩。这就是为什么无人机电调、车用驱动电机都用FOC,因为效率高、噪音小、力矩控制线性好。从用户角度看,FOC让电机从“又吵又闯”变成“顺滑细腻”。

PWM有一个容易忽略的细节:电机是感性负载,PWM关断瞬间绕组电流不能突断,必须靠续流二极管或者驱动芯片内部的续流路径把电流释放掉。这就是为什么不要自己拿两个MOS乱搭H桥,死区、续流、栅极驱动都容易出错。用L293D/TB6612这类集成驱动芯片,续流问题芯片内部已经处理了;如果你自己搭MOS驱动电路,一定要加栅极电阻、死区时间和桥臂保护。死区时间留多少?一般看MOS栅极电荷和驱动电流,几百纳秒到几微秒之间,调太小会上下管直通炸MOS,调太大输出波形会畸变。

4.3 工作制S1怎么算:不要把电机当永动机

电机选型时,标称电压电流看着都够,装到设备上狂发热,多半是没有算工作制。S1工作制是连续工作制,意思是电机在额定负载下可以一直运行,温度最终稳定在允许值以内。计算S1的核心就一句:热平衡。电机损耗功率P_loss等于铜损加铁损,这些热量通过散热路径最终都散掉,温升ΔT = P_loss × R_th,R_th是热阻。允许温升除以热阻,就是能承受的损耗功率,再反推电流。

所以S1额定电流可以近似按 I = sqrt(ΔT_allowed / (R × R_th)) 来估。额定值铭牌也会直接给出,但如果你在做改型设计,需要自己算,这个公式够用。要注意R会随温度升高而变大,所以用热态电阻算更贴近实际。比如一个电机热态电阻2欧,热阻5开尔文每瓦,允许温升80K,那允许耗散就是80/5=16瓦,电流就是sqrt(16/2)=2.83安培。当然这只是简化算法,实际还要考虑铁损、导热路径不均匀,但趋势很清楚。

至于“怎么计算S1工作制的电机,可以应用到其他工作制上”,这个问题很关键。很多人直接把S1的电流用到S2短时工作制,觉得短时过载没关系,结果把电机烧了。反过来,把S2 60s的短时工作制当成S1连续用,同样会炸。道理在于:短时工作制(S2)允许利用电机的热惯性,带着一定过载运行,但前提是有停机间歇;周期性工作制(S3)还要算负载持续率。你可以从S1热模型出发推S2短时允许过载倍数,前提是运行时间远小于热时间常数,短时温升没到稳态就能停下来散掉。结论要记住:S1是“一直扛”,其他工作制是“扛一会、歇一会”,换算核心是热时间常数和等效发热,不是简单乘个系数。

我把工作制的计算也归到“力气”这个大类里,因为力矩降额和热保护本质上都是在回答一个问题:这台电机能持续出多大力气。很多人只关心瞬时大力气,忽略了热积累,最后电机烧了还在怀疑驱动芯片质量问题,其实问题出在负载率算错了。

4.4 开源固件入门:VESC与Moteus

如果你不想从零写FOC,开源固件是最好的起点。VESC是目前BLDC/PMSM控制里传播度很高的开源方案,支持FOC、无感/有感、电流环、速度环、位置环,还有自动参数辨识。你接好驱动板,插上USB,在VESC Tool里跑一遍“电机检测”,R、L、磁链、极对数都能估出来,然后就能转。很多电动滑板、电动独轮车、无人机项目都用它。它的源码和文档都在GitHub上,适合研究FOC的人作为首选参考。

Moteus则更偏“高级伺服”路线,它把位置环、速度环、力矩环集成得非常干净,可以通过CAN总线直接发位置指令、速度指令或力矩指令。你如果想让一个关节模组既“听目标”又“听力气”,Moteus就是很好的参照物——它内部其实就是三环齐全,外面给你一个模式切换。对着这两个开源项目看,你会发现电机控制没有那么多玄学:目标环和力气环是层层嵌套的关系,理解了电流环,其他环就是套娃。

以前我总觉得开源固件只是玩具,真正项目还是要自己写。后来在几个快速原型项目里直接用了VESC,省下的时间不是一两天,是一两周。当然,产品化的时候你会遇到成本、认证、定制算法的问题,那时候再回到自研也不迟。但作为学习工具,VESC和Moteus的价值被严重低估了。

5. 常见问题与排查实录

5.1 电机不转、驱动板发烫:先查这五件事

我调试电机,十次有八次问题出在接线和供电,而不是代码。电机不转或者驱动板烫手,先按这个顺序查:

  1. 共地。MCU的GND、驱动板的GND、电机电源的GND必须可靠连在一起。信号是相对的,地不是同一个,PWM传过去全是乱的。
  2. 使能和逻辑电平。很多驱动板的EN/PWM引脚默认要拉高才输出,如果MCU复位期间引脚为低,电机自然不动。3.3V单片机驱动5V逻辑模块时,信号电平可能不够,该加电平转换就加。
  3. PWM频率和占空比极性。占空比0和1在某些驱动里还会处理成刹车或全通,看看电机是不是实际一直在通电但你这端以为它在停。
  4. 电源能力。用万用表量驱动板VM电压,电机转起来时电压掉没掉,掉得多就是电源不够或者线太细。
  5. 大电容。VM端那个电解电容不能省。你用示波器看VM波形,会发现电流换向瞬间有高压尖峰,大电容就是把尖峰吃掉的。

这套排查顺序我几乎贴在工位上。有一次同事新焊的板子电机不转,查了半天发现是逻辑电源和功率电源的GND分开布了,中间只有信号线连着,地环路造成驱动芯片逻辑混乱。把两个GND一点连起来后,问题立刻消失。

5.2 PID转速震荡与响应慢:手动整定顺序

PID闭环控制电机转速,调参是最容易劝退新手的环节。我最推荐手动整定而不是一上来就扔给自动整定,因为自动整定给的参数在电机控制里往往太激进。顺序是这样:先把积分项和微分项设成0,只留比例项。从小到大加比例,看到转速开始震荡,停在一个幅度,然后退回到震荡点的一半左右。这时候系统稳态误差可能还很大,再慢慢加积分项,让稳态误差收敛。最后如果需要抑制超调,再加一点点微分项。

有个细节:PID的采样频率太低,参数再对也没用。速度环采样频率至少是系统机械带宽的10倍以上,电流环则要快到PWM频率同级。很多人调半天发现震荡,其实是采样延时太大,不是因为参数不对。你可以先用示波器看转速反馈波形,如果每个采样点之间都隔了很久,先提高采样频率再来调PID。

还有种情况:电机本身有齿槽转矩或者负载周期性波动,速度环会一直有小幅震荡。这时候不要硬加PID增益,先看是不是机械问题。轴承不顺、联轴器偏心、齿轮箱打齿,都会表现为转速波动。我见过有人把电流环调到最高增益去压一个机械振动,结果驱动板发热严重,最后换了个联轴器就全好了。

5.3 极对数数错导致的奇怪抖动

这类问题最具迷惑性。我见过一个BLDC项目,电机低速运转时还算正常,一加速就剧烈抖动,偶尔还会反向飞车。查霍尔、查MOS、查电流采样,全都没问题,最后用示波器量反电动势,数出来实际极对数是5,而程序里配成了3。电角度和机械角度比例错了,FOC里的Park变换坐标全错,转矩自然乱。

所以拆机数磁钢、示波器看波形,这两件事在做FOC之前一定要做。已经有FOC跑起来的朋友,可以顺手把极对数、编码器线数、换相顺序都验证一遍。编码器线数和极对数要匹配,不然电角度反馈会周期性跳跃,表现就是到某个位置突然抖一下,特别像机械卡顿。这种问题最容易让人误判成“该换电机了”,其实是配置错了。

另外说一句,霍尔安装角度也有讲究。120度或者60度电角度排列,控制器的换相表和霍尔顺序必须对应。很多人直接从网上抄代码,霍尔上电一试发现方向不对,就以为要改霍尔线序。其实只要在软件里重新映射一下换相表就能解决,不用动硬件。

最后再分享一点个人体会

做电机这行,听得最多的就是“这不就是给电加个PWM嘛”。真上手就会发现,目标的准、力气的狠,是完全不同的两套功夫。我个人习惯是:凡是有编码器的项目,优先把位置环/速度环做起来,让电机明确“听目标”;凡是做张力、夹力、电动刹车这类应用,直接盯电流环,让电流采样做得准准的,再谈别的。驱动芯片宁可选大一个规格,也不抠那几块成本,散热和软启动是保命用的。

最后分享一个小技巧:新电机到手,别急着写代码,先花十分钟用示波器把极对数和反电动势波形看一遍,再对着铭牌核一遍。这十分钟,能帮你省下后面三个晚上的排查时间。电机这行经验都是踩坑踩出来的,但有些坑,真的完全可以不用踩。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询