FOC及无感控制的算法移植指南.docx

上传人:scccc 文档编号:12788373 上传时间:2021-12-06 格式:DOCX 页数:4 大小:14.74KB
返回 下载 相关 举报
FOC及无感控制的算法移植指南.docx_第1页
第1页 / 共4页
FOC及无感控制的算法移植指南.docx_第2页
第2页 / 共4页
FOC及无感控制的算法移植指南.docx_第3页
第3页 / 共4页
FOC及无感控制的算法移植指南.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《FOC及无感控制的算法移植指南.docx》由会员分享,可在线阅读,更多相关《FOC及无感控制的算法移植指南.docx(4页珍藏版)》请在三一文库上搜索。

1、FOC及无感控制的算法移植指南1、下载正确的FOC源代码目前市面上主流的能驱动电机的MCU。基本上都带有 FOC库。很多公司还提供可以用于修改的FOC源代码。还有些甚至于提供了无位置算法的源代码。可以下载到代码的有 ST, TI, MICROCHIP NXP, RENESA潞芯片公司。直接到官网下 载即可。为保证代码的可行性,最好从官网下载代码。不要从第三方下载。避免产生不必要的调试过程。2、找到与芯片的硬件初始化相关的代码。ADC部分的初始化。不同的芯片,ADC工作模式不同。ADC的初始化方法以及数据采样方法不同。ADC的采样,根据电路结构不同。完全不同。单电阻采样模式。需要在一个三角波内,

2、进行两次ADC采样。而且软件还要特殊处理。才能做到采集的数据。这种方式下。ADC需要有一个专用的定时器配合来实现ADC采样。两电阻或电流传感器方式下,ADC有两种模式可以实现。一种是在波峰或波谷的前后一点位置处,触发ADC 采样。另一种方式,就是在定时器的波峰或波谷中断进入后,第一时间进行ADC采样。ST的ARM芯片CORTEX-M陈列,由于只有一组 ADC单元,且ADC转换出来的结果只有一个缓冲区保 证。所以,数据采集通常采用 DMA的方式。将多个ADC采样到的数据缓存到一个 ADC数组 中。如M3或M4等系列。MCU有两组ADC单元。可以一次性采样两个通道。在波峰波谷 中断的模式下,可以设

3、成分时采样不同的通道。也可以用DMA方式采样(ST的2个ADC单元,输出结果地址是相连的。且刚好组成了一个32 位数,用DMA 方式,可以一次将两个ADC单元的结果全部采样出来。)RENESAS芯片,ADC的输出结果是根据通道来设定的缓冲。因此,只需要触发ADC即可。ADC转换后的数据,分开存放在不同的寄存器当中。 所以,这类芯片,可以省掉DMA 的操作方法。定时器部分定时器根据电机的载频来设定。生成三角波(递增计数到设定值以后,开始递减计数)。需要处理的内容,分别是互补的死区设定、中断的方式(上溢中断、下溢中断、上/下溢中断)。中断的频率(16K的PWM频率,可以设定 8K的电流或4K的电流

4、环。利用中断 次数控制来实现)。编码器部分不同的芯片,对于正交编码器的接口不同。接到不同的IO 引脚上。然后选择正确的定时器资源来实现自动计数功能。FO保护(自动刹车控制)FO保护由IPM或IGBT驱动或单独设计的电路产生信号。通过专用的保护引脚来实现 MCU 自动关闭PWM 输出。 从而实现负载突然短路的情况下,快速关闭输出。保护电路不受影响。 这个引脚,在很多芯片厂家,是有数字滤波参数可以设定。用来避免突然出现的小尖锋干扰。3、FOC代码部分一般FOC代码函数分成:ADC采样处理,采样电机的电流,可以采样IA,IB,ICo也可以采样IA和旧(当然,采样旧和IC也可以,但需要计算一次得到。根

5、据IA+IB+IC=0的公式可以根据其中的任意两项电流,求出第三相的电流。单电阻采样,也会生成IA和旧两组电流。Clarke变换,将ADC采样到的三相电流合成两相电流。生成I_alpha和I_beta两个电流。Park变换,将alpha和beta两个电流与电相度通过三角函数的方式。合成ID和IQ电流。InvPark变换(反 Park变换),将 VD和VQ转换成 Valpha和Vbeta.InvClarke变换(反 Clarke变换),将Valpha和Vbeta转换成三相电压值。扇区计算,通过三相电压,计算出正确的扇区值。PWM 数据输出,根据扇区值和三相电压值,计算出三路PWM 值。4、调试技

6、巧1、确认硬件的接入正常上电后,先对IA, IB, IC的输入AD进行监测。看看零点状态的AD是否正常。通常零点的AD都设在1/2的VCC附近。以12位白ADC为例,这个零点的 ADC是2048 正负 100 以内。然后,对母线电压的 ADC进行监测。特别是用到了无位置或母线电压补偿的算法。对母线电压的准确性,要求比较高。母线电压太低或太高,都将导致输出的不正常(严重时,电机都无法运转)。最后, 对于有位置传感器的硬件,旋转一下电机。查看一下编码器的A/B/Z, U/V/W输入信号是否正常。2、确认IQ和ID的极性的正确。注:为防止硬件受损。程序做个最长时间的控制。进入PWM 输出以后,最长工

7、作时间设 0.5秒到 1 秒。软件自动关闭输出。将PID控制部分屏蔽掉。给 VD和VQ设一个固定值。可以试着设定5V。根据当前的母线电压。5/ 母线电压*VDVQ 的最大值。例:母线是60V, VDVQ 的最大值是32768,则设定VD=5/60*32768先设VD=5V, VQ=0,用软件示波器查看,电流检测的IA,IB或IC, I_alpha、I_beta, ID、IQ。正确的情况下,ID比IQ大很多,且IQ基本上趋于0,ID是正数的电流。刚开始电机可能会转一下。这是因为电机当前的角度不在0 点附近。这个时候,ID 会出现变化。但第二次以后,电机的停止位置处于0 点附近。很明显的看到ID

8、电流是一个直线。再设VQ=5V,VD=0用软件示波器查看,可以看到IQ电流明显大于ID电流。且ID基本上趋于0。IQ电流是正数。通过以上操作。如果IQ 和 ID 都是正常状态。则表示电流检测的软件和硬件是正确的。可以进入下一步操作。调试过程中,如果IQ 和 ID 出现了电流是负数。有以下几种可能A、电流检测的方向出错。CurA = CurA_Offset - NowA 或 CurA = NowA - CurA_OffsetB、IA和旧的引脚对应错了。C、 PWM 的方向可能有错。三角波的PWM 。 0RPM 输出的时候,PWM 输出并不是0,而是载频周期的一半。以 ST为例:PWM有两种模式。

9、PWM1和PWM2两种模式下的数值 刚好是反的。给PWM 占空比赋值的时候,一种是直接把计算值输出。另一种是用周期-计算值输出。3、强拖运转测试及电流检测标幺值检测当第一步完成以后,就要试着强拖一次。看看电机是否能正常运转。关键是针对有编码器的系统。查看一下电机运转方向所显示出来的编码器的AB 方向是否正确。强拖测试,可以不需要任何传感器的介入。也不需要关心电机的UVW 动力线是否连接正确。强拖的方法:首先,设一个固定大小的IQ 数据,且初始的电角度为0。如果电机是空载,那么这个电流可以设为1A左右。这个电流下,持续 1秒钟内,电角度始终为0, 1 秒钟以后,电流可以减少1/2,电角度按200

10、RPM 左右的速度增加。200RPM 是机械角度。转换成电角度时,要乘以电机的极对数。通常折算每MS 增加多少个电角度,以200RPM为例:=200/60*360/1000*PP ,其中PP为电机的极对数。这样强拖10圈以上,就可以停止了。电流检测标幺值正确性验证: 最好用两个电流探头(如果只有一个探头,可能需要多强拖几次,保证所采样的电流是正确的。最好把强拖关闭,只做定位),分别接到电机的动力线上。查看软件设定的1A 电流,与实际的1A 是否符合。如果不符合,则需要检查电流检测电路是否出问题或者放大倍数计算是否有误等。强拖环节的另一个关键点是,编码器数据的方向。如AB 和 UVW 方向。因为

11、强拖是角度增加,假定这个方向为正转。那么最好是AB 是增加。如果AB 是减少。有一个软件办法解决。(NOW_AB A= 0XFFFF仅PM于16位计数器),这样操作一下。可以改变极性。4、速度传感器的加入采用增量式编码器的系统。速度计算,有两种方法M和T。分别是采样脉冲宽度(用于低速检测)和脉冲个数(中高速)。简单的操作,直接采用 T (计数)方法。由于低速比较难统计到个数。因此,速度采样通常设为2MS 采样一次。以200RPM 且编码器为360 线为例:=200/60*( 360*4)/1000*2, 则每 2MS, AB 变化 9.6 个。速度计算采用AB 个数 *AB/1MS 对应的速度

12、。1AB/(360*4)*1000*60=41.6666RPM , 由于是 2MS 采样一次,所以 AB/2MS=20.8333RPM,因为是小数,采用Q8 格式以后=5333,若 2MS 内,变化AB 个数为10 个,=10*5333/256=208RPM由于低速时,AB 个数变化对速度的统计影响比较大。因此,通常将速度计算分成高速和低速两种计算结果。低速计算时,加入一级低通滤波。这样得到的低速就会比较平滑一些。做低速控制时,电机不容易抖动。5、位置传感器的加入(扇区)当系统加入了 UVW扇区位置检测以后, 可以使得电机启动时, 直接在扇区内启动,无需再增加定零位了。相当于已知当前的电角度,

13、可以快速启动。针对 UVW 扇区传感器,有两种操作方式。一种是UVW 传感器的安装位置与转子位置是完全固定的。因此,任意互换电机后,角度是基本上一致的。还有一种是UVW传感器的安装与转子位置并非完全一致。碰到这种情况,就需要将这个电机的UVW信息与电角度做配对操作。实际上,无论是哪一种安装方式。第一次使用FOC的时候,都有一个配对的过程。这个过程,实际上也是利用强拖来完成。以下方法,适用于带AB 的系统操作。强拖开始时,有个定位过程。这个过程是强制电机运转到零位。为了操作简单化,UVW的配对操作。定位时,采用ID啾定。IQ=0的方法。这样的操作,是为了方便后续的电角度直接使用。针对带AB的系统

14、。强拖定位时间完成时,将 AB的当前计数清零。将当前的 UVW 信息存储起来。强拖过程中,对UVW信息进行连续检测。当检测到的UVW信息与存储起来的 UVW 信息不同时,将当前的 AB角度、扇区UVW信息存起来。并更新 UVW存储信息。当连续检测到2个或以上的机械角度以后。停止强拖。开始统计信息。统计时,第一步将AB角度转换成电角度。超过一圈电角度的,取电角度的模。第二步将多组电角度进行求平均处理。得到每个扇区所对应的电角度数据。第三步将这些数据存储起来,写入FLASH或EEPROM中。做为以后运转的计算用。后续电机启动时,根据当前的扇区号。取出当前扇区的数据和下一个扇区的数据,两者相加除2

15、(程序要处理数据越界现象),得到中间角度值。然后,以这个角度值, 直接启动即可。且要求在检测到下一个UVW信号沿的时候,更新一次角度(根据电机的运转方向,赋不同方向 UVW所对应的电角度的边沿值)。5、其它技巧1、编码器AB个数的处理。在使用编码器的 AB计数时,可以利用数字溢出的原理来解决极性问题。使用 16 位的寄存器全员值,0-65535,本次的计数减去上一次的计数,得到一个Delta_AB。正转的时候,这个数字会是正向增加的。用一个有符号的16位数据来处理这个数据,非常简单。机械角度,旋转一圈以后,CPR*4,刚好是一圈的机械 AB个数。超过这个数据的时候,即进入下一圈的角度了。机械角

16、度也一直累加Delta_AB即可。当超过CPR*4时,减去一个CPR*4即可。当数据小于 0时,加一个 CPR*4即可。2、Q格式在计算过程中,经常会出现小数。但便宜单片机往往不支持浮点运算。因此。必须使用Q格式来完成计算。但Q格式在使用时,一定要注意。Q格式运算是有损的。Q格式的格式越大,计算的变量越大。如果超过 64位。则很难参考计算。所以, Q格式计算时,往往需要根据 变量的有效范围,预先计算好Q格式的范围。如果数据结果是16位,数据源在256以内,那么Q格式最大不能越过 8,否则就会出现越界现象。Q格式在数据计算时, 因为精度有限,长时间累加的时候, 容易出现数据慢慢丢失 的现象。精度要求高一的点的计算。通常保留Q格式的小数部分。下次计算时,把上一次的小数累加进来,以防止数据的丢失。6、调试时保护机制1、软件的保护:ARM芯片,有个硬件错误的中断 HardFault_Handler,进入这个中断以后,会死锁。如果这个时候,PWM仍然在输出。则会出现烧坏IGBT的情况。所以,进入这个中断以后,必须写一句关闭PWM输出的语句。防止程序的指针出错或访问地址出错时。进入该中断,从而导致的硬件烧毁情况。 2、硬件的保护:FO的检测:初次调试的时候,最好先确定一下FO保护是否正常。通过触发FO引脚。看看能否进入 FO保护中断。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1