标题 | 基于BP神经网络的BLDCM换相控制系统设计 |
范文 | 石科帅+忻尚芝+张宇慧+沈海鹰![]() ![]() ![]() 摘 要:直流无刷电机是一个多变量、强耦合的非线性系统,针对直流无刷电机换相时抖动比较明显、速度调节时的准确性也存在误差等缺点,通过无线传输模块实现了Matlab与stm32之间的通讯,建立了基于Matlab与stm32的电机远程控制系统,实现了上位机对电机的远程控制。与此同时,还采用对直流无刷电机换相时间采样与样本训练分离的策略,解决了stm32的运算能力差的问题,并利用Matlab的强大运算能力,实现了BP神经网络在BLDCM换相控制系统中的应用。实验表明,基于BP神经网络的BLDCM换相控制系统有利于提高电机的控制精度及动态性能。该系统将在智能化的控制领域拥有更广阔的空间。 关键词:无刷直流电机;Matlab;stm32;BP神经网络 DOIDOI:10.11907/rjdk.171343 中图分类号:TP319 文献标识码:A 文章编号文章编号:1672-7800(2017)008-0079-04 0 引言 直流无刷电机(Brusldess DC Motor,BLDCM)具有低速大转矩、速度范围宽、运行效率高、过载能力强、体积小、重量轻、功率大、无机械换向器控制系统等优点,广泛应用于电力机车、电动自行车、城轨车辆、冰箱、空调等领域。但是由于电机内部或外界的非线性干扰,直流无刷电机换相时抖动比较明显,速度调节时的准确性也存在误差, 大大地限制了其在精度较高的伺服系统中的应用[1]。 BP神经网络具有非线性映射逼近、分布式信息优化处理、自适应学习等能力,能够很好地解决在不明确运行环境的情况下,特别是比较复杂并且控制变量不能呈现线性变化的问题[2],从而使得控制部分鲁棒性能增强,拥有适应较高需求的动静态能力[3]。本文提出基于stm32和Matlab的BP神经网络控制理论,并将其应用于无刷直流电机的换相时间控制部分,以此增强电机运行的稳定性、平滑性,从而达到准确性更高、抗干扰信号能力强的稳定准确的控制系统效果。 1 总体设计 本设计主要流程分为3个部分:①基于stm32的换项到过零点间隔时间的数据采样;②stm32与上位机(Matlab环境下)间的数据通信;③在设计环节中,借助于采样数据进行BP神经网络训练,获取BP神经网络权值,建立换项到过零点间隔与换项时刻的非线性映射,以此避免遭受、负载变化等外界因素对换项时刻的影响,提高检测精度;在执行环节,利用建立的BP神经网络,实现电机的平稳换向,提高电机运行的稳定性。系统的设计框架如图1所示,包括数据采集模块(stm32)、无线传输模块(WSN-1101)和数据处理模块(Matlab平台)[4]。 2 基于stm32的数据采集原理及实现 2.1 换相时间采集原理 一种比较简单的做法是近似认为转子转速在0~60°的小范围区间内基本是恒定的:从AB相开始通电到检测出C相过零的前半段时间,基本等于后半段的时间[5]。所以只要记录从换相开始到过零点间的时间T1,然后从当前时刻开始再等待相同的时间,就可以换相了。以此类推可以得出:从AC导通到检测到B相过零点后时间间隔T2进行换相,BC导通到检测到A相过零点后时间间隔T3进行换相,BA导通到检测到C相过零点后时间间隔T4进行换相,CA导通到检测到B相过零点后时间间隔T5进行换相,CB导通到检测到C相过零点后时间间隔T6进行换相。即T(i)=Z(i)-P(i),其中:1≤i≤6,T(i)为检测到过零点后到换相的延时时间,Z(i)为第i次反电动势过零点时刻,P(i)为第i次换相开始时的时刻。图2为6种通电情形下各绕组感生电动势和换相时间[6-7]。 2.2 样本更新与换相时间采集 为了获得从换项开始到过零点的时间间隔与换项时刻的非线性映射,需要大量的样本数据对BP神经网络进行训练。为此需要按照如下步骤进行采样:①上位机通过串口给stm32发送已知速度指令;②进入换相状态时清空时间计数值Time1并进行向上计数,当检测到过零点时Time1停止向上计数并把当前值存储到对应的ai[n]数组中;③Time1进行向下计数直到递减到零,并进行换相;④循环第二步便可得到6组一维组换相时间数组,由此便可得到6个换相时间Ti:Ti=(∑j≤n-1j=0ai[j])÷n(1≤i≤6),由式(1)和式(2)可获得当前速度下的真实换相时间d=5/(n*p);⑤当完成步骤④的工作时,上位机通过串口给stm32发送新的速度指令,同时接收并记录由stm32反馈过来的6个换相时间Ti;⑥重复步骤②,便可获取多组实验样本和对应的期望值。n=60*f /p(1) f=30/(360*d)=1/(12*d)(2) 其中:n代表转速,f代表定子旋转磁场的频率,d换相时间的期望值。 图3为整体控制流程。 3 stm32与上位机间数据通信 3.1 通讯模块硬件设计 数据采样模块和样本训练模块的分离是本设计的一大亮点,这样既减轻了stm32的运算和存储负担,也缩短了样本训练时间。远程控制与Matlab对样本的获取都建立在数据通讯的基礎上。针对无线通讯,本设计采用了一套独立的数据收发单元,该单元基于stm32和Matlab建立,无线模块选用WSN-1101。WSN-1101无线数传模块是一款高稳定性、高性价比、低功耗的无线微功率透明数据收发模块。 图4为无线通讯与设备间的连接框架,主要分为两部分:①stm32串口的发送和接收直接与WSN-1101的接收和发送相连接;②上位机(Matlab)通过PL2303与WSN-1101建立连接。PL2303是Prolific公司生产的一种高度集成的RS232-USB接口转换器,可提供一个RS232全双工异步串行通信装置与USB功能接口。该器件作为USB/RS232双向转换器,一方面从上位机接收USB数据并将其转换为RS232信息流格式发送给WSN-1101;另一方面从RS232外设接收数据转换为USB数据格式传送回上位机。 为了能实现上位机与stm32间的通讯,还需要把两个无线模块设置成相同的波特率、通信频道和地址。当图4右边的设备向无线模块2发送串口数据时,无线模块2的RXD端口收到串口数据后,自动将数据以无线电波的方式发送到空中。无线模块1能自动接收到由模块2发送过来的数据,并由TXD还原最右边设备发送的串口数据。同理,从左到右也是一样的。 3.2 通讯模块程序设计 3.2.1 stm32串口中断服务函数:速度接收与样本发送 keil中的部分程序如下所示:void USART3_IRQHandler(void){int rec_data, i;if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET) //判断是否产生接受中断 {USART_ClearITPendingBit(USART3,USART_IT_RXNE); //清除接收中断 rec_data = USART_ReceiveData(USART3);//读取接收到的数据speed = rec_data; //stm32获得速度指令PutChar(T1);//发送上次速度指令检测得到的六组换相时间PutChar(T2); PutChar(T3);PutChar(T4);PutChar(T5);PutChar(T6); }} 3.2.2 Matlab和stm32之间通讯的建立:速度发送与样本接收 Matlab中程序如下所示[3]:Obj=serial('com3','baudrate',115200,'parity','none','databits',8,'stopbits',1);%初始化串口fopen(Obj);%连接obj和外设fwrite(Obj,'xxx','uchar');%向串口中写入第i次速度指令值xxxfread(Obj,6,'uint8');%在串口obj读取上一次发送指令的6组换相时间fclose(Obj)%关闭串口设备对象objdelete(Obj)%从内存中删除串口对象objclear Obj%从Matlab工作区中清除串行接口对象obj由上面程序可以获得当速度改变时所对应的6组换相时间T1-T6,每次改变速度所对应的期望换相时间d可通过计算得到。写入Matlab中的速度变化范围是500~1 000,变化梯度为1,这样便可得到500个训练样本。最后把获得的样本制作成Excel表格的形式,这样方便下一步对样本进行BP神经网络的训练。 4 BP神经网络运用 4.1 基本原理 BP神经网络处理信息的基本原理是:输入信号Ti(n)(1≤i≤6,n代表样本的标号),通过中间节点作用于输出节点,经过非线形变换,产生输出信号yi(n),网络训练的每个样本包括输入向量和期望输出量d(n)、网络输出值yi(n)与期望输出值d(n)之间的偏差,通过调整输入节点与输出节点的联接强度取值Wij以及阈值,使误差沿梯度方向下降,经过反复学习训练,确定与最小误差相对应的网络参数(权值和阈值),停止训练。此时经过训练的神经网络即能对类似样本的输入信息,自行处理输出误差最小的经过非线性转换的信息。 图5是根据神经网络的基本原理建立的六输入六输出的神经网络信号流图。 4.2 训练方式选取 网络训练方式分为串行训练和集中训练。串行训练是指从训练样本集中每输入一个样本模式和期望输出,进行一次BP神经网络的突触权值更新;而集中训练突触权值的更新要在组成一个回合的所有样本向量都训练后才进行。从在线运行的观点来看,训练的串行方式比集中方式好,因为对每个突触权值来说,需要更少的局部存储。此外,样本向量以随机方式呈现给网络,利用每输入一样本向量就更新突触权值的方法使得在权值空间的搜索具有随机性,这使得反向传播算法陷入极小局部的可能性降低。因此在网络训练中选取串行训练的方式。 反向传播算法的學习步骤如下: (1)初始化。设置所有突触权值和阈值为最小的随机数。在没有先验知识可用的情况下,可以选择均值等于0的均匀分布来设置,该分布的方差的选择,应该使神经元诱导局部域的标准偏差位于sigmoid激活函数的线性部分与饱和部分的过渡处。 (2)提供输入训练样本集{T(n),d(n)}Nn=1。给出顺序赋值输入向量T(1),T(2),T(3)…,T(n)和期望输出响应d(n)。其中T(n)=T1(n),T2(n),T3(n),T4(n),T5(n),T6(n)。 (3)对训练样本n,计算各隐含层和输出层的神经元输出,参见式(5)和式(6)。 (4)对训练样本n,计算误差函数和代价函数参见式(3)和式(4)。 (5)调整输出层和隐含层的突触权值,参见式(7)。 (6)令n=n+1,返回步骤(3),直到满足停止准则。 ej(n)=d(n)-yj(n) (3) ε(n)=12∑6j=1e2j(n)(4) υj(n)=∑6i=0ωji(n)Ti(n)(5) yj(n)=f(υj(n))(6) 权值校正Δωji(n)=学习率参数η·局部梯度δj(n)·神经元j输入信号Ti(n) δj=f(vj)[1-f(vj)][dk-f(vj)](7) 由以上训练可以得出输入层与输出层之间的权值wij(1≤i≤6,1≤j≤6),其中:i为输入层神经元的标号,j为输出层神经元的标号。最后把训练好的权值发送给stm32,此时可以利用stm32软件检测的换向时间和权值,便可得到期望值d误差较小的换相时间在yj,从而使电机换相平稳、运行速度精准。 5 结语 本文建立了基于stm32和Matlab的电机控制系统、BP神经网络采样系统和BP神经网络训练系统。该设计方案具有智能化远程控制和操作简单的优点,利用BP神经网络优秀的学习能力,能够适应直流无刷电机这个多变量、强耦合、非线性复杂系统,引入BP神经网络控制,使系统对换相时间的控制具有更好的鲁棒性。本文提出的BP神经网络在换相系统中的应用,有利于提高电机控制精度及动态性能。本控制系统的设计理念可移植到众多控制领域当中,因此,这种基于stm32和Matlab的BP神经网络控制系统在智能化控制领域将会拥有广阔的应用前景。 参考文献: [1] 张琛.直流无刷电动机原理及应用[M].北京:机械工业出版社,2006. [2] 冯纯伯,刘延年.神经网络控制的现状及问题[J].控制理论与应用,1994,11(1):103-106. [3] 范磊,张运陶,程正军.基于Matlab的改进BP 神经网络及其应用[J].西华师范大学学报:自然科学版,2005,26(1):70-73. [4] 张立材基于Matlab环境的串行数据通信[J].微计算机信息,2004,20(3):100-101 [5] KIM Y ,KOOK Y ,KO Y.A new technique of reducing to rqueripples for BDCM drives[J].IEEE Trans on Industrial Electronics.1997,44(5):735-739. [6] SOMANATHAM R,PRASAD P V N,RAJKUMAR A D.Modeling and simulation of sensor less control of PM BLDC motor using zero crossing back EMF detection[C].IEEE International Symposium on Power Electronics,Electric Drives,Automation and Motion,2006:984-989. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。