基于合泰单片机的节能型智能多用途落地灯的实现

2015年重庆地区第八届“合泰杯”大学生单片机应用设计竞赛

节能型智能多用途落地灯

参赛编号:20150296

重庆科技学院

指导老师:电气与信息工程学院

电气与信息工程学院

参赛学生:电气与信息工程学院

电气与信息工程学院

电气与信息工程学院

E-mail:@https://www.360docs.net/doc/ac9776072.html,

2015 年05 月10 日

1、摘要

随着人民生活水平的提高、生活条件的改善,人们在追求更高生活质量的同时对家居生活中电器的要求也不断提高。科学技术迅猛发展的今天,家用电器主要功能不断增强,辅助功能不断出现,不仅要具有绿色节能的特点,还要有人性化的使用方法。同时人们注意到,我国日益庞大的老龄化人群引发了众多的社会问题,特别是空巢老人在生活中常因身体部分机能的退化,对火灾、燃气泄漏等家庭中的意外事故不够敏感,在家中摸黑行走意外摔倒引起悲剧的发生。市场上缺少为独居老人提供方便的人性化多功能家居产品。本设计就是对日常生活常见的落地灯加以改进,使之能够担负起智能照明、绿色节能、空气温湿检测、火灾燃气报警等工作,给人们以更好的生活体验。通过传感器和继电器来控制灯的开关及明亮程度,以实现节能环保。另外,产品还具有智能检测功能,通过对室内温度、湿度、烟雾、煤气的检测,进行语音提示或报警。

本设计使用HOLTEK单片机作为节能型智能多用途落地灯的检测单元和控制单元的主器件,与各模块间直接连接或间接连接控制,实现单片机对各强弱电模块的控制。

关键词:家用电器人性化智能绿色节能传感器HOLTEK 单片机

2、前言

近年来,随着高科技的迅猛发展,家用电器的节能化、多功能及智能化日渐深入人心。为了满足人们对上述功能的需要,故设计此节能型智能多用途落地灯。

1、节能化

通过红外释热传感器、光敏传感器和继电器来实现对落地灯开启及关断的控制,运用光敏传感器来满足落地灯明暗程度随自然光线强度的变化而变化。其特点是在有人时且外界光强较弱时能自动开灯,无人或外界光较强时关灯,整个过程不像声控灯那样需要人为发出声响,影响家中其他人的休息。不仅节约了能源,更方便了老人和残障人士在夜晚使用。除此之外,该落地灯还可以在正常模式和空闲模式之间进行切换,在低功耗的基础上通过优化单片机操作来获得最佳性能/功耗比,真正实现了节能。

2、功能多

该落地灯除了它的本职工作——照明,它还有其他很多功能。作品以HOLTEK单片机为主控制元,配合其他各个模块来实现多种功能。运用温湿度传感器检测室内的温度和湿度,在温度过高且家里没人的情况下发送短信提醒主人注意防火防暑;运用烟雾传感器来检测室内是否发生火灾,如果烟雾浓度过高且家里没人,发送短信提醒主人做好救火准备;运用燃气传感器来检测是否出现燃气泄漏,如果检测到室内燃气浓度过高且家里没人,发送短信提醒主人,避免灾难的发生;运用光敏传感器可以实现智能调光;通过HOLTEK汇总处理,可以在液晶屏上分别显示各项检测结果。它还有一个实时时钟功能,我们可以设置时间,设置闹钟,完全可以把它当做一个钟表来使用。最后它还有一键关机功能,省去拔插头的繁琐。

3、智能化

除了它的智能开关和智能调光以外,语音模块向用户提供注意保暖防暑等语音提示、闹钟提示和进行火情燃气泄漏的报警,GSM模块在特定情况下(火灾等)给用户发送提醒短信。用液晶屏显示时间、温度、湿度、光线强度和燃气浓度方便用户的查询。另外,可以通过人工按键调节灯光强度,人工调节红外释热传感器和光敏传感器的灵敏度,来控制灯的开关和灯光的强度,从而实现用户个性化设置。

4、创新性

本产品的主要功能是绿色照明,但不仅仅局限在实现照明功能,还能检测室内的温度、湿度、火情、燃气浓度,还具备报警功能。既节约能源,又有多种用途,可谓一举多得。打破了灯只能用来照明的传统观念,实现了创新。

5、实用性

家用落地灯是一种必备电器,常用于客厅卧室等场合,本产品将多种功能集成在一座灯上,实用性强。另外,避免用户购买单一功能的产品,为用户节约了花费,经济性好。

3、工作原理

该智能落地灯是以HT66芯片为核心掌控整个系统。主要应用红外释热传感器和光敏传感器配合继电器实现自动开关达到智能节能的效果;利用温湿度传感器和烟雾传感器等通过HT66芯片上的ADC获取外部模拟信号数据,实现落地灯的多功能;并且通过光敏传感器和PWM调光器控制台灯亮度,再次体现作品的智能和节能。除此之外,作品还使用了GSM通信模块,在体现智能节能和多功能的同时还实现了远程安防智能家居的功能。在软件方面,使用HT-IDE3000集成开发环境选用c语言编程,对各个模块分成单个文件编写。总之,此落地灯可通过单片机智能控制开关,控制光的亮度保护视力以及对室内的湿度、温度、烟雾浓度以及燃气浓度等数据进行实时监控,并且显示模块可以实时显示室内当前光线强度、湿度、温度、烟雾浓度以及燃气浓度等功能,当湿度高于某个特定值时,可实现提醒主人注意室内通风功能;同理,当温度、烟雾浓度以及燃气浓度高于某一特定值时,系统也会有相应的提醒警报功能。综上所述,此智能落地灯既保护视力,又环保,集多功能为一身,从而满足人们的需求。

3.1 电源模块

为了使用方便,系统工作时直接使用标准220V/50Hz交流电。而对于本落地灯,它需要不同大小的直流电压,例如HT66单片机和部分传感器的工作电压都不会超过5V,高亮LED灯的电压一般在12~36V 左右,所以我们需要一个多路输出直流稳压电源模块来满足系统对不同电压的需求。电源模块的需求设计思路如图3.1所示。

图3.1 电源模块框图

3.2 红外释热传感器模块

系统共用到两个红外释热传感器模块,工作电压5V。两个传感器模块采用的是HC-SR501人体红外感应模块,灵敏度可调节,有信号放大和温度补偿电路,有效范围为85°角3—4米内,用于检测周围是否存在驻留人群。

3.3 温湿度、光线强度采集模块

温湿度,光线强度采集:温湿度采集是应用DTH11模块,光线强度采集是利用光敏电阻获取外部数据。本落地灯是应用光敏电阻,温湿度模块和HT66芯片上的ADC获取外部数据,并且经分析AD转换的数字信号利用PWM调光器控制台灯亮度功能。

说明:对于落地灯光线的智能调节,提出了三个方案:

1、可控硅调节

可控硅又叫晶闸管。它的原理在宏观上说来是通过调节电压来实现调节灯光的强弱。实现光敏电阻和可控硅的组合能达到智能调节灯光的目的。但是该方式在硬件电路设计上比较复杂,对于用到MCU的系统来说,在控制方面比较难以实现。

2、PWM调光器调节

基本思想就是利用HT66单片机具有的PWM端口,在不改变PWM方波周期的前提下,通过软件的方法调整单片机的PWM控制寄存器来调整PWM的占空比,从而控制LED灯的充电电流,以此来调整亮度。对于HT66芯片来说,它的PWM输出模式为我们提供了方便。

3、DAC0832数模转换调节

DAC0832输入的是8位数字信号,输出的是电流信号,而控制发光二极管亮度需要用电压实现,所

以这是配合外接运算放大器构成的电流电压转换电路。因为HT66本身不具备DA转换,而且运算放大电路更加复杂化了我们的外围电路,所以我们决定不采用本方案。

综上所述,我们选择方案2,PWM调光器。

3.4 烟雾、燃气浓度采集模块

烟雾、燃气浓度采集是应用气敏元件获取外部数据。MQ-2气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大,即模拟量输出电压随浓度越高电压越高。对液化气,天然气,城市煤气,烟雾有较好的灵敏度。

3.5 显示模块

采用液晶显示。QC12864B液晶显示屏是一种具有8位并行、2线或3线串行多种接口方式的液晶显示模块,并带中文字库。该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。其工作电压为3.0—5.5V,低电压低功耗。

3.6 语音模块

语音模块采用ISD1760优质语音录放芯片,其功能是在自动关灯和执行提醒警报时进行语音提示。ISD1760语音模块具有语音录制,选择性播放的功能。

4、作品结构

4.1系统框图

图4.1 系统框图

4.2控制关系

该智能落地灯是以HT66芯片为核心掌控整个系统。其他如红外释热传感器、光敏传感器,温湿度传感器、烟雾传感器、GSM模块、语音模块和显示模块等为外围器件。以HT66F70A为主,其他外围器件为辅设计。

4.3具体实现

4.3.1RTCC

RTCC实时时钟其实就是利用TM定时器中断(多功能中断)来实现的,只是与其他用到的定时器中断相比,它的时钟源来自fSUB,即内部低速振荡器,而不是(fsys/4)。在HT-IDE3000做配置选项的时候,将fSUB配置为RTC(LXT),即外部32.768KHz晶体振荡器。这样当MCU进入空闲模式0时,虽然CPU和系统时钟都已关闭,但是fSUB任然开启,我们的实时时钟会继续运行,给我们的工作模式的切换和实现低功耗功能提供了方便。具体寄存器设置为_tm1c0=0b01000000。

4.3.2IO模拟UART

所谓数据,其最终被电脑所认可的都是二进制数据,即位。而电脑所执行的物理信息就是高低电平,置1或0分别代表高低电平,也就是串口通信中所说的位,如起始位用低电平,则将其置0,停止位为高电平,则将其置1,各种数据位和校验位则根据情况置1或置0。至于串口通信的波特率,说到底只是每位电平持续的时间,波特率越高,持续的时间越短。如波特率为9600BPS,即每一位传送时间为1000ms/9600=0.104ms,即位与位之间的延时为为0.104毫秒。

我们经常可见11.0592MHz的晶振,为什么会是这么一个奇怪的数字。用此频率则每个指令周期的时间为(12/11.0592)us,那么波特率为9600BPS每位要间隔多少个指令周期呢?指令周期s=(1000000/9600)/(12/11.0592)=96,刚好为一整数,如果为4800BPS则为96x2=192,如为19200BPS则为48。

所以,UART模拟,我们将字符或汉字转换为16进制数,将波特率用定时器来实现,最后规定相应的数据帧格式,实现就不难了。我们所用波特率为19200BPS,那么定时器需定时1000/19200=0.052ms,对于用TM0定时器,我们选择(fsys/4)作为时钟源,那么根据公式定时时间=初值/时钟源,我们可求得初值为104。字符串转换成16进制我们可在网上资源查表可得。最后数据帧我们采用18N1,即一位起始位,8位数据,无校验位,一位结束位。关键代码如下:

定时器初始化:

void time_init(void)

{

//简易型TM(查找TMnC0寄存器),4分频

_tm0c0 = 0;

//简易型TM(TMnC1寄存器)计数器模式;比较器A匹配

_tm0c1 = 0xc1;

/*计数值的上限是3FFH,这里取计数初值为0068H,每隔104 / (fsys/4)的时间触发一次中断,系统时间为8MHz,每个计数脉冲经4分频后的脉冲周期为0.5uS,定时时间为52uS。*/

//简易型TM(TM0 CCRA低字节寄存器)先写低字节

_tm0al = 0x61; //这里不是0x68,因为经调试,波特率为19200时该值为精确值,而0x68有误差//另外,波特率9600也不是0xd0,精确值为0xce

//简易型TM(TM0 CCRA高字节寄存器)先读高字节,再读低字节

_tm0ah = 0x00;

//启动定时器0(TM0C0寄存器的bit3位)

//_t0on = 1;

//定时器0比较器A匹配中断控制位(MFI0寄存器bit1位)

_t0ae = 1;

//允许多功能中断0,多功能中断包括TM中断(INTC1寄存器bit1位)

_mf0e = 1;

}

发数据:

void WByte(uchar input)

{

//发送起始位,高电平到低电平的迁移

uchar j=8;

_t0on=1;//TR0=1;

newTXD=0;

Waitflag();//每到52us就发送一位,模拟保证其传输波特率为19200

//发送8位数据位

while(j--)

{

newTXD=input&0x01; //先传低位

Waitflag();//每到52us就发送一位,模拟保证其传输波特率为19200

input=input>>1;

}

//发送校验位(无)

//发送结束位

newTXD=1;

Waitflag();//每到52us就发送一位,模拟保证其传输波特率为19200

_t0on=0;//TR0=0;

}

4.3.3PWM

HT66F70A自带PWM输出功能,它被设计在TM模块。无论是CTM、STM或ETM都有PWM输出功能,只是它们各自的频率输出范围不同,因为它们有10bit和16bit之分。例如TM0,它是10bit-CTM,它的最大初值可为1023,根据公式PWM 输出频率=时钟源/初值,那么可求得在时钟源为(fsys/4)时的最小输出频率为488.76Hz,超出了我们所用的100~300HzPWM调光模块,所以我们选择使用TM1,16bit-STM。16bit-STM根据PWM 输出频率=时钟源/(CCRP×256)若将其频率设置在196Hz,那么CCRP 比较器的值为40,即寄存器tm2rp=0b00101000。具体代码如下:

PWM初始化:

void PWM_init(void)

{

//设置STM(TM2,16bit)输出引脚,pc4,pd1

_pcs2=0x02;_pds0=0x50;//_pcs0=0x11;_pcs2=0x40; _tmpc0=0b01110000;

//设置暂停位、时钟源、计数器开关

_tm2c0=0;//_tm1c0=0;

//设置PWM模式、输出引脚功能位、输出引脚控制位、输出引脚极性位、周期/占空比控制位、//计数器清零条件位

_tm2c1=0b10100100;//_tm1c1=0b10000001;

//_tm1c2=0b10101000; STM(TM2)无该寄存器,默认边沿对齐模式

//设置周期

//_tm1al=(1024-1)&0xff;

//_tm1ah=(1024-1)>>8;

_tm2rp=0b00101000;

//设置TM输出引脚为输出且初始化为0

_pcc4=0;

_pdc1=0;

_pc4=0;

_pd1=0;

//_pcc&=0b11011100;

//_pc&=0b11011100;

_t2on=1;//启动TM

}

4.3.4温湿度

温湿度模块为DTH11模块,它采用单总线协议,所以在时序输入输出时,要把握好时机将IO口设置成输入或者输出。更详细就是在MCU发送请求读数据信号、模块应答返回信号、模块发送数据这三者之间要改变同一引脚的输入输出功能。

4.3.5ADC

HT66F70A内部集成了12位精度12通道AD转换器,可支持对12个设备进行AD转换,还可设置AD转换寄存器数据格式。但因为其只有一个AD转换电路,所以同时只支持一个通道进行转换,在有多设备接入时需轮流转换通道。

4.3.6矩阵键盘

矩阵键盘是解决独立按键一个按键占用一个引脚的方案,它按键多且占用引脚少,按键越多就越能节省引脚。在编写程序扫描按键时,我们可以选择逐行扫描或者行列扫描的方式。这里我们选择了行列扫描,先确定行,再确定列我们就确定了哪个按键被按下。

4.3.7工作模式的切换

进入空闲模式0的方法仅有一种——应用程序中执行“HALT”指令前需设置寄存器SMOD 中IDLEN 位为“1”且SMOD1 寄存器中的FSYSON 位为“0”。在上述条件下执行该指令后,将发生的情况如下:

●系统时钟停止运行,应用程序停止在“HALT”指令处,fSUB 时钟将继续运行。

●输入/ 输出口将保持当前值。

恢复到正常模式,由外部RES 引脚唤醒,系统会经过完全复位的过程。

相关文档
最新文档