如果你正在玩FPV穿越机,那对“电调”这个词绝对不陌生——全名电子调速器,干的事情就是把电池送来的直流电,变成无刷电机需要的三相交流电,顺便还得听懂飞控给你的油门指令。真正让我从“买成品”走上“自己动手做”这条路的,是最近连续折腾的几款电调:一面是穿越机常见的FPV小电调,一面是圈子里被吹得神乎其神的VESC开源电调。这篇文章不打算泛泛介绍概念,而是把我手搓电调过程中踩过的坑、查过的资料、测过的数据,原原本本记下来。不管你是想让自己的穿越机更“DIY”,还是想给电动滑板、机器狗做一套能再生刹车的驱动,这篇都应该对你有用。
1. 把电调拆开看:它到底怎么让电机转起来的?
1.1 有刷、无刷和FOC:电调家族的三条技术路线
很多新手第一次听“电调”其实是懵的,以为所有电调长得都一样。实际上按控制方式分,至少能看到三条完全不同的路线。
最老牌的是有刷电调,用在玩具车、老式船模上,结构简单到两根线进去、两根线出来,靠一个MOS管做PWM调速就行,电机内部有碳刷换向。这东西没什么好折腾的价值,我基本跳过。
然后是无刷方波电调,也就是穿越机圈最熟悉的类型,BLHeli、BLHeli_S、BLHeli_32都算这一类。无刷电机没有碳刷,想让转子转起来,必须由电调主动切换定子线圈的通电顺序,这个动作叫“换向”。方波电调的做法是六个MOS管组成三个半桥,按六步顺序打开,相当于给电机通三相方波电流。优点是电路简单、油门响应直接,缺点是低速时有顿挫感、噪音大,而且没有真正的电流闭环。
最后是FOC矢量控制电调,VESC就是这一类代表。FOC全称Field Oriented Control,直译是磁场定向控制,它不再是傻乎乎地六步换向,而是实时估算出转子位置,把定子电流分解成“产生力矩”和“削弱磁场”的两个分量,分别闭环控制。这样电机低速也能非常顺滑,还能做到能量回收刹车。代价是运算量巨大,单片机的ADC、PWM、运算单元得同时高速工作,所以VESC普遍用STM32F4这类Cortex-M4芯片。
1.2 无论哪种电调,都离不开这四个环节
自己动手做电调,首先得把系统看成一串链条。我认为不管FPV小电调还是VESC,都逃不掉以下四个环节:
第一环是MCU控制核心。它负责读你的油门信号,不管是PWM、DShot还是CAN,然后算出下一步该开哪几个MOS管。FPV电调常用8位或者ARM Cortex-M0芯片,VESC则用Cortex-M4。
第二环是栅极驱动。MCU的IO口输出的是3.3V或者5V的弱信号,直接推不动大功率MOS管,尤其是上桥臂的MOS管源极会跟着电机相线一起浮动,必须靠栅极驱动芯片把控制信号隔离并抬高到合适的电压。
第三环是功率级,也就是三个半桥、总共六颗MOS管。它们按高频开关把电池电压斩波成近似正弦或方波的电信号。MOS管的开关速度、导通内阻、散热能力,直接决定电调能不能稳定工作。
第四环是采样反馈。没有反馈的控制就是开环,遇到负载变化容易失步。方波电调至少需要检测反电动势过零点来换向;FOC电调则需要每相电流采样,甚至还需要编码器或高频注入来估算转子角度。
把这四个环节在脑子里过一遍,再看任何一款成品电调的电路板,基本都能对号入座。接下来先讲更贴近穿越机的FPV小电调,再做VESC,难度循序渐进。
2. 先从FPV电调下手:自制BLHeli小电调为什么靠谱
2.1 目标定位:先给自己定三条硬指标
在画PCB之前,先别急着买料。我建议先确定三个参数:额定电流、支持电压、通信协议。我第一款自制FPV电调的目标是驱动1S到2S的小穿越机,电机是1104级别的,所以额定电流定在6A,峰值10A,电压范围3.7V到8.4V。通信协议我选了DShot300,因为BLHeli_S固件原生支持,而且DShot比传统PWM信号抗干扰能力强太多——遥控信号不是模拟电平宽度,而是数字帧,飞控和电调之间更像走串口。
如果你只想做入门款,那可以先把目标放到更保守的单电池3A级别,用一个ATmega8芯片配合BLHeli固件就够了。但我的建议是直接上BLHeli_S架构,用EFM8BB21F16G这颗8位单片机,频率高、外设够用,而且BLHeli固件对它有专门优化。额定电流不是越大越好,因为MOS管耐流越大,栅极电荷也越大,驱动电路和布局难度会指数上升。实际上新手最容易犯的错,是以为“想支持更大电流就堆更多的MOS并联”,结果栅极驱动供电不足,反而高频振荡发热爆炸。
2.2 硬件选型和原理图思路
自制FPV电调最经典的方案,是MCU + 栅极驱动 + 六颗NMOS + 电源稳压 + 采样电阻。以我做的这款BLHeli_S电调为例,物料清单大致是这样:
| 模块 | 选型 | 说明 |
|---|---|---|
| 主控MCU | EFM8BB21F16G | BLHeli_S适配好,QFN封装体积小 |
| 栅极驱动 | 6颗分立驱动或FD6288集成三路半桥 | 我开始用分立驱动,后来发现集成芯片更好焊 |
| MOS管 | 半桥对管,N沟道低压MOS | 2S电池选30V耐压,6A下选5mΩ内阻 |
| 稳压 | 5V LDO给小单片机供电 | 不能直接从电池去MCU,不然压降会烧芯片 |
| 采样 | 相线反电动势采样电阻分压网络 | 方波换向必须靠它检测过零 |
原理图上有几个细节值得单独拿出来说。一是栅极驱动芯片的自举电容,它的作用是维持上桥臂MOS管栅极电压高于源极。自举电容容量太小,PWM占空比持续接近100%时电容没机会充电,上桥臂驱动就失效。这个坑我亲自踩过,后面会单独讲。二是MCU的ADC参考电压一定要稳定,BLHeli用反电动势过零检测时,参考电压如果跟着电池电压波动,会直接导致换向点误判,轻则电机抖动,重则烧MOS。三是布局上功率环路要和控制信号分开,这是后续所有调试痛苦的根源,越早规划越好。
2.3 焊接和布局的几条实战经验
打完样之后,真正折磨人的是焊接和调试。说一下我实际操作的顺序:先焊MCU和稳压部分,不焊MOS管,然后给板子供电,用下载器把BLHeli_S的bootloader烧进去,确认单片机活着。再焊一片半桥,用手转动电机,用示波器看反电动势波形。逐步增加功率级,直到六个MOS管全部上板。千万别一上来就把所有件焊完,因为如果短路或焊桥,你根本分辨不出是MCU问题还是MOS管问题。
另外,MOS管的散热和布线是决定成败的地方。FPV小电调PCB通常只有一层铝基板,但很多自制板用的普通双面板,那就要在MOS区域多打过孔,让热量能够传导到背面铜箔。我做的第一款电调连续烧了两颗MOS,最后发现并不是电流超限,而是MOS管的G极走线太长,导致米勒平台振荡,开关损耗暴增。解决方案是在G极靠近MOS管处串联一个10Ω到22Ω的电阻,抑制振铃。后来再用热成像仪测,表面温度直接从110℃降到70℃左右。这个改动成本不到一毛钱,收益却是巨大的。
3. 硬核升级:自制VESC,把FOC拉到桌面
3.1 为什么都想拥有一块VESC
如果说BLHeli小电调是“能干活”,那VESC就是“干得漂亮”。VESC这个名字来自开源作者Benjamin Vedder的缩写,作者本人把全部硬件资料和固件都公开了,所以你能在GitHub上找到完整的原理图、PCB文件、固件源码和调试工具“VESC Tool”。
我选择做VESC的动机很实际:想把电动滑板的无刷电机做成能动能回收的系统。普通方波电调刹车就是给绕组短接或者反向通电,能量白白浪费;VESC的FOC控制在做制动时可以直接把动能转换成电能回充到电池。这个特性对长下坡太有用了,而且电流闭环让滑板起步、加速、点刹都像丝般顺滑。另一个重要原因是VESC的可配置性极强,电机的极对数、电阻、电感、磁链常数这些参数都可以通过在线检测自动辨识,换不同电机不需要重新写代码。
3.2 做VESC 4.12还是VESC 6.x,怎么选
VESC硬件版本有很多,最常见的DIY目标是VESC 4.12和VESC 6.x。
VESC 4.12是社区里流传最广的版本,用的是STM32F405VGT6主控,配合DRV8301三相栅极驱动器、三颗电流采样放大器、六颗大电流MOS管。这个版本资料非常齐全,嘉立创打样文件到处都能找到,而且元件库成熟。缺点是DRV8301本身是QFN封装,手工焊接难度中等,电源部分有过热问题,不适合长时间大电流满负荷运行。
VESC 6.x则是原作者后来重新设计的版本,MCU还是STM32F4系列,但栅极驱动器换成了DRV8323类,集成了更多保护,PCB布局也更讲究,支持更高的电池电压和更大的持续电流。但6.x的PCB是几层板,而且元件密度更高,手工焊接成功率较低,需要更精确的热风枪操作。
我给新手建议很直接:如果你第一次做VESC,老老实实打VESC 4.12的板子,但别直接上6S电池,先用3S或者4S锂电调试。因为4.12的过流保护能力其实有限,一旦FOC参数没调好,瞬间大电流就能把MOS炸飞。先把整个调试流程跑通了,再去折腾6.x也不迟。
3.3 从焊板到通电:VESC制作的关键动作
VESC的焊接过程跟FPV电调差别很大,最难的是QFN和LQFP芯片的焊接。我一般用热风枪配合钢网,先把焊膏印在PCB焊盘上,然后对准芯片引脚,用350℃到380℃的热风围绕芯片均匀加热,看到焊膏熔化、芯片轻微自动沉下去就说明OK。千万别图省事用烙铁去拖QFN的地焊盘,那会把你拖到怀疑人生。
焊接完成后,第一次通电前必须做三件事。第一件:用万用表测量电池正负极之间有没有短路,正常情况下应该能看到几kΩ以上阻值,因为大电容充电需要时间。第二件:接一个限流电源,电流限制先调到0.1A,电压设成电池电压的一半左右,看看MCU能不能正常启动、有没有异常发热。第三件:通过SWD接口连接STM32,用ST-Link把VESC的bootloader烧进去。做完这三步,你才有资格接电池。
真正配置电机参数时,强烈建议用VESC Tool手机App连USB或者蓝牙模块。界面里有一个“电机检测”按钮,它会让电调自动发出测试波形,通过采集到的电感、电阻、反电动势曲线,自动算出一整套FOC参数。我在实际使用中发现,电机检测时一定要把电机轴空转,不要让螺旋桨或者轮子负载,否则检测出的电感参数会偏大,后续运行时候电流噪声会非常明显。
4. 最容易翻车的三个坑:驱动、采样、散热
4.1 栅极驱动供电不足导致MOS管半开半断
自做电调最容易出现的诡异现象,是电机不转时板子温度正常,一推油门MOS管就迅速发烫,一两秒后冒烟。我用热成像排查过,问题几乎都在栅极驱动。就像前面说的,上桥臂MOS管源极电压不是接地的,可能随电机相线在0V和电池电压之间跳变,所以要关断或导通它,栅极电压必须比源极高出一截。栅极驱动芯片内部往往通过一个自举电容,把驱动电压抬到“电池电压+8V”左右。
如果自举电容容量偏小,或者自举二极管反向恢复时间太长,那么在PWM占空比接近100%或调制频率太高时,自举电容没能及时充电,上桥臂栅极电压掉到导通阈值附近,MOS管就处于“半开半闭”的线性区。这一区间内阻巨大,相当于在功率路径上串了一个大电阻,热量自然集中在这里。解决办法是增大自举电容到100nF甚至220nF,并且换用快恢复二极管,同时限制PWM最大占空比不超过95%。如果你用的是集成三路半桥栅极驱动芯片,记得检查芯片手册里推荐的自举电容取值,直接抄。
4.2 电流采样噪声让FOC乱抖
VESC的FOC控制依赖三相电流采样,一般是在低边MOS管下方串接毫欧级采样电阻,再用运放把微弱电压放大到ADC范围。这个采样信号极其容易受功率级开关噪声干扰。我做过一个实验:把采样电阻到运放的差分走线拉长到2厘米,结果FOC跑起来后电机有明显的“咔咔”声,电流波形像被毛刺糊住一样。后来我重新布局,把运放尽量靠近采样电阻,并且用Kelvin接法直接从采样电阻两端取信号,噪声立刻小了一个量级。
如果你的PCB已经定稿改不了,那还可以在采样信号线上加一个RC低通滤波器,截止频率取100kHz到200kHz。但要注意滤波不能太狠,否则高PWM频率下电流波形失真,FOC会产生额外的力矩脉动。我自己最后是折中取了150kHz,效果比较满意。
4.3 散热和载流能力不达标,炸管只是时间问题
电调的功率级设计最怕“看着能行”。很多新手以为MOS管耐流标50A,就真能在50A下稳定运行,完全忘记了热阻和散热路径。MOS管的数据手册里有一个参数叫“最大耗散功率”,那是在壳温25℃的理想条件下测出来的。实际板子上,MOS管的热量要通过PCB铜箔散掉,如果散热面积不够,结温轻松超过150℃,然后在某一次大油门时直接击穿。
我的经验是,在PCB布局阶段就给每个MOS管旁边多铺铜,尽量扩大底层铜箔面积,并打上密密麻麻的过孔连接两层铜。人体感应不到的温度,热成像仪一看全明白。如果你测到满载时MOS管表面超过90℃,那就要么加散热片,要么把额定电流预算缩一半。别相信“短时间超一点没事”,FPV电调在激烈飞行中的瞬间电流经常达到额定值两倍,余量给不够,迟早要哭。
5. 我的测试方法和常见故障速查表
5.1 上电前必做的三项检查
不管你是做FPV电调还是VESC,每一次上电前,都建议执行固定的安全检查流程,顺序不能乱。
第一项,看短路。用万用表蜂鸣档量电池输入两极,如果听到长鸣,说明有短路或者低阻通路,千万别通电。这里有个细节:因为有大电容,刚接万用表时可能会响一下然后不响,这是电容充电,属于正常;如果持续响,那就要检查。
第二项,限流上电。可调电源设定到接近电调工作电压,电流限制在0.2A到0.5A,通电后看电流是否稳定。正常情况下,单片机待机电流只有几十毫安量级,如果看到几百毫安甚至电流飙升,说明某个芯片短路或MOS管已经击穿,立刻断电。
第三项,检查固件状态。BLHeli电调用下载器读版本号,VESC用ST-Link读MCU信息。固件不能让bootloader正常起来,后面所有测试都是空中楼阁。我遇到过好几次芯片没被识别但各电压都正常,最后发现是晶振没起振,换掉就好了。
5.2 常见故障速查表
下面这张表是我做这几款电调时整理出来的实战速查表,遇到问题可以对照着排查:
| 故障现象 | 可能原因 | 处理办法 |
|---|---|---|
| 上电瞬间电流大、冒烟 | MOS管击穿、电容短路 | 断电后量各级对地阻值,逐级断开排查 |
| 电机不转,但能听到蜂鸣声 | 固件OK,换向信号异常 | 检查反电动势采样网络,确认PWM输出到栅极 |
| 推油门后MOS管发热冒烟 | 栅极驱动电压不足、占空比过高 | 增大自举电容,限制最大占空比,检查G极电阻 |
| 电机低速抖、高速正常 | 方波换向点提前或滞后 | 用示波器看反电动势过零,微调换向延迟 |
| FOC电机检测时震动剧烈 | 电流采样噪声大、参数错误 | 检查采样走线,重新做电机检测,确保电机空转 |
| VESC连不上调试工具 | 串口/USB电平不对、引导程序损坏 | 用ST-Link重新烧bootloader,检查USB转串口 |
| 大电流时电压被拉垮 | 电池内阻大、线径细 | 换高倍率电池,加粗电源线,减少接头压降 |
5.3 实测数据与最终建议
说一点实际测量的数字作参考。我做的那款6A BLHeli_S电调,在2S电池、1104电机、5043三叶桨条件下,悬停电流约3.2A,MOS管表面最高温度68℃;满油门峰值电流7.8A,能持续约10秒,然后温度冲到92℃。这个结果对业余制作来说能接受,但我不会拿它去飞暴力3D,毕竟我没上铝基板,散热能力有限。
VESC那边,我按4.12方案做的一块板子,配3S锂电池和一套250W电机,在50A方波模式下做加速测试,电流波形很干净,再生刹车效率大致在75%左右。FOC模式下的低速扭矩明显更好,堵转测试时可以感觉到电机非常紧,也没有明显的顿挫。不过这些数据都跟具体电机和负载强相关,我更想强调的是:只要不急着上大功率,业余制作完全能跑通这套流程,关键是每一步都别跳。
最后再推荐一个我后来养成的习惯:每次上电前,我都习惯性先接一个白炽灯灯泡串联在电池正极线上做限流,灯泡功率选40W到60W。如果板子有短路,灯泡会常亮,而正常负载下它只闪烁并熄灭,这招比可调电源便宜直观多了。自从用了这个土办法,我再没报销过第二块电调。自己做电调这件事,技术是一部分,耐心和细心才是真正的护身符。