FU6832:
这个芯片把放大器啥的都集成了,对于我们用STM写程序作用不大
准备照着Fortior的程序理出来个运行流程图,不然自己写一头雾水,其实直接下载开源程序更容易实现BLDC转动的目的,但是…
Fortior使用的是专门的电机驱动芯片,FU6832,该芯片集成电机控制引擎(ME)和 8051 内核的高性能电机驱动专用芯片,ME 集成FOC、MDU、LPF、PI、SVPWM/SPWM 等诸多硬件模块,可硬件自动完成电机 FOC/BLDC 运算控制; 8051 内核用于参数配置和日常事务处理,双核并行工作实现各种高性能电机控制。
介绍部分摘自FU6832规格书
BLDC需要实现的参数:
1、运行时风机运行平稳,无异常抖动;
2、运行时风机电流正常,无异常发热;
3、最低转速不大于3000RPM,最高速度不小于32000RPM;
(风机的最高转速与MOS的过电流能力和风机本身参数有很大关系)
4、定速运行时,速度稳态误差不超过200RMP;
(别说200转了,能实现1500转内误差也是相当不错的程序了?)
5、从10000RPM加速到30000RPM,变速时间不大于150ms;从30000RPM减速到10000RPM,变速时间不大于120ms;
(对于刚入行电机的小白来说,这个参数看似不太容易实现的,其实是电机的基础参数)
程序中采用的方法:
- 单电阻采样方式(无需AMP1与AMP2计算电角度,只用AMP0得到相电流和母线电流采样)
- 七段式SVPWM
- 速度环采用PI调节(addfunction.c)
- 由FOC矢量控制 两次转换得到的dq 进行PI控制 后由SVPWM驱动MOS
- 启动时采用的是高频信号注入法,给予一定加速度的信号,强迫电机启动
搞不懂的问题:
频繁提到的顺风逆风到底怎么检测和运行的?
–不需要特别注意,根据客户要求不同增加的,此次项目不需要。- 程序中没用到的流程太多了,需要一个精简流程和程序
- 定义的结构体变量或者数组 地址在哪里?初始值在哪里?保存在哪个寄存器里面?
- 功能块太多了,经常看着看着就跳到别的功能块去了又不记得
- 搞清楚电机旋转的规律 及SVPWM的方式也很重要
时间长了忘了寄存器是什么样的存在了
–寄存器- 地址和位数也相当重要
程序流程图:
上图摘自FOC控制调制手册中FOC工作流程图
在程序中MotorControl.h中找到如下描述以上mc状态的枚举变量:
typedef enum
{
mcReady = 0, //准备状态
mcInit = 1, //电机参数初始化
mcCharge = 2, //预充电,指单独验证MOS是否有问题,依次对U\V\W三相充电
mcTailWind = 3, //顺逆风判断
mcPosiCheck = 4, //初始位置检测
mcAlign = 5, //预定位
mcStart = 6, //启动
mcRun = 7, //电机运行
mcStop = 8, //对应Motor_stop,先初始化,后停有关电机的流程
mcFault = 9, //电机出现故障后,对应FaultProcess
mcPllTect = 10,//是对应顺逆风检测模块,没找到具体作用
mcBrake = 11 //可以理解为急停程序,先将参数初始化,后将寄存器和计数器初始化
}MotStaType;
MotStaType mcstate;