TI中文支持网
TI专业的中文技术问题搜集分享网站

HVPM_Enhanced_Sensorless工程中电流标幺化处理过程疑问

#define BASE_CURRENT 10 // Base peak phase current (amp), Max. measurable peak curr.

实际电流峰值为10A。

第一步:

if (IsrTicker>=5000) 

offsetA= _IQmpy(K1,offsetA)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT1));//Phase A offset 

offsetB= _IQmpy(K1,offsetB)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT2));//Phase B offset 

offsetC= _IQmpy(K1,offsetC)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT3));//Phase C offset 

}

上述代码为一数字低通滤波器,循环N次后求得采样通道的静态偏差(即实际电流为0时的DSC采样值)。

第二步:clarke变换模块的输入将ADC采样值(减掉静态偏差后)放大两倍。

clarke1.As = _IQmpy2(_IQ12toIQ(AdcResult.ADCRESULT1)-offsetA); // Phase A curr. 

clarke1.Bs = _IQmpy2(_IQ12toIQ(AdcResult.ADCRESULT2)-offsetB); // Phase B curr.

以上是HVPM_Enhanced_Sensorless软件对相电流的采样标幺化全部过程。

 

由于实际电流大小是-10A~10A,标幺化后的变化范围应该是_IQ(-1)~_IQ(1),这一标幺化的过程由硬件与软件共同完成,而DSC采样范围为0~3.3V(对应ADC12位结果寄存器值为0~4096,12位数值定标范围为_IQ12(0)~_IQ12(1))。

 

按照我的理解,第二步中将ADC采样值放大两倍,使标幺化的结果为_IQ(-1)~_IQ(1),那么ADC采样值的范围就应该是_IQ(-0.5)~_IQ(0.5),这又与12位ADC采样范围_IQ12(0)~_IQ12(1)矛盾(即ADC采样结果不可能得到负值)。。。

 

问题:

1.HVPM_Enhanced_Sensorless工程对应的TI官方开发套件相电流调理采样到DSC时是什么范围(我使用的是其它硬件)?

2.何以ADC本来只能采样_IQ12(0)~_IQ12(1)的范围,软件中没有进行平移处理,而是直接放大两倍就得到标幺结果_IQ(-1)~_IQ(1)的范围,_IQ(-1)~_IQ(0)范围的结果是怎样得到的?


Chongming Ren:

顶一下、、、有人解答吗?

#define BASE_CURRENT 10 // Base peak phase current (amp), Max. measurable peak curr.

实际电流峰值为10A。

第一步:

if (IsrTicker>=5000) 

offsetA= _IQmpy(K1,offsetA)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT1));//Phase A offset 

offsetB= _IQmpy(K1,offsetB)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT2));//Phase B offset 

offsetC= _IQmpy(K1,offsetC)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT3));//Phase C offset 

}

上述代码为一数字低通滤波器,循环N次后求得采样通道的静态偏差(即实际电流为0时的DSC采样值)。

第二步:clarke变换模块的输入将ADC采样值(减掉静态偏差后)放大两倍。

clarke1.As = _IQmpy2(_IQ12toIQ(AdcResult.ADCRESULT1)-offsetA); // Phase A curr. 

clarke1.Bs = _IQmpy2(_IQ12toIQ(AdcResult.ADCRESULT2)-offsetB); // Phase B curr.

以上是HVPM_Enhanced_Sensorless软件对相电流的采样标幺化全部过程。

 

由于实际电流大小是-10A~10A,标幺化后的变化范围应该是_IQ(-1)~_IQ(1),这一标幺化的过程由硬件与软件共同完成,而DSC采样范围为0~3.3V(对应ADC12位结果寄存器值为0~4096,12位数值定标范围为_IQ12(0)~_IQ12(1))。

 

按照我的理解,第二步中将ADC采样值放大两倍,使标幺化的结果为_IQ(-1)~_IQ(1),那么ADC采样值的范围就应该是_IQ(-0.5)~_IQ(0.5),这又与12位ADC采样范围_IQ12(0)~_IQ12(1)矛盾(即ADC采样结果不可能得到负值)。。。

 

问题:

1.HVPM_Enhanced_Sensorless工程对应的TI官方开发套件相电流调理采样到DSC时是什么范围(我使用的是其它硬件)?

2.何以ADC本来只能采样_IQ12(0)~_IQ12(1)的范围,软件中没有进行平移处理,而是直接放大两倍就得到标幺结果_IQ(-1)~_IQ(1)的范围,_IQ(-1)~_IQ(0)范围的结果是怎样得到的?


Chongming Ren:

回复 Eric Ma:

谢谢答疑!请问这个偏置值是固定的吗(不是采样通道不确定的静态偏差?)?那为什么还要通过AD采样再滤波来得到?为何要有以下代码而不是直接将采样值减去IQ0.5?

if (IsrTicker>=5000) 

offsetA= _IQmpy(K1,offsetA)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT1));//Phase A offset 

offsetB= _IQmpy(K1,offsetB)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT2));//Phase B offset 

offsetC= _IQmpy(K1,offsetC)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT3));//Phase C offset 

}

#define BASE_CURRENT 10 // Base peak phase current (amp), Max. measurable peak curr.

实际电流峰值为10A。

第一步:

if (IsrTicker>=5000) 

offsetA= _IQmpy(K1,offsetA)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT1));//Phase A offset 

offsetB= _IQmpy(K1,offsetB)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT2));//Phase B offset 

offsetC= _IQmpy(K1,offsetC)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT3));//Phase C offset 

}

上述代码为一数字低通滤波器,循环N次后求得采样通道的静态偏差(即实际电流为0时的DSC采样值)。

第二步:clarke变换模块的输入将ADC采样值(减掉静态偏差后)放大两倍。

clarke1.As = _IQmpy2(_IQ12toIQ(AdcResult.ADCRESULT1)-offsetA); // Phase A curr. 

clarke1.Bs = _IQmpy2(_IQ12toIQ(AdcResult.ADCRESULT2)-offsetB); // Phase B curr.

以上是HVPM_Enhanced_Sensorless软件对相电流的采样标幺化全部过程。

 

由于实际电流大小是-10A~10A,标幺化后的变化范围应该是_IQ(-1)~_IQ(1),这一标幺化的过程由硬件与软件共同完成,而DSC采样范围为0~3.3V(对应ADC12位结果寄存器值为0~4096,12位数值定标范围为_IQ12(0)~_IQ12(1))。

 

按照我的理解,第二步中将ADC采样值放大两倍,使标幺化的结果为_IQ(-1)~_IQ(1),那么ADC采样值的范围就应该是_IQ(-0.5)~_IQ(0.5),这又与12位ADC采样范围_IQ12(0)~_IQ12(1)矛盾(即ADC采样结果不可能得到负值)。。。

 

问题:

1.HVPM_Enhanced_Sensorless工程对应的TI官方开发套件相电流调理采样到DSC时是什么范围(我使用的是其它硬件)?

2.何以ADC本来只能采样_IQ12(0)~_IQ12(1)的范围,软件中没有进行平移处理,而是直接放大两倍就得到标幺结果_IQ(-1)~_IQ(1)的范围,_IQ(-1)~_IQ(0)范围的结果是怎样得到的?


user1088122:

回复 Chongming Ren:

这段代码计算offset实际上是一个软件低通滤波器,截止频率3Hz左右,用于测量交流采样电路的直流偏置。

电路板设计的直流偏置是1.65V,但是实际应用中有可能出现偏差,比如你的3.3V电源实际输出是3.4V。所以对于不同的硬件电路,这个偏置值是不一样的,而这段代码则很好的解决了这一问题。

#define BASE_CURRENT 10 // Base peak phase current (amp), Max. measurable peak curr.

实际电流峰值为10A。

第一步:

if (IsrTicker>=5000) 

offsetA= _IQmpy(K1,offsetA)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT1));//Phase A offset 

offsetB= _IQmpy(K1,offsetB)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT2));//Phase B offset 

offsetC= _IQmpy(K1,offsetC)+_IQmpy(K2,_IQ12toIQ(AdcResult.ADCRESULT3));//Phase C offset 

}

上述代码为一数字低通滤波器,循环N次后求得采样通道的静态偏差(即实际电流为0时的DSC采样值)。

第二步:clarke变换模块的输入将ADC采样值(减掉静态偏差后)放大两倍。

clarke1.As = _IQmpy2(_IQ12toIQ(AdcResult.ADCRESULT1)-offsetA); // Phase A curr. 

clarke1.Bs = _IQmpy2(_IQ12toIQ(AdcResult.ADCRESULT2)-offsetB); // Phase B curr.

以上是HVPM_Enhanced_Sensorless软件对相电流的采样标幺化全部过程。

 

由于实际电流大小是-10A~10A,标幺化后的变化范围应该是_IQ(-1)~_IQ(1),这一标幺化的过程由硬件与软件共同完成,而DSC采样范围为0~3.3V(对应ADC12位结果寄存器值为0~4096,12位数值定标范围为_IQ12(0)~_IQ12(1))。

 

按照我的理解,第二步中将ADC采样值放大两倍,使标幺化的结果为_IQ(-1)~_IQ(1),那么ADC采样值的范围就应该是_IQ(-0.5)~_IQ(0.5),这又与12位ADC采样范围_IQ12(0)~_IQ12(1)矛盾(即ADC采样结果不可能得到负值)。。。

 

问题:

1.HVPM_Enhanced_Sensorless工程对应的TI官方开发套件相电流调理采样到DSC时是什么范围(我使用的是其它硬件)?

2.何以ADC本来只能采样_IQ12(0)~_IQ12(1)的范围,软件中没有进行平移处理,而是直接放大两倍就得到标幺结果_IQ(-1)~_IQ(1)的范围,_IQ(-1)~_IQ(0)范围的结果是怎样得到的?


Chongming Ren:

回复 user1088122:

谢谢,明白了。

赞(0)
未经允许不得转载:TI中文支持网 » HVPM_Enhanced_Sensorless工程中电流标幺化处理过程疑问
分享到: 更多 (0)