如何从零开始写一套自己的FOC矢量控制程序-上官致远

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何从零开始写一套自己的FOC矢量控制程序

文/上官致远

刚开始接触矢量控制,往往有一种似懂非懂的感觉。

看一遍原理,感觉懂了,过两天再看,发现又有不理解的地方,就这样在懂与不懂之间徘徊着。很多朋友常常用各大芯片商的电机驱动库,然后不停的调参,调来调去总是不能找到最优值,因为不太明白内部的实现原理,因此调起来漫无目的。

最好的办法就是在读懂原理之后,自己动手写程序。

从建立工程开始写,包括底层各大模块的配置、FOC核心算法、任务处理、什么时候打开什么中断、各个模块之间的优先级、速度的计算方式、角度的计算方式、PID算法、电流环的调试、速度环的调试等。

只有自己写一遍才能明白各模块之间的关系以及配置原理。

在写的同时配合阅读算法原理,保证明白每一步的作用。

边写边调试,确保各个模块功能正常。

一般的调试流程可以按下面的思路进行,由简到繁、由内到外、循序渐进的过程。以有感霍尔为例:

1. 根据自己板子的晶振合理配置系统时钟,确保嘀嗒定时器按约定频率运行;

2. 按原理图设置配置对应的电流采样ADC通道,在规则通道的基础上加入三个注入通道,并考虑

初始电流偏置的影响!合理配置ADC中断函数,测试ADC中断的响应频率是否符合预期;

3. 配置高级定时器,输出互补对称的方波,加入死区,改变占空比,示波器查看输出是否合理。

测量H桥驱动芯片的输出级是否能快速响应输入级的变化,且波形是否符合预期;配合H桥驱动,给定几个固定占空比,比如25%、50%、75%等,万用表测量H桥输出是否是电源电压的1/4、1/2、3/4;

4. 配置霍尔传感器接口定时器,手动拨动电机一圈,在有效停止的位置上看程序是否有中断响

应,测试程序响应到的霍尔状态是否按正序或逆序排列;

5. 配置DAC功能,主要用于调试电角度和采样电流;

6. 编写FOC核心算法,包括Clarke变换、park变换、SVPWM算法等;比较关键的环节是

SVPWM,可以先打开ADC的中断,在中断中执行FOC的核心算法,此时,可以先给定一个Vq,角度先手动累加,如果电机能稳定的旋转起来,那么SVPWM算法应该是正确的;

7. 电机旋转起来之后,可以开始测试霍尔电角度的积分算法是否正确;这个时候可以使用DAC输

出电角度,用示波器观察电角度曲线是否是一条平滑上升或下降的直线,如果台阶明显,那么很可能是同步电角度没有测量正确,或者是积分计算错误;

8. 电角度正确之后,可以将电流采样送到DAC输出,测试ADC采样电流是否是正弦函数,这一步

间接验证了ADC采样点的配置是否正常;

之后测试电流环响应是否够快,是否震荡等;

9. 加上速度环,测试速度响应曲线;速度的计算一般放到嘀嗒定时器中,速度计算的频率一定要

高于速度环的频率,否则调速会不正常;

10. 如果有位置环,在确保以上功能正常后再测试位置环。

完成以上步骤基本上已经写出了一套属于自己的FOC矢量控制算法,也算是真正的迈进了矢量控制的大门。

相关文档
最新文档