pmsm31电流采样程序的讲解

pmsm31电流采样程序的讲解

ID:32535833

大小:108.80 KB

页数:3页

时间:2019-02-11

pmsm31电流采样程序的讲解_第1页
pmsm31电流采样程序的讲解_第2页
pmsm31电流采样程序的讲解_第3页
资源描述:

《pmsm31电流采样程序的讲解》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、问题一电流采样硬件上用的是霍尔传感器.图一是霍尔传感器的输入输出特性曲线。找了图上的两点(1V,-10A)和(2V,5A),算出来斜率为1/15=0.066。图一是霍尔传感器的输入输出特性曲线DSP中采样最大值为3.3V,对应的寄存器值为4096,所以采样后寄存器中的值对应的电压值为3.3V/4096。程序中电流采样计算如下:DatQ15=((AdcMirror.ADCRESULT2+AdcMirror.ADCRESULT3+AdcMirror.ADCRESULT4+AdcMirror.ADCRESULT5+AdcMirror.ADCRES

2、ULT6+AdcMirror.ADCRESULT7+AdcMirror.ADCRESULT8)/7)-p->ImeasAOffset;Tmp=_IQ15mpy(p->ImeasAGain,DatQ15);p->ImeasA=_IQ15div(Tmp,_IQ15(BASE_CURRENT));“p->ImeasAOffset”是初始时化后就进行的一次采样,保存为偏移值。“p->ImeasAGain”是在结构体ILEG2DCBUSMEAS设置的值,为_IQ15(383.3856)。BASE_CURRENT为基准电流值,为1.5A我计算的“p->

3、ImeasAGain”值步奏如下:设采样结果寄存器中的值为P,第一次采样得到的偏移值为Offset,实际采样的电流为I,则应该有这样的关系式(因为第一次已经减去了偏移,相当于图1的坐标变成了以原点为起点的了吧?如图2所示?):,照这样算出来的ImeasAGain应该为:=0.012,这与程序中的_IQ15(383.3856)相差的太大了。不知道计算错在哪里,请师兄帮忙指点下!!!计算没错,383.3856是增益0.0117转换成Q15格式的值。至于为什么要转两次,下面是原因:为了减少ADC结果处理计算的时间,对F280XILEG_VDC.H

4、和F280XILEG_VDC.C文件做了修改,其中对AD结果寄存器值的处理改为直接读取而不转换为IQ格式,将偏移量也由IQ格式改为int16类型(直接与AD结果寄存器相减),同时必须对转换系数做一些改动,即在原来转换成IQ格式的基础上再转换一次,如转换为IQ15时需要乘以两次2^15,才能使最后计算的结果与实际值对应起来,原理就是把原来大数的IQ转换变到小数上,让小数转换两次,同时保证不会溢出。下面是F280XILEG_VDC.H文件中的注释,说得很清楚了。//转换数字值减去偏移量后转换为对应的实际电流值(有正负)的增益为0.0117,Q1

5、5格式为0x17F//电压转换增益为3/4095*200,换算成实际母线电压。//2009.6.18对转换系数进行了改动,在原来转换为IQ格式基础上在转换一次,以符合ADC结果处理程序要求#defineF280X_ILEG2_DCBUS_MEAS_DEFAULTS{_IQ15(383.3856),0x08D2,0x0000,_IQ15(383.3856),0x08D2,0x0000,_IQ15(4801.17216),_IQ15(2),0x0000,_IQ15(410),_IQ15(390),0,0,0,0,x0000,0x0210

6、,(void(*)(Uint32))F280X_ileg2_dcbus_drv_init,(void(*)(Uint32))F280X_ileg2_dcbus_drv_read}图2减去偏移后的输入输出特性曲线另外,还有一个问题,发现硬件上霍尔电流的输入输出端接反了,那应该在每一个采样算出来的电流值再乘以(-1)吧??应该是的,要看波形和你程序采样值一致不一致。问题二中断时间程序中的主要运算都是在PWM定时器的下溢中断进行的,看不懂程序中是如何计数器赋计数周期的值,因此一直没搞懂每隔多久进行一次下溢中断。在程序一开始的初始化中有定义“

7、float32T=0.001/ISR_FREQUENCY;”ISR_FREQUENCY定义为了14,是不是指的就是下溢中断周期为14Khz呢??是的,如果没记错。,因为在程序中有“pwm1.PeriodMax=SYSTEM_FREQUENCY*1000000*T/2;”,这句话是不是就把“SYSTEM_FREQUENCY”、“T”、“pwm1.PeriodMax”联系到一起了,最终只要改变T的值就改变了下溢中断周期了呀?是的然后真正决定下溢中断时间的是不是“pwm1.update(&pwm1);”这条语句中呀?在这个函数中有下面一段程序:T

8、mp=(int32)p->PeriodMax*(int32)p->MfuncPeriod;//Q15=Q0*Q15MPeriod=(int16)(Tmp>>16)+(int16)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。