
前言本项目使用 CMS8S6990 主控捕获外部 20~40Hz PWM 信号输出四路 90° 移相 PWM 驱动四个并联 MOS 控制电流输出通过总电流采样与动态基准学习实现 MOS 断路检测并以 IO 高低电平输出故障信息同时具备过温保护功能。一、总体设计系统以 CMS8S6990 为核心形成“输入捕获 → 输出移相 PWM → 驱动 MOS → 电流采样 → 基准学习 → 故障检测 → 报错输出”的闭环。1.捕获外部 PWM得到频率和占空比2.用定时器 1 生成四路 90° 移相 PWM频率和占空比跟随输入3.四路 PWM 经驱动电路控制四个并联 MOS4.采样电阻采集总电流经 100 倍运放送入 ADC5.系统不断学习当前正常电流基准6.当电流明显小于基准时进入 MOS 检测流程7.检测流程依次单开四路 MOS判断哪一路断路8.通过 IO 高低电平输出故障信息9.NTC 实时测温超过 120℃ 关断输出低于 80℃ 恢复。二、关键实现1.输入 PWM 捕获捕获外部 20~40Hz、占空比 0~100%、高电平 5V 的 PWM 信号计算频率和占空比用于更新输出 PWM 的 ARR、CCR、CNT 等变量。2.四路移相 PWM 生成原方案使用 CMS8S6990 的 EPWM但 EPWM 不能读取 CNT 值也没有 CNT 寄存器导致无法在高电平时刻读取电流值低电平时电流为 0也无法实现移相。改用定时器 1自定义 ARR、CCR、CNT 变量通过捕获输入 PWM 给它们赋值用定时器控制 GPIO 翻转生成四路 PWM。四路之间依次相差 90°本质是错位导通避免四路 MOS 同时导通造成电流叠加和纹波过大。3.电流采样与 ADC采样电阻将总电流转换为电压经 100 倍运放放大后送入 ADC。放大倍数不足时ADC 分辨率不够电流变化不明显影响故障判断。4.电流基准学习系统开始工作时先扫描一次如果四路都是通路就把当前采集到的电流值记为基准值当有一路断开时总电流会变小系统不是用固定阈值判断而是不断学习、慢慢逼近当前正常电流值总电流在不断变小的过程中基准值也跟着调整避免因输入占空比变化或缓慢漂移导致误判只有当电流明显低于学习基准时才进入 MOS 检测流程判断是哪一路损坏。这样做的目的是在输入占空比不断变化的情况下保持一个动态的正常基准不轻易进入 MOS 判断函数避免检测过程本身造成电流波动和不稳定。5.MOS 故障检测检测函数执行 4 次每次只开启一个 MOS关闭其他三个测量总电流判断该路是否导通连续几次检测电流小于阈值判定该 MOS 断路四个 MOS 并联正常时四路都工作总电流是四路之和单开一路时电流约为原来的四分之一左右如果某一路坏单开该路时电流会明显偏小或接近 0检测时总电流会变大变小不稳定这是调试中的主要问题之一。6.过温保护和报错输出10K NTC 采集温度超过 120℃ 关闭 MOS 输出温度回落到 80℃ 以下恢复正常。加入回差避免在阈值附近频繁开关。通过 IO 口以高低电平形式输出故障信息数据位长度等于一个 PWM 周期输出频率跟随输入频率。这样报错信息与输入 PWM 同步便于外部设备识别。调试与踩坑记录1.PWM 不能读 CNT、不能移相CMS8S6990 的 EPWM 没有 CNT 寄存器无法读取计数器值也不能移相。改用定时器 1自定义 ARR、CCR、CNT 变量通过捕获输入 PWM 赋值用定时器控制 GPIO 翻转实现四路 90° 移相。2.电流放大器倍数不足改用 100 倍放大提高 ADC 采集灵敏度。3.输入占空比变化导致电流变化加入电流基准学习机制不断逼近当前正常电流值只有明显低于基准时才进入检测流程。4.过温保护阈值回差设置回差120℃ 关断降低到80℃ 恢复保证稳定工作。