历史上的今天
今天是:2025年03月15日(星期六)
2018年03月15日 | 单片机灯光自动控制系统分析
2018-03-15 来源:eefocus
利用单片机丰富的软硬件资源对各种广告牌多路灯光自动控制,与传统的电子线路控制器相比,具有可编程,体积小,控制灵活,操作方便,控制时间可变、可调等优点。
我们为某市邮政局设计并安装了上述单片机多路灯光自动控制系统。下面就该系统的软硬件设计作一介绍。
一、系统结构及工作原理
系统整体结构如图1所示。

8031单片机是该系统的核心部件。其主要功能是:①灯光控制的软件编程;②干扰信号的处理及复位;③光强及时间定时的检测及控制。
单片机的控制程序通过对光强或时间的检测,自动开启(夜间)或关闭(白天)灯光系统。利用路灯设备与8031内存控制位相对应,单片机通过P3. O(RxD)和P3. l(TxD)多功能口,利用串行通信方式O,实现不同控制代码的输出,从而完成了多路灯光设备各种变化的自动循环显示。
二、8031单片机控制系统功能分析
1.光强或时间的定时检测及控制
如图2所示,当8031单片机Pl.4的控制开关拨到+5 V时,系统的开启或关闭由光强控制。这时,当光线较强时(白天),光耦二极管电阻变小,三极管Ql导通,Pl.7为低电平。当光线暗时(夜间),光耦二极管电阻变大,三极管Ql截止,Pl.7为高电平。8031单片机控制程序每隔一定时间(约5 ms)采样Pl.7端的状态,然后根据其高低电平选择开启或关闭相应的灯光控制代码发送。图3中与光耦二极管并联的可调电位器可以调整三极管Ql的截止、导通状态,从而实现对光控的微调。
当Pl.4拨至接地状态时,8031单片机程序进入时间控制子程序,8031单片机把内部定时器0设置成日历时钟计数(其初值可以用按钮设置)。当程序查询到表格内的开启或关闭初值(表格的初值可通过按钮及数码管显示输入或修改)并与单片机时钟当前值相同时,则自动发送相应的开启或关闭输出控制代码。
2.双向可控硅控制电路
由于负载一般为大功率器件(电压从几百伏至上千伏,电流从几安培至几十安培),因此8031单片机工作部分与可控硅触发部分采用MOC3021双向可控硅输出型光耦合器。图4为1路可控硅触发控制电路。

式中:IGT为可控硅TR的最小触发电流,VGT为可控硅TR的最小触发电压,VTM为MOC3021输出压降(3 V),VP为交流工作电压的峰值。
在使用中发现,当具有感性负载时,有时会引起可控硅误触发。经分析发现,当具有感性负载时,由于电压上升率d V/dt较大,在阻断状态下,可控硅的PN结相当于1个电容。当突然受到正向电压、充电电流过门极PN结时,起到了触发电流的作用,造成MOC3021的输出回路可控硅误导通。为此,我们对上述电路进行了修正,如图2所示。在输出回路加入R2和Cl组成RC回路,降低dV/dt。按照MOC3021的技术指标,允许最大的电压上升率dV/dt=10 V/s,结温上升时dV/dt下降,在极端的工作条件下,dV/dt=0.8 V/s。

同理,在TR输出端加上RC滤波网络,从而使TR输出电压上升率下降。
3.单片机工作回路的干扰及解决措施
由图1可知,光耦电路利用MOC4021将输出弱信号和输出强信号进行隔离,但在实际运行时,单片机系统仍有较强的干扰信号存在,常常出现死机或程序跑飞现象。分析认为,由于输出的大电流及电压均工作在开头状态,输出高次谐波通过电源回路对8031单片机产生了较大的影响,因此,我们设计了电源滤波电路及硬件复位电路,对电路的干扰进行了有效的控制。其中,硬件复位电路如图4所示。图中,74LS123为双路可触发单稳态多谐振荡器,通过外接电阻和电容,可产生不同宽度的正负脉冲。其真值表如下表所列。

由下表及图4可知:由于1脚A接地,2脚B接8031单片机Pl.O,正常运行时,循环程序不断从Pl.0发送代码信号,使2脚不断有上升沿出现。因此,13脚保持高电平,则5脚输出低电平,保持8031 RESET脚低电平的需要。当程序跑飞或死机时,2脚电位不再变化,使5脚产生一高电平脉冲,促使8031复位,重新启动。
三、系统结构特点及应用范围
该系统软硬件均采用模块百分比结构。l块控制板能控制16路输出。输出信号通过8031串行口RxD及TxD端经74LS164串人并出移位寄存器输出。因此,软件输出代码主上千路信号,硬件控制板根据需要可以任意扩充,只要电源电压功率相应增大即可。该系统可广泛应用于霓红灯、多路塑料管灯及多路色灯的控制。
另外,系统具有与微机串行口RS - 232的通信接口,必要时可与微机连接。这样,多路灯光控制参数及时间控制参数在微机上可随时修改,使控制变得更加灵活。
下一篇:单片机与图形液晶显示器接口的方法
史海拾趣
|
一个EVC下用SHBrowseForFolder函数导致编译出错的问题 在EVC4.2+SP4的环境下,调用SHBrowseForFolder函数,用WinCE5.0自带的标准SDK,结果发现如下编译错误: 即使包含了文件Shlobj.h也一样,提示错误大概如下: D:\\testFileTypeSearchDlg.cpp(203) : error C2065: \'BROWSEINFO\' : undeclared identifier ...… 查看全部问答> |
|
在Intel ATOM Zxx平台下开发vxworks bsp 问题 小弟刚刚学习嵌入式,目前承担一个项目是在Intel ATOM Zxx下,完成vxworks bsp的开发工作,不知道用什么模板来修改比较接近些?也就是比较容易修改成功?… 查看全部问答> |
|
ldr pc,Reset_Addr ; = #Reset_Addr Arm启动时在0地址的第一条指令都是0xe59ff018,将reset_addr的地址load到pc,不管reset_addr是多少,指令都是一样的,处理器是如何知道将要到哪个地址去?比如像jmp addr 或者bx add ...… 查看全部问答> |
|
刚刚学完了MR.Walter Oney的《Programming the Windows Driver Model》第二版,下面该做些什么来运用学到的知识? 我只是爱好者,没有合适的工作环境来供我尝试,请教我下面该怎么做。。。… 查看全部问答> |
|
目前的情况是:arm2440开发板与PC都装好了无线网卡,通过路由通讯,pc机已可以ping通路由和arm。arm跑的wince。 问题是:1.无线跟有线通讯调用的函数等是否相同?(socket,recvfrom,sendto等) 2.调用se ...… 查看全部问答> |
|
我用Keil uVision3写了一段代码,用C写得,600行还不到发现编译连接的时候已经通不过了,提示RESTRICTED VERSION WITH 8000H BYTE CODE SIZE LIMIT; USED: 0914H BYTE (113%) 怎么会这样啊,上面的意思是地址越界的,我选的工程是AT89S52的,原先 ...… 查看全部问答> |
|
我是MCGS组态软件学习新手,我现在用的是通用版5.5的软件,在使用模拟设备时总是出现这样的情况,请高手指教喽…… 这样就没法设置其属性,这是怎么回事啊?菜鸟请教了… 查看全部问答> |
|
现在做产品,采用交流采样的方式测量电流电压,现在想对其采样频率进行跟踪,即根据采样信号的频率来自动调整我的AD采样频率。我现在的做法是采用同步投的做法,AD采样用TIM定时器来进行触发,定时器中断一到则AD转换 ...… 查看全部问答> |
|
我是用来检测人的存在(范围20CM) 要求有人时控制蜂鸣器响 无人时不响 能否直接供电之后输出接在51的IO口上?如果不能 现手上有一块LM311比较器 能否告知D203S和LM311的电路该如何接使得能直接接IO口控制蜂鸣器? 电源5V… 查看全部问答> |




