市电定时开关系统设计
2016-07-02中国科学技术大学信息科学技术学院安徽合肥230026
郝 沛,黄 鲁(中国科学技术大学信息科学技术学院,安徽合肥230026)
应用案例
市电定时开关系统设计
郝 沛,黄 鲁
(中国科学技术大学信息科学技术学院,安徽合肥230026)
传统市电开关需要人为干预,在某些重复定时开关场景下使用不方便,且需要人为判断通断的条件。设计了一种智能开关,可以实现设置时间段内开关的自动通断,并且能够借助传感器数据辅助判断通断条件。实测结果表明,该系统工作稳定,控制界面简洁友好。
市电定时开关;时钟芯片;传感器;继电器
O 引言
随着家用电器的普及,传统的手动开关已经无法满足日益复杂的应用场景。比如定时照明系统,人为地去控制照明开关,不但不方便,而且很难精确掌控开启与停止时间。如果在市电与照明系统之间增加一级控制系统,在设定好开关时间后,由系统执行开关操作,并且可以根据环境光照度来选择是否照明,则会带来极大的方便[1]。推而广之,定时抽水系统、定时充电系统、定时加热系统都可以采用此种控制方案,从而给市电应用场景带来极大便利。
1 系统简介
本系统设计的核心思路是“以弱控强,用户定制;控时为主,传感为辅”。硬件上,系统需要实现对传感器以及外围模块的驱动;软件上,系统需要实现人机交互界面的绘制、时间检测以及传感器数据的处理。
1.1 系统功能框图
如图1所示,系统输入为220 V的市电,通过继电器后,输出到被控电器,从而控制被控电器的开关。继电器的作用为隔离强弱电,同时控制市电的通断,其控制信号由控制系统提供。控制系统输入电压为9 V,由电源适配器提供。传感器提供判断通断的辅助信号,如光照度、水位、温湿度等[2]。
图1 市电定时开关系统功能框图
1.2 系统主要模块
1.2.1 主控制器STN 32
STM32是基于ARM Cortex-M3内核的32位微处理器,主频最高为72 MHz。它包含丰富的接口,且其内部时钟频率可由用户自主定制,能够方便地开发出PWM输出、频率捕获、脉宽捕获等功能[3]。其GPIO口可自由配置为输入/输出模式、中断模式、复用模式[4]。
1.2.2 定时器DS13O2
DS1302是DALLAS公司设计的一款低功耗时钟芯片,具有涓流充电、闰年补偿功能。芯片采用32.768 kHz晶振,且内部集成了31 B的用于临时数据存放的RAM寄存器。其采用3线I/O口与控制器通信:SCLK-时钟引脚,由主控芯片提供,用以实现数据的同步交互;I/O-数据输入/输出引脚,用以串行数据传输;RST-复位引脚,需在数据传输时强制拉高,在数据传输结束后强制拉低。
1.2.3 液晶显示模块LPH7366
LPH7366是一款分辨率为84×48的单色液晶显示模块,具有功耗低、操作简便等优点,广泛应用于手机显示屏、便携式设备中,如NOKIA5110的液晶屏。
LPH7366模块采用四线I/O口与主机通信:CE-使能引脚,低有效;SCK-时钟引脚;DATA-串行数据传输引脚;CD-命令/数据选择引脚(低电平代表传输命令,高电平代表传输数据)。
由于LPH7366没有集成字库,所以需要把ASICII字库嵌入到代码中去。
2 系统硬件
根据硬件功能,系统被划分为以下几个子系统:电源系统、STM32主控系统、人机交互系统、时钟系统、继电器系统。各系统功能如下:
(1)电源系统:为整个定时开关系统提供工作电平。系统工作电平有两种:9 V和3.3 V;
(2)主控系统:完成对整个系统的控制以及数据的采集处理;
(3)人机交互系统:提供人机交互接口,实现数据的反馈以及控制参数的配置;
(4)时钟系统:提供实时时钟数据,供主控系统使用;
(5)继电器系统:隔离强弱电系统,并实现3.3 V电平对9 V电平的驱动。
2.1 系统硬件框图
系统硬件框图如图2所示。
图2 系统硬件框图
2.2 系统电路图
2.2.1 STN 32最小系统电路
STM32能够工作的最小系统电路包含电源输入、复位电路、晶振电路。如图3所示。
图3 STM32最小系统电路框图
2.2.2 外围设备电路
外设电路包括电源电路、液晶+按键电路、实时时钟电路和继电器驱动电路。
(1)电源电路,如图4所示。
图4 开关电源TPS5430应用电路
其输出电压由以下公式得到:
当R1=10 kΩ,R2=2.7 kΩ时,VOUT=3.301 V。
(2)时钟电路
时钟电路采用DS1302方案。芯片有两组供电电源Vcc1和Vcc2。Vcc2为主电源,Vcc1为备用电源。芯片会以电平较高的一端作为电源输入,所以,为确保在系统掉电时时钟芯片能够正常工作,需要在Vcc1引脚处外加3 V蓄电池。
(3)液晶驱动电路
由于LPH7366液晶模块的逻辑驱动电平为3 V,所以可直接将其引脚连接到STM32上。按键系统采用自弹式轻触按键,连接到STM32的GPIO上,以中断方式输入。
(4)继电器驱动电路
图5 继电器驱动电路
由于继电器线圈的工作电平为9 V,而STM32的逻辑电平为3.3 V,所以需要驱动电路才能够用STM32的驱动电平来控制继电器。此处使用晶体管SS8050作为驱动电路,且将其设定为工作在饱和区内。如图5所示,假设晶体管BJT1的β=100,Vbe=0.7 V;继电器线圈电阻Rk= 70 Ω,继电器工作电压VIN=9 V。设STM32的PB.9脚输出到R4上的电压为Vin,三极管基极电流为Ib,集电极电流为Ic。假设三极管工作在临界饱和区,则:
可以得到三极管达到饱和状态的最小输入电压Vin= 0.75 V。即输入电平超过0.75 V,三极管便会导通,从而继电器吸合。由于在默认条件下继电器应处于断开状态,所以在三极管输入端增加下拉电阻R5 =10 kΩ。
3 系统软件
3.1 程序流程图
主程序的思路是,实时读取时钟芯片DS1302的时间,并显示在液晶显示屏上;同时检测当前时间是否进入了用户设定的继电器吸合时间。如果进入了设定时间,则吸合继电器;如果在设定时间外,则断开继电器。主程序流程图如图6。
图6 主程序流程图
本系统中,按键的检测是在中断程序中实现的。由于在处理某一个中断函数时,其他同级或者更低级的中断是被屏蔽的,所以中断函数应尽可能简短。本系统的按键中断函数仅实现检测哪个按键被按下,而按键消息处理函数是在中断函数外实现的。按键中断处理程序流程图如图7。
图7 按键中断处理程序流程图
3.2 人机交互界面设计
人机交互界面是本系统软件的主要构成部分。其完成的功能有:显示当前时间与定时时间段,绘制菜单以配合按键进行设置,响应按键信号并完成对应功能。
3.2.1 菜单的绘制
本系统菜单共有两级,采用链表结构设计,其结构如图8所示。
图8 系统菜单结构图
链表中,每个节点的结构如下:
tyPedef struct
{
int Location_Leve1[3];
char* Item_Name;
Menu_Item* Next;
}Menu_Item;
其中,Location_Leve1[3]表示当前节点的位置。Location_Leve1[0]的值代表此节点在主菜单的第几项;Location _Leve1[1]的值代表此节点在二级子菜单的第几项;Location_Leve1[2]代表此节点在三级子菜单的第几项。
Item_Name表示当前节点名称。在显示时会根据对应节点打印出此字符串。
Next指向下一节点的指针。
比如,图8中的二级子菜单中的项目“年设置”,其Location_Leve1[0]=1,代表其隶属于主菜单的“设定时间”项;Location_Leve1[1]=1,代表其隶属于二级菜单的“年设置”项;Location_Leve1[2]=0,代表其止于二级菜单,没有进入三级菜单。其Item_Name=“年设置”;Next指向“年设置”节点的下一个节点。
用链表设计菜单的优点在于,无论在菜单的什么位置添加项,都可以直接添加在链表的尾部。因为定位当前节点位置靠的是当前节点的Location_Leve1[3]中的3个变量,在菜单级数较少时,靠链表遍历就足够了。
3.2.2 按键的响应
按键的检测是在中断函数中完成的。中断处理函数仅完成按键序号的确认,而按键处理函数是在中断外实现的。本系统的按键有4个,分别为“向前”,“向后”,“确认”,“返回”,对应标识号依次为1、2、3、4。
按键处理的思路是:中断检测出当前按下的是哪个按键,然后根据当前指针指向的节点来确定要完成的动作。如图9所示。
图9 按键响应示意图
假设当前指针指向菜单项“设定时间”,则Location _ Leve1[3]={1,0,0},说明当前节点处于主菜单的第一项。如果此时“确认”按键被按下,那么按键处理函数从表中找到此时位置对应动作。假设此动作为“进入二级菜单”,则指针会跳转到Location_Leve1[3]={1,1,0}的位置,同时在屏幕上刷新出二级菜单。其他3个按键的响应与此类似。
3.3 定时时间的设定
定时时间设定是在按键响应函数中实现的。程序流程图如图10所示。
图10 定时时间设定流程图
1.2.2节介绍过,DS1302时钟芯片内部有31 B的RAM寄存器,可用于存放临时数据。由于市电定时开关系统需要保证在系统掉电后,配置数据不会丢失,从而在再次上电时依旧可用。所以,本系统使用了DS1302的临时数据寄存器作为配置数据的保存位置。由于DS1302有备用电源,配置数据不会因掉电而丢失。
3.4 传感器的数据处理
考虑到应用场景的不同,系统给出了8位GPIO扩展接口,可用于各种数字传感器的扩展,如温湿度传感器、液位传感器、光强传感器等。传感器数据处理流程图如图11所示。
以光强传感器为例。设光照强度标志为Light_F1ag,定时器的标志为Time_F1ag,则传感器与定时时间标志变量关系表如表1。
图11 传感器数据处理流程图
表1 传感器与定时时间标志变量表
如果被控电器为照明电路,要求“在设定时间段内,当光照度低于某阈值时,照明电路被开启”,则伪代码如下:
if((Light_F1ag&&Time_F1ag)==1)
{打开继电器;}
e1se
{关闭继电器;}
同理,液位传感器、温度传感器等的数据都可以采用这种处理思路。
4 测试效果
测试中使用了3个定时时间段,并观察继电器的通断状态。
如图12中主菜单界面所示,共有3个选项,可通过屏幕下方的按键实现光标的上下移动以及选择、取消等功能;右图为实时时钟设置界面,通过按键实现从年到秒的选择。
图12 主菜单(左)与时间设定界面(右)
图13左为定时时间设置界面。共有四个时间段可以配置。当配置完毕后,回到主菜单,进入“TIMEDISPLAY”子菜单,便可看到右图的效果。可以看到,时间显示界面除了显示当前时间外,还用不同的箭头表示出了定时时间段。举例来说,对于定时时间1(7:40~9:00),对应右图的纯黑色箭头(黑框之内)所指时间段,可以从时间轴上非常清晰地显示出来。
图13 定时设置界面(左)与时间显示界面(右)
当前时间如果落在任何一段设定时间内,则继电器吸合,其指示灯亮起。
5 结束语
本系统界面简洁,操作方便,可适用于大多数家用电器。经实际测试,系统用于定时照明场景,持续工作两周未出现异常。
[1]陈致远,朱叶承,周卓泉,等.一种基于STM32的智能家居控制系统[J].电子技术应用,2012,38(9):138-140.[2]张逢雪,王香婷,王通生,等.基于STM32单片机的无线智能家居控制系统[J].自动化技术与应用,2011,30(8):98-101.
[3]徐端全.嵌入式系统原理与设计[M].北京:北京航空航天大学出版社,2009.
[4]李宁.基于MDK的STM32处理器开发应用[M].北京:北京航空航天大学出版社,2008.
Design of time-based househo1d e1ectricity switch
Hao Pei,Huang Lu
(Information Science and Techno1ogy,University of Science and Techno1ogy of China,Hefei230026,China)
Traditiona1 househo1d e1ectricity switch is usua11y oPerated by hands.However,it is inconvenient to use in some rePetitive timing switch scenes,and it needs to judge on-off condition by hands.This PaPer introduces the design of an inte11igent switch,which can run automatica11y based on time Preset and can judge the circumstance by sensors.The test resu1ts show that this system is stabi1ity and can be easi1y oPerated. Key words:time-based househo1d e1ectricity switch;c1ock chiP;sensor;re1ay
TP273.5
A
10.19358 /j.issn.1674-7720.2016.09.027
郝沛,黄鲁.市电定时开关系统设计[J].微型机与应用,2016,35(9):93-96,100.
2016-01-14)
郝沛(1989 -),男,硕士,主要研究方向:嵌入式硬件系统设计与系统驱动软件设计。