LED照明灯的智能控制设计.docx

上传人:b****7 文档编号:9266298 上传时间:2023-02-03 格式:DOCX 页数:16 大小:276.27KB
下载 相关 举报
LED照明灯的智能控制设计.docx_第1页
第1页 / 共16页
LED照明灯的智能控制设计.docx_第2页
第2页 / 共16页
LED照明灯的智能控制设计.docx_第3页
第3页 / 共16页
LED照明灯的智能控制设计.docx_第4页
第4页 / 共16页
LED照明灯的智能控制设计.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

LED照明灯的智能控制设计.docx

《LED照明灯的智能控制设计.docx》由会员分享,可在线阅读,更多相关《LED照明灯的智能控制设计.docx(16页珍藏版)》请在冰豆网上搜索。

LED照明灯的智能控制设计.docx

LED照明灯的智能控制设计

目录

1引言-1-

2系统总体设计-2-

2.1系统组成结构及工作原理-2-

2.2系统工作流程-3-

2.3系统核心器件选型-3-

3系统硬件设计-3-

3.1温度采集模块设计-3-

3.2报警模块设计-5-

3.3光敏电阻感应模块-6-

3.4液晶显示模块-6-

3.5LED灯-7-

4实现功能-7-

4.1光照强度对LED的智能控制-7-

4.2温度对LED的智能控制-8-

4.3蜂鸣器的报警-8-

4.4液晶屏的显示-8-

5系统软件设计-9-

5系统调试与结果分析-13-

5.1系统调试步骤-13-

5.2遇到的问题及解决方案-14-

5.3实验结果-15-

6结论与心得体会-16-

1引言

路灯是我们平日里接触最多的电子器件,而针对控制路灯而设计的电路方案不胜枚举。

同时,温度与光是平日生活中接触最多的物理量,它们与人们的正常生活息息相关。

于是,通过温度与光照强度这两个具体的物理量进行对路灯控制的电路设计也体现出其简单实用性。

温度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生产和生活中的更加广泛的应用,利用新型单总线式数字温度传感器实现对温度的测试与控制得到更快的开发。

光照强度的测定相对麻烦,使用光度计这种高精密的仪器太过繁琐而且成本较高,所以选用普遍的光敏电阻进行简单的定性设计即可,面对日常生活的需要足矣。

随着传感器技术和集成控制电路的飞速发展,我们相信,利用电子科技能给人们带来更加方便美好的未来,这种智能控制的LED灯就是一个典型的例子。

2系统总体设计

2.1系统组成结构及工作原理

该系统主要由5大模块组成,其中包括DS18B20温度传感器,光敏电阻光感知模块,MSP430F169单片机,12864LCD显示模块,报警模块5大部分组成。

由温度传感器负责数据采集,结合光敏电阻分压大小,经单片机转换后由LCD显示模块输出温度及LED灯亮灭状态,同时根据当前温度由单片机自动识别是否报警。

当到达设定的条件时告警。

其组成框图如下所示:

其实物图片如下:

2.2系统工作流程

首先设定温度报警的上下限值,然后由温度传感器进行温度数据的实时采集,同时利用光敏电阻特性和单片机管脚高低电平的识别特性共同控制LED灯的亮灭,一旦温度超过告警设定温度时由单片机发出信号关闭LED灯并利用蜂鸣器告警。

全过程温度和LED亮灭状态由LCD显示。

2.3系统核心器件选型

MSP430F169单片机,DS18B20温度传感器,12864LCD液晶显示屏,光敏电阻,蜂鸣器。

3系统硬件设计

3.1温度采集模块设计

本次系统设计采用的温度转换模块是DS18B20温度传感器,其原理图与实物图如下:

DS18B20仅有一个信道,与单片机的P3.0口相接,不仅简化了电路设计,而且使得其易于集成。

传感器电压范围为3.0V至5.5V无需备用电源,测量温度范围为-55°C至+125℃。

-10°C至+85°C范围内精度为±0.5°C

DS18B20的初始化:

(1)先将数据线置高电平“1”。

(2)延时(该时间要求的不是很严格,但是尽可能的短一点)

(3)数据线拉到低电平“0”。

(4)延时500微秒(该时间的时间范围可以从480到960微秒)。

(5)数据线拉到高电平“1”。

(6)延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。

据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。

(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。

(8)将数据线再次拉高到高电平“1”后结束。

DS18B20的写操作:

(1)数据线先置低电平“0”。

(2)延时确定的时间为6微秒。

(3)按从低位到高位的顺序发送字节(一次只发送一位)。

(4)延时时间为50微秒。

(5)将数据线拉到高电平。

(6)重复上

(1)到(6)的操作直到所有的字节全部发送完为止。

(7)最后将数据线拉高。

DS18B20的读操作:

(1)将数据线拉高“1”。

(2)延时6微秒。

(3)将数据线拉低“0”。

(4)延时9微秒。

(5)将数据线拉高“1”。

(6)延时45微秒。

(7)读数据线的状态得到1个状态位,并进行数据处理。

(8)延时10微秒。

3.2报警模块设计

该部分电路主要是驱动一个蜂鸣器,这样只需要将蜂鸣器的一段接地,另一端与单片机进行相接就可以了。

其与单片机的P3.4口相接,通过控制P3.4输出的电平高低来控制蜂鸣器的工作。

其电路原理图与实物图如下:

3.3光敏电阻感应模块

经过试验,本次使用的光敏电阻在有光条件下(40W日光灯管照射)电阻阻值于2.9kΩ上下浮动,在无光条件下电阻阻值于15.5kΩ上下浮动。

根据光敏电阻特性,我们使用了4.7kΩ的定值电阻作为分压电阻。

以3.3V供电,在有光条件下,光敏电阻分压值约为1.2V,I/O口识别为低电平;在无光条件下,光敏电阻分压值约为2.5V,I/O口识别为高电平。

光敏电阻感应电路原理图与实物图如下:

3.4液晶显示模块

液晶显示模块采用了最为常见的12864LCD液晶屏,其最大的特点就是能耗小而且支持汉字的输出。

我们利用串口连接的方式将之与单片机联接,分别将单片机上其实P2.0口设置为CS,P2.1口设置为SID,P2.2口设置为CLK分别与液晶屏相应管脚连接,同时使用3.3V对其供电。

为了液晶屏的放置方便,我们利用了现有的12864LCD液晶按键板辅助固定与连接,在此次实验中并未用到该板的按键功能。

其实物图如下:

3.5LED灯

由于MSP430F169学习板上已经集成了LED模块,所以我们不再另行设计与使用LED模块了。

同时为了便于检查单片机学习板的工作状态,我们设置了其中两枚LED作为工作指示灯,当它们熄灭时表示程序未能成功执行,闪烁时表示正在下载程序,长亮时表示正常工作。

其余LED作为我们控制的LED对象。

其特写图片如下:

4实现功能

4.1光照强度对LED的智能控制

当光照强度明显较大时,LED灯自动熄灭;当光照强度较小时,LED灯自动点亮。

此次实验中,由于使用的是光敏电阻,其无法对光照强度做出定量的判断,只能从大体上感知周围环境的光照强弱,所以我们设置为在普通光照条件下LED处于点亮状态,在有较强光源照射时LED处于熄灭状态。

4.2温度对LED的智能控制

利用DS18B20对温度的感知精度,我们设置了较为精确的温度对LED进行控制。

原题中设置的温度较高不易在现实生活和实验时快速实现,所以我们做出了如下调整:

当温度上升至30℃时(原题要求为60℃)LED灯熄灭,待温度降为25℃时(愿提要求为55℃)LED灯重新点亮。

4.3蜂鸣器的报警

结合温度传感器和单片机的控制,当温度高于预设告警温度时(此时即为30℃),无论系统处于升温还是降温过程,都会激发P3.4的高电平时蜂鸣器告警。

4.4液晶屏的显示

通过与单片机的联接,LCD液晶屏接收来自各传感器经单片机处理后得到的信息,在显示屏上显示当前的温度状况(刷新频率以实际测得为准),并显示LED的亮灭状态。

 

5系统软件设计

根据功能我们设计的主程序如下(重要步骤已标明注释):

#include

#include"cryfucns.h"

#include"DS18B20.h"

#include"displaydata.h"

typedefunsignedintuint;

typedefunsignedcharuchar;

uchardN[6];

uchartem;

uinthot=0;

voidDisp_Numb(uinttemper);

voidmain(void)

{

/*下面六行程序关闭所有的IO口*/

P1DIR=0XFF;P1OUT=0XFF;

P2DIR=0XFF;P2OUT=0XFF;

P3DIR=0XFF;P3OUT=0XFF;

P4DIR=0XFF;P4OUT=0XFF;

P5DIR=0XFF;P5OUT=0XFF;

P6DIR=0XFF;P6OUT=0XFF;

uchari;

WDTCTL=WDTPW+WDTHOLD;//关闭看门狗

P6DIR|=BIT2;P6OUT|=BIT2;//关闭电平转换

/*------选择系统主时钟为8MHz-------*/

BCSCTL1&=~XT2OFF;//打开XT2高频晶体振荡器

do

{

IFG1&=~OFIFG;//清除晶振失败标志

for(i=0xFF;i>0;i--);//等待8MHz晶体起振

}

while((IFG1&OFIFG));//晶振失效标志仍然存在?

BCSCTL2|=SELM_2+SELS;//MCLK和SMCLK选择高频晶振

TACTL|=TASSEL_2+ID_3;//计数时钟选择SMLK=8MHz,1/8分频后为1MHz

_EINT();//打开全局中断

P6DIR=~BIT0;

Ini_Lcd();//初始化液晶屏

Disp_HZ(0x80,line1,3);

Disp_HZ(0x94,line2,2);

Disp_HZ(0x88,line3,5);

P2DIR=0xff;//P2端口设置为输出

P2OUT=0xff;//关闭其他LED

P2SEL|=BIT3+BIT4;//P2.3和P2.4连接内部模块

/*****循环读数显示*****/

while

(1)

{

Disp_Numb(Do1Convert());

Send(0,0x90);

Send(1,dN[5]+0x30);

Send(1,dN[4]+0x30);

Send(1,0x2e);

Send(1,dN[3]+0x30);

Send(1,dN[2]+0x30);

Send(1,dN[1]+0x30);

Send(1,dN[0]+0x30);

tem=10*dN[5]+dN[4];

if(hot==0)

{

if(tem>=30)

{

hot=1;

P3OUT=BIT4;

P2OUT=~BIT3;

Disp_HZ(0x98,line5,1);

}

else

{

P3OUT=~BIT4;

if(P6IN&0x01==1)

{

P2OUT=BIT3;

Disp_HZ(0x98,line4,1);

}

else

{

P2OUT=~BIT3;

Disp_HZ(0x98,line5,1);

}

}

}

else{

P3OUT=BIT4;

if(tem<30)

{

P2OUT=~BIT3;

P3OUT=~BIT4;

Disp_HZ(0x98,line5,1);

}

if(tem<25)

{

P2OUT=BIT3;

P3OUT=~BIT4;

Disp_HZ(0x98,line4,1);

}

}

}

}

由于其子函数各程序较为复杂,同时论文篇幅有限在此就不全数写出了。

5系统调试与结果分析

通过“IAREmbeddedWorkbench”软件导入C语言程序,利用TI的下载器下载到实验板上进行相关调试。

5.1系统调试步骤

对于此次系统设计,由于涉及到4大外围模块,如果全部一起调试,难度很大,很难发现问题,因此我们调试的步骤也为分模块调试,分别按如下顺序调试:

显示模块——温度数据采集模块——报警模块——光敏电阻感应模块。

最终再逐个合起来一起调试。

5.1.1显示模块调试

我们首先将程序只实现简单的显示功能,通过预先设定好的6位数组值来实现LED的动显,若最终显示成功,则我们进入下一步调试,即将数据采集模块加进去。

由于初次接触12864LCD液晶串口联接的操作,经过了至少3天的调试过程才完成。

5.1.2温度数据采集模块

我们将温度传感器采集回的11位数据通过转换后,存放在上面显示模块调试时设定的数组里,这样就将两个模块结合了起来初步实现了温度的显示,当实现这一步时,我们内心是无比的喜悦,因为一个简单的温度计已经完成了,接下来我们就是进行报警模块的设计,在这一步我们花了一天的时间用来调试,最主要的问题就是时序上的冲突,由于初期未对DS12B20的说明书进行详细阅读才导致这种情况发生,后来及时修改收效较好。

5.1.3温度告警模块

将上面两个模块调试完后,我们很快又将报警模块加了进去,这一块问题不大,主要是利用“if”语句实现通过对P3.4管脚高低电平的输出来实现对告警模块的控制。

至此,功能实现正常。

5.1.4光敏感应模块

在其他模块完成组装与调试之后我们开始了对光敏感应模块的调试,由于在初步设计时想要顾及到对光强的精确感知,所以一开始准备利用单片机的ADC模块对光敏电阻的分压进行精确感知并设置一个精确的参考电位以供判别高低电平。

但是由于ADC模块的程序操作对我们来说还很难,于是我们试想直接利用I/O口对高低电位的感知来实现对光强的感知,虽然灵敏度不及ADC模块,但是已经能够满足本次试验的要求,同时考虑到程序上直接设置的语句十分精简,使得程序设计更为经济,所以我们放弃了原始构想转而通过I/O口直接输入。

5.1.5整体调试

最后,还有调试系统运行的可靠性和稳定性,当时由于时间紧,没有对这一步进行地很详细,后来经过自己的调试,将程序内的部分重复操作和多余操作去除进一步使操作更为经济,但唯一的遗憾就是液晶屏幕的亮度无论从供电还是从液晶托板的可变电阻来调节都得不到良好的解决,由于我们可以看见液晶显示的数据所以我们放弃了对液晶屏的进一步调节。

5.2遇到的问题及解决方案

本次综合设计主要遇到了如下几个问题:

1)一开始在调试液晶模块时无法正常显示

解决方案:

后来经过潘丽教员指点,我们使用了串口的联接方式,并且使用了现有的液晶托盘来加强液晶屏的支撑进而加强了液晶模块的稳定性,问题的到解决。

2)温度模块数据无法读取

解决方案:

由于我们疏忽了对DS18B20说明书的阅读导致其重置时间不足进而无法完成数据的传输,我们根据说明书提供的正确时序调试了程序,再次运行时就能正常的进行实时读数了。

3)光敏电阻感应模块不起作用

解决方案:

由于我们一直以为是光敏电阻的分压不足导致高低电平区分不明显致使单片机识别有误,所以浪费了较多时间在硬件的调试上,后经过严密检查发现程序中有个语句有问题,经过多次调试与反复试验完成了对问题语句的修改完成功能。

5.3实验结果

经过长达半个月的程序调试,我们最终获得了与功能相适应的全套LED系统。

 

6结论与心得体会

经过本次实验,可以说,内心是非常地兴奋,虽然是一个很简单的系统,但是通过自己的实践,从中发现了很多问题,并通过自己的努力和潘丽老师的指导最终解决了,更加激发了我对学习单片机和相关程序编写的兴趣,至少说我们已经有走进这个门槛的觉悟了。

虽然当初在调试程序时很累,有时都是弄到深夜才睡的,但当自己最终完成时,那种愉悦感是非常的美妙的!

从这一次小小的编程实践中,我得到了很多经验,最主要的是我学会了怎么调试程序,如果再让我调试一个程序,应该说我所花的时间肯定比第一次少,有些常见的问题自己已经记住在心里了。

经验的积累就是在一次次的实践中得到的,没有实践,就没有经验的积累!

同时,对于此LED控制系统,其应用范围相当地广泛,不仅可以在改良后用于日常生活需要,也可以再加入其他模块实现更多的功能,可以说其实用性是显而易见的。

当然,我们做的系统也有很多该完善的地方,比如说温度精度,光强精度等等,这样显得更人性化,更方便更实际,但由于时限原因,好多想到的功能都没能实现,在以后的学习中,我们会逐一注意加强!

最后再次郑重的感谢教员的大力支持,在她的精心指导下我们才能从各种问题中发现其本质并加以纠正,我们十分感激她一直以来的教诲,同时也希望以后能够从教员那里学到更多有用的东西!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学反思汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1