尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

自制电调与VESC无刷电机控制器:从硬件选型到FOC调试全攻略

自制电调与VESC无刷电机控制器:从硬件选型到FOC调试全攻略 1. 从一堆炸掉的MOS管说起为什么我要自己折腾电调第一次接触电调是在三年前当时手里攒了几颗航模无刷电机想给一台自组的穿越机做动力系统。市面上成品电调从几十块到几百块不等买回来焊上就能用按理说没必要自己折腾。但问题出在“炸管”上——连续烧了四颗电调之后我意识到如果不搞清楚里面的门道永远只能靠换件来解决问题。于是从最基础的BLHeli开始看起一路摸到AM32和VESC前后做了十几块板子踩过的坑足够写一本小册子。这篇文章要聊的就是电调ESC和VESC这两类无刷电机控制器的自制过程。电调这个词在FPV圈子里几乎是每天都要打交道的它负责把飞控给出的信号翻译成三相电流驱动无刷电机旋转。而VESCVedder Electronic Speed Controller则是一个更偏工程和开源方向的控制器平台最初为电动滑板设计后来被大量用在机器人、电动载具和DIY项目里。两者虽然都叫“电调”但设计哲学、硬件复杂度、固件生态完全不同。适合看这篇内容的人大概有三类一是FPV玩家想搞明白自己天天用的电调到底怎么回事甚至想自己打板做几块二是嵌入式爱好者对无刷电机FOC控制感兴趣想从VESC入手学起三是DIY玩家手里有电动工具、滑板或者机器人项目需要一个大功率、可编程的驱动器。不管你是哪一类下面的内容都会从硬件选型、固件烧录、参数调试到实际测试一步步拆开讲。需要提前说明的是自制电调这件事门槛不算低你需要有基本的电路焊接能力、会看原理图、能操作示波器和万用表。但好消息是现在开源社区的资料已经非常丰富AM32和VESC的固件都是公开的硬件方案也有大量参考设计只要按部就班来成功率比几年前高得多。2. 电调和VESC到底有什么区别先搞清楚你要做哪个2.1 FPV电调的核心诉求小、轻、响应快FPV穿越机用的电调核心指标就三个字推重比。一架5寸穿越机四个电调加起来的重量不能超过20克单个电调要能持续通过30A以上的电流峰值甚至要到45A到60A。这就意味着PCB要尽可能小MOS管要选低内阻的散热设计要跟得上。传统FPV电调大多跑BLHeli_S或者BLHeli_32固件前者基于8位单片机比如EFM8BB21后者基于32位ARM比如STM32F051。BLHeli_32在2020年左右因为版权和闭源问题引发过一波讨论之后AM32作为开源替代方案迅速崛起。AM32支持多种32位MCU包括STM32F051、GD32、AT32等代码完全开放社区维护活跃现在已经成为自制电调的首选固件之一。FPV电调的信号协议也经历了几代演变从最早的PWM到OneShot125、OneShot42再到DShot150/300/600甚至双向DShot。DShot是数字协议不需要校准油门行程抗干扰能力强还能回传转速数据。自制电调如果要兼容现代飞控DShot是必须支持的。2.2 VESC的定位大功率、全开源、可编程VESC和FPV电调完全是两个物种。VESC最初由Benjamin Vedder开发硬件和固件全部开源设计目标是驱动电动滑板、电动自行车、机器人关节这类需要大扭矩、平滑控制的场景。它的核心特点是FOC磁场定向控制也就是常说的矢量控制能让电机运行更安静、更平滑、效率更高。VESC的硬件版本已经迭代了很多代从最早的4.12到6.6再到最近的75/100系列电压和电流能力不断提升。4.12版本支持12S锂电约50V持续电流50A左右6.6版本支持更高电压和电流适合电动摩托车级别应用。硬件方案在GitHub上有完整的原理图和PCB文件国内也有不少人在做衍生版。VESC的固件生态也很特别。官方固件通过VESC Tool进行配置支持CAN总线、UART、PPM、ADC等多种输入方式还能做位置控制、速度控制、电流控制。对于机器人项目来说VESC几乎是一个现成的伺服驱动器省去了大量底层开发工作。2.3 选型对比一张表看清两条路线对比项FPV电调AM32VESC典型电压3S-6S12V-25V6S-12S25V-50V或更高持续电流30A-60A50A-100A控制方式方波六步换相为主FOC矢量控制MCUSTM32F051、GD32等STM32F405/F407等固件AM32、BLHeli_32VESC官方固件通信协议DShot、PWM、OneShotCAN、UART、PPM、ADC典型尺寸20mm x 20mm以内50mm x 80mm以上适用场景穿越机、航模滑板、机器人、电动载具自制难度中等PCB小焊接难中等偏高元件多调试复杂选哪个做取决于你的实际需求。如果只是想给穿越机做几块备用AM32方案更合适PCB小、元件少、成本低。如果要驱动大功率电机做机器人或者滑板VESC的FOC控制和大电流能力是FPV电调给不了的。3. AM32电调自制从打板到首转的完整记录3.1 硬件方案选择与元件清单我做的第一块AM32电调基于STM32F051K8U6这是AM32官方支持的主流MCU之一。选它的原因很简单Flash 64KB够用封装是QFN32体积小价格便宜国内货源充足。MOS管用的是NCE30H1530V耐压15A持续电流内阻只有4.5毫欧对于3-4S应用足够了。栅极驱动芯片用的是FD6288集成三相半桥驱动省去了分立驱动电路的设计麻烦。其他关键元件包括电流采样用0.5毫欧的采样电阻加INA199电流检测放大器用于过流保护和电流限制反电动势检测三相分压电阻网络将电机相电压分压到MCU的ADC量程内电源从电池电压通过LDO降到3.3V给MCU供电LDO选的是HT7333静态电流小适合电池供电电容每个半桥并联一颗10uF陶瓷电容和一颗100nF高频电容抑制电压尖峰PCB设计有几个关键点需要注意。首先是功率回路面积要尽可能小电池正负极到MOS管的走线要短而粗减少寄生电感。其次是采样电阻的走线要对称开尔文连接否则电流采样会有偏差。最后是散热MOS管底部要铺铜并打过孔到背面利用PCB本身散热。注意QFN封装的STM32F051焊接难度不小建议用热风枪加焊膏不要用烙铁硬拖。焊完之后用放大镜检查引脚是否虚焊特别是GND焊盘。3.2 固件编译与烧录AM32的固件源码在GitHub上可以直接拉取编译环境用Makefile或者PlatformIO都行。我习惯用PlatformIO因为依赖管理方便直接在VSCode里装个插件就能编译。编译之前需要确认目标MCU型号和引脚定义。AM32的源码里有一个targets目录里面定义了不同硬件方案的引脚映射。如果你用的是自己画的板子需要新建一个target文件把MCU的引脚分配写进去。比如// 示例自定义target的引脚定义 #define TIMER_PHASE_A_CH1 PA8 #define TIMER_PHASE_A_CH2 PA9 #define TIMER_PHASE_A_CH3 PA10 #define COMPARATOR_PHASE_A PA0 #define COMPARATOR_PHASE_B PA1 #define COMPARATOR_PHASE_C PA2 #define VOLTAGE_SENSE PA3 #define CURRENT_SENSE PA4 #define SIGNAL_INPUT PA5引脚定义要和实际PCB走线一一对应写错一个就会导致电机不转或者烧管。编译完成后生成.hex或.bin文件通过ST-Link或者串口Bootloader烧录。STM32F051支持系统Bootloader可以通过UART烧录但需要在上电时拉高BOOT0引脚。烧录完成后给电调接上电机和电源用信号发生器或者飞控发送DShot信号正常情况下电机会发出初始化提示音然后开始旋转。如果电机只是抖动不转大概率是相序不对或者比较器阈值设置有问题。3.3 参数调试与首转测试AM32的配置参数可以通过AM32 Configurator这个上位机工具来调整也可以通过飞控的串口命令行修改。关键参数包括电机方向正转或反转可以通过交换任意两相线来改变启动功率控制电机从静止到旋转的初始电流太小会启动失败太大会导致抖动比较器阈值影响反电动势过零检测的灵敏度阈值太高会丢失过零点太低会误触发PWM频率通常设置在24kHz到48kHz之间频率越高电机越安静但开关损耗也越大电流限制根据MOS管和电机的额定电流设置防止过流烧管我第一次测试用的是2205 2300KV电机3S电池桨叶拆掉。上电后电机发出三声短促的提示音说明自检通过。推油门到10%左右电机开始缓慢旋转但声音有点粗糙。后来把PWM频率从24kHz调到32kHz声音明显细腻了很多。又调整了启动功率从默认的50%降到30%低速启动更平滑了。实操心得首次测试一定要拆桨并且串一个电流表监测电流。如果电流异常大或者电机不转立刻断电检查。我烧的第一块板子就是因为比较器阈值设错了导致上下桥臂直通MOS管瞬间冒烟。4. VESC自制从开源硬件到FOC调试4.1 硬件版本选择与BOM整理VESC的硬件版本很多我选的是VESC 4.12原因是这个版本资料最全社区里做的人最多遇到问题容易找到答案。4.12的硬件设计文件在GitHub上可以下载包括原理图、PCB布局和BOM清单。核心元件包括MCUSTM32F405RGT6168MHz主频1MB Flash192KB RAM性能足够跑FOC算法栅极驱动DRV8301集成三相驱动、电流采样放大器和Buck转换器MOS管IRFS753060V耐压195A峰值电流导通电阻1.4毫欧电流采样DRV8301内置的电流放大器配合0.5毫欧采样电阻电源DRV8301内置Buck产生5V再通过LDO降到3.3V给MCUVESC 4.12的PCB是四层板功率层和信号层分开减少干扰。MOS管需要加散热片因为持续50A电流下功耗不小。电容用的是低ESR的电解电容容量在1000uF以上吸收电机换相时的电压尖峰。注意DRV8301这颗芯片比较娇贵焊接温度不能太高回流焊曲线要控制好。另外它的使能引脚和故障引脚要正确连接否则芯片不工作。4.2 固件烧录与VESC Tool连接VESC的固件可以通过VESC Tool直接烧录也可以用ST-Link烧录。首次烧录需要用ST-Link因为芯片里没有Bootloader。烧录完成后通过USB转串口模块连接VESC的UART接口打开VESC Tool就能看到设备了。VESC Tool的功能非常丰富包括电机检测自动测量电机的电阻、电感、磁链等参数用于FOC控制传感器配置支持霍尔传感器、编码器、无感模式电流环和速度环PID调节控制响应速度和稳定性输入配置PPM、ADC、UART、CAN等实时数据转速、电流、电压、温度、功率等第一次连接后先做电机检测。检测过程中电机会发出一些声音这是正常的。检测完成后VESC Tool会自动填入电机参数。然后设置电池电压范围、电流限制、温度保护等。4.3 FOC调试与实测数据FOC调试的核心是电流环和速度环的PID参数。电流环的带宽通常设置在1kHz到2kHz速度环的带宽在50Hz到100Hz。VESC Tool有自动整定功能但自动整定出来的参数不一定最优还需要手动微调。我用的电机是6374 190KV配合12S电池用于电动滑板。实测数据如下参数数值母线电压48V持续电流35A峰值电流80A空载转速约8500RPM负载转速约7200RPM效率约85%MOS管温度65°C持续35A有散热片调试过程中遇到过一个典型问题电机在低速时抖动明显高速时正常。后来发现是霍尔传感器的安装角度不对导致换相时刻偏差。重新调整霍尔位置后低速抖动消失了。另一个问题是刹车时电流回充导致母线电压升高触发了过压保护。解决办法是加一个大容量电容或者开启VESC的电压限制功能把回充电流限制在安全范围内。实操心得VESC的FOC控制对电机参数很敏感如果电机检测结果不准确后续调试会很痛苦。建议多测几次取平均值。另外电流采样电阻的温漂会影响控制精度尽量选低温漂的合金电阻。5. 常见问题与排查技巧实录5.1 电调不转或抖动从电源到信号的排查顺序电调不转是最常见的问题排查要按顺序来不要东一榔头西一棒子。我的习惯是从电源开始然后是MCU最后是功率级。第一步检查电源。用万用表量MCU的3.3V是否正常栅极驱动的供电是否正常。如果3.3V偏低或者波动可能是LDO坏了或者负载过大。第二步检查MCU是否运行。用示波器看MCU的晶振引脚是否有波形或者看调试串口有没有输出。如果MCU没跑起来检查复位引脚和BOOT引脚的电平。第三步检查信号输入。用示波器看信号输入引脚是否有DShot或者PWM波形。如果没有检查飞控和电调之间的连线或者信号协议是否匹配。第四步检查功率级。用示波器看三相输出是否有PWM波形。如果没有检查栅极驱动芯片的输入输出以及MOS管是否损坏。第五步检查电机和相序。如果功率级有输出但电机不转可能是相序不对交换任意两相线试试。如果电机抖动但不转可能是比较器阈值不对或者启动功率太小。5.2 VESC断动力原因分析与解决方案VESC在使用过程中突然断动力然后重新上电又正常这种问题最让人头疼。根据我的经验原因主要有以下几类现象可能原因排查方法解决方案高速时断动力过流保护触发看VESC Tool的故障日志提高电流限制或检查电机是否短路刹车时断动力过压保护触发监测母线电压加电容或开启电压限制随机断动力温度保护触发看MOS管温度加强散热或降低电流低速时断动力霍尔传感器故障检查霍尔信号更换霍尔或改无感模式振动时断动力接线松动检查所有连接器重新压接或焊接我遇到过一次高速断动力故障日志显示是DRV8301的过流保护。后来发现是电流采样电阻的走线太长引入了噪声导致电流检测误触发。把采样电阻的走线缩短并加屏蔽之后问题解决了。5.3 固件烧录失败Bootloader与时钟配置的坑固件烧录失败通常有几个原因。一是Bootloader没有正确烧录导致芯片上电后没有进入烧录模式。二是时钟配置错误比如外部晶振没有起振MCU跑在内部RC振荡器上导致串口波特率不对。三是Flash写保护没有解除需要先擦除整个芯片。STM32F051和STM32F405的Bootloader烧录方式略有不同。F051需要通过BOOT0引脚拉高进入系统BootloaderF405可以通过USB DFU模式烧录。如果ST-Link连接不上可以试试降低SWD时钟频率或者检查复位引脚是否被拉低。实操心得烧录之前一定要确认芯片型号和固件版本匹配。我有一次把F405的固件烧到了F407上结果芯片直接锁死只能用ST-Link解锁。另外烧录线的长度不要超过20厘米否则信号质量下降容易烧录失败。6. 自制电调的成本、工具与时间投入6.1 成本核算单块电调到底花多少钱以AM32电调为例单块的成本大致如下元件单价人民币数量小计STM32F051K8U68元18元FD62883元13元NCE30H152元612元采样电阻1元11元INA1992元12元LDO HT73330.5元10.5元电容电阻--约5元PCB打板5元15元合计约36.5元这还不算焊接工具和调试设备的成本。如果算上热风枪、焊台、示波器、万用表前期投入至少几千块。但如果你本来就玩电子DIY这些工具是共用的边际成本不高。VESC的成本更高单块4.12的BOM成本在150元到200元之间主要是STM32F405和DRV8301比较贵。但相比成品VESC动辄五六百的价格自制还是有成本优势的。6.2 必备工具清单与使用技巧自制电调需要的工具分几类焊接工具热风枪建议带数显和风量调节、恒温焊台、焊膏、镊子、放大镜。QFN和0603封装的元件必须用热风枪烙铁很难焊好。测量工具数字万用表、示波器至少100MHz带宽、电流表、可调电源。示波器用于看PWM波形和反电动势可调电源用于限流测试防止烧板。调试工具ST-Link V2、USB转串口模块、飞控或信号发生器。ST-Link用于烧录和调试串口模块用于和上位机通信。辅助工具预热台焊接QFN时很有用、吸锡带、助焊剂、防静电手环。实操心得焊接QFN芯片时先在焊盘上涂一层薄薄的焊膏把芯片放上去用热风枪从背面加热。看到焊膏融化后轻轻按压芯片让引脚和焊盘充分接触。冷却后用放大镜检查如果有连锡用吸锡带清理。6.3 时间投入从零到首转需要多久如果你有电子基础从画PCB到首转大概需要两到三周。具体分配如下原理图设计和PCB布局3到5天打板和元件采购5到7天焊接和硬件调试2到3天固件编译和烧录1到2天参数调试和首转1到2天如果没有经验时间可能要翻倍。最大的时间消耗在硬件调试上因为很多问题需要反复排查。我的建议是先做一块最小系统板只焊MCU和电源确认MCU能跑起来再焊功率级。这样可以分阶段排查问题避免一次性焊完发现不工作无从下手。7. 固件生态与开源协议AM32和VESC的社区现状7.1 AM32的版本迭代与硬件兼容性AM32的固件更新比较频繁每个版本都会修复一些bug增加新的硬件支持。目前主流的版本是2.x系列支持STM32F051、STM32F415、GD32E230、AT32F421等多种MCU。不同MCU的引脚定义和外设配置不同编译时需要选择对应的target。AM32的硬件兼容性主要通过target文件来管理。每个target文件定义了MCU型号、引脚映射、时钟配置、比较器配置等。如果你自己画板需要新建一个target文件并确保所有配置和硬件一致。社区里有很多人分享了自己的target文件可以参考。AM32的配置工具也在不断更新现在支持通过飞控的串口直接配置不需要额外的USB转串口模块。这对于穿越机玩家来说很方便因为飞控本身就有USB接口。7.2 VESC的固件分支与硬件衍生VESC的固件有多个分支官方固件由Benjamin Vedder维护更新频率不高但很稳定。社区里还有一些衍生版本比如针对特定硬件优化的版本或者增加了新功能的版本。VESC的硬件衍生也很多国内有不少人在做VESC的兼容板价格比原版便宜但质量和性能参差不齐。选择衍生板时要注意几点一是MOS管的型号和数量二是电流采样电路的设计三是散热设计。有些便宜板子用的是拆机MOS管内阻大发热严重不适合大电流应用。VESC的固件是开源的但硬件设计文件的使用需要遵守开源协议。官方硬件设计文件采用CC BY-NC-SA协议也就是说可以自己用但不能用于商业销售。如果你想做商业产品需要联系Benjamin Vedder获取授权。7.3 固件安全与刷机风险提示刷固件这件事说简单也简单说危险也危险。刷错了固件轻则设备不工作重则芯片锁死。有几点需要特别注意第一确认芯片型号和固件版本匹配。STM32F051和STM32F405的固件不能混用烧错了芯片可能直接锁死。第二保留原始固件备份。在刷写之前用ST-Link把原始固件读出来保存万一刷坏了还能恢复。第三不要随意刷未知来源的固件。有些固件可能包含恶意代码或者针对特定硬件优化刷到你的板子上可能不兼容。第四刷机时保证电源稳定。刷机过程中断电会导致芯片进入异常状态可能需要用ST-Link解锁才能恢复。实操心得我习惯在刷固件之前先用ST-Link把芯片的Option Bytes读出来确认读写保护状态。如果Flash有写保护需要先解除保护再烧录。另外刷完固件后不要立刻上电测试先用万用表量一下电源和地有没有短路确认无误再上电。8. 从自制到实测我的几点个人体会做电调这件事最大的收获不是省了多少钱而是对无刷电机控制的理解深入了很多。以前用成品电调遇到问题只能换件现在能看波形、能改参数、能定位到具体是哪一级出了问题。这种掌控感是买成品给不了的。AM32和VESC两条路线我都走过感受不太一样。AM32更偏向实战PCB小、元件少、调试直接适合快速迭代。VESC更偏向工程硬件复杂、调试周期长但功能强大适合做产品级应用。如果你刚开始接触建议从AM32入手成本低、门槛低、社区活跃。等有了经验再折腾VESC。最后分享一个小技巧调试电调时用一个可调电源限流在1A左右这样即使有短路也不会烧板。等确认硬件没问题了再逐步提高电流限制。这个习惯帮我省了不少元件钱。另外测试时一定要拆桨安全永远是第一位的。
返回列表