




免费预览已结束,剩余43页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
衡阳市第四届大学生科技创新大赛成果总结材料项 目 名 称 面向节能的路灯控制系统研制 参 赛 学 生 蒋军 王实铭 敬文毅 指 导 教 师 李祖林 王韧 参 赛 学 校 湖南工学院 申 报 时 间 2010-5-27 材料清单一、研究报告1. 成果简介12. 项目研究背景和意义13. 研究计划24. 研究内容45. 成果创新点9二、附件材料附件一:电路原理图10附件二:实物图片12附件三:程序清单13三、实物作品衡阳市第四届大学生创新大赛相关项目的研究报告项目名称:面向节能的路灯控制系统研制 项目类型:实用型成果形式:1、研究报告;2、实用作品参赛学生:蒋军 王实铭 敬文毅指导教师:李祖林 王韧一、 成果简介 本系统是基于单片机控制的路灯模拟控制系统,以单片机AT89S52为主控制器,对路面交通情况、外界环境亮度对交通灯的影响和故障等信息进行采集,实现对路灯的智能化节能控制。该系统以1W高亮度LED灯作为模拟路灯,制作了LED灯恒流驱动电源,电流调节范围在0-1A内可调。通过红外式反射光电传感器检测路面交通情况,控制LED路灯亮、灭。通过光敏三极管对环境变化及路灯故障等信号进行检测,实现了路灯亮、灭控制和路灯故障报警。LED灯能在规定时间实现自动减小亮度,并能在规定范围内设定调节,调节误差小于2%。该系统节能,性价比高,具有应用价值。二、 项目研究背景和意义 节能是二十一世纪的热门主题,面对全球能源危机,全世界都以节能为方向进行各方面的研究。LED就是节能的一个研究方向,高亮度LED以其低热损耗,高流明而迅速取代传统照明工具。系统以高亮度LED灯作为模拟路灯,可以实现路灯的节能控制。系统附带了周围环境检测功能,可以根据周围环境亮度开启和关闭路灯。系统还可以根据路面交通情况,控制路灯的调光功能,实现真正意义的节能环保。综合以上功能,该模拟路灯控制系统有很好的应用价值和研究意义。三、 研究计划 项目确定前期,我们为了更快更好的完成研究设计,做了如下计划:2009年5月-2009年8月:进行相关调研。2009年9月:组内三人讨论确定总体方案。2009年9月-2009年10月:分工协作完成项目的软、硬件设计。2009年10月-2009年11月:完成实际系统的制作、调试及测试。2009年12月-2010年3:完成项目的总结。 四、 研究内容1、方案的提出1.1方案描述针对题目的功能和指标进行分析,基于AT89S52单片机为模拟路灯支路控制器,通过光电传感器对路灯信号的检测,控制二路恒流源驱动LED路灯。系统整体设计原理框图如图1所示: 1.2方案论证与比较(1)系统控制方案选择方案一:选用数字电路进行控制,但整个系统电路制作复杂,实现题目发挥部分的指标有困难。方案二:选用AT89S52单片机为控制器,易于编程控制,外围控制资源丰富,整个控制系统操作更加灵活,电路制作简单、方便、性价比高。因此,我们选择方案二。(2)路灯信号检测方案一:选用金属传感器,该传感器精度高,反应灵敏,但是金属传感器价格较高。方案二:选用红外反射式光电传感器和光敏三极管,该传感器反应灵敏且价格便宜,外围检测电路简单。考虑到系统检测电路和性价比,我们选择方案二。(3)LED灯恒流驱动电源题目要求用恒流源驱动1W LED灯,并具有调光功能,驱动电源输出功率能在规定时间内按设定要求自动减小,该功率要求能在20%100%范围内设定并调节,调节误差2%,方案比较如下。方案一:选用模拟电路中所学的比例电流源,电路虽然简单,但该方案为电流-电流转换,且输出电流小,不能驱动1W LED灯。方案二:采用开关电路实现恒流源 ,通过控制PWM信号占空比,并将该信号作为驱动电路的控制信号,实现MOS驱动电路的导通时间,实现电压-电流转换,电源效率高,控制方便,但是电源纹波较多,制作困难。方案三: 线性数控电流源,用单片机控制DAC0832的输出,通过集成运放控制MOSFET 管 ,实现电压-电流的线性转换,电路制作简单,性价比高。因此,我们选择方案三。2、理论分析与设计2.1单元电路设计(1)单片机最小系统支路控制器控制芯片选用AT89S52,以DS1302作为时钟芯片,采用8255作并口扩展,以24c04作为掉电保护,外接矩阵式键盘和液晶显示器和二路DAC0832电路。 (2)路灯信号检测电路该装置选用红外式反射光电传感器,当小车经过传感器位置时,小车上的铝箔将红外线反射回去,红外接收管接收到信号输出到比较器整形送给单片机,让单片机对路灯进行控制。其原理图如图2所示:图2 信号检测电路(3)环境变化检测和故障检测环境变化和故障检测选用光敏三极管,当环境亮度达到光敏三极管的导通阈值时,光敏三极管导通,信号送给单片机,单片机实现对路灯的控制和发出声光报警。其原理图如图3所示:图3 光敏三极管检测电路(4)LED恒流驱动电源该恒流驱动电源是通过单片机控制DAC0832的输出电压,经运放控制MOS管的导通,MOSFET的源极经1采样电阻接地,对恒流源输出电流进行控制,实现了输出电流的线性数控。其原理图如图4所示,假设DAC0832输出至运放OP07同相端的输入为 ,由运放虚短可知,MOSFET的源极电压为 则恒流源输出电流 通过单片机控制输入电压,可线性控制恒流源的输出电流。图4 LED恒流驱动电源2.2系统软件设计3、系统测试及分析3.1系统测试测试仪器:数字示波器 RIGOLDS5022/25Mhz直流稳压电源 1731B指针式毫安表 精度0.5级数字万用表 DT-890秒表 卷尺功能测试:将系统各个单元模块组装好,用小车对系统进行模拟,依次测试如下功能:时钟功能、能设定、显示开关灯时间,控制整条支路按时开灯和关灯、故障检测及报警功能,实现了题目给定的基本要求和发挥部分。指标测试:LED恒流驱动电源输出功率的设定与调节测量结果如表1-1所示:表1-1 LED驱动电源输出功率的设定与调节测量结果预置功率(W)LED电压(V)LED电流(mA)LED功率(W)误差0.202.92660.191%0.403.061300.391%0.603.181920.611%0.803.262440.791%1.003.342990.991%3.2结果分析经系统调试及测量,我们得出该系统能够满足以下要求:(1) 时钟功能、能设定、显示开关灯时间,控制整条支路按时开灯和关灯;(2) 根据环境明暗自动开关灯;(3) 根据交通状况自动调节亮灯状态;(4) 独立控制每只路灯的开关灯时间;(5) 故障地址检测及报警功能;(6) 单元控制器具有调光功能;(7) 路灯驱动电源输出功率能在规定时间按设定要求自动减小;(8) 功率能在20%100%范围内设定并调节,调节误差为1%。五、 成果创新点1. 节能环保。本项目使用高亮度LED为交通灯,具有低热损耗,高流明等特点,系统可以根据路面交通情况实现交通灯的开启和关闭,并根据实际情况调节路灯的亮度,实现节能环保。2. 智能化控制。路灯可以根据周围环境的变化为参考,实现自动开启和关闭,自动检测路面交通情况,控制LED路灯亮、灭。通过光敏三极管对环境变化及路灯故障等信号进行检测,实现了路灯亮、灭控制和路灯故障报警。3. 实用性。项目经过进一步的开发,具有很好的实用价值和工程应用价值。附录一 系统电路原理图1.单片机系统原理图2. 传感器及LED驱动电路原理图附录二 程序清单/* 调用函数声明 */#include #include #include #include #include #include /* 8255头文件定义 */#define COM8255 XBYTE0x7f03 /* 8255命令口地址 */#define PA8255 XBYTE0x7f00 /* 8255的PA口地址 */#define PB8255 XBYTE0x7f01 /* 8255的PB口地址 */#define PC8255 XBYTE0x7f02 /* 8255的PC口地址 */#define DAC0832A XBYTE0x1fff#define DAC0832B XBYTE0x3fff/* 数据类型声明 */#define uchar unsigned char#define uint unsigned int/* 24C04读写地址 */#define read0xa1/ 器件地址以及读操作#define write 0xa0/ 器件地址以及写操作#define ADDR 0xff / ADDR最高地址/* 液晶控制信号 */sbit rs = P10;/为高电显示数据sbit rw = P11;/为高电数据被读到DB7-DB0sbit en = P12;/使能信号/* DS1302控制信号 */sbit DS1302_CLK = P13; /实时时钟时钟线引脚 sbit DS1302_IO = P14; /实时时钟数据线引脚 sbit DS1302_RST = P33; /实时时钟使能信号线引脚/*AD52535控制信号*/sbit CC=P17; sbit BB=P16; sbit AA=P15;sbit DD=P34; sbit EE=P35;sbit FF=P32;/*液晶头函数*/uchar command;void clear_lcd(); /清屏程序void lcd_int(); /初始化void lcd_set(); /功能设计void checkbusy(); /判忙 void write_command(uchar command); /写命令void write_data(uchar data0); /写数据void displayhz(uchar m, uchar n, uchar *p);/汉字显示函数void setwordbkcolor(uchar x,uchar y,uchar wide,uchar bkcor);void setrowbkcolor(uchar row,uchar bkcor);/*延时头函数*/void delay_ms(unsigned int i); /延时1msvoid delay(uchar us);/*键扫头函数*/uchar key_scan(void); /键扫描函数/*时钟头函数*/void write_1302(uchar data_1302); /向1302写入1个字节void write_1302time_2(void);void write_1302time_1(void);void write_1302time(void);void time_disbuffer(void);void write_all_1302(uchar addr,uchar data_1302) ;/向1302的某一地址中写入一个字节的数据uchar read_all_1302(uchar addr); /从1302的某一地址中读取一个字节的数据uchar year, month,week,day,hour,second,minute; /DS1302的变量uchar year_1, month_1,day_1,hour_1,second_1,minute_1;uchar code dispcode=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x2e,0x3a; /液晶显示到;0x2e为小数点uchar time8=0x02,0x09,0x09,0x04,0x12,0x48,0x05,0x50; /输进的初始时间uchar disbuffer12; /反冲数组uchar kai18;uchar idata guan18;uchar idata kai28;uchar idata guan28;uchar idata s,m,h,d,mon,y,w;uchar d1,d2,d3,d4,d5,d6;uchar shi,fen,miao;/*24C04头函数*/sbit SDA = P31; /数据线sbit SCL = P30; /时钟线void start(); /开始void stop(); /停止uchar i2c_read(); /读AT24C04bit i2c_write(uchar write_data); /写AT24C04uchar read_retn(uchar re_adder); /在指定地址adder处读出数据void write_byte( uchar adder, uchar write_data);/在指定地址adder处写入数据void fill_byte(uchar fill_dady); /24C04数据擦除uchar kk;uchar dsj;void sjsj(void);uchar SC=0;SB=0;uchar R;uchar key,key1,key2,key3,v;/键扫值uchar js,ha;uchar G=0x30;/对应功能变量uchar lu;uchar gl;uchar caibiao16=0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78,0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8;uchar idata caibiao122=0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78,0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8;uchar js1,js2,js3,js4,hh;void shuzi_1(void);void zong(void);void zhi(void);void xianzai(void);void display4(void);void display3(void);void display2(void);/这些以后写功能函数void display1(void);void gongneng1(void);void gongneng2(void);void gongneng3(void);void gongneng4(void);void gongneng5(void);void gongneng(uchar G);/功能选择void diaodian(void);void xuanze(void);void qing(void);void san(void);void san1(void);void san2(void);void jianshao(void);void jiaotong(void);void guzhang(void);void huanjing(void);void bujian(void);void bujin(void);void gonglv(void);void shijian(void);void diao(void);uchar i=20;uchar djs,ty=50,tj;void main(void) lcd_int(); /初始化 lcd_set(); /功能设置 clear_lcd(); /清屏 start(); stop(); delay_ms(100); /单片机与8255同时复位 COM8255=0x88; /给8255送命令,PA,PB口都为输出,PC口高位为输入,低位输出。 R=read_retn(50); /掉电判断 diaodian(); clear_lcd(); / fill_byte(0xff); DAC0832A=0x00; DAC0832B=0x00; displayhz(1,1,模拟路灯控制系统);/开机界面 display3();/ write_1302time(); /1302写初始时间 displayhz(4,2,系统时间设定); while(1) key=key_scan();/ delay_ms(15); / delay(100); display1(); display2(); huanjing(); write_byte(50,0); if(key=0x11)i+;DAC0832A=i;DAC0832B=i; if(key=0x41)i-;DAC0832A=i;DAC0832B=i; if(key=0x21)G=0xd9;qing();setrowbkcolor(1,1);/ if(key=0x84)gongneng5(); if(key=0x88) /确认键:第四行第四列 clear_lcd(); delay_ms(200); xuanze(); qing(); G=0; while(1) write_byte(50,0); delay(500); key1=key_scan(); delay_ms(150); if(key1=0x21)G=0xd9;qing();setrowbkcolor(1,1); if(key1=0x41)G=0xda;qing();setrowbkcolor(2,1); if(key1=0x81)G=0xdb;qing();setrowbkcolor(3,1); if(key1=0x12)G=0xdc;qing();setrowbkcolor(4,1); if(key1=0x88&G!=0)clear_lcd();delay_ms(100);gongneng(G);/确认键:第四行第四列 if(key1=0x18)G=0;clear_lcd();break;/取消键:第四行第一列 clear_lcd();display3();displayhz(1,1,模拟路灯控制系统);displayhz(4,2,系统时间设定); void xuanze(void)displayhz(1,2,交通故障控制);displayhz(2,2,总支路控制);displayhz(3,2,各支路控制);displayhz(4,2,输出功率设置);write_command(0x80);write_data(0xa2);write_data(0xd9);write_command(0x90);write_data(0xa2);write_data(0xda);write_command(0x88);write_data(0xa2);write_data(0xdb);write_command(0x98);write_data(0xa2);write_data(0xdc);void qing(void)setrowbkcolor(1,0);setrowbkcolor(2,0);setrowbkcolor(3,0);setrowbkcolor(4,0);void gongneng(uchar G)while(1) switch(G) case 0xd9:gongneng1();break; case 0xda:gongneng2();break; case 0xdb:gongneng3();break; case 0xdc:gongneng4();break; key3=key_scan(); if(key=0x88)break; void gongneng1(void)uchar jg;/*AA=0;BB=0;CC=0;DD=0;EE=0;*/clear_lcd();displayhz(1,2,交通灯控制);displayhz(2,2,路灯故障检测);while(1)DAC0832A=0x00;DAC0832B=0x00;key2=key_scan();if(key2=0x28)jg=1;qing();setrowbkcolor(1,1);write_command(0x30);if(key2=0x48)jg=2;qing();setrowbkcolor(2,1);write_command(0x30);if(jg=1)jiaotong();if(jg=2)DAC0832A=0x90;DAC0832B=0x90;guzhang();if(key=0x84)PA8255=0x00;if(key2=0x18)delay_ms(200);G=0;clear_lcd();xuanze();break;/取消键:第四行第一列void gongneng2(void)clear_lcd();displayhz(1,3,现在时间);displayhz(3,1,开时间);displayhz(4,1,关时间);xianzai();while(1)write_byte(50,1);display4();key2=key_scan();delay_ms(150);if(key2=0x84)diao();if(key2=0x28)hh=1;js=0;qing();setwordbkcolor(1,3,16,1);setwordbkcolor(2,3,16,1);setwordbkcolor(3,3,16,1);write_command(0x30);if(key2=0x48)hh=2;js=0;qing();setwordbkcolor(1,4,16,1);setwordbkcolor(2,4,16,1);setwordbkcolor(3,4,16,1);write_command(0x30);if(key2=0x18)G=0;clear_lcd();xuanze();break;/取消键:第四行第一列if(key2=0x88)zong();if(kai10=disbuffer5&kai11=disbuffer4&kai13=disbuffer3&kai14=disbuffer2&kai16=disbuffer1&kai17=disbuffer0)DAC0832A=0x90;if(guan10=disbuffer5&guan11=disbuffer4&guan13=disbuffer3&guan14=disbuffer2&guan16=disbuffer1&guan17=disbuffer0)DAC0832A=0x00;if(kai20=disbuffer5&kai21=disbuffer4&kai23=disbuffer3&kai24=disbuffer2&kai26=disbuffer1&kai27=disbuffer0)DAC0832B=0x90;if(guan20=disbuffer5&guan21=disbuffer4&guan23=disbuffer3&guan24=disbuffer2&guan26=disbuffer1&guan27=disbuffer0)DAC0832B=0x00;void gongneng3(void) clear_lcd();san();qing();lu=0;while(1) write_byte(50,2);key2=key_scan();delay_ms(200);if(key2=0x21)hh=1;js=0;qing();setwordbkcolor(1,1,16,1);setwordbkcolor(2,1,16,1);setwordbkcolor(3,1,16,1);write_command(0x30);write_command(0x83);if(key2=0x41)hh=2;js=0;qing();setwordbkcolor(1,2,16,1);setwordbkcolor(2,2,16,1);setwordbkcolor(3,2,16,1);write_command(0x30);write_command(0x93);if(key2=0x81)hh=3;js=0;qing();setwordbkcolor(1,3,16,1);setwordbkcolor(2,3,16,1);setwordbkcolor(3,3,16,1);write_command(0x30);write_command(0x8b);if(key2=0x12)hh=4;js=0;qing();setwordbkcolor(1,4,16,1);setwordbkcolor(2,4,16,1);setwordbkcolor(3,4,16,1);write_command(0x30);write_command(0x9b);if(key2=0x28)lu=1;write_command(0x30);clear_lcd();xianzai();displayhz(1,4,路状态);write_command(0x82);write_data(0xa3);write_data(0xc1);san1();if(key2=0x48)lu=2;write_command(0x30);clear_lcd();xianzai();displayhz(1,4,路状态);write_command(0x82);write_data(0xa3);write_data(0xc2);san2();if(lu=1)display4();if(lu=2)display4();if(key2=0x18)delay_ms(200); G=0;clear_lcd();xuanze();break;/取消键:第四行第一列if(key2=0x88)write_data(0x10);zhi();/取消键:第四行第一列if(kai10=disbuffer5&kai11=disbuffer4&kai13=disbuffer3&kai14=disbuffer2&kai16=disbuffer1&kai17=disbuffer0)DAC0832A=0x90;if(guan10=disbuffer5&guan11=disbuffer4&guan13=disbuffer3&guan14=disbuffer2&guan16=disbuffer1&guan17=disbuffer0)DAC0832A=0x00;if(kai20=disbuffer5&kai21=disbuffer4&kai23=disbuffer3&kai24=disbuffer2&kai26=disbuffer1&kai27=disbuffer0)DAC0832B=0x90;if(guan20=disbuffer5&guan21=disbuffer4&guan23=disbuffer3&guan24=disbuffer2&guan26=disbuffer1&guan27=disbuffer0)DAC0832B=0x00;void gongneng4(void)clear_lcd();displayhz(1,1,设定时间);displayhz(2,1,设定功率);displayhz(3,1,功率步进 5%);displayhz(4,1,功率步减 5%);while(1)key2=key_scan();delay_ms(150);if(key2=0x21)ha=4;js=0;qing();setwordbkcolor(1,1,16,1);setwordbkcolor(2,1,16,1);setwordbkcolor(3,1,16,1);setwordbkcolor(4,1,16,1);write_command(0x30);write_command(0x84);if(key2=0x41)ha=5;js=0;qing();setwordbkcolor(1,2,16,1);setwordbkcolor(2,2,16,1);setwordbkcolor(3,2,16,1);setwordbkcolor(4,2,16,1);write_command(0x30);write_command(0x94);if(key2=0x81)js=0;qing();setwordbkcolor(1,3,16,1);setwordbkcolor(2,3,16,1);setwordbkcolor(3,3,16,1);setwordbkcolor(4,3,16,1);write_command(0x30);if(key2=0x12)js=0;qing();setwordbkcolor(1,4,16,1);setwordbkcolor(2,4,16,1);setwordbkcolor(3,4,16,1);setwordbkcolor(4,4,16,1);write_command(0x30);if(key2=0x18)delay_ms(200);G=0;ha=0;clear_lcd();xuanze();break;/取消键:第四行第一列if(key2=0x88)write_data(0x10);if(ha=4)shijian();if(ha=5)gonglv();if(key2=0x28)bujian();if(key2=0x48)bujin();if(key2=0x84)jianshao();void gongneng5(void)clear_lcd();displayhz(1,3,现在时间);displayhz(3,3,修改时间);displayhz(4,2, 时 分 秒);xianzai();while(1)display4();key2=key_scan();if(key2=0x88)sjsj();if(key2=0x18)delay_ms(200); G=0;clear_lcd();displayhz(1,1,模拟路灯控制系统);displayhz(4,2,系统时间设定);display3();break;/取消键:第四行第一列/*以下是液晶程序*/=判忙= void checkbusy() rs=0; rw=1; P0=0xff; while(1) en = 1;if(P00x80)break;en = 0; en=0;/=写命令=void write_command(uchar command) checkbusy(); rs=0; rw=0; en=1; P0=command; en=0; /=写数据=void write_data(uchar date) checkbusy(); rs=1; rw=0; en=1; P0=date; en=0; /=功能设计= void lcd_set(void) write_command(0x34); write_command(0x30); write_command(0x01); write_command(0x02); write_command(0x0c); write_command(0x06); void lcd_int(void) delay(100); /液晶复位/*清屏程序*/void clear_lcd(void) command=0x01; write_command(command); command=0x34; write_command(command); command=0x30; write_command(command);/*液晶某一行反白*/void setrowbkcolor(uchar row,uchar bkcor) uchar i,j,basex,basey,color;if(bkcor=1)color=0xff; /全写入0XFF,反白。if(bkcor=0)color=0x00; /全写入0X00,消白。write_command(0x36); /扩展指令,写图片时,关图片显示if(row=1|row=2) /第一第二行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教科版科学五年级下册 2.6 设计我们的小船 教学设计及反思
- 2025年科研助理笔试题及答案
- 2025年新媒体剪辑面试题及答案
- 2.1 等式性质与不等式性质 高中数学人教A版必修一课时训练(含解析)
- 小学《除三害》教学课件
- 特种设备知识培训记录课件
- 模压鞋跟脱模工艺考核试卷及答案
- 如何不出钱下载课件教学
- 涤纶纤维预取向牵伸工艺考核试卷及答案
- 特种灾害救援概述
- 橡皮障隔离术知情同意书
- 临床医学内科学-消化系统疾病-肠结核和结核性腹膜炎
- 营区物业服务投标方案(技术标)
- 小学语文人教版一年级上册《我上学了单元整备课》word版教案
- 小学生小古文100篇
- 喷淋塔改造施工方案
- 高效能人士七个习惯
- 血浆置换在危重病人中的应用教学课件
- 六年级上册科学全册练习题(2022年新教科版)
- 沉井下沉纠偏措施
- 教师专业发展与名师成长(学校师范专业公共课)
评论
0/150
提交评论