#申请原创# 开源分享-基于081的hall-foc控制程序
最近需要一个六步霍尔的FOC程序,恰巧之前做过简单的霍尔处理程序,索性就直接优化了一下拿来用了。程序框架是之前开源的FOC程序,删除了滑膜观测器,同时为了方便后续增加新的编码器,修改了一下工程结构(后面可能还会做其它修改)。相较于之前开源带霍尔的FOC程序的程序,简化了程序结构。
1、硬件平台介绍:
硬件自然还是081的开发板,有需要的同学可以在嘉立创上直接购买。为了信号质量,使用双电阻采样,这里将开发板上电流反馈电阻从20k*2改成了1k*2。
开发板硬件连接如图1-1所示:
图1-1 开发板接线图
2、软件说明:
本软件通过速度插值实现六个角度转成连续角度。同时由于霍尔安装位置造成的误差,为了方便软件处理,需要将某一个霍尔跳变定义为霍尔角度的“零点”,然后通过在“零点”上增加偏置的方式就可以实现精确的角度校准。[1]
为了解决霍尔信号在高速和超高速下,多个中断同时发生引起时序上的问题,程序的结构设计如图2-1:
图2-1 软件结构
对霍尔缓冲区处理是依靠一个被打断后自动重读的程序实现的,如果在读霍尔缓冲区数据的过程中,霍尔信号发生了变化,这时会优先响应霍尔中断,并在霍尔缓冲区读取结束后,重新从霍尔中断中读取数据。以保证在任意频率的转速下,都可以获得多个准确的数据。
关于霍尔角度计算,为了提高精度并且减少软件以来,角度以HALL_CNT为基础,结合MCPWM_CNT避免程序执行时间引起的误差。角度计算公式如下:
Angle = a*T + b + Hall_InstallErr
其中,T为经过MCPWM_CNT补偿之后的HALL_CNT;a是通过HALL_WIDTH计算得到的速度;b是在霍尔变化时记录的霍尔角度,在霍尔变化时,T会从零开始计时;是安装误差,如果需要正反转,由于开关霍尔纯在迟滞[2],正转安装误差和反转安装误差应该设置成不一样的值。
上述程序只能实现电机在匀速运行下的角度平滑处理,在加减速以及电机禁止的情况下,a会产生较为明显的波动,为了保证角度的误差在合理范围,在正常运行和霍尔跳变时,都会做误差限幅的处理,在电机静止时,直接用过查表的到当前霍尔的理论角度,不再计算连续的电角度,也就是在低速的时候,a为0。
实际运行效果:
电机不加负载,通过电流环跑到最大转速后进入极限电压输出状态。图3-1是启动电流波形;图3-2是缓慢加速的电流波形;图3-3是进入极限电压之后的电流波形,此时电流环Q轴输出电压饱和,D轴正常工作。
图3-1 启动电流波形
图3-2 缓慢加速时电流波形
图3-3 极限电压下的电流波形
图3-4分别是电流(黄)、角度(蓝)和两次PWM中的角度差(绿)的波形。可以看到在处于加速状态时,角度会在每个霍尔跳变的时候被强制更新。
图3-4 角度波形
图3-5是匀速的角度波形。可以看到在处于匀速状态下,角度处于平滑连续的状态。
图3-5 匀速的角度波形
4、参考文献
[1]张彬,李震,李垣江,魏海峰,张懿. 开关霍尔安装相位偏差对PMSM性能影响实验研究[J]. 电子测量技术,2022,45(01):8-14.
[2]张逸,章企,陆申龙. 集成开关型霍尔传感器的特性测量和应用[J]. 大学物理实验,2000,(02):1-4.
5、附件说明
测试用的程序见附件,如果需要编译该工程,测试环境为Keil5.36。注意:测试工程中存在一些没用使用的局部或全局变量、部分结构不合理以及没有说明文档的问题。
仅保证是用该程序抓出来的这些波形。如果有需要,请关注后续更新。
测试用到的电机霍尔波形如图5-1所示。其中黄绿蓝对应UVW,紫色对应H_A。
图5-1 反电动势以及霍尔信号
|
通过优秀的软件设计,将六霍尔的FOC控制电机完整实现,关键技术解读细致,完成效果较好,优秀的电机控制实操,非常期待后续更新