人类文明的每一次跃进,都伴随着能量转换效率的质变。蒸汽机发明是工业时代的开端,这时候以煤炭为主要燃料,将燃料燃烧的热能转化为机械能,转换效率约5%。自从19世纪初期内燃机发明以来,初期效率就能达到10%~15%。
百年后内燃机将石油能量释放出20%-35%的动能,极大方便了人类的出行以及工业活动,以至于我都能开上汽车了。到现在据最新数据:柴油机的最高销量已经可以做到53.09%。
而永磁同步电机已经可以达到最高97%的转换效率——这标志着电气化时代的技术巅峰:电动机正在重构能量转换的边界。
你家里的各种家用电器,比如扫地机、洗衣机、吹风机、净水器、风扇、吸尘器、电脑等等,但凡能动的,里面都至少有一个电机,甚至手机里都有一个小小的振动马达。
马路上的汽车中,电动汽车的比例也越来越高。甚至箱货、叉车、起重机一些特殊作业车辆都已不再使用内燃机而是由电机驱动。
回到本文的主题:嵌入式工程师、硬件工程师、电子工程师等等,但凡是做电子产品开发的,在自己的职业生涯里估计都难以避免的和电机驱动开发打过交道。
我作为拆解博主的身份,往期也拆解过非常多的与电机驱动相关的产品,比如电瓶车驱动器、电动牙刷、吸尘器等等。
而作为工程师,我自己也设计过许多款电机驱动板,例如大型无人售货机里面的XYZ伺服电机控制板、小型售货机里的多通道货道电机驱动板、各种各样的无人机电调板、轮毂电机驱动器、平衡车控制板等等。
在电子产品常用到的电机主要分有刷直流电机和无刷直流电机。有刷电机驱动比较简单,单向转动的场合,一个三极管加一个MOS管即可实现驱动;而需要正反转的,用四个MOS搭建一个简单的H桥,使用四个IO信号就可以驱动其正反转、调速。
但是无刷直流电机的驱动往往比较复杂。无刷电机一般有三根相线,而电源、电池这种往往只有两根供电线,提供直流供电,那么如何使用这个直流电来驱动无刷电机呢,这里就需要一个逆变的过程。

使用六个开关管构成一个三相H桥电路,按照一定的时序驱动这六个管子的通和断,就能让电机转动起来。这里的时序,实际上来自两个因素,第一个是需要让电机怎么转,第二个是现在电机转到什么地方了。前者是我们的要求,后者则需要通过一定的观测手段来观测,比如上图中,在每个相线上用一个分压电路进行反向电动势采样,采集到的电压大小和相位关系即可推算出电机绕组和转子上磁极的位置关系。观测手段还有其他的,比如霍尔传感器、旋转编码器、高频注入、磁链观测等方案,甚至现在还有用图像处理的手段来观测电机转子位置的。
最简单的方法自然是使用传感器直接去测量,比如机器人领域常用的光电编码器,精度非常高,但是价格自然也不便宜,另外还有旋转变压器和巨磁阻等方式。
我个人认为性价比最高的办法就反电动势测量或者霍尔传感器测量的方法。前者只需要几个电阻即可实现,后者需要的霍尔传感器成本也非常低,而且这种方法,对处理器要求不算高,针对某些领域的电机驱动,用这种方法是最香的。
有时候不方便安装光电编码器等直接物理量测量的设备,就可以采用无传感器的方案,比如高频注入、滑膜观测、磁链观测等等,这种不需要任何外设,纯信号处理手法,看起来不增加硬件成本。但是这种对算法要求比较高,而且需要性能较强的处理器,所以实际上成本也不低。
还有一些看起来耍帅的测量手法,比如上面这些,看着没有一个便宜的方案。这些往往都是应用于特殊领域,一般场景也支付不起这个成本。
以上这些检测转子位置的方案,选择时除了考虑成本,更关键的是根据是否需要接触、是否需要0转速启动、精度要求、环境条件等进行选择。
再说说3相H桥的实现。不同的功率的电机,其3相H桥所使用的器件和策略也略有不同。
针对中小功率的无刷电机,使用6个MOS管就可以实现驱动。一般有两种桥臂拓扑,一种是上管用PMOS下管用NMOS,另一种是上下管都用NMOS。
两种拓扑各有优劣,从栅极驱动方面看,PMOS+NMOS的方案更简单,因为上桥臂是PMOS的时候,给低电平就导通;而NMOS+NMOS的方案中,上桥臂需要自举驱动。但是,我们都知道PMOS因为工艺问题,往往比同等价格的NMOS导通电阻更高,所以其损耗更高,同时成本也相比而言会略高一点。还有一点就是,PMOS的寄生电容更大,这种情况下开关频率相应的就会低于NMOS。当然,由于di/dt小了,虽说开关频率低了点,但是EMI表现却比NMOS+NMOS的拓扑好一些。
针对一些大功率驱动场合,比如电动公交车的主轴电机驱动,一般会用到IGBT作为开关器件。这一块我做的比较少,就不一本正经胡说了。

上面说完了3相H桥的结构和转子位置检测手段,再说说这个H桥怎么驱动。栅极驱动的本质是对MOSFET的栅极寄生电容Cgs进行快速充放电。正常你可以拿一堆三极管来搭这个电路,如果是NMOS+NMOS的拓扑,用三极管搭用的器件稍微多一点,要做自举电路。但是用一个集成预驱,外围电路就比较少了。上面是使用栅极驱动器CH283驱动三相H桥的原理图,来自CH283的数据手册。
从原理图看,使用了集成栅极驱动器芯片之后,外围只需要三个电容,以及六个栅极信号上串联的电阻。众所周知,串这两个电阻的作用是为了降低开关时的振铃,说白了还是栅极这一段走线的寄生电感惹的祸,如果你从HO和LO到栅极的走线特短且粗,寄生电感小且开关频率不高,甚至也可以不需要这六个电阻。
所以使用集成栅极驱动器极大程度简化了3相H桥的驱动,在这种情况下,一个完整的电机驱动的最小单元,主要包括这几个电路模块:微处理器及外围电路、H桥电路及预驱、转子位置检测电路。这个系统里,有反馈有输出,其实也是一个完整的负反馈自动控制系统。

从控制系统的角度看,整个系统包含输入的电机转速期望值,减去观测到的实际转速,得到的转速通过PI运算输出电流参考值(实际指转矩电流参考值,在方波控制中,可以理解为电流幅值的参考值)。
把电流参考值传递给电流控制内环,与实际采样得到的电流做比较,得到电流误差。电流误差经过PI控制器,输出电压参考值,MCU通过PWM调制和电流斩波控制,最终输出三路互补PWM来驱动三相桥臂,最终输出三相电压给到电机。

忽略掉三相绕组的互感不对称等因素,建立的三相电压方程如上。
一般情况下电机相线上的电流包络有两种波形,一种是三路相位差120°的梯形波、另一种是三路相位差为120°的正弦波。
这是一个梯形波驱动的相电压。
展开之后的波形,所以前面说包络是梯形波。

正弦波驱动的相电流或者相电流波形我手机里没找到示波器图,于是用软件绘制了一个,大概就是这个样子,但是实际上这个波形也是包络。实际上正弦波驱动器是通过MCU产生SVPWM来驱动栅极驱动器的。
对于类似多旋翼无人机这种场景,一般是电机提供的升力与转速的平方成正比,所以电机转速不会低,这种情况下不存在零转速下保持大扭矩,所以采用六步换向的梯形波更合适。实际上,目前开源无人机市场上所能看到的BL-S、AM32等大多使用的是六步换向的梯形波。
这是我前几天做的两款四合一电调(右侧两个,左侧的是飞控)。采用bls开源电调固件,使用导通内阻低至1毫欧以下的NMOS,大的这个每一路电流可以做到50A,小的四合一电调每路电流可以做到30A左右,电压支持到25V。主要用于穿越机、无人机等场景,所以相电压波形也是梯形波。最近我也在找适合用来做四合一电调的MCU,发现沁恒的CH32V203、CH32V303不论是从主频、容量、还是外设、价格等各方面看,都更适合用来做四合一电调的主控。
针对电瓶车轮毂电机、机器人腿轮、平衡车电机、电动汽车等等这种应用场景,需要电机在低转速的时候能够保持非常大的扭矩。比如一个电动车要上坡,即便上坡时速度较慢,但是还是可以继续驱动电机转动。或者说需要低噪音、高能效比的一些应用场景下,需要使用正弦波驱动,这类应用可以选择CH32L103系列的MCU。带PDUSB接口、功耗还低,假如想给产品做个USB模拟U盘拖拽升级也很方便。
这两年无刷电机应用的领域越来越广泛,正如文章开头所讲,几乎绝大多数电子产品里都有电机,而无刷电机的比例也非常高。尤其近些年有很多新出的潮流电子产品,比如无人机、穿越机、暴力风扇、高速吹风机、吸尘器类产品等等,都需要用到无刷电机,而且由于这类产品往往需要高转速,所以使用BLDC梯形波控制足矣,可以说随便找个MCU都几乎能胜任这个事情,所以上游厂商们都杀疯了,大家一方面卷价格、一方面卷集成度。恨不得让你买个芯片贴在板子上就能驱动电机转动。所以我也一直在留意市面上各种各样的电机驱动类芯片。
前几天看到沁恒的CH32M030系列,就是把MCU和3相半桥的栅极驱动器封装在一起的。我感觉有点意思,拿出来给大家讲讲。

其实沁恒有很多集成了预驱的MCU,只是我觉得CH32M030这个系列更适合我做的一些东西。数据手册链接:https://www.wch.cn/downloads/CH32M030DS0_PDF.html
它集成了青稞RISC-V3B处理器,最高72MHz系统主频;
内置高压LDO,VHV支持额定5~28V系统供电;
预驱动I/O供电VDD8额定电压:5~10V;
4个双N型MOSFET半桥驱动器,内置低压降自举二极管,外部只需要电容;
1个16位高级定时器;
2组差分电流采样;
4个运放OPA和3个模拟电压比较器CMP;
理论上有以上特性就足以做低成本的电机驱动器去大杀四方了。但是它居然还有2组Type-C和USB PD控制器及PHY、全速USB2.0控制器及PHY、支持BC1.2及多种HV DCP/CDP充电协议等功能。这意味着什么?意味着你可以节省更多的成本了。而且有一点很重要:它有四个运放OPA,其他大多数能做电机驱动的MCU是三个运放OPA。


现在很多产品都需要支持PD充电协议或者BC1.2协议,举个例子,要做一个支持Type-C快充的暴力风扇,你只需要一片CH32M030外挂6个MOS几乎就够了,剩下的什么快充功能、相电流采样、母线电流采样等等都可以通过CH32M030来实现。
而且看到它里面有4个双N型MOSFET半桥驱动器和4个运放OPA的时候,你就应该能想到,它还可以做其他东西,比如桌面级的可调数字电源。为啥说数字电源呢,看看看它的特点:
CH32M030还有两个独立的10位可编程灌电流模块,可以分别驱动两个DC-DC芯片产生所需的任意电源电压,支持DC-DC输出电压动态实时调整。
提供4个用于Type-C接口的CC引脚,2个独立PD控制器,可以用于Type-C接口拦截转发处理,双向Type-C通讯,多个C口的复杂PD应用等。
所有CC引脚均可以承受28V高压,支持DRP、Sink和Source应用,最高支持140W的PD充电。这个功率就决定了你做的数字电源功率还不小呢!
这简直是为做桌面数字电源天然打造的芯片啊!我觉得这个桌面级的数字可调电源是一个非常棒的创意,已经可以立项了。但是在这之前我得先把电调的坑填了!
于是我第一时间申请了一块评估板,打算做用它做支持PD快充的暴力风扇、航模无刷驱动器等方案。感兴趣的可以一起搞,如果感兴趣的人多,到时候拿出来大家一起玩!