FOC驱动板改板实录:NTC温度检测与过温保护全链路设计

发布时间:2026/10/18 1:02:17
FOC驱动板改板实录:NTC温度检测与过温保护全链路设计
看到“26.9.27改FOC板问NTC”这行记录我第一反应是这又是一次典型的驱动板迭代。FOC磁场导向控制板子改板是很多做电机驱动、伺服、机器人底盘的人躲不开的活而“问NTC”这三个字说明这次改板的核心目的不是提算力、不是加电流而是往板子上补温度检测和过温保护。这个场景我太熟悉了电机跑着跑着MOS管发烫或者电调高温降额策略太保守于是决定把NTC测温、分压网络、软件保护一起加上去。NTC这个元器件看着不起眼但真正想把温度“测得准、保护得住”背后涉及选型、分压电路计算、PCB布局、固件滤波和标定一整条链路。这篇文章就按我实际改板子的顺序把从“拆需求”到“焊板测试”的完整过程写下来适合正在做FOC驱动、BLDC电调、伺服驱动或者机器人动力板的朋友参考。1. 改FOC板之前先把需求拆明白1.1 版本号里藏着改板节奏“26.9.27”我习惯理解成日期类似“年月日”的项目归档方式。很多开发者在本地记录里这么写版本因为比v1.2、v2.0这种纯数字更容易让人回想到“那天干了什么”。9月27日大概率是秋季学期或者下半年某个项目节点这时候改板一般不是推倒重来而是基于现有板子做局部增强。不管这个数字到底代表日期还是某一轮迭代编号我劝你拿到任何一块“要改”的板子时先别急着动烙铁先把这次改动范围写清楚。哪怕只是三行话“换更大电流的MOS”“加NTC过温检测”“顺带调一下死区”也比脑子里“大概要改这些”靠谱得多。改板最怕的是改着改着顺手把采样电阻也换了、把驱动电阻也动了最后出了问题根本不知道是哪一步引入的。1.2 “改FOC板”到底要改哪几类东西按我这些年改板子的经验FOC板子的改动基本能归成三类换芯、换料、换布局。换芯是指更换主控MCU或者驱动芯片常见动机是算力不够跑更复杂的观测器或者想集成更多功能。换料是指功率器件的替换比如把原MOS管换成更低导通电阻的型号、加大额定电流或者把采样电阻从毫欧级改到微欧级。换布局则是在不改变核心拓扑的前提下调整PCB走线、元器件摆放位置最常见的原因就是抗干扰不行、温升太高或者像这次一样需要新增NTC测温点。“改FOC板”这四个字最大的陷阱就是让人误以为改动是小范围的。实际上FOC性能高度依赖电流采样、母线电压采样和PWM驱动的完整链路。你只改一个电阻可能就得连带调整运放增益、ADC采样窗口、PI参数。所以我强烈建议把改动范围限制在“解决当前问题的最小集合”内不要顺手大改。NTC加装这种改动理论上只涉及信号调理和保护逻辑但如果你把NTC的分压走线走到了电流采样附近FOC波形照样能给你脸色看后面我会讲这个案例。1.3 “问NTC”背后到底在问什么标题里“问NTC”三个字字面意思是咨询NTC热敏电阻的用法但背后真实需求通常远超“选个电阻”这么简单。NTC在FOC驱动板上一般承担三个角色功率MOS管壳温监测、三相输出和母线电容温度监测、控制板环境温度补偿。功率MOS管壳温监测是最常见的因为MOS管在过流和高温下Rds(on)会漂移继续跑下去轻则性能下降、重则炸管。三相输出和母线电容温度监测适合功率稍大的驱动板因为电感、电容的寿命和温度强相关不能只看MOS。环境温度补偿则相对小众通常是为了修正电流采样运放的温漂或者给控制算法提供环境基准。你得先想清楚自己到底要测谁再决定NTC装在哪、怎么选、阈值设多少。不先把这个需求拆明白后面全白搭。2. NTC选型、分压计算和PCB布局2.1 选型先看R25、B值和封装NTC选型绕不开三个参数R25、B值和封装形式。R25是25℃时的标称阻值常见有100k、47k、10k等。FOC驱动板测温最常用10k因为分压电阻好配ADC电压范围也比较理想。B值描述的是阻值随温度变化的陡峭程度B值越大温度升高时阻值下降越剧烈高温段越灵敏。阻值随温度变化的关系可以用B值公式粗略估算Rt R25 * exp(B * (1 / (T 273.15) - 1 / 298.15))其中T是摄氏温度298.15就是25℃对应的开尔文温度。举个例子R2510k、B3450的NTC在90℃时T 90 273.15 363.15 1/363.15 ≈ 0.002753 1/298.15 ≈ 0.003354 差值 -0.000601 exp(3450 * -0.000601) ≈ exp(-2.073) ≈ 0.126 Rt ≈ 10k * 0.126 1.26k如果换成B3950的同样10k NTC90℃时算出来约0.93k。两种NTC在高温段差了快30%所以设计时不能只看R25B值必须和分压电阻、目标保护温度一起算。封装上0603/0805贴片NTC响应快、适合直接贴PCB但额定功率小带引线的玻璃头NTC耐温高、容易用导热胶贴在MOS管散热焊盘上适合功率板。下表是常见选择的对比封装/形态适合场景响应速度注意事项0402/0603贴片板级环境测温紧凑布局快功率小贴近热源易受焊锡影响0805/1206贴片功率管附近测壳温中需注意热阻路径和导热填充玻璃头/引线式MOS管散热器、电感表面中慢固定可靠耐温高适合导热胶螺栓/带耳环式大功率模块测温慢响应滞后明显适合测稳态温度2.2 分压拓扑怎么摆计算给你看NTC测温度基本都靠电阻分压把阻值变化变成电压变化。电源VCC通过一个固定电阻接到ADC节点NTC再接GND构成最简单的分压。ADC电压与NTC阻值的关系是Vadc Vcc * Rntc / (Rfixed Rntc)我习惯把固定电阻放在上拉位置、NTC放下拉位置原因有两个一是温度升高时NTC阻值下降Vadc随之下降程序里用“电压低于阈值”判断过温逻辑直观二是如果NTC焊接开路ADC会被固定电阻拉到接近VCC软件能很容易识别为断线而不是直接误触发过温。如果你把NTC放在上臂NTC开路时ADC读到0V倒是会触发过温保护这看似“安全”但没法区分是真过温还是NTC掉了排查起来很麻烦。分压固定电阻的选择要和R25匹配。以VCC3.3V、R2510k为例固定电阻取10k25℃时Vadc1.65V正好是ADC量程中间既留有余量又不浪费分辨率。90℃时NTC约1.26kVadc算下来是Vadc 3.3 * 1.26 / (10 1.26) ≈ 0.369V如果你想在90℃保护阈值可以设在0.4V左右留一点迟滞。但要注意固定电阻自身有误差NTC有误差ADC基准也有误差所以更稳妥的做法是软件标定而不是只看理论计算。自热也值得算一下25℃时流过NTC的电流3.3V/(10k10k)0.165mANTC上功率I²R≈0.27mW普通NTC自热系数基本在1~5mW/℃影响很小。可如果你把固定电阻改成1k自热功率会明显变大高温时读数就走样了。2.3 测温点与走线位置决定准头NTC电路再简单位置没放对就是白搭。测温点选择上MOS管测温最好把NTC贴到靠近功率管散热焊盘的位置中间用薄导热垫或者导热硅胶填充确保热路通畅。电感或者母线电容测温NTC可以立在器件侧面用硅橡胶固定。三相输出端子测温适合大功率电机长时间运行的场景但要注意接线端子本身可能带电NTC封装必须做好绝缘。走线方面NTC分压网络是高阻节点非常容易收到PWM开关噪声的耦合。我在布局时会让NTC走线尽量粗短避开MOS管栅极驱动走线和三相输出走线如果板内空间紧张至少要在ADC引脚加一个100nF电容需要的话再串一个小电阻组成RC滤波。地线也要单独处理NTC分压地要尽量靠近采样电阻的功率地或低边MOS管的源极别让NTC地去和栅极驱动的高di/dt回路共享。这一点很多人忽略结果就是NTC读数在PWM开关瞬间乱跳。3. FOC板修改的实操环节3.1 动手前先给原板做一次“体检”拿到原板别急着焊先做基线记录。供电电压范围是几伏主控是哪颗Cortex-M核的MCU栅极驱动芯片是什么型号MOS管型号PWM频率设的多少电流采样电阻阻值是多少这些信息决定了你能动哪些地方。我的习惯是给板子拍照存档然后跑一次原板空载和带载测试把母线电压波形、相电流波形、关键点温升记录下来。这一步看似浪费时间但后面改完板子出了问题这些基线数据是你判断“哪一步引入问题”的最重要依据。比如原来PWM频率20kHz相电流波形很干净你加了NTC分压网络以后波形开始出现毛刺那就能直接怀疑是走线干扰而不是电机本身问题。体检时也顺手测一下NTC安装位置的温度环境。电机堵转或者大负载时MOS管壳温能到多少散热器温度多少环境温度多少这些实测数据比任何规格书都准也直接决定你后面过温阈值怎么设。3.2 功率级改动要连坐哪些外围如果这次改板过程中动了MOS管或者采样电阻需要连带检查的外围就不少。换MOS管时重点看Qg栅极电荷、Vgs(th)阈值电压、Rds(on)导通电阻和续流二极管特性。栅极驱动电阻Rg要按驱动能力和开关速度重新选开关时间t和目标栅极电流大概满足I_gate Qg / t。举个例子Qg80nC想在100ns完成开通驱动电流需要0.8A那就得确认驱动芯片的峰值电流能不能达到够不到就要降低开关速度或者减小Rg否则开关损耗会明显增加。换采样电阻同样要谨慎。增大限流后如果想维持ADC输入电压范围把采样阻值减小是一种思路但采样电阻变小后信号幅度也变小运放增益需要同步调整。FOC的电流环增益变了PI参数几乎都得重调。所以我改板时有个习惯不是必需就不动采样电阻和栅极驱动电阻把改动变量控制在一个以内好定位问题。3.3 加NTC检测网络的具体改动步骤如果我这次是给原板加NTC操作步骤大概是这样的先在原理图上找一处空闲的ADC通道确认主控的ADC输入引脚没被复用或者不会和调试口冲突。然后新增一个固定上拉电阻Rfixed、一个NTC下拉到GND、一个100nF滤波电容三点接到ADC引脚。Rfixed的阻值根据2.2节的计算确定。接着画PCB时给NTC分压网络留出一块相对安静的区域远离开关节点。如果原板PCB已经定型实在没法改走线那就用飞线把NTC信号单独引到主控引脚走线远离功率侧。硬件上比较稳妥的做法是再加一层独立于MCU的硬件过温保护用一个比较器监测NTC分压点电压电压低于设定基准时输出直接拉到PWM驱动芯片的EN脚或者硬件关断脚不依赖MCU的软件判断。这层保护的意义在于MCU死机、程序跑飞、ADC采样乱掉的情况下板子依然能在MOS管炸之前把PWM关掉。很多商用驱动板上都有这种“看门狗级”的温度保护改板时顺手加一下很值。3.4 上电自检流程改完板子不要直接怼电机。我通常分几步上电第一步不装功率管、不接电机只给控制电量主控供电和基准电压是否正常。第二步把功率管装上但先用低压、限流电源给母线供电手动触发低边MOS管开关看电流波形是否正常。第三步把NTC接上在室温下读ADC值用环境温度计对比。第四步用热风枪或者烙铁给NTC加热看ADC读数是否平滑下降阈值保护是否能触发。上电自检时还有一个容易踩的坑如果NTC分压网络用的3.3V基准和控制电是同一个LDO输出那么LDO在负载突变时可能波动导致ADC读数跟着抖。这时候要么把NTC分压的基准改成独立的低噪声基准源要么在软件里做差分测量要么至少用一个大电容稳住LDO。这种细节不实测很难发现。4. 固件端的NTC处理和保护策略4.1 ADC滤波与采样时机问题在硬件侧解决了一部分固件侧也得配合。FOC的PWM开关频率通常在16kHz到30kHz开关沿附近的di/dt、dv/dt噪声会通过各种耦合路径进入ADC。如果NTC滤波电容不够ADC采样值会在PWM开关瞬间产生毛刺。这时候除了硬件加强滤波软件采样时机也很重要。我习惯把NTC的ADC采样安排在PWM周期的死区内或者电流采样窗口之后避开高噪声时段。如果主控支持的话用ADC触发同步也好。软件滤波上温度信号本身变化不快不需要追求极速响应。我常用滑动平均或者去极值平均取5~20个样本时间窗口控制在几十毫秒级别。要注意的是滤波窗口不能太长否则真的出现过温时保护指令会被滤波链路拖慢。下面是一个简单有效的滑动平均伪代码#define TEMP_ADC_BUF_LEN 16 uint16_t adc_buf[TEMP_ADC_BUF_LEN]; uint8_t adc_idx 0; uint32_t temp_adc_sum 0; void adc_filter_reset(void) { adc_idx 0; temp_adc_sum 0; } uint16_t adc_filter_update(uint16_t new_sample) { temp_adc_sum - adc_buf[adc_idx]; adc_buf[adc_idx] new_sample; temp_adc_sum adc_buf[adc_idx]; adc_idx (adc_idx 1) % TEMP_ADC_BUF_LEN; return temp_adc_sum / TEMP_ADC_BUF_LEN; }4.2 从ADC码值算温度公式、查表与标定ADC读到的电压只是中间量工程上最终要得到温度。常用的两种手段是查表和公式计算。查表法精度高、速度快适合没有FPU的低成本MCU但需要提前生成一张从-20℃到150℃的阻值-温度映射表。公式法用B值公式反推温度1 / T 1 / T0 (1 / B) * ln(R / R25)其中T0 298.15K25℃T是开尔文温度最后减273.15就是摄氏温度。R可以通过Vadc和固定电阻推算Rntc Rfixed * Vadc / (Vcc - Vadc)固定电阻Rfixed、Vcc基准、ADC参考电压的误差都会传导到算出来的温度上。所以我在固件里一般不直接用理论默认值而会做一次简单的两点标定把NTC放在冰水混合物和沸水里或者用恒温箱设定两个稳定温度分别记录ADC码值和温度然后反推出当前板子实际用的Rfixed和Vcc等效值。标定后测出来的温度误差能控制在±2℃以内对于过温保护来说足够。4.3 分级保护、迟滞和断线检测过温保护不应该只有“关断”这一个动作。我更推荐做分级策略温度接近阈值时先限制电流指令或者降低PWM占空比上限让系统主动降额温度超过关断阈值后直接关断PWM并记录故障等温度降到恢复阈值以下并且维持一段时间才允许重新使能。分级保护的关键在迟滞。假设你真在90℃关断如果恢复阈值也设在90℃温度只要波动一丁点系统就会反复关断-使能等于在临界点玩振荡。正确做法是关断阈值90℃恢复阈值比如70℃~75℃再加上一个300ms~1s的稳定时间让系统彻底冷却下来再恢复。这就像家里空调的压缩机保护不会因为温度到了设定值就立刻反复启停。断线检测必须纳入保护逻辑。我前面说过NTC开路时上拉电阻会把ADC拉到接近VCC短路时读出接近0。程序里要判断如果ADC值大于最大有效阈值判定断线并报故障如果ADC值小于最小有效阈值判定短路或者NTC损坏同样报故障并关PWM。不能因为“NTC短路读出0V就天然触发过温保护”而觉得万事大吉还是要主动区分故障类型方便产线排查。5. 常见问题与排查技巧实录5.1 NTC读数异常偏大、偏小、乱跳NTC读数异常是改板后最常见的问题。读数偏大先查固定电阻是不是焊错再查NTC是不是拿错B值然后查测量位置附近是不是有额外热源。读数偏小常见原因是NTC离热源太近或者贴片NTC被高温焊锡烫过导致阻值永久偏移也有可能是自热太大。读数乱跳基本可以锁定是干扰问题重点查滤波电容有没有贴、地线有没有走好、采样时机是否避开了PWM开关沿。给出一张快速排查表供参考现象优先怀疑项排查方法读数整体偏高固定电阻偏大、R25/B值不对万用表实测分压电阻、核对NTC型号读数整体偏低热源影响、自热大手摸发热源降低分压电流后对比读数跳变PWM干扰、地线回路不当加大滤波电容、调整采样时机、示波器看ADC引脚接上NTC后波形噪声NTC走线靠近电流采样/栅极驱动线检查PCB布局飞线绕开干扰源5.2 改板后电流波形出现毛刺我有一次帮人改板就是给板子加NTC改完后相电流波形开始出现周期性毛刺不是每次都响但频率很规律。最后排查来排查去发现是NTC分压网络的走线从电流采样运放旁边穿过NTC地又借了运放的地。NTC上是低频率模拟信号本来不该有影响但那条走线很长像一个天线把PWM开关噪声引入运放的地参考点导致采样点电位抖动。后来把NTC的走线重新绕开地单独接回到低边MOS源极附近毛刺立刻消失。这个案例给我的教训是改板时新增的任何一条走线不管它传送多“弱”的信号都可能变成干扰耦合通道。NTC这种慢信号完全值得给它单独一条干净的路不要图省事和电流采样、驱动信号挤在一起。5.3 过温保护误动作与不动作过温保护误动作最常见原因是阈值设太紧没有给瞬态温升留裕量。电机堵转或者短时过载时MOS管壳温会在几百毫秒内冲到很高如果NTC贴得太贴芯片本体保护电路会立刻动作可实际平均损耗并没有超。这种情况要么把阈值放宽要么在软件里做短时允许过温的窗口。如果NTC离热源太远则可能出现另一种问题长时间过载时MOS已经烫得不行NTC温度还没到阈值保护不动作。所以NTC贴装位置的折中很关键既要能捕捉瞬态温升也不能被瞬态温升误导。排查这类问题有个很实用的土办法用热风枪对着NTC吹观察固件里实时读出的温度和ADC电压是否平滑变化。再用示波器同时抓PWM使能信号和NTC电压看保护动作瞬间两者时序是否正确。如果是软件保护确认关断后PWM是否真的停止输出如果是硬件比较器保护记得测比较器翻转电平和实际延迟。5.4 焊NTC的几个血泪教训最后聊几个焊接NTC的实战细节。第一不是所有NTC都耐高温部分贴片NTC长时间超过150℃后阻值会漂移所以焊接要快烙铁温度别高于350℃一次焊不好就等冷却再补焊。第二带引线的玻璃头NTC引脚不能用力弯折弯折处容易断最好先在引线上套热缩管固定再弯。第三NTC靠近MOS管安装时导热硅脂不是越多越好多了反而热阻变大涂薄薄一层让NTC和散热面充分接触才正确。第四焊完清洁助焊剂残留助焊剂在高温下可能碳化形成漏电路径导致NTC分压网络读数漂移。还有一个小细节NTC旁边的固定电阻不要选温漂系数大的普通厚膜电阻尽量用低温度系数的精密电阻。虽然固定电阻漂移不大但在-20℃到80℃环境里可能造成好几度的测量误差。改板时注意这个小点比事后写一堆补偿代码省事得多。改FOC板、问NTC表面上看只是一次“加个温度保护”的小改动但真正做下来你会发现从选型到布局、从固定电阻到采样时机、从保护阈值到断线检测每一环都会影响最终体验。我个人建议是改板第一版先保留所有测试点NTC的ADC输入点、分压节点、比较器输出都引出来方便测量保护策略先做保守再逐步放宽上电测试务必从小电流、低压开始。这样即便NTC温度读数或者保护行为不符合预期你也能快速定位是硬件、固件还是布局的问题。