基于STM32单片机的楼宇智能照明控制系统研究
2022-06-24侯伯锋魏立明
徐 勇,侯伯锋,魏立明
吉林建筑大学 电气与计算机学院,长春 130118
由于楼宇等公共场所普遍存在“长明灯”现象,造成了大量的电源损耗,为了提供相对舒适更加现代化的办公环境,国内外专家学者针对此问题提出了多种解决方案,其中总线技术是一种较为成熟的技术.基于此,本文设计了一种以CAN总线为通讯方式的楼宇智能照明控制系统[1].
1 系统总体方案设计
1.1 CAN总线原理
CAN通信协议主要是指在设备之间交换信息的一种方法.CAN总线上有两根双绞线,根据它们之间的电位差CAN控制器可以判断出总线电平.控制器与智能节点之间通过使总线电平发生变化实现数据的交互.此外,CAN总线方便配置,允许将新节点直接加入设计和搭建CAN总线的应用控制系统中[2].
1.2 系统设计思路
本文设计了一种以STM32单片机为主控芯片的楼宇智能照明控制系统.系统将传感器连接到CAN智能节点电路上,以检测当前环境的照度和人员数据,并通过CAN协议与主控制器通信,实现系统的自动控制,进而实现有人则灯亮,无人则灯灭,并且当开启自动调节光照度调节时,系统能检测当前环境的光照度,通过BP神经网络优化灯光的亮度到光照设定值,从而实现恒照度,这不仅可满足人们对舒适度的要求,更能起到节能的作用,系统整体结构如图1所示,其工作环境主要可以分为办公室、走廊、电梯、卫生间.
图1 系统整体结构Fig.1 Overall system structure
办公室内安装人体红外传感器判断房间内是否有人员在办公,若无,则LED灯保持熄灭;若有,则再通过光照度传感器判断周围环境的光照强度,并调节LED灯的亮度.
走廊通过安装声音传感器和光照度传感器采集周围环境信息,当声音传感器检测到声音且光照度传感器感应到光照低于设定值时,LED灯亮,在没有声音发出时,LED灯则一直保持熄灭状态.
电梯内安装人体红外传感器,以确定电梯内是否有人,若无人,则LED灯保持熄灭;若有人,这个传感器会接收到信号,LED灯亮.当人离开电梯,传感器检测到电梯内无人时,LED灯再次熄灭.
卫生间LED灯和电梯LED灯控制方式相同,当人进入该区域之前,灯保持关闭,每个区域的灯组都互不影响.
2 硬件子系统的设计
2.1 硬件选择
本文是基于STM32单片机的楼宇智能照明系统研究,该系统的硬件模块功能见表1.该设计的处理器选用STM32F103RCT6芯片,在设计时可以外接收发器TJA1050,与STM32芯片内的CAN控制器组成完整的CAN总线模块.CAN总线收发模块电路如图2所示.
图2 CAN总线收发模块电路Fig.2 CAN bus transceiver module circuit
表1 硬件模块功能Table 1 Hardware module function
电源模块主要是对STM32F103芯片、人体红外传感器HC-SR501芯片、照度采集传感器BH1750芯片、声音传感器MK152芯片和收发器TJA1050芯片等提供电能.以上芯片正常工作时的电压为3.3 V或5 V,因此系统可以选用AS1117稳压芯片来设计电源模块电路,该稳压芯片可以满足上述的电压需求.电源模块电路如图3所示.
图3 电源模块电路Fig.3 Power module circuit
2.2 CAN智能节点电路设计
本文主要设计办公室、走廊、电梯、卫生间的CAN智能节点电路.以办公室的CAN智能节点为例,该电路通过CAN协议实现与上位机通信,以及与照度传感器、人体红外传感器和照明执行设备的连接,即该节点是CAN总线与传感器和照明执行设备的连接点.因为STM32单片机内部有CAN控制器,因此,CAN总线模块可以由STM3F103芯片外接收发器TJA1050组成.办公室CAN总线智能节点硬件构造如图4所示.
图4 办公室CAN智能节点硬件构造Fig.4 Hardware structure of office CAN intelligent node
2.3 PWM调光
随着工艺水平和发光效率的不断提高,LED灯具现已具有体积小、耗电低、寿命长、绿色环保等诸多优点,因此楼宇智能照明控制系统可选用LED灯源对LED进行调光控制.PWM调光的本质就是通过调节灯的通电占空比进行光照度的调节,其工作原理如图5所示.STM32芯片可以产生一个PWM信号,若要使信号频率增高或降低,则可以下调或上调寄存器TIMx_AAR的值,若要增加或减少占空比,可以下调或上调CCRx寄存器的值.在较高频率的开、关时,由于LED灯的本质是发光二极管,这使其在PWM调光中不会导致灯光闪烁且不产生过热现象,并且LED的PWM调光准确度高,调光色谱无偏移﹐所以,该方案选择PWM调光[3].
图5 PWM工作原理Fig.5 PWM working principle
2.4 LED恒流驱动电路设计
以本文采取DM13C驱动芯片为例,该芯片可以实现LED的恒流驱动,工作电压为3.3 V~5.5 V,在REXT端以一个外挂电阻调整恒流输出.芯片的使能端EN与单片机的PWM信号输出端口相连,out端连接LED灯组.LED恒流输出关系可由表2及其公式估算.
表2 恒流输出关系Table 2 Constant current output relationship
(1)
REXT端参考电压约1.2 V,若选流经过LED的电流50 mA为例,则:
(2)
计算得到外挂电阻R为1 kΩ.LED恒流驱动电路图如图6所示.
图6 LED恒流驱动电路Fig.6 LED constant current driving circuit
3 软件子系统的设计与开发
3.1 BP神经网络
3.1.1 智能照明系统算法选择
目前常用的智能照明算法有模糊控制、PID控制、神经网络算法等.模糊控制不能自主学习且精度及动态品质不高.若想要提高精度就要提高量化等级,这会影响系统反应速度;PID控制模型不适合多变量的控制系统;神经网络在智能控制领域是一个重要分支,有自我调节能力,且是一个多变量多输出的模型,所以本文采用BP神经网络算法.
3.1.2 BP神经网络的原理与结构
BP神经网络是一种根据误差反向传播算法训练地多层前馈神经网络,通过这一过程的不断持续,使输入模式识别的精确度不断提高.BP算法流程图如图7所示,神经元拓扑结构如图8所示.
图7 BP算法流程Fig.7 Flow chart of BP algorithm
图8 神经元拓扑结构Fig.8 Neuron topology
图8中,x为光照度传感器感知外界信息的数据输入;w为连接权值决定信号传递的强弱;y为控制器接收神经元的输出.用b代表神经元的偏差.线性加权求和可得z神经元净输入为:
(3)
图8中,θ是神经元的阈值,神经元的输出值大小取决于传输函数,输入信号的加权和神经元的阈值,由此可以得到得到控制器终端节点的数据帧接收神经元的输出为:
yk=f(zj-θj)
(4)
通过反向传播,对比传感器的输入和控制器的输出是否相符,来判断光照度是否达到指定要求.
3.2 总体程序设计
主程序通过C语言开发,主要是结合各个子程序使之按照一定的要求运行实现控制照明系统的功能.其中主要包括以下几个子程序:
首先,当采用智能照明系统时,第一步是初始化设备,例如HC-SR501通过串口指令设置它的工作状态,设置CAN总线模块,智能节点等;
其次,通过时钟模块,判断现在是否为工作时间,若是,则选择与当前环境相匹配的光照模式;
最后,上位机接收由各个智能节点发送过来的数据,结合BP神经网络通过反馈调整进行数据检测,调节光照度.主程序流程图如图9所示.
图9 主程序流程Fig.9 Main program flow chart
3.3 传感器采集的程序设计
3.3.1 光照度传感器
本文使用BH1750传感器采集楼宇内部的实时光照度.IIC总线是一种具有同步功能的串行总线,分别为数据线与时钟线,处理器STM32F103芯片通过SCL时钟信号端和SDA数据信号端与BH1750传感器连接进行数据的传输,读取照度数据和发送控制命令.BH1750部分代码如下:
BH1750初始化函数:void Init_BH1750()//BH1750初始化
IIC驱动函数:void BH1750_Start()//起始信号
void BH1750_Stop()//停止信号
void BH1750_SendACK()//发送应答信号
int BH1750_RecvACK()//接收应答信号
void BH1750_SendByte()//发送一个字节数据
uchar BH1750_RecvByte()//接收一个字节数据
BH1750写入和读取函数:void Single_Write_BH1750(uchar REG_Address)//写入指令
void mread(void)//读取指令
获取光照度函数:float read_BH1750(void)
3.3.2 人体红外传感器
采用HC-SR501传感器采集室内的实时人数,人体红外传感器可以感应到当前环境是否有人,若有,DATA端会输出高电平并传输给STM32F103芯片.
3.3.3 声音传感器
采用MK152声音传感器采集楼宇楼道声音,当检测到楼道上的声音时,模块的OUT端输出低电平.
3.4 CAN智能节点的程序设计
CAN智能节点在该设计中要接受来自传感器的信号并且还要和主控制器通讯.流程图如图10所示.
图10 CAN智能节点程序流程Fig.10 CAN intelligent node program flow chart
3.5 上位机模块设计
本文采用Labview为智能照明系统的上位机开发软件,传感器将采集到的光照和房间当前人数等数据通过CAN总线协议发送给主控制器,再由主控制器通过visa驱动实现与Labview串口通信,其中上位机还可以向主控制器发送设定的光照参数数据.如图11所示,上位机控制界面模拟了3个不同办公区的光照度和实时监测的人员数目,当办公区无人时LED灯熄灭,光照度显示为当前环境光照度,若有人,传感器会采集当前环境光照度的数据并于设定的值比较.若光照度高于上位机中设定的值,则LED不亮,若光照度低于上位机中设定的值,系统会通过BP神经网络算法进行数据检测,不断地进行信号的反馈与调整,改变处理器中的PWM占空比信号来调节驱动电流,从而改变LED灯的光照度.
图11 上位机控制界面Fig.11 Upper computer control interface
4 系统节能案例分析
本文以北方某高校的实验楼作为分析对象,室内原有荧光灯具12套,每套为2根18 W,按国家规定普通办公室照度为300 lx,在8∶00~14∶00时段室内光照度高于300 lx,所以不需要开灯,但在14∶00之后为满足光照要求需打开荧光灯,但由于光照度不可控,严重浪费了电能.若使用本文智能照明系统(如图12所示),在该实验室内设置3个CAN智能节点模块,2个人体红外传感器可以根据响应先后判断人员的进或出,光照度传感器可以实时检测光照度的强弱,并且通过CAN通讯快速准确地传输至主控器,对比上位机设置的参数来调节LED灯光照强弱.
图12 传感器位置示意图Fig.12 Schematic of sensor location
该智能照明系统可自动调整LED的功率实现恒为300 lx的照度,根据表3所示,本文所采用的智能照明系统在节约能源的问题上也是切实可行的.
表3 节能统计检测Table 3 Energy saving statistical detection
5 结论
本文主要针对基于STM32的智能照明系统进行分析,从系统研究方案硬件、软件、上位机、智能算法等方面进行了详细阐述,设计了智能照明系统硬件通信协议、CAN总线模块、智能节点、传感器节点等,以上位机为控制中心协调绑定各个节点,利用BP神经网络进行数据检测,优化输出光照度,并以北方某高校实验楼为例进行了实例分析,结果表明,本文所提方案可行且有效.