
【FOC】一个简单的有感FOC电调
简介
一个简单的云台电机有感FOC驱动,实现了电机的力矩控制。软件只实现了基本的svpwm和定点数电流环,可以二次开发。主控为AT32F421,相电流检测ic为ina240a1。角度传感器为as5600。
简介:一个简单的云台电机有感FOC驱动,实现了电机的力矩控制。软件只实现了基本的svpwm和定点数电流环,可以二次开发。主控为AT32F421,相电流检测ic为ina240a1。角度传感器为as5600。开源协议
:CERN Open Hardware License
(未经作者授权,禁止转载)描述
2024年10月1日编辑:
国庆节快乐!
1. 两个Bulk电源(位号U4和U11)的小输出电容(位号C16,C25)应当不贴。因为此bulk是COT电源,小容量mlcc在回路中会震荡。(炸了两次)
2. 电机在工作时存在较大干扰。具体表现在12V的电源、单片机输出的PWM信号上都有尖刺。如果以后更换大功率的电机,则干扰会更大。初步的解决方案是在母线上增加更多的100nf滤波电容、12V电源取电位置前移到电源输入口、
3、今天第一次公布代码。代码遵循GPL3.0开源协议。代码里实现了有感foc的单向转动和六步换相功能。其中六步换相没有在云台电机上测试,只在一台航模电机上测试。
===================以下为正文===================
对FOC感兴趣。本着“觉知此事要躬行”的态度,自己设计了一套FOC软硬件。以下是主图:
硬件上:主控采用AT32F421,CM4内核,120MHz主频;相电流采样ic为ina240A1;角度传感器为AS5600;功率级采用eg3116预驱+042n10n,有足够大的功率余量。使用的电机为闲鱼购买的云台电机。
软件上:实现了6步换相(检验硬件设计)、全定点数的SVPWM生成、电流环PID和Clarke/Park变换(只有乘和加,移位代替除法),性能较高。
本工程的svpwm生成方法参考了文章https://zhuanlan.zhihu.com/p/414721065,
https://zhuanlan.zhihu.com/p/303998608,感谢这两位作者的无私奉献。在本工程中,角度的正弦和余弦值采取查表法,角度分辨率为8位。在计算时,事先将三角函数值乘8192(2^13),直到最后计算定时器值时再右移13位。同理在进行Clarke变换和PID时也采取类似操作。这样可以最大限度地保持精度,且计算中只有乘和加运算,效率较高。下图为采取定点数方法产生的SVPWM定时器值。横坐标为角度,纵坐标为PWM占空比的定时器值。
输出的相电流波形如下图所示。相电流值是串口输出的,可以看到波形较为完美(当然可能因为串口速度过慢而损失了高频部分分量)。单片机端控制采样时序为PWM周期的中点(中央对齐PWM)。
最后,本工程的软件仍在开发中。目前只实现了基本的转动,仍需要一定时间的整理后才能开源。
设计图

BOM


评论