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

HVPM_sensorless.c中的ADC问题求助

您好,在C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVPM_Sensorless_2833x 路径下的HVPM_sensorless.c文件中有如下代码:

#ifdef DSP2833x_DEVICE_H
clarke1.As=((AdcMirror.ADCRESULT1)*0.00024414-offsetA)*2*0.909; // Phase A curr.
clarke1.Bs=((AdcMirror.ADCRESULT2)*0.00024414-offsetB)*2*0.909; // Phase B curr.
#endif // ((ADCmeas(q12)/2^12)-offset)*2*(3.0/3.3)

问题1:AdcMirror.ADCRESULT1这里面存放的是ADC采样的电压值。但是问题是我看了工程文件后没有发现关于从外界把采样数据进行处理的文件,我想问这个里面的数据是从哪个文件得到的?

问题2:*0.00024414我的理解是用来转换Q格式的,目的是转化为(0,1)?之后-offsetA是减去的偏置电压,这个数值如何确定?再*2是为了什么?

问题3:看过论坛中的问题,*(3.0/3.3)是为了在28335中适用,但是我的外部电压值要是不超过3呢,这个是不是和Adcresult计算有关?但是我没有在project中发现相关的.c文件。

问题比较多 希望得到解答!谢谢

junli jiao:

回复 Joey Mao:

好的,看了您的回答对这个公式的理解豁然开朗!!!但是还有点问题:

在HVPM_Sensorless.c文件中没有任何关于ADC采样初始化和启动的程序段或函数调用,那AdcMirror.ADCRESULT1中如何有的数值呢?希望得到您的回答。

您好,在C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVPM_Sensorless_2833x 路径下的HVPM_sensorless.c文件中有如下代码:

#ifdef DSP2833x_DEVICE_H
clarke1.As=((AdcMirror.ADCRESULT1)*0.00024414-offsetA)*2*0.909; // Phase A curr.
clarke1.Bs=((AdcMirror.ADCRESULT2)*0.00024414-offsetB)*2*0.909; // Phase B curr.
#endif // ((ADCmeas(q12)/2^12)-offset)*2*(3.0/3.3)

问题1:AdcMirror.ADCRESULT1这里面存放的是ADC采样的电压值。但是问题是我看了工程文件后没有发现关于从外界把采样数据进行处理的文件,我想问这个里面的数据是从哪个文件得到的?

问题2:*0.00024414我的理解是用来转换Q格式的,目的是转化为(0,1)?之后-offsetA是减去的偏置电压,这个数值如何确定?再*2是为了什么?

问题3:看过论坛中的问题,*(3.0/3.3)是为了在28335中适用,但是我的外部电压值要是不超过3呢,这个是不是和Adcresult计算有关?但是我没有在project中发现相关的.c文件。

问题比较多 希望得到解答!谢谢

junli jiao:

回复 Joey Mao:

谢谢您的回答,很详细!!!是我疏忽了。。。

您好,在C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVPM_Sensorless_2833x 路径下的HVPM_sensorless.c文件中有如下代码:

#ifdef DSP2833x_DEVICE_H
clarke1.As=((AdcMirror.ADCRESULT1)*0.00024414-offsetA)*2*0.909; // Phase A curr.
clarke1.Bs=((AdcMirror.ADCRESULT2)*0.00024414-offsetB)*2*0.909; // Phase B curr.
#endif // ((ADCmeas(q12)/2^12)-offset)*2*(3.0/3.3)

问题1:AdcMirror.ADCRESULT1这里面存放的是ADC采样的电压值。但是问题是我看了工程文件后没有发现关于从外界把采样数据进行处理的文件,我想问这个里面的数据是从哪个文件得到的?

问题2:*0.00024414我的理解是用来转换Q格式的,目的是转化为(0,1)?之后-offsetA是减去的偏置电压,这个数值如何确定?再*2是为了什么?

问题3:看过论坛中的问题,*(3.0/3.3)是为了在28335中适用,但是我的外部电压值要是不超过3呢,这个是不是和Adcresult计算有关?但是我没有在project中发现相关的.c文件。

问题比较多 希望得到解答!谢谢

yuan nie:

回复 Joey Mao:

Joey Mao,你好,我对这个式子还有一些疑问,就是2^12=4096表示值得范围是0~4095,我的参考书上的计算我公式为result=4095x(输入电压—ADCL0)/3,把公式变换一下就是输入电压=(result/4095)*3+ADCL0,ADCL0 为ADC转换的参考电平,实际使用时常与AGND连接在一起,即ADCL0=0,我想问的就是这里ADCL0表示的就是 offsetA吗,但是感觉不对,还有就是式子中到底是用4095还是4096了?

您好,在C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVPM_Sensorless_2833x 路径下的HVPM_sensorless.c文件中有如下代码:

#ifdef DSP2833x_DEVICE_H
clarke1.As=((AdcMirror.ADCRESULT1)*0.00024414-offsetA)*2*0.909; // Phase A curr.
clarke1.Bs=((AdcMirror.ADCRESULT2)*0.00024414-offsetB)*2*0.909; // Phase B curr.
#endif // ((ADCmeas(q12)/2^12)-offset)*2*(3.0/3.3)

问题1:AdcMirror.ADCRESULT1这里面存放的是ADC采样的电压值。但是问题是我看了工程文件后没有发现关于从外界把采样数据进行处理的文件,我想问这个里面的数据是从哪个文件得到的?

问题2:*0.00024414我的理解是用来转换Q格式的,目的是转化为(0,1)?之后-offsetA是减去的偏置电压,这个数值如何确定?再*2是为了什么?

问题3:看过论坛中的问题,*(3.0/3.3)是为了在28335中适用,但是我的外部电压值要是不超过3呢,这个是不是和Adcresult计算有关?但是我没有在project中发现相关的.c文件。

问题比较多 希望得到解答!谢谢

Joey Mao:

回复 yuan nie:

yuan nie,

ADCL0和offsetA在两个公式中概念是一样的,都是表示偏置值。但是要根据具体的应用情况来确定这个值,这里是ADC一般用于采样三相电流,偏置值一般区中间值,也就是1.5V。

另外,ADCRESULT寄存器的有效数据位12位,表示的数据范围是0~4095一共4096个值,理论上来说是Result/4095*3.0,而由于使用4096与4095产生的误差较小,而计算时通常不用除法(太费时间)而是使用右移12位,即除以2^12,有利于程序计算。

您好,在C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVPM_Sensorless_2833x 路径下的HVPM_sensorless.c文件中有如下代码:

#ifdef DSP2833x_DEVICE_H
clarke1.As=((AdcMirror.ADCRESULT1)*0.00024414-offsetA)*2*0.909; // Phase A curr.
clarke1.Bs=((AdcMirror.ADCRESULT2)*0.00024414-offsetB)*2*0.909; // Phase B curr.
#endif // ((ADCmeas(q12)/2^12)-offset)*2*(3.0/3.3)

问题1:AdcMirror.ADCRESULT1这里面存放的是ADC采样的电压值。但是问题是我看了工程文件后没有发现关于从外界把采样数据进行处理的文件,我想问这个里面的数据是从哪个文件得到的?

问题2:*0.00024414我的理解是用来转换Q格式的,目的是转化为(0,1)?之后-offsetA是减去的偏置电压,这个数值如何确定?再*2是为了什么?

问题3:看过论坛中的问题,*(3.0/3.3)是为了在28335中适用,但是我的外部电压值要是不超过3呢,这个是不是和Adcresult计算有关?但是我没有在project中发现相关的.c文件。

问题比较多 希望得到解答!谢谢

yuan nie:

回复 Joey Mao:

嗯,明白了,谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » HVPM_sensorless.c中的ADC问题求助
分享到: 更多 (0)