STM8S的高速无刷直流电机恒速控制系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STM8S的高速无刷直流电机恒速控制系统设计
邹存名;韩秀梅
【摘要】为解决高速无刷直流电机恒速控制投入高、稳定性差、无法实现低功耗高速无刷直流电机恒速控制等问题,提出一种基于STM8S003微控制器的高速无刷直流电机恒速控制系统的解决方案.通过分析无刷直流电机控制时序,应用PID算法程序,实现无刷直流电机5万转恒速控制.实际应用表明,该方案的设计在高速电机控制方面,成本低、电机起速平稳、控速性能良好.
【期刊名称】《单片机与嵌入式系统应用》
【年(卷),期】2016(016)009
【总页数】4页(P61-63,68)
【关键词】无刷直流电机;STM8S;PID;恒速控制
【作者】邹存名;韩秀梅
【作者单位】大连科技学院电气工程学院,大连116052;大连科技学院电气工程学院,大连116052
【正文语种】中文
【中图分类】TP23
目前,微型高速无刷直流电机具有响应快速、较大的起动转矩、从零转速至额定转速具备可提供额定转矩的性能等特点,在打磨、切割等领域有一定的应用价值。
微型高速无刷直流电机控制对时序要求较高,一般控制模块主要采用无刷直流电机专用时序控制芯片实现控制[1],然而这种控制模块造价相对较高,PCB制板面积
较大,而且对实现高速控制方面板耗较大,效率低[2]。
因此,本设计采用
STM8S003微控制器,充分利用该微控器的资源,通过直接对上下桥臂MOS管
导通控制,实现高速无刷直流电机5万转恒速控制。
1.1 无刷直流电机的控制电路设计
无刷直流电机内部由永磁转子和三相定子组成,通过反向极性的吸引产生相矩力,从而使电机转动。
定子磁场和转子磁场之间的相角度近似为正交,从而获得最大力矩。
一般控制无刷电机启动需要判断转子的当前位置,然后根据当前位置改变MOS管驱动电路上下桥臂的通电顺序,使其在气隙中产生步进式旋转磁场,拖动永磁转子转动。
本设计采用120°带霍尔传感器无刷直流电机,通过霍尔传感器测
量转子相对于定子线圈的位置信息[3]。
根据无刷直流电机运行原理,设计的电路如图1所示。
本文采用6个MOS管来实现无刷直流电机控制,Q1、Q5、Q9为驱动上桥臂,
Q3、Q7、Q11为驱动下桥臂,Q2、Q6、Q10为开关控制三极管,通过Q2、
Q6、Q10提供上桥臂导通电流。
该设计结构设计简单、功耗小、成本低、运行稳定,并具有过流保护功能。
1.2 电源电路
本设计需要提供12 V、5 V低纹波电源,因此采用78M12和78L05线性低压差
电源,分别提供12 V和5 V电源。
其中12 V给电机驱动电路供电,5 V用于给STM8S003供电,电源电路如图2所示。
1.3 位置检测电路
本控制系统采用霍尔传感器来检测BLCD转子的位置,该方案硬件电路简单、精
确度高、响应速度快。
位置信号由3个霍尔传感器反馈信号分析得到,分别是HA、HB、HC,每个霍尔传感器都会产生180°脉宽的输出信号,而HA、HB、HC的
输出信号互差120°相位差。
它们在每个机械转中会产生6个上升沿或者下降沿,
对应着6个位置和换相时刻[4]。
把STM8S003微控器的I/O口设置为双边沿外部中断捕获功能,即可获得这6个换相时刻。
再根据3个霍尔传感器的电平状态,即可获得转子准确的位置信息。
通过R1、R2、R3为霍尔速度采集的上拉电阻,C13、C3、C4为滤波电容,用于采集速度信号准确性,这也主要是处理位置采集信号毛刺问题[5]。
位置检测电路,如图3所示。
2.1 软件整体设计
系统程序总体设计主要包括初始化、位置检测、换相及速度调节、PID控制算法等组成,如图4所示。
初始化主要是设置STM8S003的系统时钟、I/O端口、定时器,以及中断控制。
通过无刷直流电机3个霍尔传感器逻辑图采集位置信息,如图5所示,再利用位置信息输出驱动信号,使电机顺利换向,特别是在设计高速电机时,必须严格按照时序图来进行换向驱动,否则将大大提高驱动板功耗,即使PWM输出占空比最大也很难达到5万转转速。
2.2 PlD算法模块
本设计采用PID控制算法,这是一般常用的恒速控制算法,但是由于
STM8S003F3P6微控器内部资源有限,因此在设计PID算法模块时,程序必须精简,优化程度高,运行可靠,从而保持电机转速恒定不随负载变化而变化。
程序如下:float PP=P,II=I,DD=D;
//PID参数值,修改这三个值调
节电机的升降速度和误差调节
double Sum Error=0,Prev Error
=0,LastError=0;
long d Error=0,Error=0;
void PID_init(void){
Error=0;SumError=0;
LastError=0;
}
void PIDcompute(unsigned int
Target,unsigned int Real){
float j=0.0,i;
Error=(Target-(long)Real);SumError+=Error;
d Error=Error-(long)LastError;
LastError=Error;
i=PP;
j=Error*i;
i=II;
j=j+Sum Error*i;i=DD;
j=j+d Error*i;
j=j/100;
if(j>=h ArrPwm Val)OutPwm Value=h Arr Pwm Val;
else if(j<25)OutPwm Value=25;
else OutPwm Value=(unsigned int)j;
}
本系统的位置传感器测试结果,如图6所示。
通过测量单路位置传感器反馈脉冲信号HA周期为1.25 ms,电机转速为5万转。
实验证明PID算法运行正常,该设计运行稳定,性能良好,无杂音。