




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
模拟路灯控制系统设计摘要本设计是一种采用新一代超强抗干扰/强抗静电/高速/低功耗单片STM32为数据处理和控制的路灯照明智能系统。该单片机实现了对路灯的亮灭控制、报警、还有定时功能。采用节能环保的LED灯作为光源,采用科学有效的检测与控制技术,实现了光电控制、时间控制、交通情况检测、故障自动检测与报警等功能,节省了人力和电力资源,降低了系统运行成本,性价比较高。通过光敏电阻模块检测LED故障,ULN2803芯片控制LED灯状态,利用光敏电阻原理和红外对管特性实现自动调节路灯开关状态。关键字:STM32-cortex-m3; AbstractThis design is a new generation of powerful anti-interference / strong antistatic / high / low power single chip STM32 as the data processing and control of street lamp intelligent lighting system. The single chip microcomputer to achieve the bright lights out of control, alarm, and the timing function. The energy saving and environmental protection of the LED lamp as the light source, the use of scientific and effective detection and control technology, realize the photoelectric control, time control, traffic condition detection, automatic fault detection and alarm functions, saving manpower and electric power resources, reducing the operation cost of the system, price is comparatively high. Photosensitive resistance through fault detection module LED, ULN2803 chip control LED lamp status, use of photosensitive resistance theory and infrared tube characteristics to realize automatic adjustment of road lamp switch state.Keywords: STM32-cortex-m3; 目 录一、总体方案思路及其设计41.1、检测物体移动方案设计41.3、时钟显示方案的设计41.4、控制部分方案的设计5二 、系统理论分析与功能模块设计52.1 、驱动电路原理分析52. 2、 CPU核心控制模块62.3 、时钟控制模块72.4 、按键模块82.4、光电检测模块82.5光敏检测模块9三、系统测试.10 3.1使用测量工具.10 3.2部分测试指标. 10 三、软件设计11 3.1. 软件流程113.2. 软件子程序12四、系统实现的功能.12 4.1. 路灯的工作模式12五、结束语13附件1:系统程序14附件2:系统总原理图41一、总体方案思路及其设计本模拟路灯控制系统的设计方案要实现的主要功能主要分解为以下五个方面:一是时钟功能及定时开关灯。二是根据环境明暗变化,自动开灯和关灯。三是根据交通情况自动调节亮灯状态:当汽车靠近路灯时,路灯能自动点亮;当汽车远离时,路灯自动熄灭。四声光报警功能,当路灯出现故障时而不亮时,控制器发出信号,并显示有故障路灯的地址编号。1.1、检测物体移动方案设计方案一、采用红外对管发射接收装置方案二、超声波传感器方案三、红外避障传感器方案论证:方案一中利用红外对管发射接收,操作简单,价格低廉,可以完成简单物体的测量。方案二超声波传感器在检测方面灵敏度很高, 价格昂贵,性能虽好,可是性价比低。方案三中的红外避障传感器,能较好检测物体,但是价钱比较贵。所以我们选择方案一,完成要求,性价比高。1.3、时钟显示方案的设计 方案一、采用传统六个数码管作为时钟显示。方案二、采用液晶屏作时钟显示。方案论证:方案一采用数码管显示虽然控制简单,亮度大,价格便宜。缺点是功耗较大,显示不清晰,操作不方便。方案二液晶显示器则具有耗电少、配置简单灵活、安装方便、耐振动、使用寿命长、美观等优点。同时可以显示菜单等复杂的界面,更易于操作。本设计系统采用LCD显示器。1.4、控制部分方案的设计方案一、单片机STM32Cortex-M3完成对其他各部分控制。方案二、采用单片机STC90C51作为控制部分。方案论证:方案一STM32Cortex-M3是一种高速/低功耗/性价比高的单片机可完成对其他各部分的控制。内部具有强大的存储空间且能够实现各种复杂的控制功能。方案二STC90C51的功耗比较大,数据传输速率比较低,要实现比较复杂的控制功能较困难。故本设计采用STM32Cortex-M3单片机。下图是模拟路灯控制系统设计的总体设计方案: 图1 系统总体方案二 、系统理论分析与功能模块设计2.1 、驱动电路原理分析图2 为本设计系统LED灯的驱动电源电路以及光电驱动,通过运放器ULN2803芯片,使驱动LED。图2 LED驱动电路2. 2、 CPU核心控制模块图6为本系统的主控CPU单元,VBAT为备用电源引脚,PC14/COSC32和PC15/OSC33为内部实时时钟电路引脚,NRST为复位引脚,PA0脚为进入时间设定界面以及长按时对路灯开关时间控制,PA1时间设定加以及长按时进入单独设定路灯的亮、灭状态,PA2时间设定减以及长按时进入路灯故障界面,PA3和PA4报警信号灯状态,PA6和PA7控制路灯状态,PC13、PC4和PC5光敏状态检测,PB0、PB1、PB2、PB7、PB6、PB5、PB4、PB3为液晶显示输入数据端口,PB13、PB14、PB15为液晶输入控制端口,PC7、PC8、PC9检测光电状态端口,PB9、PB8为时钟控制端口,PA15、PA14、PA13为检测光敏状态端口。下图为主控电路模块: 图6 单片机最小系统、LCD显示和报警电路2.3 、时钟控制模块为了减轻单片机的编程压力,设计中没有采用片内时钟,而是外接了时钟芯片DS1302。DS1302时钟芯片具有时钟/日历功能,并能利用其内部的32字节RAM存储。图7中四个时钟功能键分别为SW1进入时钟界面设定、SW2增加、SW3减小,此功能键由CPU控制进行LED灯的开关调时。按下每个键将会有设置小提示选择所需功能,最后完成的调时时间以及系统的状态显示在LCD上。2.4 、按键模块此模块电路设计简单,(原理是根据当按键按下时,给单片机一个低电平,通过单片机并能做出一些的设置,)但每个按键都有多个功能,比如实时时钟的时间设置,以及路灯的单独控制时间等等,2.4、光电检测模块为了检测是否物体通过,采用光电检测。光电传感器是通过把光强度的变化转换成电信号的变化来实现控制的,它首先把被测量的变化转换成光信号的变化,然后借助光电元件进一步将光信号转换成电信号。光电传感器一般由光源,光学通路和光电元件三部分组成。光电检测方法具有精度高,反应快,非接触等优点,而且可测参数多,传感器的结构简单,形式灵活多样,我们所采用的光电传感器的构成,是在同一个检测头里既装有一个发光器,也装一个收光器,但前方没有反光板。正常情况下发光器发出的光收光器是收不到的;当检测物通过时挡住了光,并把光部分反射回来,收光器就收到光信号,输出一个开关控制信号。有物体通过时,输出端会输出一个低电平,从而通过高低电平的变化,测出是否有物体通过,下图为光电检测模块电路图: 2.5光敏检测模块光传感器是利用光敏元件将光信号转换为电信号的传感器,它的敏感波长在可见光波长附近,包括红外线波长和紫外线波长。光传感器不只局限于对光的探测,它还可以作为探测元件组成其他传感器,对许多非电量进行检测,只要将这些非电量转换为光信号的变化即可。光敏电阻是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小,入射光弱,电阻增大。光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。原理:在黑暗环境里,它的电阻值很高。当受到光照时,从而造成光敏电阻阻值下降。光照愈强,阻值愈低。为了检测路灯的亮度,这里我们采用光敏元件检测,当光的强度达到光敏元件的门限值时,返回一个电平值到单片机,通过单片机控制实现对路灯的状态。下图为光敏模块电路图:3、 系统测试3.1 测试仪器1. 示波器3.2部分测试指标.功率测试设置功率/W路灯两端电压/V路灯电流/A实际功率/W误差/%0.25.580.0360.2010.40.35.710.0530.3030.90.45.810.0680.3951.20.55.910.0840.4960.70.66.020.1010.6081.30.76.060.1150.6970.40.86.090.1320.8040.50.96.120.1470.9000.016.170.1631.0060.6功能测试序号指标(目标值)实测值1故障指示(编号)LCD上显示正确2过中点后前灯亮后灯灭,试验成功率(100)1003自动开关灯功能,试验成功率1004实时误差,采用时间加速方法(误差小于5MIN)误差1MIN5单元控制器具有调光功能,路灯驱动电源输出功率能在规定时间按设定要求自动减小,该功率应能在20%100%范围内设定并调节,调节误差2%。电流从0mA至850mAm变化平缓稳定三、软件设计3.1. 软件流程3.2:软件子程序在本设计系统中,由于实现功能比较复杂,再加上传感器和处理模块非常多,放在一个文件中是不可行的,此时,我们采用进行模块化处理。 1:1602子程序 #include 1602.hvoid write_code(u8 a); 写1602void write_data(u8 a); 读1602void init_1602(void);初始化6022:delay延时子程序 #include delay.h void delay_init(u8 SYSCLK);选择时钟频率void delay_ms(u16 nms);毫秒级延时void delay_us(u32 nus);微秒级延时3:DS1302时钟子程序 #include DS1302.h void Write_Ds1302( u8 address,u8 dat );写ds1302void init_1302DS(void);/初始化1302 void Reads_RTC(void);/一次性读取ds1302八个寄存器时间值void timedeal_RTC(void); /处理读到的数据4:系统配置钟子程序 #include RCC-GPIO.h void RCC_Configuration(void);配置处理器时钟频率void GPIO_Configuration(void); 配置处理器时钟频率管教void NVIC_Configuration(void); 配置处理器中断优先级void EXTI_Configuration(void); 配置处理器外部中断void TIM_Configuration(void);/ 配置处理器定时器四、系统实现的功能. 1. 路灯的工作模式本模拟路灯控制系统具备5种工作模式,分别是自动群控模式、自动分控模式、根据照度自动控制模式、根据交通情况自动控制模式、手动控制模式,下面对每种工作模式简单介绍如下:(1) 自动群控模式在该模式下,支路控制器根据设定好的定时信息,自动地同时打开或者关闭两盏路灯。系统启动后默认进入该模式。(2) 自动分控模式在该模式下,支路控制器根据设定好的定时信息,分别控制两盏路灯的开关,例如,当系统的时间和路灯1开灯的时间相等时,开启路灯1;当系统的时间和路灯2关灯的时间相等时开启路灯2。(3) 根据照度自动控制模式在该模式下,当环境照度低于一定的值时开启两盏路灯,当环境照度高于一定的值时关闭两盏路灯。(4) 根据交通情况自动控制模式在该模式下,当可移动物体M由左到右到达S点时,灯1亮;当物体M到达B点时,灯1灭,灯2亮;若物体M由右到左移动时,则亮灯的次序与上相反。(5) 手动控制模式在手动模式时,。可以由用户自由控制每一盏灯,亮或者灭。(1)(5)等四种工作模式是相互独立的,即在某一时刻只能具有其中的一种功能,不过各种模式可以手动的切换。五、结束语经过四天三夜的辛勤努力,本设计实现了题目的全部要求。但由于时间紧,任务重,系统还存在许多可以改进的地方,比如电路布局、抗干扰性等方面还有很大的提升空间,经过改进,相信性能还会有进一步的提升。本次竞赛极大的锻炼了我们各方面的能力,虽然我们遇到了很多困难和障碍,但总体上成功与挫折交替,困难与希望并存,我们将继续努力争取更大的进步。参考文献1 周航慈.单片机应用程序设计技术.北京航空航天大学出版社2 胡汉才.单片机原理及其接口技术.清华大学出版社3 康华光.电子技术基础(数字部分).高等教育出版社,2001附件1:系统程序Main.c主函数#include stm32f10x_lib.h#includeGPIO_RCC.h#include delay.h#include1602.h#includeDS1302.hu8 timedisplay19;/时间数据u8 fen,shi,ri,yue,nian;/时间设置数据u8 openLED1,openLED2;extern u8 ErrorLED1,ErrorLED2;u8 tab12=0123456789-:;u8 date5=Date:;u8 time5=Time:;u8 GD_off6= GDoff;u8 GD_on6= GDon;u8 GM_C9=GMOnOff:-;u8 start_set31=0123456789NO:L-OFF:L-ErrorTrue ;extern vu8 setshi1,setshi2,setshi3,setshi4;extern vu8 setfen1,setfen2,setfen3,setfen4;extern u8 LED;extern vu8 LEDGM;u8 set_tab24;/存储设置时间u8 set_init;/是否初始化1602标志位extern u8 t; /for循环变量extern vu8 GDflag; /是否开启光电传感器标志位vu8 setflag=0;/进入设置标志位void display(void);/时间显示void set_DS(void);/设置时间数据处理void guangbiao(void);/光标闪烁void set_startup(void);/开关时间设置处理函数u8void open_LED(void); /单独开启LEDvoid Error_LED(void);int main(void) RCC_Configuration(); GPIO_Configuration(); NVIC_Configuration() ; EXTI_Configuration(); TIM_Configuration();delay_init(72);init_1602();init_1302DS(); while (1) if(setflag=9)/ set_startup(); guangbiao(); if(setflag!=9)&(setflag!=10)&(setflag!=11)&(setflag!=12) set_init=0; /设置是否初始化1602 guangbiao(); set_DS(); display(); if(setflag=10)|(setflag=12) LED=0; open_LED(); if(setflag=11) Error_LED(); void display(void)if(setflag=0)|(setflag=7) Reads_RTC();/读取时间 timedeal_RTC();/ 处理时间 for(t=0;t10;t+) /显示日期 write_code(0x85+t); write_data(tabtimedisplay18-t); for(t=0;t5;t+) /显示日期 write_code(0x80+t); write_data(datet); for(t=0;t5;t+) /显示时间 write_code(0x85+0x40+t); write_data(tabtimedisplay4-t); for(t=0;t5;t+) /显示时间 write_code(0x80+0x40+t); write_data(timet); switch(GDflag) case 0: for(t=0;t6;t+) /显示是开启光电检测 write_code(0x80+0x4a+t); write_data(GD_offt); break; case 1: for(t=0;t6;t+) /显示否显示是开启光电检测 write_code(0x80+0x4a+t); write_data(GD_ont); break; void guangbiao(void) switch(setflag) case 1: write_code(0x80+0x40+9); write_code(0x0f); delay_ms(200);write_code(0x0c);break;/case 2: write_code(0x80+0x40+6); write_code(0x0f); delay_ms(200);write_code(0x0c);break;/case 3: write_code(0x80+0x0e); write_code(0x0f); delay_ms(200);write_code(0x0c);break;/case 4: write_code(0x80+0x0b); write_code(0x0f); delay_ms(200);write_code(0x0c);break;case 5: write_code(0x80+0x08); write_code(0x0f); delay_ms(200);write_code(0x0c);break; case 7: write_code(0x80+0x40+11); write_code(0x0f); delay_ms(200);write_code(0x0c);break; /设置是否开启光电传感器case 9: switch(LED-1) case 1: write_code(0x80); write_code(0x0f); delay_ms(200);write_code(0x0c);break;/ case 2: write_code(0x80+0x40); write_code(0x0f); delay_ms(200);write_code(0x0c);break;/ case 3: write_code(0x80); write_code(0x0f); delay_ms(200);write_code(0x0c);break;/ case 4: write_code(0x80+0x40); write_code(0x0f); delay_ms(200);write_code(0x0c);break;/ break; void set_DS(void) if(setflag=0) fen=timedisplay0+timedisplay1*10; / shi=timedisplay3+timedisplay4*10; ri=timedisplay9+timedisplay10*10; yue=timedisplay12+timedisplay13*10; nian=timedisplay15+ timedisplay16*10;/ if(setflag=1) timedisplay0= fen%10; /分 timedisplay1= fen/10; /if(setflag=2) timedisplay3= shi%10; / 时 timedisplay4=shi/10; if(setflag=3) timedisplay9= ri%10;/ 日 timedisplay10=ri/10; /if(setflag=4) timedisplay12= yue%10; /月 timedisplay13= yue/10; /if(setflag=5) timedisplay15=nian%10;/ 年 timedisplay16= nian/10;/ void set_startup(void) if(LED!=6) if(set_init=2)init_1602(); set_init=3; set_tab0=10;/N set_tab1=11; /o set_tab2=12; /: set_tab3=13; /L switch(LED-1) case 1: set_tab4=1;break; / 选择设置 case 2: set_tab4=1; break; case 3: set_tab4=2;break; / 选择设置 case 4: set_tab4=2; break; / case 5: set_tab4=2; break; set_tab5=14; /- switch(LED-1) case 1: set_tab18=setshi2/10; set_tab19=setshi2%10; set_tab6=setshi1/10; set_tab7=setshi1%10; break; /时 低位 case 3: set_tab18=setshi4/10; set_tab19=setshi4%10; set_tab6=setshi3/10; set_tab7=setshi3%10; break; set_tab8=14; /- switch(LED-1) case 1: set_tab21=setfen2/10; set_tab22=setfen2%10; set_tab9=setfen1/10; set_tab10=setfen1%10; break;/分 低位 case 3: set_tab21=setfen4/10; set_tab22=setfen4%10; set_tab9=setfen3/10; set_tab10=setfen3%10; break; set_tab11=15;/O set_tab12=16; /F set_tab13=17; /F set_tab14=18; /: set_tab15=19; /L switch(LED-1) case 1: set_tab16=1;break; / 选择设置 case 2: set_tab16=1; break; case 3: set_tab16=2;break; / 选择设置 case 4: set_tab16=2; break; set_tab17=14; /- switch(LED-1) case 2: set_tab18=setshi2/10; set_tab19=setshi2%10;break; /时 低位case 4: set_tab18=setshi4/10; set_tab19=setshi4%10;break; set_tab20=14; /- switch(LED-1) case 2: set_tab21=setfen2/10; set_tab22=setfen2%10;break;/时 低位case 4: set_tab21=setfen4/10; set_tab22=setfen4%10;break; for(t=0;t11;t+) /显示 write_code(0x80+t); write_data(start_setset_tabt); for(t=11;t23;t+) /显示 write_code(0x80+0x40+t-11); write_data(start_setset_tabt); if(LED=6) set_tab0=8; set_tab1=8; set_tab2=8; set_tab3=8;set_tab4=8; set_tab5=8; set_tab6=8; set_tab7=8;set_tab8=8; set_tab9=8; set_tab10=8; switch(LEDGM) case 0: set_tab11=0;/G set_tab12=1; /M set_tab13=8; /- set_tab14=4; /O set_tab15=6; /f set_tab16=6;/f set_tab17=8; /- set_tab18=8; /- break ;/- case 1: set_tab11=0;/G set_tab12=1; /M set_tab13=8; /- set_tab14=2; /O set_tab15=3; /n set_tab16=8;/- set_tab17=8; /- set_tab18=8; /- set_tab19=8; set_tab20=8; set_tab21=8; set_tab22=8; break ;/- break ;/- for(t=11;t23;t+) /显示 write_code(0x80+0x40+t-11); write_data(GM_Cset_tabt); for(t=0;t11;t+) /显示 write_code(0x80+t); write_data(GM_Cset_tabt); void open_LED(void)if(set_init=2)init_1602();set_init=3; set_tab0=13;/ L set_tab1=1;/ 1 set_tab2=12;/: switch( openLED1) case 1: set_tab3=10; set_tab4=11; set_tab5=30; break;case 0: set_tab3=15; set_tab4=16; set_tab5=17; break; set_tab6=13;/ L set_tab7=2;/1 set_tab8=12;/: switch( openLED2) case 1: set_tab9=10; set_tab10=11; set_tab11=30; break;case 0: set_tab9=15; set_tab10=16; set_tab11=17; break; for(t=0;t6;t+) /显示 write_code(0x80+t); write_data(start_setset_tabt); for(t=6;t12;t+) /显示 write_code(0x80+0x40+t-6); write_data(start_setset_tabt); void Error_LED(void)if(set_init=2)init_1602();set_init=3; set_tab0=13;/ L set_tab1=1;/ 1 set_tab2=14;/- switch( ErrorLED1) case 0: set_tab3=26; set_tab4=27; set_tab5=28; set_tab6=29;set_tab7=30; break;case 1: set_tab3=21; set_tab4=22; set_tab5=23;set_tab6=24; set_tab7=25; break; set_tab8=14;/- set_tab9=14;/- set_tab10=13;/ L set_tab11=2;/ 2 set_tab12=14;/- switch( ErrorLED2) case 0: set_tab13=26; set_tab14=27; set_tab15=28; set_tab16=29;set_tab17=30; break;case 1: set_tab13=21; set_tab14=22; set_tab15=23;set_tab16=24; set_tab17=25; break; set_tab18=14;/- set_tab19=14;/- for(t=0;t10;t+) /显示 write_code(0x80+t); write_data(start_setset_tabt); for(t=10;t20;t+)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 祖国的花朵打击乐课件
- 2025吕梁市事业单位招聘博士研究生模拟试卷及参考答案详解1套
- 2025南昌铁路科技有限公司招聘高铁(普铁)设备维保技术人员模拟试卷及答案详解(名校卷)
- 2025广东深圳大学人文学院李立教授团队博士后招聘1人考前自测高频考点模拟试题及一套答案详解
- 痛风用药培训课件
- 2025年福建省莆田市大忠门投资咨询有限公司招聘2人模拟试卷附答案详解(黄金题型)
- 十五冶招聘考试试题及答案
- 2025甘肃酒泉市省属公费师范毕业生专项招聘29人模拟试卷附答案详解
- 智研咨询发布:2025年中国紫外激光器行业竞争格局及发展前景研究报告
- 经济专业答疑题库及答案
- 自助快餐厅管理制度
- 椎动脉支架植入护理查房
- 2024安徽水利考试试题及答案
- 项目725T型客车电气系统7.1综合控制柜的概况7.2综合
- 学习解读《水利水电建设工程验收规程》SLT223-2025课件
- 大数据时代下的幼儿园安全管理信息化策略研究
- 食品验收合同协议
- 作业票管理制度国标
- 数字人合同协议
- 研发项目规范管理及核算
- 广西江河资产管理有限公司招聘考试真题2024
评论
0/150
提交评论