ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

自制电调实战:从AM32固件到VESC驱动板的硬件设计与调试经验

自制电调实战:从AM32固件到VESC驱动板的硬件设计与调试经验

电调这东西,说穿了就是一块把直流电“切碎”再按特定节奏喂给无刷电机的板子。我最早接触它是因为炸了几次桨之后心疼钱——成品电调烧一个换一个,成本实在扛不住,索性自己画板子、自己刷固件。从最开始照着开源方案抄,到后来能根据机型需求改参数、换MOS、调死区,前后折腾了差不多两年。这篇文章不打算写成教科书,就是把我在做几款FPV电调和VESC类驱动板过程中踩过的坑、验证过的方案、以及那些“早知道就好了”的细节摊开来聊。如果你也在琢磨自制电调,或者想搞明白AM32、VESC这些固件到底怎么跑在STM32上,下面这些内容应该能帮你省下不少返工的时间。

1. 先想清楚你要做的是哪一类电调

动手之前最怕的就是方向没定就开始画原理图。电调这个圈子看起来都是“驱动无刷电机”,但实际分下来的技术路线差别很大,选错了固件和硬件架构,后面改起来等于重做。

1.1 FPV穿越机电调和VESC类驱动板的本质区别

FPV电调的核心诉求是极致的响应速度和体积控制。穿越机对油门响应要求近乎变态,从飞控发出DShot指令到电机实际响应,整个链路延迟要压到毫秒级。这类电调通常工作在较高的电调频率下,PWM载频动辄24kHz到48kHz,有的甚至更高,目的是让电流波形更平滑、电机运转更细腻。硬件上追求小体积、轻重量,常见尺寸从20mm×20mm到30.5mm×30.5mm安装孔位,四合一电调更是把四路驱动塞进一块板子。

VESC则完全是另一个思路。它源自本杰明·维德(Benjamin Vedder)的开源项目,定位是高性能、可编程的电机控制器,应用场景从电动滑板、电动自行车到机器人关节都有。VESC强调电流环控制精度、再生制动、CAN总线通信、以及丰富的可调参数。它的固件架构比FPV电调复杂得多,运行在STM32F4系列这类性能更强的芯片上,支持FOC(磁场定向控制)和BLDC六步换相两种模式。

简单说,FPV电调是“轻量级短跑选手”,VESC是“全能型运动员”。你要是想做穿越机,别拿VESC的硬件方案硬套,体积和成本都下不来;反过来,要做大功率轮毂电机驱动,FPV电调那套小MOS和薄铜箔也扛不住。

1.2 AM32固件为什么成了DIY电调的首选

AM32是我目前最推荐的入门固件,没有之一。它脱胎于BLHeli_32的开源替代方案,专门针对STM32系列MCU做了适配,代码结构清晰,编译工具链用的是免费的ARM GCC加Makefile,不需要买昂贵的IDE授权。

AM32的核心优势在于参数可调范围大且文档相对完整。你可以通过飞控的串口或者专用的调参盒修改启动功率、退磁补偿、PWM频率、电流限制等关键参数。对于自制电调来说,这意味着你不需要改代码就能适配不同KV值的电机和不同规格的MOS管。我试过用同一块AM32电调板驱动从1400KV到2800KV的电机,只调了几个参数就都能稳定运行。

另一个关键点是AM32对STM32F051、STM32F031、STM32G071这些芯片的支持比较成熟。这些芯片价格便宜、封装小,适合DIY。尤其是G071,自带运放和比较器,能省掉外部电流采样电路的一部分元件,对缩小板子面积很有帮助。

1.3 VESC开源生态的硬件门槛和软件灵活性

VESC的硬件方案是公开的,但说实话,直接照抄原版VESC 6的原理图对DIY来说不太友好。原版用的是DRV8301或DRV8323这类集成栅极驱动器,芯片本身不便宜,而且QFN封装手工焊接难度大。不过社区里有不少简化版方案,比如用分立MOS加半桥驱动IC的组合,成本能压下来不少。

VESC固件的灵活性体现在它的参数体系上。电流环PID、速度环PID、观测器增益、死区补偿、电压限制、温度降额曲线,几乎每个影响电机行为的变量都开放给你调。这既是优点也是坑——参数太多,新手很容易调乱。我的建议是先用默认参数跑起来,确认硬件没问题之后再逐项微调,每次只改一个参数并记录效果。

2. 硬件选型和原理图设计里的关键决策

画原理图之前,有几个决策会直接影响后续的调试难度和最终性能。这部分我按重要性排序来说。

2.1 MCU选型:F051、G071还是F405

选MCU主要看三个维度:引脚数量、运算性能、内置外设。

对于FPV电调,STM32F051K8(32脚QFN)是经典选择。它有一颗48MHz的Cortex-M0内核,跑AM32的六步换相算法绰绰有余。内置的12位ADC采样电流和电压足够用,关键是便宜且好买。我早期做的几块板子都用它,刷AM32一次成功。

STM32G071是升级选项。Cortex-M0+内核跑64MHz,自带运算放大器和比较器,可以直接处理电流采样信号,省掉外部运放。它的ADC采样速度也更快,对高电调频率下的电流环响应有帮助。缺点是价格比F051贵一些,而且QFN封装焊接时需要更小心。

VESC类方案通常用STM32F405RGT6。Cortex-M4内核带浮点运算单元,跑FOC算法时优势明显。F405的定时器资源丰富,能同时处理多路PWM和编码器输入。但它的LQFP64封装体积不小,适合大板子设计。

MCU型号内核主频封装适用场景参考价格
STM32F051K8Cortex-M048MHzQFN32FPV电调低
STM32G071KBCortex-M0+64MHzQFN32FPV电调(带运放)中
STM32F405RGCortex-M4F168MHzLQFP64VESC类驱动高

2.2 栅极驱动和MOS管的选择逻辑

栅极驱动器决定了MOS管开关的速度和可靠性。FPV电调常用EG2133、FD6288、或者分立半桥驱动。EG2133是三相驱动,集成度高,一片搞定三路半桥,适合小体积设计。FD6288也是类似定位,但驱动电流能力稍强。

MOS管的选择要看导通电阻、栅极电荷、封装热阻。FPV电调常用的是DFN5×6封装的N沟道MOS,比如AON6500、NCE6075这些。导通电阻在几毫欧级别,栅极电荷控制在20nC以内,开关损耗才不至于太大。我试过用导通电阻更低的MOS,结果栅极电荷也大,开关速度上不去,反而发热更严重。

VESC类方案因为电流大,通常用TO-220或者TO-247封装的MOS,配合散热片使用。这时候栅极驱动器的驱动电流要足够大,否则开关沿变缓,MOS工作在放大区的时间变长,损耗急剧增加。

注意:MOS管的栅极电阻不要随便省。我见过有人为了追求开关速度把栅极电阻短接,结果开关振铃严重,EMI超标不说,MOS管栅极还容易被击穿。一般10到22欧姆是比较稳妥的起点。

2.3 电流采样方案:分流电阻还是霍尔传感器

FPV电调几乎都用分流电阻加运放的方案。分流电阻串在电源负极和MOS地之间,阻值通常在0.5毫欧到2毫欧之间。运放把分流电阻上的压差放大后送给MCU的ADC。这个方案成本低、响应快,但要注意运放的共模范围要能覆盖地电位附近。

VESC类方案有的用霍尔电流传感器,比如ACS758系列。霍尔方案隔离性好、没有分流电阻的功率损耗,但带宽通常不如分流电阻方案,而且成本高。对于需要精确电流环控制的FOC应用,分流电阻加高速运放仍然是主流。

分流电阻的功率额定值要算够。假设最大电流30A,分流电阻1毫欧,那功耗是0.9W。听起来不大,但持续工作时电阻会发热,阻值漂移会影响采样精度。我一般选2512封装、2W额定功率的合金电阻,温漂控制在50ppm以内。

2.4 电源部分:BEC、LDO还是DC-DC

电调板上的电源需求通常有两路:MCU的3.3V和栅极驱动器的10到12V。

3.3V这路,如果输入电压范围不宽(比如2到6S锂电,也就是7.4V到25.2V),用LDO最简单。但LDO的效率低,输入电压高的时候发热明显。我早期用AMS1117,6S电池输入时芯片烫得能煎鸡蛋。后来换成MP2359这类DC-DC降压芯片,效率上去了,发热也小了。

栅极驱动器的供电,如果驱动器自带自举电路,那只需要一路12V左右的电源。可以用DC-DC从电池电压降下来,也可以用LDO。但要注意自举电容的容量和耐压,容量不够会导致高侧MOS驱动不足,开关损耗增加。

3. 从零到一:AM32电调的焊接与固件烧录

硬件打样回来之后,焊接和烧录是第一个真正的考验。这部分我按实际操作顺序来说,每一步都有容易翻车的地方。

3.1 手工焊接QFN封装MCU的实操细节

QFN封装的STM32手工焊接不是不可能,但需要一点技巧。我的流程是这样的:

  1. PCB焊盘处理:先用烙铁给焊盘上薄薄一层锡,注意不要堆太多,否则芯片放上去会浮起来。
  2. 芯片对位:用镊子夹住芯片,对准第一脚位置。QFN芯片底部有个小圆点或者切角标记第一脚,PCB上也有对应的丝印标记。对位时用放大镜或者手机微距镜头确认。
  3. 热风枪焊接:热风枪温度设到280到300度,风量调到最低档。从芯片上方均匀加热,看到焊锡融化后轻轻用镊子按压芯片,让引脚和焊盘充分接触。
  4. 检查虚焊:用放大镜逐个检查引脚,有虚焊的用细头烙铁补焊。QFN芯片侧面能看到引脚的话,补焊会容易很多。

提示:焊接前把芯片放在防静电垫上,烙铁和热风枪都要接地。STM32的ESD耐受能力不算强,静电击穿有时候是隐性的,芯片能跑但某个外设就是不对劲。

3.2 ST-Link接线和固件编译环境搭建

AM32的编译需要ARM GCC工具链和Make。在Windows上我推荐用MSYS2或者WSL,Linux环境下直接装gcc-arm-none-eabi就行。

编译步骤大致是:

git clone https://github.com/am32-firmware/AM32.git cd AM32 make MCU=STM32F051

编译成功后会生成一个.hex或者.bin文件。烧录用ST-Link V2,接线是SWDIO、SWCLK、GND、3.3V四根线。注意ST-Link的3.3V是参考电压,不要用它给整板供电,电调的功率部分要单独接电池。

烧录工具可以用STM32CubeProgrammer,也可以用开源的st-flash。我习惯用CubeProgrammer的图形界面,烧完之后可以直接读回校验。

3.3 首次上电的检查清单和常见异常

第一次上电之前,务必做这几件事:

  • 用万用表测3.3V和12V对地电阻,确认没有短路。
  • 确认MOS管的栅极和源极之间没有短路。
  • 确认分流电阻的采样线没有接反。

上电之后如果MCU不运行,先查这几个点:

现象可能原因排查方法
ST-Link连不上SWD引脚虚焊或MCU没供电测3.3V电压,补焊SWD引脚
固件烧录成功但不转电机线序不对或参数不对换线序,检查启动功率参数
上电就发热MOS管击穿或栅极驱动异常断电测MOS管D-S电阻
转一下就停电流限制触发或退磁保护调高电流限制,检查电机KV匹配

我第一次做AM32电调的时候,烧录成功但电机就是不转。查了半天发现是电机线序和固件默认的换相顺序不匹配。AM32支持通过调参软件改换相顺序,但前提是你得先让电调能正常启动。后来我把三根电机线任意对调了两根,电机就转起来了。

4. VESC类驱动板的调试与参数整定

VESC的调试比AM32复杂一个量级,因为它的参数体系太庞大了。我按调试顺序把关键参数分成几组来说。

4.1 电机参数识别和观测器配置

VESC固件有一个电机参数自动识别功能,通过串口或者USB连接VESC Tool软件,点击“Detect Parameters”就能自动测量电机的电阻、电感、磁链等参数。这个功能非常有用,但前提是硬件基本正常。

自动识别过程中,电机会发出几声“嘀嘀”声,然后慢慢转动。如果识别失败,通常是这几个原因:

  • 电流采样不准:检查分流电阻和运放电路。
  • 电机线接触不良:重新压接端子。
  • 供电电压不稳:用电池供电而不是电源适配器。

识别完成后,VESC Tool会给出推荐的PID参数。我的经验是先用推荐值跑起来,再根据实际表现微调。电流环的带宽通常设到1000到2000rad/s,速度环带宽设到50到100rad/s。观测器增益对低速运行稳定性影响很大,如果电机在低速时有抖动,适当降低观测器增益。

4.2 电流环和速度环的PID整定顺序

PID整定要先内环后外环。电流环是内环,速度环是外环。

电流环整定:给电机加一个阶跃电流指令,观察实际电流的响应。如果超调太大,减小比例增益;如果响应太慢,增大比例增益。积分增益用来消除稳态误差,但太大会引起振荡。

速度环整定:在电流环稳定的基础上,给速度指令加阶跃。速度环的比例增益决定响应速度,积分增益消除速度稳态误差。注意速度环的输出是电流指令,所以速度环的限幅要设置合理,不能超过电机的最大电流。

我调VESC的时候犯过一个错误:先把速度环比例增益调得很高,结果电机一给指令就猛冲,电流瞬间拉满,触发了过流保护。后来老老实实从低增益开始,一点点加上去,才找到稳定的工作点。

4.3 再生制动和温度保护的参数设置

再生制动是VESC的一大特色,电动车下坡或者减速时,电机反过来给电池充电。但再生制动的参数设置不好,会导致刹车太猛或者充电电流过大。

关键参数是制动电流限制和再生电压上限。制动电流限制决定了刹车时的最大回充电流,一般设成电池最大充电电流的80%左右。再生电压上限要略低于电池的满充电压,防止过充。

温度保护方面,VESC支持MOS管温度和电机温度两路监测。MOS管温度通过板载NTC热敏电阻测量,电机温度需要外接温度传感器。温度降额曲线可以设置成线性或者阶梯式,我一般用线性降额,从80度开始逐步降低输出功率,到100度时完全截止。

5. 实测中那些文档不会告诉你的坑

这部分是我觉得最有价值的内容,因为都是实际烧板子、烧MOS、烧电机换来的经验。

5.1 电调频率和死区时间的权衡

电调频率越高,电流波形越平滑,电机运转越安静。但频率高了之后,MOS管的开关损耗也线性增加。我试过把AM32的PWM频率从24kHz提到48kHz,电机声音确实小了很多,但MOS管温度上升了将近20度。

死区时间是为了防止上下桥臂直通而设置的。死区时间太长,输出波形畸变严重,电机效率下降;死区时间太短,有直通风险。一般设置在100到300纳秒之间。我通常先用300纳秒确保安全,然后逐步减小到200纳秒左右,观察MOS管温度有没有异常上升。

注意:不同MOS管的开关时间不一样,换MOS管之后死区时间要重新验证。我换过一次MOS,忘了改死区,结果上下桥臂直通,一瞬间就冒烟了。

5.2 电机退磁和启动失败的排查思路

电机退磁是DIY电调常见的问题,尤其是用高KV电机配大桨的时候。退磁的表现是电机启动时抖动、异响,或者干脆转不起来。

排查思路是这样的:

  1. 确认电机本身没问题:换一个已知良好的电调试同一个电机。
  2. 检查启动参数:AM32的启动功率、启动斜坡、退磁补偿这几个参数对启动影响很大。启动功率太低,电机转不起来;太高,容易退磁。
  3. 检查换相时机:用示波器看反电动势过零点检测是否准确。如果过零点检测有偏差,换相时机就不对,效率低还容易退磁。

我遇到过一次退磁,原因是电机线太长,反电动势信号衰减严重,过零点检测不准。后来把电机线剪短到10厘米以内,问题就解决了。

5.3 电容选型和布局对纹波的影响

电调板上的输入电容非常重要,它负责吸收MOS管开关时产生的电流尖峰。电容选小了,纹波大,MCU可能复位;电容选大了,体积和成本都上去了。

我的经验是每路半桥配一个低ESR的陶瓷电容,再加一个大的电解电容做储能。陶瓷电容用X7R或者X5R材质,容量在1到10微法之间,尽量靠近MOS管放置。电解电容用低ESR的固态电容,容量在100到470微法之间。

布局上,陶瓷电容的回路面积要尽可能小。我见过有人把陶瓷电容放在板子另一面,结果纹波大得离谱。正确的做法是电容和MOS管在同一面,走线短而粗。

5.4 固件版本和硬件版本的匹配问题

AM32和VESC的固件都在持续更新,不同版本对硬件的要求可能不一样。我遇到过升级AM32固件之后,原本正常的电调开始出现启动困难。查了更新日志才发现新版本改了启动算法,需要重新调启动参数。

我的建议是每次升级固件之前,先备份当前参数。升级之后如果出现问题,可以回退到旧版本,或者对照更新日志逐项检查参数变化。

VESC的固件版本和硬件版本匹配更严格。VESC 6的固件不能直接刷到VESC 4的硬件上,因为引脚定义和外设配置不一样。刷错固件轻则功能异常,重则烧硬件。

6. 从能跑到好用:几个提升可靠性的细节

电调能转起来只是第一步,要让它稳定可靠地工作,还需要在细节上下功夫。

6.1 栅极驱动电阻和开关波形的优化

栅极驱动电阻影响MOS管的开关速度。电阻小,开关快,损耗小,但EMI大;电阻大,开关慢,损耗大,但EMI小。这是一个权衡。

我通常先用10欧姆的栅极电阻,用示波器看MOS管的栅极波形。如果上升沿有明显的振铃,就增大电阻;如果上升沿太缓,就减小电阻。目标是在没有明显振铃的前提下,让开关沿尽可能陡。

示波器测量栅极波形时,要用差分探头或者隔离探头,否则地线夹子可能造成短路。我早期用普通探头测高侧MOS的栅极,结果一碰就炸管,后来才知道高侧MOS的源极是浮地的。

6.2 温度传感器的安装和校准

MOS管温度监测对保护电调很重要。NTC热敏电阻要尽量靠近MOS管放置,最好用导热胶粘在MOS管表面。校准的时候,用热风枪或者恒温台给板子加热,记录不同温度下的ADC读数,拟合出温度曲线。

我见过有人把NTC放在板子边缘,结果MOS管已经烫得不行了,温度读数还显示正常。这种保护形同虚设。

6.3 防水处理和炸机后的检修流程

FPV电调经常要面对雨雪或者炸机落水的情况。防水处理可以用三防漆喷涂,但要注意连接器接口和按钮不能喷,否则接触不良。

炸机之后,电调的检修流程:

  1. 目视检查:看有没有明显的烧毁、裂纹、电容鼓包。
  2. 测短路:万用表测电源输入对地电阻,确认没有短路。
  3. 上电测试:用限流电源上电,观察电流是否异常。
  4. 功能测试:接电机和飞控,看能否正常启动和响应油门。

如果电调进水了,不要马上上电。先用无水酒精清洗,然后烘干,确认完全干燥后再上电。

6.4 批量制作时的一致性控制

如果你打算做多块电调,一致性是个大问题。我的经验是:

  • 同一批次的元件:MOS管、MCU、电容尽量用同一批次,不同批次的参数可能有差异。
  • 焊接温度曲线:如果用回流焊,温度曲线要固定,不要每次都不一样。
  • 固件和参数统一:烧录统一的固件版本和参数文件,避免人为差异。
  • 逐个测试:每块板子都要做启动测试和满载测试,记录数据,方便对比。

我做第一批四块电调的时候,有一块怎么调都不对劲,后来发现是MOS管焊接时热风枪温度太高,芯片内部有损伤。从那以后我焊接MOS管都会控制温度不超过300度,时间不超过30秒。

7. 关于工具和仪器的个人建议

最后聊几句工具。DIY电调不需要特别高端的仪器,但有几样东西能极大提升效率。

示波器是必须的。看栅极波形、反电动势、电流采样信号都靠它。带宽不用太高,100MHz足够了,但探头要好一点,劣质探头测出来的波形全是毛刺。

可调限流电源也是必须的。第一次上电一定要用限流电源,电流限制设到100mA左右,万一有短路也不会烧得太惨。

热风枪和恒温烙铁:热风枪用来焊QFN和MOS管,恒温烙铁用来补焊和飞线。烙铁头建议用刀头或者细尖头,刀头适合拖焊,细尖头适合补焊。

放大镜或者显微镜:检查虚焊和短路必备。我用的是一台三目显微镜,带LED环形灯,看QFN引脚非常清楚。

万用表:不用多说,测通断、测电压、测电阻都靠它。建议买一个带自动量程的,省得来回拨档位。

这些东西加起来可能比做几块电调的成本还高,但如果你打算长期玩这个,投资工具是值得的。我最早用几十块钱的烙铁和万用表,焊出来的板子虚焊率很高,后来换了设备,成功率直线上升。

做电调这件事,说到底是一个不断迭代的过程。第一块板子能转起来就是胜利,第二块板子解决发热问题,第三块板子优化启动性能,每一版都在进步。我到现在也不敢说自己的方案完美,但每次看到自己做的电调带着电机平稳运转,那种满足感是买成品给不了的。如果你也在做类似的东西,希望上面这些经验能帮你少走点弯路。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进