大家好、
以下是客户可能需要您的帮助的问题:
项目:飞跨电容三级降压电路
客户使用28379D Launchpad 执行单个电压闭环(飞跨电容器电压平衡尚不受控制)、其中输出电压在输入达到20V 以上后开始下降。 假设如下:
1) 1)选择隔离放大器+常规运算放大器调节电路进行采样、并已使用稳定的直流电压测试、没有问题。
2) 在定制电路板的情况下、在开环中以不同的占空比输出相同的电压(例如20V 输出8V、30V 输出8V)、使用万用表在高电压输入下、采样电路的输出电压更高、 在计算机端检查单片单元时获得相同的数据。
3) 更换电源板到板接线后,问题依然存在,并试图减少干扰。
4) 4) 以下是输入电压约为30V 时的输出电压波形:


基于要点3)和4)、客户假设由于高压下输出电压的关断尖峰、输出电压有效值更高、因此单片机的采样值更高、控制开关的占空比也更低。 因此进行了以下更改:
开关频率为50kHz。 采样频率=开关频率、尝试通过将采样点修改为开关周期的3/4来避免尖峰后、问题仍然存在。
请查看以下代码:
void ConfigureADC(void)
{
EALLOW;
AdcaRegs.ADCCTL2.bit.PRESCALE = 0; //ADC clock divider
AdcSetMode(ADC_ADCA, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);//Sets the ADC operating mode: 12-bit single input signal
AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1;//An interrupt pulse is generated after the conversion is complete
AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;//Turn on all analogue circuits
DELAY_US(1000);
AdcbRegs.ADCCTL2.bit.PRESCALE = 0; //ADC clock divider
AdcSetMode(ADC_ADCB, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);//Sets the ADC operating mode: 12-bit single input signal
AdcbRegs.ADCCTL1.bit.INTPULSEPOS = 1;//An interrupt pulse is generated after the conversion is complete
AdcbRegs.ADCCTL1.bit.ADCPWDNZ = 1;//Turn on all analogue circuits
DELAY_US(1000);
AdccRegs.ADCCTL2.bit.PRESCALE = 0; //ADC clock divider
AdcSetMode(ADC_ADCC, ADC_RESOLUTION_12BIT, ADC_SIGNALMODE_SINGLE);//Sets the ADC operating mode: 12-bit single input signal
AdccRegs.ADCCTL1.bit.INTPULSEPOS = 1;//An interrupt pulse is generated after the conversion is complete
AdccRegs.ADCCTL1.bit.ADCPWDNZ = 1;//Turn on all analogue circuits
DELAY_US(1000);
EDIS;
}
void ConfigureEPWM(void)
{
EALLOW;
// Assumes ePWM clock is already enabled
EPwm1Regs.ETSEL.bit.SOCAEN = 0; // Disables the EWPWMxSOCA pulses
EPwm1Regs.ETSEL.bit.SOCASEL = 4; // Up counting
EPwm1Regs.ETPS.bit.SOCAPRD = 1; // Pulse is generated on Event 1
//The following needs to be set for single sampling and is configured again in this procedure in the PWM configuration function
EPwm1Regs.CMPA.bit.CMPA = 750; // Set compare A value to 2048 counts
EPwm1Regs.TBPRD = 999; // Set period to 4096 counts
EPwm1Regs.TBCTL.bit.CTRMODE = 3; // freeze counter
EDIS;
}
void SetupADCEpwm(void)
{
Uint16 acqps = 25;
EALLOW;
AdcaRegs.ADCSOC0CTL.bit.CHSEL = 0; //SOC0 convert to A0
AdcaRegs.ADCSOC0CTL.bit.ACQPS = acqps; //Sets the sampling window time
AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 5; //trigger signal - ePWM1, ADCSOCA
AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 0; //EOC0 is trigger for ADCINT1
AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1; //Enable interrupt flag bit
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; //make sure INT1 flag is cleared
AdcbRegs.ADCSOC0CTL.bit.CHSEL = 2; //SOC0 convert to B2
AdcbRegs.ADCSOC0CTL.bit.ACQPS = acqps; //Sets the sampling window time
AdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 5; //trigger signal - ePWM1, ADCSOCA
AdcbRegs.ADCINTSEL1N2.bit.INT1SEL = 0; //EOC0 is trigger for ADCINT1
AdcbRegs.ADCINTSEL1N2.bit.INT1E = 1; //Enable interrupt flag bit
AdcbRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; //make sure INT1 flag is cleared
AdccRegs.ADCSOC0CTL.bit.CHSEL = 2; //SOC0 convert to C2
AdccRegs.ADCSOC0CTL.bit.ACQPS = acqps; //Sets the sampling window time
AdccRegs.ADCSOC0CTL.bit.TRIGSEL = 5; //trigger signal - ePWM1, ADCSOCA
AdccRegs.ADCINTSEL1N2.bit.INT1SEL = 0; //EOC0 is trigger for ADCINT1
AdccRegs.ADCINTSEL1N2.bit.INT1E = 1; //Enable interrupt flag bit
AdccRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; //make sure INT1 flag is cleared
EDIS;
}
客户希望通过添加 RC 缓冲器来降低关断尖峰以查看问题是否可以改善、但 MOS 封装和电路板布局不允许。
您能帮助检查这个问题吗? 谢谢。
此致、
樱桃