本发明属于LED指示灯测控领域,特别涉及一种LED指示灯监控系统。
背景技术:
LED指示灯体积小、使用寿命长、色彩鲜艳、响应速度快,广泛的用于仪器仪表的状态显示。在某些应用场合,LED指示灯可以安装在远离主机一段距离的地方,典型的例子就是安装在汽车仪表板上的指示器或工业控制面板上的各类指示器。在要求严格的应用场合,除了控制LED指示灯的亮灭状态,还可能需要监控其故障状态,以便于能及时的维护。
现有LED指示灯监控的不足之处在于:大量LED指示灯没有进行状态监控,也有部分LED指示灯的状态进行了监控,但监控的LED指示灯数量少;另外,监控方法通常是使用AD采样其工作电压,这种方法的采样时间长并且占用处理器IO口,非常消耗CPU资源监控方法消耗CPU资源,不适用于大规模LED指示灯同时采样。
例如,某校峨眉校区铁路沙盘信号灯控制系统中,沙盘上有860个信号灯,采用人工方法对信号灯的故障诊断是一个繁杂的工作,所以迫切需要一种手段来快速的诊断LED信号灯的故障状态。
技术实现要素:
本发明所要解决的技术问题是提供一种LED指示灯监控系统,能够批量、快速的控制和读取LED指示灯的亮灭状态,同时诊断LED指示灯的故障状态,以便于及时维护。
为解决上述技术问题,本发明采用的技术方案是:
一种LED指示灯监控系统,包括微控制器,所述微控制器连接串行总线驱动芯片,所述串行总线驱动芯片与串入并出移位寄存器、并入串出移位寄存器分别连接;所述串入并出移位寄存器用于实现控制数据和检测数据的输出,所述并入串出移位寄存器用于实现LED指示灯的采样数据的输入,且串入并出移位寄存器与并入串出移位寄存器之间通过电平比较网络相连接;所述电平比较网络为:电阻R1一端为输入信号Q2x和输出信号D2x,另一端连接LED指示灯的一端,还连接电阻R2的一端;电阻R2的一端连接电阻R1,电阻R2的另一端为输出信号D2x+1,还连接电阻R3的一端;电阻R3的一端连接电阻R2,电阻R2的另一端为输入信号Q2x+1。
进一步的,所述微控制器采用STM32F103VET6,串行总线驱动芯片采用74HC245,所述微控制器的接口MISO、PB11、SCLK、PB12、MOSI对应连接串行总线驱动芯片的接口B7、A4、A6、A5、A8。
进一步的,所述串入并出移位寄存器采用74HC595,并入串出移位寄存器采用74HC165,串行总线驱动芯片的接口A7、B4连接并入串出移位寄存器,串行总线驱动芯片的接口B5、B8连接串入并出移位寄存器,串行总线驱动芯片的接口B6与串入并出移位寄存器、并入串出移位寄存器都相连;74HC165上的接口D0、D1、D2、D3、D4、D5、D6、D7,74HC595上的接口Q0、Q1、Q2、Q3、Q4、Q5、Q6、Q7,D2x、D2x+1、Q2x、Q2x+1之间连接电平比较网络(9),相邻的四个接口连接一个电平比较网络(9),即D2x、D2X+1连接电平比较网络(9)的输出,Q2x、Q2x+1连接电平比较网络(9)的输入,其中,x=0、1、2或3。
进一步的,所述微控制器还通过RS485接口连接到上位机。
进一步的,所述RS485接口采用MAX485。
进一步的,所述微控制器的接口PB5连接喇叭。
与现有技术相比,本发明的有益效果是:LED指示灯监控系统是接收上位机指令,控制相应LED指示灯或读取LED指示灯状态;监视LED指示灯的故障状态,当故障产生时,立即声音报警并将故障点位置和故障信息上传给上位机;可以同时对10000个以内的信号指示灯进行监控,实时响应速度控制在10ms。
附图说明
图1是本发明LED指示灯监控系统功能示意图。
图2是本发明中LED电平比较网络采样示意图。
图3是电平比较网络示意图。
图4是本发明中LED指示灯检测表与灯位的关系图。
图5是本发明中设备故障表组成示意图。
图中:1-上位机;2-接口转换芯片;3-喇叭;4-微控制器(MCU);5-串行总线驱动芯片;6-串入并出移位寄存器;7-并入串出移位寄存器;8-电平比较网络简图;9-电平比较网络。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步的说明。本发明一种LED指示灯监控系统,包括微控制器4,所述微控制器4连接串行总线驱动芯片5,所述串行总线驱动芯片5与串入并出移位寄存器6、并入串出移位寄存器7分别连接;所述串入并出移位寄存器6用于实现控制数据和检测数据的输出,所述并入串出移位寄存器7用于实现LED指示灯的采样数据的输入,且串入并出移位寄存器6与并入串出移位寄存器7之间通过电平比较网络9相连接;所述电平比较网络9为:电阻R1一端为输入信号Q2x和输出信号D2x,另一端连接LED指示灯的一端,还连接电阻R2的一端;电阻R2的一端连接电阻R1,电阻R2的另一端为输出信号D2x+1,还连接电阻R3的一端;电阻R3的一端连接电阻R2,电阻R2的另一端为输入信号Q2x+1。
所述微控制器4采用STM32F103VET6,串行总线驱动芯片5采用74HC245,所述微控制器4的接口MISO、PB11、SCLK、PB12、MOSI对应连接串行总线驱动芯片5的接口B7、A4、A6、A5、A8。
所述串入并出移位寄存器6采用74HC595,并入串出移位寄存器7采用74HC165,串行总线驱动芯片5的接口A7、B4连接并入串出移位寄存器7,串行总线驱动芯片5的接口B5、B8连接串入并出移位寄存器6,串行总线驱动芯片5的接口B6与串入并出移位寄存器6、并入串出移位寄存器7都相连;74HC165上的接口D0、D1、D2、D3、D4、D5、D6、D7,74HC595上的接口Q0、Q1、Q2、Q3、Q4、Q5、Q6、Q7,D2x、D2x+1、Q2x、Q2x+1之间连接电平比较网络9,相邻的四个接口连接一个电平比较网络9,即D2x、D2X+1连接电平比较网络9的输出,Q2x、Q2x+1连接电平比较网络9的输入,其中,x=0、1、2或3。
所述微控制器4还通过RS485接口连接到上位机1。所述RS485接口采用MAX485。所述微控制器4的接口PB5连接喇叭3。
采用电平比较网络9对LED进行并行采样,考虑到整个系统的实时性,LED指示灯的故障和状态变化要求在10ms进行响应,所以采样周期设置为10ms。在每个采样周期内,要完成采样、传输、数据处理、输出等几个过程,通过测算,理论上该系统可以同时对10000个以内的信号指示灯进行监控。与上位机1通信采用RS485,既可实现长距离通信,也可以实现多个LED指示灯监控系统组网通信。每块采样驱动板可监控32个LED指示灯,通过串行总线进行级联,可实现对大量LED进行监控。
控制LED指示灯:上位机1发出控制LED指示灯指令,主板上的MCU4接到指令后对数据进行组织,然后通过串行总线将数据传给采集驱动板控制LED指示灯。故障状态监视:主板上的MCU4以10ms为周期控制采集驱动板采集数据,并将灯数据读至MCU4的内存中。对内存中的数据进行分析后,如果LED指示灯亮灭状态发生改变,MCU4则将该灯的状态信息传给上位机1;如果LED指示灯发生故障,则发出报警,并将报警信息传给上位机1。
基于LED的工作电压和CMOS门电路输入电压阀值的特点,在LED指示灯工作电路配合监测辅助电路的情况下,对每个LED指示灯构建一个两路输入、两路输出的电平比较网络。用电平网络检测后,可以检测出LED指示灯是处于正常、短路、断路和接地四种状态,其中短路、断路和接地属于故障状态。
对多个LED指示灯控制的电平比较网络如图2所示。总线使用74HC245驱动,LED指示灯的控制数据通过CMOS工艺制造的串入并出移位寄存器74HC595送出。检测数据采用CMOS工艺制造的并串入出移位寄存器74HC165会送至MCU。每个LED指示灯需要使用74HC595和74HC165两个点位。当要控制序号为x灯位的LED指示灯时,控制数据需送至74HC595的Q2x端,Q2x端输出高低电平使LED指示灯Lx熄灭或点亮。当检测序号为x灯位的LED指示灯时,在Q2x端和Q2x+1端输出00B、01B、10B和11B四种状态,然后读回每种状态的D2x端和D2x+1端的值,根据返回的逻辑值进行分析就可以判断出LED指示灯的状态。
图2中:
上位机1:用于显示LED指示灯的亮灭状态和故障状态,并控制LED指示灯亮灭。
接口转换芯片2:采用MAX485,将MCU串行口的TTL电平转化为RS485接口,以便于和上位机建立远距离通信。
喇叭3:当LED指示灯发生故障时,发出声音报警。
MCU4:采用STM32F103VET6芯片,用于控制LED指示灯状态和周期性检测LED指示灯状态。
串行总线驱动芯片5:采用74HC245,驱动SPI接口的串行总线。
串入并出移位寄存器6:采用74HC595,实现控制数据和检测数据的输出。
并入串出移位寄存器7:采用74HC165,实现LED指示灯的采样数据的输入。
电平比较网络简图8:电平比较网络图的简化示意图。
电平比较网络9:既能控制LED指示灯亮灭,也能通过控制LED指示灯的时序,采用特定算法识别出LED指示灯的故障状态。
采集驱动板10:为了使LED指示灯监控系统适应于不同大小的应用,实现硬件可裁剪,每块采集驱动板可以驱动32个LED指示灯,采集驱动板之间可以通过SPI串行总线实现级联。
当检测LED指示灯时,每个LED指示灯占用掉74HC595和74HC165的两位端口,如图4。输入状态值有四种,每种状态输出后,从74HC165返回数据构成一个检测表,分别记为检测状态表0,检测状态表1,检测状态表2和检测状态表3。
检测表中的数据位和LED指示灯对应,在图5反映驱动数据和对应的检测状态表,当74HC595的奇数位和偶数位送数据00B时,返回检测状态表0,送数据01B时,返回检测状态表1,送数据10B时,返回检测状态表2,送数据11B时,返回检测状态表3。每个状态表中的两位与LED指示灯对应,将四个表中相应的两位组成一个字节就是设备故障表,检测状态表3对应到故障表的最高2位,检测状态表1对应到故障表的最低2位。构成的设备故障表如图5所示。
设备故障表里的每个字节对应一个LED指示灯的状态值。编程时就可以通过选择语句来判断LED指示灯所处的状态,LED_Fault_State[i]保存的是序号为i的LED指示灯的故障状态。程序主干如下所示:
switch(LED_Fault_State[i])
{
case 0xf8:
...//设备状态“正常”处理程序
break;
case 0xf5:
...//设备状态“短路”处理程序
break;
case 0xf0:
...//设备状态“断路”处理程序
break;
case 0x50:
...//设备状态“接地”处理程序
break;
}。