ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

EVSPIN32G4三相电流采样实战:3-shunt链路设计与调试要点

EVSPIN32G4三相电流采样实战:3-shunt链路设计与调试要点 电机控制里电流采样永远是第一道坎。最近我拿EVSPIN32G4做项目三相电流采样用的是3-shunt方案踩了一路坑之后把整个链路理通了从电阻选型、内部运放配置到PWM触发ADC的时序再到最后的波形调试这里面的关键点远比数据手册上写的要多。这篇就当是给自己留个技术笔记也给正在调EVSPIN32G4的朋友一个可以直接上手的参考。EVSPIN32G4不是一颗普通MCU它是ST把STM32G4主控、三相栅极驱动器和三个运放、三个比较器封在一起的系统级封装SiP。对电机控制来说内置的三个运放正好对应三相电流采样所以3-shunt current sensing在这颗芯片上几乎是不用犹豫的选择。适合正在做低压高功率密度电机驱动的朋友比如电动工具、机器人关节、家电风机这类想搞清楚电流采样链路怎么设计、怎么调通、怎么躲坑的这篇应该对你有用。1. 项目概述EVSPIN32G4与三电阻采样为什么是绝配1.1 一颗SiP把主控、栅驱、模拟前端全收拾了先聊聊EVSPIN32G4到底解决了什么问题。以前的电机控制板主控MCU是一颗栅极驱动器是一颗电流采样运放还要外挂三颗再加上一些逻辑电路和稳压器件整个板子布下来面积不小。用户端要的是板子越做越小、功率密度越做越高所以ST干脆把主控、栅驱、运放、比较器、电荷泵这些全部塞进一个封装里。EVSPIN32G4就是这么一个高集成度的电机控制系统级封装。重点在于它内部那颗MCU是STM32G4系列主频最高170MHz带FPU和CORDIC跑FOC磁场定向控制算法非常从容。而内部集成的三个运放和三个比较器则是为三相电流采样和硬件过流保护量身准备的。运放可以直接接采样电阻输出在芯片内部连到ADC不需要走PCB比较器可以直接参与PWM刹车实现纳秒级过流关断。这些特性叠加起来3-shunt方案在这颗芯片上的实现成本就变得很低外围只需要几个采样电阻和滤波元件。再看典型应用场景。低压电池供电的电动工具、吸尘器、机器人关节、无人机电调、家电里的风机水泵这些都是EVSPIN32G4的目标市场。这类产品功率密度要求高电机高速运转相电流波形可能几百Hz到几kHz但PWM开关频率通常20kHz左右甚至更高。在这种工况下相电流采样精度和采样时机直接决定了FOC效果所以“EVSPIN32G4 3-shunt”这个组合在低压中功率段会越来越常见。1.2 单电阻、双电阻、三电阻怎么选很多新手上来就问既然FOC只需要两相电流为什么还要放三个采样电阻这个问题其实点到了方案选型的核心。我直接列个对比表大家一看就明白。方案采样点电流重构低调制区表现硬件成本代表应用1-shunt母线单电阻必须按开关矢量重构三相差噪声大最低成本敏感家电2-shunt两相下桥电阻需选两相第三相计算中等有盲区中等中等性能电机3-shunt三相下桥电阻优先选可靠两相低占空比冗余好窗口选择灵活较高但芯片内已集成运放高性能电机控制单电阻方案确实成本最低但算法复杂度很高因为母线电流是脉冲式的只有特定的开关矢量期间才能采到有效电流而且在低调制比的时候有效采样窗口非常短信噪比差。双电阻方案比单电阻好一些但在某些扇区两相下管导通时间都可能不够需要额外处理。3-shunt则不同每个下桥臂电阻独立采样软件可以根据当前占空比选择最可靠的两相来用第三相用基尔霍夫电流定律算出来等于有了冗余。在EVSPIN32G4内部已经有三路运放的情况下硬件成本被摊薄了所以3-shunt在这里几乎是最优解。从控制性能上看FOC的电流环对电流采样精度和延迟很敏感。3-shunt方案能在PWM周期中点附近采到各相电流的平均值谐波小、延迟低转矩脉动也更小。只要不是极端成本敏感的项目我一般都会推荐在EVSPIN32G4上直接上3-shunt。2. 硬件设计采样电阻、内部运放、滤波一条链路2.1 采样电阻参数怎么算才不会被烧懵3-shunt硬件链路最前面的元件就是采样电阻别看它小选型翻车的机会最多。阻值选大了损耗和发热吃不消运放输出也容易饱和阻值选小了信号幅度太小ADC分辨率被浪费。所以第一步是确定阻值和功率。核心计算思路很简单。先根据电机额定电流和短时峰值电流确定I_peak然后希望采样电阻在I_peak下产生的压降经过运放放大后仍然留在运放的线性输出范围内。另外还要看功耗P I_rms² × R这个功耗必须能被电阻封装散掉。举个实际例子。假设额定相电流10A瞬时过流保护点30A。选1mΩ采样电阻30A时压降30mV。如果内部运放增益设16倍输出变化是480mV以1.65V中点电压为基准运放输出在约1.17V到2.13V之间余量充足。功耗方面10A有效值电流下的稳态功耗大约是0.1W一颗2512封装电阻轻松扛住。但如果你做的是60A级别的功率板1mΩ就不合适了持续大电流下功耗会到好几瓦这时一般用0.5mΩ或0.33mΩ甚至多个电阻并联同时升级封装和散热设计。选型时还要注意三点电阻材质建议选金属合金电阻低电感低温度系数避免高频振铃干扰采样信号。封装要照顾到功率和热阻2512是常态电流再大就要多个1206并联。最重要的一条采样电阻到运放输入的走线务必用开尔文接法。也就是说检测线直接从电阻的采样端单独拉出来不要让大电流的功率焊盘跟信号走线共用一段铜箔。否则功率回路里的寄生电阻会被算进采样电阻里电流一上来就不准。2.2 内部运放增益与中心电压的匹配EVSPIN32G4内部运放可以配置成PGA模式增益档位有2、4、8、16、32这样的可选值。运放的输出中点电压一般配置成VDDA/2也就是1.65V附近这样双向电流以1.65V为中点摆动负电流对应低于1.65V正电流对应高于1.65V。增益选多少不是拍脑袋定的。我习惯按“最大可测量电流×采样电阻压降×增益 ≤ 运放输出线性余量”来反推。继续用刚才的例子I_max30AR1mΩ压降30mV。如果选增益16输出摆动±480mV输出范围1.17V到2.13V距离电源轨还有很大余量这是比较舒服的状态。如果选增益32输出摆动拉大到±960mV输出范围0.69V到2.61V虽然还在线性范围内但余量变小了运放失调、温度漂移和电源噪声的影响会被放大对零点校准要求更高。我的经验是别把增益压到极限。留30%以上的输出余量不仅对温度变化更有包容度也让调试期的示波器波形看得更清楚。增益越高电流分辨率越高但前提是信号质量能跟上否则只是把噪声一起放大了。还有一个容易被忽略的问题内部运放的带宽和压摆率。增益高的时候运放建立时间会变长。如果PWM下管导通窗口很短运放还没建立到最终值ADC就采样了电流误差就会很大。所以选增益的时候要考虑开关频率和最小可采样窗口不能光看分辨率。2.3 RC滤波不是随手加要和建立时间一起看采样电阻和运放输入之间通常要加一级RC低通滤波目的是滤掉PWM开关产生的振铃和EMI。但很多人在这一步踩坑滤波加太重电流信号被压扁加太轻毛刺照样进ADC。RC截止频率的计算公式是f 1 / (2πRC)。我常用的起步值是R100ΩC1nF算下来截止频率大概1.6MHz。这个频率远高于电机电流基波但对几MHz的开关振铃有一定衰减。关键还要看时间常数τ RC 100ns。如果要求滤波稳定到0.1%误差大约需要7τ也就是700ns。这个时间必须小于PWM下管导通窗口的一半否则采样点采到的不是真实电流。在实际板子上如果EMI很凶我会把C加到2.2nF甚至3.3nF但不会无限加。因为C越大建立越慢采样点就得往后挪而PWM周期是固定的挪到后面可能就碰到下管关断沿了。还要考虑R不能太大R太大一方面运放输入偏置电流会在R上产生额外压降另一方面RC充电更慢。所以R一般控制在100Ω到1kΩ之间C在1nF到3.3nF之间具体值要靠示波器看实际振铃定。提示RC滤波是“采样时机”的连带设计。先看振铃多久能平复再定滤波值最后定ADC触发点的延迟时间三者是一套操作。3. 软件工程PWM、ADC和采样时刻的联调3.1 中心对齐PWM为什么要配注入组ADC硬件链路搭好之后软件采样的核心就是“让ADC在正确的时刻转换”。FOC里PWM普遍用中心对齐模式也就是定时器向上计数再向下计数计数器波形是一个三角波。这种模式的好处是对称性好谐波小而且PWM周期的中点是相电流的平均值位置在这里采样能天然滤掉一半纹波。EVSPIN32G4内部的主定时器通常就是TIM1配置成中央对齐模式ARR决定PWM周期三个比较寄存器CCR1到CCR3分别控制三相占空比。要让ADC在PWM周期内指定的时间点采样常用做法是用TIM1的TRGO事件触发ADC注入组转换。选择TRGO为更新事件或者某个比较事件然后ADC注入组就按配置好的序列去转换多个通道。这里为什么用注入组而不是规则组因为规则组主要用于慢速采集比如母线电压、温度这些优先级低转换队列可能被其他任务打断。而注入组转换可以打断规则组优先级高正好适合电流这种对时间窗口敏感的信号。把三个电流通道配置进注入序列每个触发点到来时依次转换转换完成进中断中断里做坐标变换、PID运算整个链路延迟可以做到非常低。STM32G4的ADC转换速度很快12位模式下单个通道转换时间大概两百多纳秒三个通道依次转完也不超过1微秒在20kHz PWM周期里足够从容。所以不需要太担心三相之间的转换时间差对FOC来说可以近似认为它们是同步采的。3.2 采样点必须躲开死区和振铃这是3-shunt电流采样里最核心的时序问题。很多人代码照抄官方例程电机也能转但电流波形就是不好看多半是采样点没有躲开死区和振铃。PWM开关切换的瞬间同一桥臂的上下管之间会插入死区避免直通。死区期间相电流会通过续流二极管走采样电阻上的电压方向和正常导通时不一样这时候去采样得到的电流是错的。更麻烦的是功率管开关过程会产生很高的dv/dt和di/dt经过寄生电容耦合到采样电阻上形成振铃。所以ADC触发点必须避开两个东西一是死区二是开关振铃区间。实际操作中我会先把示波器探头夹在运放输出端观察每次PWM切换后信号需要多久才能稳定。比如发现开关沿后大约400ns内都是振铃400ns之后波形才平下来那ADC触发点的延迟至少要放到500ns以上我习惯再留一点余量设到600ns到800ns。这个数字在不同功率板上差别很大不能照抄必须实测。3-shunt里还有一个细节三相下管导通窗口的长度不一定一样。因为SVPWM调制时各相占空比不同有时候某相下管导通时间特别短可能只有1到2微秒这时候要在它导通窗口的中间位置采样如果触发点太靠边就可能采到下管刚关断或者还没完全导通的区间。所以严格的3-shunt软件会动态计算当前扇区里哪几相窗口足够然后选择对应的触发时刻而不是固定一个时间点采三相。3.3 不是每次都要采三相低占空比下的电流重构说到“动态选择”就要澄清一个常见误区3-shunt并不是每个PWM周期都要把三相电流都采出来。很多初学者以为有三个电阻就必须采三路但实际在SVPWM的某些扇区某相下管导通时间会短到“无法可靠完成运放建立ADC采样”这时候硬采只会采到一堆毛刺。正确的思路是根据当前这三相占空比和PWM周期判断哪些相的下管导通窗口足够长能够容纳“开关稳定时间 运放建立时间 ADC转换时间”。选出两相可靠的窗口去采样第三相用“ia ib ic 0”这个基尔霍夫关系算出来。因为FOC的Clark变换只需要两相电流所以只要任意两相可用控制就能跑。这也是3-shunt相对2-shunt的优势2-shunt在某些扇区可能两相同时不可用3-shunt至少还能靠冗余窗口保证采样。如果极端情况下所有相的下管导通窗口都不够比如调制比太低或者占空比极不均匀那就要考虑调整调制策略或者临时切换到其他采样方案。不过对绝大多数低压电机应用正常的SVPWM范围内3-shunt都能保证至少两相可用。这里软件上要做一张扇区判定表根据CCR值决定选择哪两相我建议调试时把“当前选择了哪两相采样”这个信息通过调试器实时观察如果扇区切换频繁或者采样通道跳变异常说明判定逻辑有问题。3.4 过流保护用内部比较器做硬件刹车3-shunt的硬件链路上采样电阻的信号不只给ADC用还要给内部比较器做硬件过流保护。EVSPIN32G4内部三个比较器每个都能接到对应的采样电阻电压阈值由内部DAC设置。一旦电压超过阈值比较器可以直连TIM1的刹车输入硬件上直接关断PWM输出不需要CPU参与。这个保护速度是ADC采样比不了的因为ADC从采样到判断再到软件关PWM至少几十微秒而比较器到刹车输入是纳秒级。所以设计时一定不要浪费这个功能。阈值怎么设如果比较器直接接采样电阻压降那阈值就是I_OC × Rshunt。比如过流保护点设为50ARshunt1mΩ阈值就是50mV。如果比较器输入接在运放输出后面那要按“I_OC × Rshunt × 增益”来算。这里有个实操建议第一次上电调试不要直接设到计算临界值。先把阈值放到1.2倍以上的额定峰值电流确认系统能正常转起来再逐步往下调每次测一次短路或者堵转直到保护点符合预期。否则一个参数没调对第一次上电就可能炸功率管。4. 实跑调试验收从波形到代码怎么一步步确认4.1 电机不转先看ADC原始值拿到一块新板子第一步不是急着重载跑FOC而是验证电流采样链路是不是通的。我会先把PWM固定成开环状态给一个不高的占空比让电机转子锁住不动然后用调试器读三个ADC通道的原始值。正常情况下这三路数值应该非常接近中点电压对应的数字值比如12位ADC满量程4095中点电压1.65V对应约2048那三路应该在2048附近差很小。如果某一通道偏得离谱先查那一路的运放配置和ADC通道映射再看采样电阻焊接是否虚焊。还有一种常见情况三个通道原始值都正常但电机一转起来电流波形就乱那问题多半出在采样点时序上不在硬件。这时候就可以开始看运放输出的示波器波形确认采样时刻落在平台区。我给新项目定了一个固定流程开环锁定PWM → 读ADC原始值 → 手动转动电机观察电流符号变化 → 开环低速转起来看波形 → 再切入闭环FOC。每一层验证都过了才会上速度、上负载。这个流程看着繁琐但能帮你把硬件问题、时序问题、算法问题逐层隔离。4.2 零点漂移标定不能省3-shunt方案里每个采样通道都会存在零点漂移。这个漂移来自运放的输入失调电压、内部基准偏差、采样电阻阻值不完全一样以及PCB地电位差。如果不做零点校正电流环里会一直存在一个直流偏置反映到电机上就是带载时一相电流偏大低速时转矩不规则振动。零点校准的方法不复杂。电机静止时把所有PWM输出关闭或者统一设成下桥臂导通的状态此时相电流理论上为0分别采三相ADC各几十次求平均得到三个offse值。运行时每次ADC原始值先减去对应的offset再做电流重构和坐标变换。注意校准的时候最好在系统上电运行一段时间、温度稳定之后再做因为运放失调会随温度漂移。要求更高的项目可以加温度补偿或者定期在电机停止状态时自动重校准。但如果三个通道的零漂差异大到几十个LSB以上我建议先怀疑硬件而不是靠软件硬纠比如地平面设计不良或者采样电阻到运放的走线不等长这些都会放大零点差异。4.3 波形有毛刺先动采样点而不是动滤波调试中最常见的现象就是电流波形毛刺大、正弦度差。很多人的第一反应是加大滤波电容但我不建议一上来就改硬件。先把采样点往后挪一点就是增加ADC触发相对PWM开关沿的延迟看毛刺有没有明显改善。如果改善很大说明问题在采样时机太靠近开关沿根本不是滤波不够。我调过一块板子电流波形上每个PWM周期都有一个尖刺一开始怀疑是地噪声后来用示波器看运放输出发现触发采样点正好落在开关振铃上。把触发延迟从200ns调到600ns波形立刻干净了一大截。所以示波器永远是调电流采样的第一工具采样时机对不对一眼就能看出来。如果采样点已经在窗口中间波形还是差再看采样电阻的走线是否需要改或者RC滤波要不要加一点。改硬件之前先用软件把可能的影响变量圈定这样效率最高。4.4 过流误触发和真过流的区分调过流保护的时候经常遇到这样一个情况电流明明没到保护点刹车却触发了。这有两个方向去查。一是阈值和实际采样电压的计算路径有没有对比如比较器接的是采样电阻直接电压
返回列表