因为现场运行的控制器无法可靠检测并控制闪络,客户上个月找我协助分析解决。
我历时一个月左右对硬件、软件进行了深入分析,发现一些问题,并分别做了修改,
同时改进了闪络检测算法,经过完整测试,达到了非常好的性能。
今天,客户将带着修改的控制器到现场更换,实测以确认是否问题。
在整个处理过程中,我发现了以下可能导致闪络不能可靠检测以及控制的问题:
过零检测电路的抗干扰能力差
采用迟滞比较器,选择允许的最大相移所对应的最佳低通滤波器的电容参数,达到了最佳的抗干扰效果,根据与实际过零点的延时严格计算软件导通角延时的边界值,以确保不会误触发下一个半波。
改进后的过零检测电路
可控硅触发变压器的驱动电路存在问题
+5V电源电压的上电迟于+24V的电源电压的上电,导致在合闸瞬间,驱动电路产生异常波形,误触发可控硅。
驱动电路抗干扰能力差,发生闪络时如果二次电流比较大,+5V电源产生电压跌落,从而产生干扰信号,造成在DSP关闭触发脉冲串之后,可控硅仍被误触发,闪络无法被立即控制。
对电路重新改造,解决电源不同时上电的问题,同时在三极管的BE极并上合适电容,滤除干扰信号,避免可控硅被误触发。
改进后的可控硅触发变压器的驱动电路
可控硅导通角比较大时,定时器中断标志缓存的问题
导通角延时计时时间很短,定时器产生第一次中断后又立即被用于产生可控硅触发脉冲,
在进入中断函数关闭定时器之前,定时器又自动计时并立即溢出并产生中断缓存到PIE中断中。
在ADC中断翻转IO口,运行一段时间,观测不到IO口的翻转
通过
PieCtrlRegs.PIEIFR1.bit.INTx7 = 0清除中断标志有严重的问题;
PieCtrlRegs.PIEIFR1.bit.INTx7 = 0清除中断标志有严重的问题;
因为PIEIFR1不是原子位操作,在清除INTx7的中断标志时同时清除了ADC中断标志,使得无法进入ADC采样完成中断。
我通过下述方法巧妙解决了这个问题:
在启动定时器的代码中,当设置了PRDH:PRD寄存器,并通过置位TRB标志位将数值立即从影响寄存器加载到真实寄存器之后,把PRDH:PRD寄存器再次赋值位比较大的数值,比如65535,代码如下:
#define SPARK_TIMER_ENABLE() do{\
PieCtrlRegs.PIEIER1.bit.INTx7 = 1;\
CpuTimer0Regs.TPR.all = 74;\
CpuTimer0Regs.TPRH.all = 0;\
CpuTimer0Regs.TCR.bit.TRB = 1;\
CpuTimer0Regs.TCR.bit.SOFT = 1;\
CpuTimer0Regs.TCR.bit.FREE = 0;\
CpuTimer0Regs.TCR.bit.TIF = 1;\
CpuTimer0Regs.TCR.bit.TIE = 1;\
CpuTimer0Regs.PRD.all = SPARK_TIMER_INIT_COUNTER;\
CpuTimer0Regs.TCR.bit.TSS = 0;\
}while(0)
复制代码在修改了可控硅触发电路以及过零检测电路,断开变压器以白炽灯作为负载通过示波器观测各个工作波形以及稳定性。
当把导通角上升到最高之后,运行一段时间,控制器居然误检测到闪络,立即关闭可控硅。
然后,此时变压器的二次电压和二次电流并没有信号输入,DSP检测到的ADC数值应该为0。
用JLINK在线调试代码,在检测到闪络的代码处设置断点。
启动设备,控制导通角上升至180°,不多时,程序便停在了断点处,
此时,二次电流瞬时AD值高达56,对应的二次电流瞬时值为128mA,
而上一个瞬时值约为0mA,前后差值与额定二次电流相比,超过了闪络检测的阈值,因此判断为发生了闪络。
当把导通角上升到最高之后,运行一段时间,控制器居然误检测到闪络,立即关闭可控硅。
然后,此时变压器的二次电压和二次电流并没有信号输入,DSP检测到的ADC数值应该为0。
用JLINK在线调试代码,在检测到闪络的代码处设置断点。
启动设备,控制导通角上升至180°,不多时,程序便停在了断点处,
此时,二次电流瞬时AD值高达56,对应的二次电流瞬时值为128mA,
而上一个瞬时值约为0mA,前后差值与额定二次电流相比,超过了闪络检测的阈值,因此判断为发生了闪络。
在靠近DSP的输入端口并上了103即10nF的电容。
由于运放输出端到ADC输入端串联了5.1kΩ的电阻,低通滤波的-3dB截止频率为3.12kHz,
把导通角设置到180°运行一段时间,不再误检测到闪络。
由于运放输出端到ADC输入端串联了5.1kΩ的电阻,低通滤波的-3dB截止频率为3.12kHz,
把导通角设置到180°运行一段时间,不再误检测到闪络。
应该是客户选用的TMS320F2833F核心板PCB板设计不合理,比如信号和地没有做到合理分区等。
靠近ADC输入端口并联103电容解决ADC数值错误的问题
没有可靠的闪络解决算法
仅通过硬件微分电路+外部中断检测闪络;
我修改了软件代码,增加了基于二次电流、二次电压的微分、积分判断算法,同时预留了硬件检测判断方法;
所有检测方法都有相应设置参数和使能开关,在现场使用时,可以根据电场情况使能不同的检测方法并设置合适的参数。
不同的闪络类型需要用不同的方法检测,二次电流瞬间脉冲的闪络适合用电流微分法检测
来源:物联网全栈开发