【学习笔记】智能家居(6):基于单片机的定时插座设计

0 引言

  如果把每件电器都做成智能型电器显然会大大提高产品成本,而有些本来价格就低的简单电器更是没有必要增加智能功能。另一方面随着人们生活水平的提高,对电器的智能化要求却越来越高。为此,本文设计了一个通用的智能定时插座,从而在不增加简单电器成本的基础上为它们提供一定的定时功能。该插座基于单片机设计,具有成本低、效益高、智能化等优点。一个插座可以供许多电器使用,可实现定时、预设、遥控等功能。

1 系统方案设计

  定时插座系统在未做任何操作时显示当前时间。按下设置键会进入设置界面,每按一下设置键就进入下一个功能界面,然后可以进行相应设置。依次可进行时间、定时、预约的设置。可实现24 h内定时开关机,或一定时间段的开关,从而控制电器的工作状态。也可以通过红外遥控实现对系统的设置和对开关的通断。

  总体硬件电路框图如图1所示。

  1.1 单片机芯片的选择

  本设计采用STC89C52主控芯片。STC89C52是宏晶公司生产的40引脚双列直插芯片,具有体积小、重量轻、单一电源、功耗低、功能强、价格低廉、运算速度快、抗干扰能力强、可靠性高等优点,特别适用于实时测控系统,应用领域很广,已成为传统工业技术改造、各类产品更新换代、实现自动化智能化的理想控制核心。

  1.2 显示模块

  本设计采用LCD1602液晶显示模块[2]。LCD1602能够同时显示16×2即32个字符。LCD1602液晶显示模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,包括阿拉伯数字、大小写英文字母、常用的符号和日文假名等。

  1.3 时钟模块

  时钟模块采用DS1302时钟芯片实现计时[3]。DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,用于高速数据暂存的31×8 RAM,工作电压在2.5 V~5.5 V范围内,2.5 V时耗电小于300 nA。采用这种专用时钟芯片可以更精确地实现定时插座的定时目的,定时准确又不占用太多系统资源。

  系统采用DS1302作为计时器,从而实现定时插座在24小时内任意时间的可变定时和一小时内的固定模式定时。这样可以使得定时准确、方便,节约系统资源,同时程序编写上也能相对简单。DS1302电路连接如图2所示。

  1.4 继电器模块

  继电器是一种电子控制器件,通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。

  根据家用电器的一般要求,本定时插座采用SONGLE SRD-05VDC-SL-C继电器。该继电器的最大耐压为交流250 V,最大可通过10 A的交流电流。在本系统中,继电器主要用于控制插座的开关状态,通过单片机I/O输出信号控制继电器的工作是否已经完成从而达到控制插座开关的目的。继电器电路连接图如图3所示。

  同时,为了防止倒流,实验电路中加入了光电耦合器4N25。4N25器件由砷化镓红外发光二极管和硅光电晶体管检测器光电耦合构成,是一种发光二极管与光电晶体管面对面封装的单回路、内光路光电耦合器,也是一种晶体管输出6引脚DIP封装光电耦合器。

  1.5 按键模块

  本定时插座占用I/O口少,有足够的I/O口来作为按键接口,所以按键模块设计成独立按键。独立式按键电路配置灵活,软件结构简单。本定时插座共5个按键,每个按键占用一个I/O口,工作状态互不影响,通过检测输入线的电平状态可以很容易判断哪个按键被按下了。

  1.6 电源模块

  单片机、继电器需要5 V供电,为了使产品机构更简单,使用更方便,设计中不再另加5 V电源,而是直接利用接到插座里的市电,这里采用开关电源。开关电源具有体积小、效率高、输出电压稳定、输出功率大等优点。图4所示为开关电源设计电路图。

  1.7 红外遥控模块

  现在的红外遥控技术已经很成熟,应用也很广泛,本系统采用已编码的38 kHz红外遥控器发射接收模块,系统框图如图5所示。

  遥控器的每个按键都已经经过编码,当发射器拨键开关拨到“ON”档时,即有遥控码发出(可以发送任意数字),暂定为发送0AAH(二进制:10101010B),这种遥控码具有以下特征:采用脉宽调制的串行码,在最初5 ms内发送38K码并以此作为发射码开始的标志,以脉宽为1.5 ms、间隔0.5 ms、周期为2 ms的组合表示二进制的“1”;以脉宽为0.5 ms、间隔1.5 ms、周期为2 ms的组合表示二进制的“0”。

  解码的关键是如何识别“0”和“1”,从位的定义可以发现接收判定“0”、“1”就是判定每个周期开始时低电平(注意发射与接收码正好反相)出现时间的长短,如果接收到“0”的时间为1.5 ms,则接收到的值为1,如果接收到“0”的时间为0.5 ms,则接收到的值为0。

2 系统软件设计

  主程序主要是在单片机的控制下建立人机操作界面,对设定时间进行储存分析,驱动液晶显示出相关信息,并通过对比分析定时时间与时钟,控制继电器的通、断,从而达到控制插座的通、断电。在这个过程中,单片机首先进行初始化,包括设置单片机各个端口的方向、各个变量的初始化、液晶显示初始化、继电器断开以及单片机振荡频率的校准等。整个系统软件设计的流程图如图6所示。

  软件设计部分包括液晶显示程序、DS1302计时程序、独立式按键处理程序、红外遥控处理程序等。由于定时设置是通过独立式按键或者红外遥控器进行设置的,程序在按键扫描部分和红外信号的解码部分相对重要。在检测到被设置了定时任务时,系统要检测是否到达定时时间,进而执行相应的动作。

  编程过程中需要注意的主要有DS1302计时程序、LCD1602显示程序、按键处理程序和红外信号解码以及处理的相关程序,整合在一起的主函数程序如下所示:

  void main() //主函数

  {sysinit();

  //系统初始化(红外初始化、LCD初始化和1302初始化)

  while(1)

  {

  EA=0;

  keyscan(); //独立式按键扫描及处理

  if(flag==0)

  {

  display(); //显示时间

  }

  dingshi(); // 定时处理

  EA=1;

  Key_Handle(); //红外按键处理

  } }

3 结论

  该定时插座可以设置在一天24小时内的任意定时开关时间和任意时间段的固定模式定时。同时,通过红外遥控的电源键可以一键控制插座的工作状态,而遥控器的数字键则同样可以实现无线设置相应数字对应的任意时间段的固定模式定时。当时钟走到定时开始时间时,继电器接通,插座给负载供电;时钟走到定时结束时间时,继电器断开,插座停止给负载供电。当定时插座变换工作状态时,蜂鸣器发出短暂的蜂鸣。定时插座工作时红色指示灯亮,不工作时指示灯不亮。

◆ ◆ ◆ ◆ ◆◆ ◆ ◆ ◆ ◆◆ ◆ ◆ ◆ ◆◆ ◆ ◆ ◆ ◆

(0)

相关推荐