基于MSP430和BP神经网络PID的跑步机控制系统
2016-12-26宋文龙吕迎春秦建敏田建艳
宋文龙+吕迎春+秦建敏+田建艳
摘 要: 研发一种基于MSP430G2553单片机和基于BP神经网络PID的电动跑步机控制系统。按模块设计了主要硬件电路。为了提高调速性能,在电流速度双闭环中的速度环中采用了基于BP神经网络的PID控制算法。最后给出系统软件设计的流程图。实验结果表明,该系统能满足设计要求,并具有更好的性能。
关键词: MSP430G2553; 跑步机; BP神经网络; PWM
中图分类号: TN926?34; TP273 文献标识码: A 文章编号: 1004?373X(2016)22?0150?04
电动跑步机已成为家庭首选的健身器材,设计出一款高性能的电动跑步机控制系统具有重要的现实意义[1]。本文设计了一种家用电动跑步机控制系统,并给出了主要硬件电路图和软件编写流程图。为了达到提高系统性能的目的,调速采用了电流与速度双闭环控制方式,其中电流环采用PI控制算法,而在速度环中采用基于BP神经网络的PID控制算法。
1 系统结构
系统硬件电路框图如图1所示,系统以单片机MSP430G2553为控制器,由按键、心率检测、显示、直流电机控制和检测电路、升降电机控制和检测电路以及电源变换模块组成。
上电后,可通过按键实现电机的启停、设置速度和坡度等功能。设置速度后,将设定值与实时检测值进行比较;若存在偏差,则采用数字式双闭环PWM方式对直流电机进行调速。通过软件编程实现电流环PI控制以及速度环的BP神经网络的PID控制,再利用单片机产生占空比可调的PWM信号,通过驱动芯片MC34151控制MOS管IRF460的通断,改变加在电机两端的电压,实现对电机的转速调节。设置坡度后,通过检测模拟电压的方法来检测升降位置,利用与设定值比较结果来控制继电器的通断,调节单相电容运转型异步电动机的正反转。心率的检测使用TM998模块,该模块可以检测到每个心跳信号,据此可计算出心率。显示电路可以显示速度、路程、心率以及消耗的卡路里等参数。此外,还有过流过压检测电路,保证系统的安全。
2 系统主要硬件电路设计
2.1 MSP430G2553介绍
MSP430G2553是超低功耗混合信号微控制器,采用16位精简指令集(RISC)架构,有16 KB FLASH和512 B RAM,低电源电压范围1.8~3.6 V,有2个16位Timer_A,提供了多达3个8位I/O端口,端口P1和P2都具有中断功能,一个10 位模数(A/D)转换器,一个多用途模拟比较器以及采用通用串行通信接口的内置通信能力。系统中采用28引脚的TSSOP封装的型号。
2.2 转速检测电路
直流电动机的转速检测电路原理图如图2所示,齿轮信号盘安装在电动机的转轴上,HZL201霍尔齿轮传感器垂直于信号盘安装。当信号盘随电动机转轴旋转时,信号盘的每个齿轮经过探头正前方时HZL201传感器会输出一个近似方波的脉冲信号。此信号的高电平高介于14 V与15 V之间,低电平接近于0 V。信号经8050三极管整形电路后接MSP430G2553单片机的P1.2脚。当HZL201输出高电平时,三极管导通,P1.2端电压为0,当HZL201输出低电平时,三极管截止,P1.2端电压约为3 V。P1.2脚配置为输入、上升沿触发中断,在单片机内部采用周期法计算得电动机的转速[2]。
2.3 电流检测电路
为降低电路复杂度和节约成本,电流信号的采集使用采样电阻来实现电流的采集。将0.01 Ω的精密采样电阻接在IRF460 S极,把电流信号转换为电压信号,再通过放大电路把电压放大至单片机引脚承受电压范围内。设定10 A电流对应A/D满量程,电压放大倍数为[30.1]=30。因为运放LM358并非轨对轨输出,所以设定其放大倍数为20倍;又考虑到运放增益带宽积的限制,采用两级同向比例放大电路实现,两级放大倍数分别为5倍和4倍。电流检测电路原理图如图3所示,其中RC网络用于滤除电流信号中的高频噪声,二极管用于对调理电路输出电压进行限幅。
2.4 驱动电路
驱动芯片采用MC34151,它是为数字电路低电流驱动高转换速率的大电容负载而设计的双逆变高速驱动器,具有独立双通道1.5 A推挽电路输出,与CMOS/LSTTL兼容,在高频下运行良好。开关管使用N沟道MOS管IRF460,其最大工作电压和电流分别为600 V和21 A,导通电阻为0.27 Ω,开关速度快、工作频率高、驱动电路简单。
驱动电路如图4所示,PWM信号由单片机MSP430G2553的P1.1引脚输出,接MC34151的输入端INA和INB,MC34151的输出端OUTA接IRF460的G端。当PWM信号为高电平时,MC34151输出高电平,IRF460导通,直流电压加在电机两端,反之关断。通过调节PWM信号的占空比,就可以调节加在直流电动机两端的平均电压,从而改变电动机的转速。
2.5 坡度调节电路
跑台坡度的调节采用单相电容运转型异步电动机驱动,其额定电压和额定电流分别为AC 220 V和0.5 A。坡度调节电路原理图如图5所示。当P1.3输出高电平时,K2闭合,白、黑两引线间接入交流电,跑台升高;当P3.1输出高电平时,K3闭合,白、红引线间接入交流电,跑台降低;当P1.3,P3.1都输出低电平,K2,K3都断开,跑台高度不变。继电器工作电流为30 mA,单片机引脚输出电流难以驱动,因此选用8050三极管作为驱动元件。升降位置反馈信号为0~3 V模拟电压,将此信号送入MSP430G2553单片机引脚P1.5,并将P1.5配置为A/D功能,即可获取当前升降位置。
2.6 心率检测电路
TM998是一款手握心跳侦测模组,利用ECG原理,将表面电极置于人体皮肤上来量度从心脏所产生的电位差,据此产生心跳信号。心率检测电路原理图如图6所示。
TM998的O引脚输出的是脉冲信号,即心脏每跳动一下产生一个脉冲。脉冲输入单片机P1.6引脚,P1.6脚配置为输入、上升沿触发中断。心率值计算公式为:心率值=60×[1T]。其中,T为两个脉冲之间的时间间隔。因为心率速率较慢,可以在中断程序中进行中值滤波和滑动平均值滤波处理后,获得较准确的测量值[3?4]。该模块有几十微秒到几百微秒的尖波干扰信号,若两次脉冲间隔时间小于250 ms就可判定有干扰信号出现,需要滤除掉。
3 控制算法
双闭环调速系统具有良好的静态和动态性能,启动时间短,超调量小,因此系统采用双闭环控制。内环为电流环,采用传统PI控制算法,能有效地克服电压波动的影响;外环为速度环,采用BP神经网络PID控制算法。BP神经网络具有非线性映射能力、泛化能力和容错能力,传统PID的具有鲁棒性强和抗干扰能力的优点,BP神经网络PID将二者优点结合了起来,能在保证控制精度的前提下,提高系统响应速度和鲁棒性[5]。利用BP神经网络的自学习性,可以更容易地获得合适的PID参数。
系统性能主要由外环决定,同时外环也能抑制内环扰动的影响,因此将BP神经网络PID控制器加于速度外环。基于BP神经网络的PID控制原理方框图如图7所示。
PID控制由比例、积分和微分环节组成,系统中采用增量式数字PID控制算法:
[k=uk-1+KPek-ek-1+KIek+ KD[ek-2ek-1+e(k-2)]] (1)
式中,[KP,KI,KD]为比例、积分、微分系数。
采用3层BP神经网络拓扑结构,其结构如图8所示[6]。此网络的输出如式(2)所示:
[opk=fi=1qωkigj=1Mωijxpj-θj-θk, i=1,2,…,q, k=1,2,…,L] (2)
式中:[xpj]和[opk]分别为输入层节点j和输出层节点k在样本p作用时的输出; f(·),g(·)分别为输出层和隐藏层的激活函数,均取Sigmoid函数;M,q和k分别为输入层、隐含层和输出层的节点个数;ωij为输入层神经元j与隐含层神经元i之间的连接权值;θi为隐含层神经元i的阈值;ωki为隐含层神经元i和输出层神经元k之间的连接权值;θk为输出层神经元k的阈值。
BP神经网络的输入为转速偏差e、偏差变化率Δe以及速度反馈值n,输出为PID参数KP,KI和KD。
考虑到MSP430G2553单片机运算速度和存储空间的限制,在PC机上采用Matlab软件进行BP神经网络的学习和训练等,即采用离线训练的方式,这样在MSP430G2553单片机中只需考虑前向传播过程。对于训练完毕的BP神经网络,式(2)中的参数ωij,ωki,θi,θk都是确定值,可以利用这些编写神经网络计算程序并嵌入到MSP40G2553中。在程序运行过程中,就可以根据系统运行状态得到相应的PID参数[7]KP,KI和KD。
4 系统的软件设计
系统软件采用C语言编写,在IAR Embedded Workbench环境下进行模块化设计。整个软件由主程序、系统子程序和中断服务子程序组成。主程序流程图如图9所示。
系统初始化后,要求用户输入性别、体重等生理参数,然后进行按键轮询。按下SELECT键,可以选择自定义程式或预置程式,若第一次按下START键,以自主程式运行,即锻炼者可以根据需求随时调整跑步机的速度与坡度。此外,在某程式运行过程中,也可调节速度或坡度的操作。预置程式是固化在内部FLASH的代码,包括走步程式、跑步程式、减肥程式、心肺锻炼程式以及智能程式。执行预置程式时,无需人工干预,跑步机自动运行程式对应的运动方案。选择自定义程式时,用户可以根据自身状况定制个性化的运动方案。
系统有个5子程序。调速子程序根据设定值和采样值的比较结果,依据控制算法调节PWM的占空比。调坡子程序包含坡度采样功能,通过采样获得的实际值和设定值来控制继电器的通断时间。计算子程序通过用户的体重、当前的速度和运行时间来计算路程以及消耗的卡路里。显示子程序刷新显示。停机子程序将坡度和速度减为零。
中断子程序有4个。速度采样中断子程序在每次速度采样通道产生中断时调用,采用周期法计算速度。心率中断计算子程序在心率检测通道产生中断时调用,完成心率的计算。定时中断子程序中要包含喂狗功能。过压过流中断子程序在过流过压时调用。
5 结 语
本系统很好地利用了MSP430G2553的资源,设计的硬件电路合理。采用的控制算法将BP神经网络和传统PID相结合,使系统获得较好的调速性能,并实现了BP神经网络PID与MSP430G2553单片机的结合。系统满足设计目标,具有很好的稳定性和精确性,有很好的实用价值。
参考文献
[1] 刘洋,周旭,孙怡宁,等.基于步法的跑步机速度跟踪控制方法[J].传感技术学报,2015,28(2):217?220.
[2] 徐春剑,吴一辉,武俊峰,等.基于FPGA的高精度霍尔测速方法[J].仪表技术与传感器,2009(10):99?101.
[3] ASHEGHAN M M, M?GUEZ J. Stability analysis and robust control of heart beat rate during treadmill exercise [J]. Automatica, 2016, 63: 311?320.
[4] 柴波,邵常哲,黄淼,等.一种可监测人体脉搏波及心率的健康鼠标[J].现代电子技术,2012,35(5):170?172.
[5] 张怡卓,刘步玉,马琳.BP?PID控制方法在变量施肥控制系统中的应用[J].现代电子技术,2012,35(5):192?194.
[6] 黄剑平.基于BP神经网络的PID控制研究[J].计算机仿真,2010,27(7):167?170.
[7] ZHANG Yanhong, ZHAO Dean Z, ZHANG Jiansheng. Research on PID controller based on the BP neural network [C]// Proceedings of 2011 International Conference on Electronic and Mechanical Engineering and Information Technology. [S.l.]: IEEE, 2011: 516?519.