本帖最后由 不语arc 于 2024-12-26 11:39 编辑
1.背景
在上一篇分享中,我提到了一个问题:
为什么U、V两相的运放反相输入端为什么是实际的SUM?官方给出的计算公式,是按照反相输入端接地计算得到的,虽然SUM值不算大。
在这里我对两种情况分别讨论,用实验结果来验证。
2.分组实验
2.1 情况一:U、V两相的运放反相输入端是总电流SUM
重新推理公式,虚短和虚断:
计算得:
因此:其中,Uo为运放输出值,也就是ADC实际采样的值,Uin为采样电阻两端的电压值。
由公式修改ADC采样函数
typedef struct
{
float Ia; // Phase A current
float Ib; // Phase B current
float Ic; // Phase C current
float Ibus;
float Vbus;
float VHandle; //0-3.3的范围
uint16_t ADC_Ia; // Phase A Voltage(I*R)
uint16_t ADC_Ib; // Phase B Voltage
uint16_t ADC_Ibus; // SUM Voltage
uint16_t ADC_Ia_offset; // 电流零点偏置
uint16_t ADC_Ib_offset; // 电流零点偏置
uint16_t ADC_Ibus_offset; // 电流零点偏置
uint16_t ADC_Vbus; // Phase bus Voltage
uint16_t ADC_Handle;
} CURRENT_Def;
#define ADC_V_K 0.0008 // 3.3/4096.0 // ADC 与电压转换系数
#define VREF 1.65 //参考电压偏置
#define Voffset 1.605 //偏置电压大小
#define AM_GAIN 4.86 //运放放大倍数
#define R_SENSE 0.02 //Ω 采样电阻
#define V_GAIN 21 //(100+100+10)/10
void GetADCvaule(){
float SUM;
current.ADC_Ia = (int16_t)ADC_GetValue(CURR_CHANNEL_U);
current.ADC_Ib = (int16_t)ADC_GetValue(CURR_CHANNEL_V);
current.ADC_Ibus = (int16_t)ADC_GetValue(IBUS_CHANNEL);
current.Ibus = (ADC_V_K*(current.ADC_Ibus-current.ADC_Ibus_offset) - Voffset) / (AM_GAIN * R_SENSE);
SUM = current.Ibus * R_SENSE;
current.Ia = (ADC_V_K*(current.ADC_Ia-current.ADC_Ia_offset) - Voffset + 4.84*SUM) / (AM_GAIN * R_SENSE);
current.Ib = (ADC_V_K*(current.ADC_Ib-current.ADC_Ib_offset) - Voffset + 4.84*SUM) / (AM_GAIN * R_SENSE);
// current.Ia = (ADC_V_K*(current.ADC_Ia-current.ADC_Ia_offset) - Voffset) / (AM_GAIN * R_SENSE);
// current.Ib = (ADC_V_K*(current.ADC_Ib-current.ADC_Ib_offset) - Voffset) / (AM_GAIN * R_SENSE);
current.Ic = current.Ibus - current.Ia - current.Ib;
current.ADC_Vbus = (int16_t)ADC_GetValue(VDC_CHANNEL);
current.Vbus = ADC_V_K*(current.ADC_Vbus) * V_GAIN;
current.ADC_Handle = (int16_t)ADC_GetValue(Handle_CHANNEL);
current.VHandle = ADC_V_K*(current.ADC_Handle); //0-3.3的范围
}
对电机进行foc控制,将ADC电流波形通过串口打印出来。测试了几组,稳定时波形差不多是这样。
2.2 情况二:U、V两相的运放反相输入端是GND
计算公式如下:
实际执行上述代码的注释部分,求Ia和Ib。
再次实验采样三相电流,打印输出。波形差不多。
3.结论
SUM为Ibus*0.02,由于当前的转速较慢,SUM值较小,未能根据波形判断出反相端 接入情况。后续将继续调试完成高转速下的波形判断,当Ibus电流变大,两种接入情况将一目了然。