This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
您好!
我们正在将直流转换为交流、因此我们将 TMS320F280049C 微控制器用于逆变器应用。 但输出电流不稳定、在我们在无负载(空载)的情况下启动逆变器后、它会随输入电压的变化而变化。 当我们在无负载条件下启动逆变器且输入电压范围在350 - 450范围内变化时、值介于1000mA - 4000ma 之间、施加负载后得到1A 的 差值。 代码如下
INT IFB_V;
内部 IFB_U;
整型 IFB_V_REAL;
整型 IFB_U_REAL;
长 ISqrtSum_U;
长 ISqrtSum_V;
内部 IFB_V_rms;
内部 IFB_U_rms;
int IFb_V_rms_f;
int ifb_u_rms_f;
float32_t ifb_v_real、ifb_u_real、ifb_total;
/********* 这部分代码位于主循环中 /
sum2 += AdcbResultRegs。 ADCRESULT4;
sum2 += AdcbResultRegs。 ADCRESULT5;
sum2 += AdcbResultRegs。 ADCRESULT6;
sum2 += AdcbResultRegs。 ADCRESULT7;
//计算 IAC_U 的中点
Sum3 += AdcaResultRegs。 ADCRESULT0;
Sum3 += AdcaResultRegs。 ADCRESULT1;
Sum3 += AdcaResultRegs。 ADCRESULT2;
Sum3 += AdcaResultRegs。 ADCRESULT3;
IFB_V_ref = Sum2 >> 2;//获得 IFB_V 通道的基准值
IFB_U_ref = Sum3 >> 2;//获得 IFB_U 通道的基准值
中断 void epwm1_ISR (void)
{
IFB_V = AdcbResultRegs。 ADCRESULT2;
IFB_U = AdcaResultRegs。 ADCRESULT1;
IFB_V =(int) IFB_V_ref - IFB_V;//-30
IFB_U = IFB_U - IFB_U_ref;//+30
IFB_V_REAL =(int)(((long) IFB_V * 85)>> 9);//34.158*1499/512 =10、0.01A 为1
IFB_U_REAL =(int)(((long) IFB_U * 85)>> 9);//34.158*1499/512 =10、0.01A 为1
IFb_v_real =(float32_t) IFb_V_real;
IFb_u_real =(float32_t) IFb_U_real;
ifb_total = ifb_v_real - ifb_u_real;//不需要
如果(abs (IFB_V_REAL)> IFB_REAL_max)
{
IFb_Real_max = Abs (IFB_V_REAL);
}
如果(abs (IFB_U_REAL)> IFB_REAL_max)
{
IFb_Real_max = Abs (IFB_U_Real);
}
ISqrtSum_U +=(长整型)(IFB_U_REAL)*(IFB_U_REAL);
ISqrtSum_V +=(长整型)(IFB_V_REAL)*(IFB_V_REAL);
tempI1 =(ISqrtSum_U * 41)>> 12;
IFB_U_rms =_IQ1sqrt (tempI1);
IFB_U_rms =(IFB_U_rms >> 1);
IFB_U_rms_f +=(((IFB_U_rms - IFB_U_rms_f)>> 2);
tempI2 =(ISqrtSum_V * 41)>> 12;
IFB_V_rms =_IQ1sqrt (tempI2);
IFB_V_rms =(IFB_V_rms >> 1);
IFB_V_rms_f +=((IFB_V_rms - IFB_V_rms_f)>> 2);
}
/***** 这是另一个函数、我们在其中计算当前值 /
CURR_rms_print =(int)(_IQ1int (((IFB_V_rms_f + IFB_U_rms_f)>> 1));
CURR_RMS_PRINT *= 1000;//将电流转换为 mA
void initGlobalVariables (void)
{
ISqrtSum_U = 0;
ISqrtSum_V = 0;
IFB_V_rms = 0;
IFB_U_rms = 0;
IFb_V_rms_f = 0;
IFb_U_rms_f = 0;
IFb_v_real = 0.0f;
ifb_u_real = 0.0f;
IFB_TOTAL = 0.0f;
}
此致、
Swaminadhan
您好!
请允许我花几天时间给您回复。
此致、
Ben Collier
您好!
很抱歉出现此延迟、您仍然遇到此问题?
谢谢!
Ben Collier
尊敬的 Ben Collier:
是的,我仍然面临着这个问题。 当我们在无负载连接的情况下启动逆变器时、电流读数将在不同的电压下得到不同的值、这些电压也介于340-450Vdc 之间。 逆变器启动后、我们施加负载、它将显示与实际电流值不同的1A。
此致、
Swaminadhan
您好!
为什么您认为这是 ADC 精度方面的问题? 您是否以其他方式测量电压?
谢谢!
Ben Collier
您好!
电力电子装置中导致噪声和 EMI 的开关瞬态。 噪声可能会耦合到 ADC 输入线路中、导致读数不准确。 实际上、我们观察到、当逆变器在没有负载的情况下开启时、连接负载时我们获得的值不同、我们得到的值也不同。 我们还观察到了输出电流波形中的。
谢谢!
Swaminadhan
好的、我理解、这听起来像是一个系统问题、而不是 ADC 本身的问题。 这正是我所尝试的、因此我可以请求合适的人员提供帮助。