无刷直流电机控制方案
产品简介
1 KF8S1101面向BLDC控制的特性 2 软件库特点 3 开发套件的使用 3.1 DEMO板主要接口说明 3.2 开发软件的安装 3.3 建立KungFu8项目 3.4 添加源文件 3.5 样例程序清单 3.6 库文件 4 基于KF8S1101开放套件实现实际项目的开发 4.1 有霍尔模式、无霍尔模式选择 4.2 电机正反转模式选择 4.3
产品详细信息
1 KF8S1101面向BLDC控制的特性
u ChipON自主的KungFu内核——高效的处理器平台
Ø 典型的RISC架构,程序存储器和数据存储器分开
Ø 具有8个8位寄存器组成的寄存器组堆
Ø SFR无需分组,简化程序设计和代码密度
Ø 16bit指令代码,多数指令在一个周期内完成
Ø 工作频率*高20MHZ
u 面向BLDC控制的丰富的外设
Ø 带死区控制的增强型PWM,每个通道极性可独立设置
Ø 紧急故障输入端口,内部自带比较器,自动关断PWM输出
Ø 可触发ADC事件,PWM中间点采样电流
Ø 内部集成无霍尔信号检测阵列,降低外围器件成本
2 软件库特点
u 简单易用,提供完整的样例程序
u 支持有霍尔模式/无霍尔模式
u 平稳的无霍尔启动算法
u PI恒流控制
u 详尽完善的方案保护功能
u 改进的控制算法,电机适应性广
u 针对不同电机参数,只需在头文件中更改宏定义参数
u 提供硬件参考电路,结合样例程序,用户针对具体应用开发周期短
3 开发套件的使用
提供完整的开发环境(IDE)、ANSI C99标准的C编译器、仿真器、编程器和DEMO 评估板,详尽的用户手册和免费的软件源程序代码。用户无需设计硬件即可进行马达驱动性能的评估,方便用户针对具体应用添加和删减代码,开发出符合需求、高性价比的产品。
下图为基于KF8S1101芯片设计的工作电压DC24V的DEMO板。
图1 KF8S1101 BLDC DEMO板
3.1 BLDC控制板主要接口说明
1.电机相线接口,从上到下依次为电机相线U、V、W。
2.控制板工作电源,左边为正,右边为负。Rated Voltage 额定电压: 24V (DC),Voltage Range 使用电压范围: 9-26V(DC)。
3.电机霍尔信号接口,从左到右依次霍尔电源、霍尔信号U相、霍尔信号V相、霍尔信号W相、霍尔地。
4.电机正反转控制信号,跳线帽接上电机逆时针运行,跳线帽去除电机顺时针运行。
5.MCU程序下载接口。
6.电机启停控制按键,按一次开启,再按一次关闭。
7.电机转速调整旋钮。
8.电机运行状态指示灯。
3.2 开发软件的安装
使用ChipOn的ChipON IDE v1.1.0版本的开发环境和ANSI C99标准的C编译器,按照向导以正常安装顺序将软件安装到电脑上。
3.3 建立KungFu8项目
运行ChipON IDE v1.1.0,选择工作空间地址。
新建一个项目。注意项目类型需要选择KF8-C。进入下一步,选择芯片型号KF8S1101,再点击下一步就建好了项目。
3.4 添加源文件
把提供的源程序文件(包括.c文件和.h文件)复制到新建项目下。鼠标放到项目名上点右键,选择粘贴,覆盖掉原来的“main.c”文件。
选择构建项目。
将库文件“CommutationRun.o”、“BEMF.o”粘贴到项目里的“Release”。
鼠标指向项目名称单击右键选择“属性”,选择“C/C++ 构建”下的设置,修改 C 链接器 命令参数,加入“CommutationRun.o”和“BEMF.o”。
这时再选择构建项目,即可成功的生成HEX文件。
3.5 样例程序清单
Ø 源程序C文件
Ø 源程序头文件
3.6 库文件
库文件包含下面两个文件
库文件对应的两个头文件为“CommutationRun.h”和“BEMF.h”,主要声明了库文件中包含的两个函数,为
void BEMFFuction(void); //感生电动势过零点检测处理函数
void CommutationInSpect(void); //换相检测处理函数
库函数中变量声明全部以“CHIPON_”开头,程序中用的函数名不要以其开头命名,以免出现重复。
库函数中用到的公有变量有:
unsigned char fGlobe_SynchronizingRectify;//同步续流状态标志
unsigned char SensorlessFirstCommutation;//无传感器模式初始换向状态标志
unsigned char FrontTimesAfterZeroStart; //静态启动换向次数计数器
unsigned char CntForPWMTwo; //PWM 2 占空比
unsigned char fGlobe_SensorlessStatus; //有无传感器模式标志
unsigned char Fwd_RevFlag; //正反转标志
unsigned char fGlobe_MotorBrockStart; //开始堵转标志
unsigned char fGlobe_MotorBrock; //堵转标志
unsigned char fGlobe_Run; //系统运行标志
unsigned char U8Globe_PwmShadow; //PWM占空比
库函数中用到的宏定义为:
#define HALL_PORT P2 //霍尔信号状态寄存器
#define HALL_STATE_012 0x07 //hall 有效位(低三位)
4 基于KF8S1101开放套件实现实际项目的开发
针对实际项目开发时,程序只需做少量的修改即可实现功能。
4.1 有霍尔模式、无霍尔模式选择
样例程序中在子函数“void InitSystem(void)”里通过检测按键是否长按来选择有霍尔模式或者无霍尔模式,实际应用中只需把变量直接赋给所需的值即可实现模式选择。目前库文件中有霍尔模式只适合霍尔电角度为120°的电机,如果是60°电角度的话需要和我们联系,重新提供霍尔角度为60°电角度的库文件。
fGlobe_SensorlessStatus = 1; //无霍尔模式fGlobe_SensorlessStatus = 0; //有霍尔模式
4.2 电机正反转模式选择
样例程序中在子函数“void FWDREV_Function(void)”里通过检测“FWD_REV”IO口是高电平还是低判断来调节电机转向,实现顺时针或者逆时针旋转。实际应用中只需把变量直接赋给所需的值即可实现电机旋转方向的选择。
SYFwd_Rev = 0; //电机正向选择
SYFwd_Rev = 1; //电机反向选择
4.3 不同类型电机参数修改
实际应用中会涉及到不同参数的BLDC电机,只需根据电机参数修改“system.h”里的宏定义即可。
/*电流参数*/
#define SENSOR_RES 0.05 //电流传感器阻值 ohm
#define CURRENT_AMP 6.5 //电流放大器放大倍数
#define LIMITCURERNT_REALY 1.5 // 均值电流限制值A
#define BLOCKING _CURRENT_START_A 0.885 // 堵转判断电流值A
#define RECTIFY_CURRENT_START_A 0.45 // 同步整流开始值A
#define PEAK_CURRENT_LIM_A 4 // 峰值电流限制值A
/*电机堵转时间,20ms周期*/
#define BROCKTIME 70 //堵转计数器 70*20ms = 1.4s