最近在看controlSUITE里面的例程,看到“C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVPM_Sensorless_2833x”的HVPM_Sensorless_2833x里面讲到offset的问题,初始的offset设置为0,在电机还没启动时,经过一个interrupt void OffsetISR(void)程序,讲ADC的初始偏置求出来了,笔者算了一下,滤波的效果很好。然后在interrupt void MainISR(void),算电流标幺值的程序为
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.
这里直接将采来的标幺值减去offsetA,不是应该减去0.5再减去offset吗?采来的AdcMirror.ADCRESULT1)*0.00024414取值范围不应该是0:1,为什么没减0.5呢?
rookiecalf:
offset那个偏值就是0.5,应该采样采的只有正值,而实际电流是有正负的,这样0就是采样的中性点
最近在看controlSUITE里面的例程,看到“C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVPM_Sensorless_2833x”的HVPM_Sensorless_2833x里面讲到offset的问题,初始的offset设置为0,在电机还没启动时,经过一个interrupt void OffsetISR(void)程序,讲ADC的初始偏置求出来了,笔者算了一下,滤波的效果很好。然后在interrupt void MainISR(void),算电流标幺值的程序为
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.
这里直接将采来的标幺值减去offsetA,不是应该减去0.5再减去offset吗?采来的AdcMirror.ADCRESULT1)*0.00024414取值范围不应该是0:1,为什么没减0.5呢?
chuang hou:
回复 rookiecalf:
我的意思是我在代码中找不到把offset设置为0.5的地方。
最近在看controlSUITE里面的例程,看到“C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVPM_Sensorless_2833x”的HVPM_Sensorless_2833x里面讲到offset的问题,初始的offset设置为0,在电机还没启动时,经过一个interrupt void OffsetISR(void)程序,讲ADC的初始偏置求出来了,笔者算了一下,滤波的效果很好。然后在interrupt void MainISR(void),算电流标幺值的程序为
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.
这里直接将采来的标幺值减去offsetA,不是应该减去0.5再减去offset吗?采来的AdcMirror.ADCRESULT1)*0.00024414取值范围不应该是0:1,为什么没减0.5呢?
chuang hou:
回复 rookiecalf:
初始值设置为0,然后经过了一个offset的滤波环节,只是是offset获得了没有电流时候的ADC本身偏差值,并没有设置0.5的过程啊?
最近在看controlSUITE里面的例程,看到“C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVPM_Sensorless_2833x”的HVPM_Sensorless_2833x里面讲到offset的问题,初始的offset设置为0,在电机还没启动时,经过一个interrupt void OffsetISR(void)程序,讲ADC的初始偏置求出来了,笔者算了一下,滤波的效果很好。然后在interrupt void MainISR(void),算电流标幺值的程序为
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.
这里直接将采来的标幺值减去offsetA,不是应该减去0.5再减去offset吗?采来的AdcMirror.ADCRESULT1)*0.00024414取值范围不应该是0:1,为什么没减0.5呢?
rookiecalf:
回复 chuang hou:
我的理解是这样的,设计的时候是采样范围做归一,就是0.00024414这个系数了,而offset作为实际中点,就是0.5了
最近在看controlSUITE里面的例程,看到“C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVPM_Sensorless_2833x”的HVPM_Sensorless_2833x里面讲到offset的问题,初始的offset设置为0,在电机还没启动时,经过一个interrupt void OffsetISR(void)程序,讲ADC的初始偏置求出来了,笔者算了一下,滤波的效果很好。然后在interrupt void MainISR(void),算电流标幺值的程序为
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.
这里直接将采来的标幺值减去offsetA,不是应该减去0.5再减去offset吗?采来的AdcMirror.ADCRESULT1)*0.00024414取值范围不应该是0:1,为什么没减0.5呢?
chuang hou:
回复 rookiecalf:
设计的时候,给端口输入的电压只能是0~3V,那么得到的(AdcMirror.ADCRESULT1)*0.00024414这个值必然是在0~1之间,那么注释当中-0.5~0.5就得不到嘛。
最近在看controlSUITE里面的例程,看到“C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVPM_Sensorless_2833x”的HVPM_Sensorless_2833x里面讲到offset的问题,初始的offset设置为0,在电机还没启动时,经过一个interrupt void OffsetISR(void)程序,讲ADC的初始偏置求出来了,笔者算了一下,滤波的效果很好。然后在interrupt void MainISR(void),算电流标幺值的程序为
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.
这里直接将采来的标幺值减去offsetA,不是应该减去0.5再减去offset吗?采来的AdcMirror.ADCRESULT1)*0.00024414取值范围不应该是0:1,为什么没减0.5呢?
rookiecalf:
回复 chuang hou:
chuang hou
设计的时候,给端口输入的电压只能是0~3V,那么得到的(AdcMirror.ADCRESULT1)*0.00024414这个值必然是在0~1之间��那么注释当中-0.5~0.5就得不到嘛。
最近在看controlSUITE里面的例程,看到“C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVPM_Sensorless_2833x”的HVPM_Sensorless_2833x里面讲到offset的问题,初始的offset设置为0,在电机还没启动时,经过一个interrupt void OffsetISR(void)程序,讲ADC的初始偏置求出来了,笔者算了一下,滤波的效果很好。然后在interrupt void MainISR(void),算电流标幺值的程序为
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.
这里直接将采来的标幺值减去offsetA,不是应该减去0.5再减去offset吗?采来的AdcMirror.ADCRESULT1)*0.00024414取值范围不应该是0:1,为什么没减0.5呢?
rookiecalf:
回复 chuang hou:
chuang hou
设计的时候,给端口输入的电压只能是0~3V,那么得到的(AdcMirror.ADCRESULT1)*0.00024414这个值必然是在0~1之间,那么注释当中-0.5~0.5就得不到嘛。
最近在看controlSUITE里面的例程,看到“C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVPM_Sensorless_2833x”的HVPM_Sensorless_2833x里面讲到offset的问题,初始的offset设置为0,在电机还没启动时,经过一个interrupt void OffsetISR(void)程序,讲ADC的初始偏置求出来了,笔者算了一下,滤波的效果很好。然后在interrupt void MainISR(void),算电流标幺值的程序为
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.
这里直接将采来的标幺值减去offsetA,不是应该减去0.5再减去offset吗?采来的AdcMirror.ADCRESULT1)*0.00024414取值范围不应该是0:1,为什么没减0.5呢?
chuang hou:
回复 rookiecalf:
我明白offset应该是0.5左右,我的意思是,我offset的值是哪句代码得到的,应该有一个初始的设置过程,offset = 0.5之类的吧
最近在看controlSUITE里面的例程,看到“C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVPM_Sensorless_2833x”的HVPM_Sensorless_2833x里面讲到offset的问题,初始的offset设置为0,在电机还没启动时,经过一个interrupt void OffsetISR(void)程序,讲ADC的初始偏置求出来了,笔者算了一下,滤波的效果很好。然后在interrupt void MainISR(void),算电流标幺值的程序为
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.
这里直接将采来的标幺值减去offsetA,不是应该减去0.5再减去offset吗?采来的AdcMirror.ADCRESULT1)*0.00024414取值范围不应该是0:1,为什么没减0.5呢?
chuang hou:
回复 rookiecalf:
多谢,懂了