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.
工具与软件:
尊敬的论坛:
这是一个有趣的观察发现。 请参与讨论以确定是否有效?
如果一个逆变器在驱动低功率因数感应电机、为什么逆变器的直流电流存在错误?
为什么只有低功率因数感应电机才会发生该错误?"
逆变器的功率因数和直流电流检测之间的关系是什么。
如何在不考虑功率因数的情况下实现准确的直流电流检测。 (控制算法只是开环 V/f 控制)
注意:调节和感应过程正确。 因此、在相同功率和频率下运行的高功率因数电机不会出现问题。
谢谢你
您好!
[报价用户 id="579115" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1465970/c2000ware-effect-of-power-factor-in-the-dc-current-sensing-of-the-inverter "]如果一个逆变器在驱动低功率因数感应电机、为什么逆变器的直流电流存在错误?
为什么只有低功率因数感应电机才会发生该错误?"
逆变器的功率因数和直流电流检测之间的关系是什么。
[报价]您指的是什么直流电流检测? 您是指轻负载运行感应电机时电机相电流感应中的误差增加? 或别的什么东西吗?
此致!
Kevin
是的、我是指感应电机以轻负载运行时、直流电流感应的误差增加。
借助-ve 直流母线线路中的电阻器执行直流电流检测。 我们还将使用三相分流器+直流分流器。
ADC 设置
//为 M1配置 SOC
// Isen_a_m1.
ADC_setupSOC (ADCC_BASE、ADC_SOC_NUMBER0、ADC_TRIGGER_EPWM1_SOCA
ADC_CH_ADCIN4、
MTR1_ADC_I_SAMPLEWINDOW);
//配置 PPB 以消除减法相关计算
// PPB 与 ADCA_SOC0关联
ADC_setupPPB (ADCC_BASE、MTR1_IU_ADC_PPB_NUM、ADC_SOC_NUMBER0);
//暂时将零写入此值、直到偏移校准完成
ADC_setPPBCalibrationOffset (ADCC_BASE、MTR1_IU_ADC_PPB_NUM、0);
// Isen_B_M1
ADC_setupSOC (ADCC_BASE、ADC_SOC_number1、ADC_TRIGGER_EPWM1_SOCA
ADC_CH_ADCIN0、
MTR1_ADC_I_SAMPLEWINDOW);
//配置 PPB 以消除减法相关计算
// PPB 与 ADCC_SOC0相关联
ADC_setupPPB (ADCC_BASE、MTR1_IV_ADC_PPB_NUM、ADC_SOC_Number1);
//暂时将零写入此值、直到偏移校准完成
ADC_setPPBCalibrationOffset (ADCC_BASE、MTR1_IV_ADC_PPB_NUM、0);
// Isen_C_M1
ADC_setupSOC (ADCC_BASE、ADC_SOC_number2、ADC_TRIGGER_EPWM1_SOCA
ADC_CH_ADCIN2、
MTR1_ADC_I_SAMPLEWINDOW);
//配置 PPB 以消除减法相关计算
// PPB 与 ADCA_SOC0关联
ADC_setupPPB (ADCC_BASE、MTR1_IW_ADC_PPB_NUM、ADC_SOC_Number2);
//暂时将零写入此值、直到偏移校准完成
ADC_setPPBCalibrationOffset (ADCC_BASE、MTR1_IW_ADC_PPB_NUM、0);
// VSEN_A_M1
ADC_setupSOC (ADCA_BASE、ADC_SOC_Number3、ADC_TRIGGER_EPWM1_SOCA
ADC_CH_ADCIN6、
MTR1_ADC_V_SAMPLEWINDOW);
// VSEN_B_M1
ADC_setupSOC (ADCC_BASE、ADC_SOC_Number4、ADC_TRIGGER_EPWM1_SOCA
ADC_CH_ADCIN6、
MTR1_ADC_V_SAMPLEWINDOW);
// VSEN_C_M1
ADC_setupSOC (ADCC_BASE、ADC_SOC_Number5、ADC_TRIGGER_EPWM1_SOCA
ADC_CH_ADCIN5、
MTR1_ADC_V_SAMPLEWINDOW);
// VSEN_DCBus_M1-->Trigg Interrupt
ADC_setupSOC (ADCA_BASE、ADC_SOC_NUMBER6、ADC_TRIGGER_EPWM1_SOCA
ADC_CH_ADCIN2、
MTR1_ADC_V_SAMPLEWINDOW);
// IDC
ADC_setupSOC (ADCA_BASE、ADC_SOC_NUMBER7、ADC_TRIGGER_EPWM1_SOCA
ADC_CH_ADCIN1、MTR1_ADC_I_SAMPLEWINDOW)
//配置 PPB 以消除减法相关计算
// PPB 与 ADCA_SOC0关联
ADC_setupPPB (ADCA_BASE、MTR1_IW_ADC_PPB_NUM、ADC_SOC_NUMBER7);
//暂时将零写入此值、直到偏移校准完成
ADC_setPPBCalibrationOffset (ADCA_BASE、MTR1_IW_ADC_PPB_NUM、0);
// VOT
ADC_setupSOC (ADCA_BASE、ADC_SOC_NUMBER8、ADC_TRIGGER_EPWM1_SOCA
ADC_CH_ADCIN0、MTR1_ADC_V_SAMPLEWINDOW)
//配置中断源
//电机1中断
ADC_setInterruptSource (ADCA_BASE、ADC_INT_number1、ADC_SOC_NUMBER8);
定义
#define MTR1_ADC_TRIGGER_SOC ADC_TRIGGER_EPWM1_SOCA // EPWM1_SOCA
#define MTR1_ADC_I_SAMPLEWINDOW 14.
#define MTR1_ADC_V_SAMPLEWINDOW 20.
#define MTR1_IU_ADC_BASE ADCA_BASE // ADCA-A1*/CMP1
#define MTR1_IV_ADC_BASE ADCC_BASE // ADCC-A9/C8*/CMP2
#define MTR1_IW_ADC_BASE ADCC_BASE // ADCC-A5/C2*/CMP3
#define MTR1_IU_ADCRES_BASE ADCARESULT_BASE // ADCA-A1*
#define MTR1_IV_ADCRES_BASE ADCCRESULT_BASE // ADCC-A9/C8*
#define MTR1_IW_ADCRES_BASE ADCCRESULT_BASE // ADCC-A5/C2*
#define MTR1_IU_ADC_CH_NUM ADC_CH_ADCIN1 // ADCA-A1*
#define MTR1_IV_ADC_CH_NUM ADC_CH_ADCIN8 // ADCC-A9/C8*
#define MTR1_IW_ADC_CH_NUM ADC_CH_ADCIN2 // ADCC-A5/C2*
#define MTR1_IU_ADC_SOC_NUM ADC_SOC_NOUber1 // ADCA-A1*-SOC1-PPB1
#define MTR1_IV_ADC_SOC_NUM ADC_SOC_NUMBER1 // ADCC-A9/C8*-SOC1-PPB1
#define MTR1_IW_ADC_SOC_NUM ADC_SOC_NUMBER2 // ADCC-A5/C2*-SOC2-PPB2
#define MTR1_IU_ADC_PPB_NUM ADC_PPB_NUMBER1 // ADCA-A1*-SOC1-PPB1
#define MTR1_IV_ADC_PPB_NUM ADC_PPB_NUMBER2 // ADCC-A9/C8*-SOC2-PPB1
#define MTR1_IW_ADC_PPB_NUM ADC_PPB_Number3 // ADCC-A5/C2*- SOC3-PPB2
#define MTR1_CMPSS_U_BASE CMPSS1_BASE
#define MTR1_CMPSS_V_BASE CMPSSLITE2_BASE
#define MTR1_CMPSS_W_BASE CMPSSLITE3_BASE
#define MTR1_IU_CMPHP_SEL ASYSCTL_CMPHPMUX_SELECT_1 // CMPSS1H-A1*
#define MTR1_IU_CMPLP_SEL ASYSCTL_CMPLPMUX_SELECT_1 // CMPSS1L-A1*
#define MTR1_IV_CMPHP_SEL ASYSCTL_CMPHPMUX_SELECT_2 // CMPSS2H-A9/C8*
#define MTR1_IV_CMPLP_SEL ASYSCTL_CMPLPMUX_SELECT_2 // CMPSS2L-A9/C8*
#define MTR1_IW_CMPHP_SEL ASYSCTL_CMPHPMUX_SELECT_3 // CMPSS3H-A5/C2*
#define MTR1_IW_CMPLP_SEL ASYSCTL_CMPLPMUX_SELECT_3 // CMPSS3L-A5/C2*
#define MTR1_IU_CMPHP_MUX 4 // CMPSS1H-A1*
#define MTR1_IU_CMPLP_MUX 4 // CMPSS1L-A1*
#define MTR1_IV_CMPHP_MUX 2 // CMPSS2H-A9/C8*
#define MTR1_IV_CMPLP_MUX 2 // CMPSS2L-A9/C8*
#define MTR1_IW_CMPHP_MUX 1 // CMPSS3H-A5/C2*
#define MTR1_IW_CMPLP_MUX 1 // CMPSS3L-A5/C2*
#define MTR1_IU_XBAR_EPWM_MUX XBAR_EPWM_MUX00_CMPSS1_CTRIPH_OR_L // CMPSS1-HP&LP、A1*
#define MTR1_IV_XBAR_EPWM_MUX XBAR_EPWM_MUX02_CMPSS2_CTRIPH_OR_L // CMPSS2-HP&LP、A9/C8*
#define MTR1_IW_XBAR_EPWM_MUX XBAR_EPWM_MUX04_CMPSS3_CTRIPH_OR_L // CMPSS3-HP&LP、A5/C2*
#define MTR1_IU_XBAR_MUX XBAR_MUX00 // CMPSS1-HP&LP
#define MTR1_IV_XBAR_MUX XBAR_MUX02 // CMPSS2-HP&LP
#define MTR1_IW_XBAR_MUX XBAR_MUX04 // CMPSS3-HP&LP
在 EPWM 中断时读取 adcdata
float32_t 值;
//转换 A 相电流
value =(float32_t) ADC_readPPBResult (ADCCRESULT_BASE、MTR1_IU_ADC_PPB_NUM);
pADCData->I_A.value[0]= value * pADCData->current_sf;
//转换 B 相电流
value =(float32_t) ADC_readPPBResult (ADCCRESULT_BASE、MTR1_IV_ADC_PPB_NUM);
pADCData->I_A.value[1]= value * pADCData->current_sf;
//转换 C 相电流
value =(float32_t) ADC_readPPBResult (ADCCRESULT_BASE、MTR1_IW_ADC_PPB_NUM);
pADCData->I_A.value[2]= value * pADCData->current_sf;
//转换 A 相电压
value =(float32_t) ADC_readResult (ADCARESULT_BASE、ADC_SOC_Number3);
pADCData->V_V.value[0]= value * pADCData->voltage_sf;
//转换 B 相电压
value =(float32_t) ADC_readResult (ADCCRESULT_BASE、ADC_SOC_Number4);
pADCData->V_V.value[1]= value * pADCData->voltage_sf;
//转换 C 相电压
value =(float32_t) ADC_readResult (ADCCRESULT_BASE、ADC_SOC_Number5);
pADCData->V_V.value[2]= value * pADCData->voltage_sf;
//转换直流母线电压
value =(float32_t) ADC_readResult (ADCARESULT_BASE、ADC_SOC_NUMBER6);
pADCData->DCBus_V = value * pADCData->dcBusvoltage_sf;
//转换 C 相电流
value =(float32_t) ADC_readPPBResult (ADCARESULT_BASE、MTR1_IW_ADC_PPB_NUM);
value = HAL_movingAvg (value、&SMA_dci);//为获得更好的稳定性、使用简单移动平均值而不是 EMA
pADCDdata->DCBus_I =值* 0.0064453125;
注意:调节正确。 因为 PMSM 与 IM 加载电流是匹配的。 仅在轻负载或具有低功率因数工作区域的 IM 情况下考虑。 它面临感应到的直流电流误差问题。
您好!
好的、我看到了。 直流电流检测全部是三相电流组合(如单分流检测)。
您的常规三相电流检测信号上是否也出现误差? 还是仅使用直流并联电 流感应? 您也如何测量误差?
您是否在 有一些负载的情况下测试低功率因数感应电机? 或空载? 如果还没有、可以尝试设置一些负载吗?
此致!
Kevin
您好!
有。 我们也在三相电流中检测误差。 仅限1-3%。 误差不大。
我们要测量的反馈值(以4kHz 的速率对400个样本执行 RMS 测试)与通过钳位表测量的电流之间的误差。 (测量设备是一个体面的设备、只有福禄克钳表、也可使用不同的功率计进行熔化验证)
从我们的观察结果可以看出、检测到的直流电流误差仅为200%左右。 此外、仅在空载条件下观察到误差。 我们也使用不同的感应电机进行了测试、电机的功率因数范围为0.1-0.3。 空载情况下只会观察到该误差。
与开关频率、死区、样本一起播放。未观察到改进。
谢谢