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.
您好,在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,
问题1:
AdcMirror.ADCRESULT1的值是ADC采样启动并完成则保存了初始化中配置的结果寄存器1那一路的值。
问题2:
*0.00024414不是用来转换Q格式的,*0.00024414就是/2^12,即4096,这是12位分辨率的ADC数据转换的基本公式Result/4096*3.0,这里的*3.0移到括号外了。
offsetA在中断函数interrupt void OffsetISR(void)中进行了标定。
经过Result/4096*3.0就将转化成DSP引脚电压了,整个计算公式还剩下*2/3.3,这应该是将DSP引脚电压转化成电流实际值,所以这里的*2/3.3应该是从硬件电路上得来的,需要翻看电路。
问题3:
这里的计算公式是为了计算方便改变了顺序,你要按照正确的方式理解,如我刚刚所说的,ADC的采样结果ADCRESULT/4096*3.0得出DSP引脚电压,然后*2/3.3应该是转化成实际电流,用于计算。
好的,看了您的回答对这个公式的理解豁然开朗!!!但是还有点问题:
在HVPM_Sensorless.c文件中没有任何关于ADC采样初始化和启动的程序段或函数调用,那AdcMirror.ADCRESULT1中如何有的数值呢?希望得到您的回答。
junli jiao,
在main的初始化中,有函数:
// Initialize ADC module
ADC_MACRO_INIT(ChSel,TrigSel,ACQPS);
ADC寄存器初始化配置,包括设置PWM触发ADC等。