基于主从式架构的光强度检测系统
2016-07-09梁佩莹张邦锋郭泽成王宇华
梁佩莹 张邦锋 郭泽成 王宇华
摘 要: 描述了一种基于主从式架构,从机基于STM32F107的32位微处理器实现光强度数据采集,主机应用C#编程语言实现数据处理的光强度检测系统。该系统在主机端采用串口通信类库,实现程序对光强板、程控电源、PLC的控制和数据接收。主机程序的核心功能还包括光强标定和二次校准,修正硬件因素和外界条件存在的误差。系统对接收到的数据做优化处理并转换为需要的格式,样品测试的曲线分别在极坐标、直角坐标和数据列表中显示,便于数据分析。该系统可广泛应用于光源与照明领域。
关键词: C#; 光强检测; STM32F107微处理器; 主从式架构
中图分类号: TN15?34; TP274+.2 文献标识码: A 文章编号: 1004?373X(2016)07?0134?04
Abstract: A light?intensity detection system with host?slave architecture is described in this paper. The slave computer is based on 32?bit microprocessor STM32F107 to acquire the light?intensity data, and then the data is processed with C# programming language by means of the host computer. The serial communication class library is adopted by the host?side in the system, so the program can control the light?intensity board, programmable power supply and PLC, and realize data reception. The core functions of the host computer program include light?intensity calibration, secondary calibration, and errors correction caused by hardware and external environments. After that, the received data is optimized and converted to the needed format. The tested curves of the sample are displayed in polar coordinates, rectangular coordinates and data list for further analysis. The system can be widely used in light source and illumination field.
Keywords: C#; light?intensity measurement; STM32F107; host?slave architecture
0 引 言
LED作为21世纪绿色照明新光源,具有亮度高、寿命长、节能环保等优点。目前国内已形成7个国家半导体照明工程产业化基地[1?2],成为世界照明电器的生产大国和出口大国,如何对半导体照明产品进行检测成为检测实验室建设中的一个重要方面。光强是光源的一个基本属性,它考虑了人的视觉因素和光学特点,同时也是光源的属性。光源光强探测是光电企业重点研究的项目之一。在我国能源压力日趋严峻的形势下,加快新光源产业的发展,促进节能减排,保障新光源产品的质量,是可持续发展的必然选择。
1 系统总体设计方案
光强检测系统从机采用单片机STM32F107作为电路系统的核心控制器,并且利用光度探头作为数据采集元器件,A/D转换电路中采用了AD7356芯片进行模数转换和数据传输。系统主机应用C#编程语言实现程序对程控电源、PLC、光强板的控制和数据接收、处理,并进行光强标定和二次校准,实现数据在极坐标、直角坐标和数据列表中显示。
2 采集电路设计
光度探头由余弦矫正器、滤光片和光敏元件组成。光敏元件有固有的相对光谱灵敏度,随外界光强的变化,对应的电参数发生变化。当相对光谱灵敏度曲线和明视觉函数曲线一致时,可以实现精确测量光强参数,为了确保相对光谱灵敏度曲线与明视觉函数曲线一致,需要调节滤光片进行校正。放大电路采用OP07运算放大器,OP07具有低失调、高开环增益的特点,适用于光源的光强小而采集信号微弱的情况。如图1所示,模数转换电路采用AD7356芯片,由于模数转换的工作特性,会出现混叠现象,而AD7356芯片本身自带抗混叠滤波器,有利于电路的设计。此外,转换器芯片内置的输入钳位保护电路可以承受高达±16.5 V的电压,是具有高输入阻抗和片内滤波功能的单电源,因此不需要外加双极性电源以及驱动运算放大器。数字滤波器采用引脚驱动,降低噪音影响。
3 单片机处理系统设计
3.1 STM32F107芯片
单片机处理系统采用以ARM Cortex?M3为内核的STM32F107芯片,其最高的工作频率可达到72 MHz,数据总线宽度为32 b, 是新一代的嵌入式ARM处理器[3]。系统单片机与计算机的通信采用异步串口通信,电路中有两组移位寄存器,将并行通信转换成串行通信,即发送部分和接收部分,全双工运行,并制定通信协议。
3.2 软件程序设计
软件设计使用C#编程语言,C#是Microsoft开发的一种面向对象的程序设计语言,由C++衍生而来,综合VB简单的可视化操作和C++的高运行效率,是.NET开发的首选语言[4]。设计的主从式光强度检测系统主机端使用异步委托动态地对参数进行赋值和控件状态修改,调用线程类库处理密集型任务,使得程序具有更好的扩展性。软件设计流程如图2所示,用串口线将程控电源、PLC、光强板与计算机连接,通过计算机发送通信协议到达电源、PLC、光强板,控制连接各部件。同时,电源和光强板检测到的数据通过通信协议将数据反馈到计算机,利用计算机对数据做不同的优化处理,实现不同的功能。
设计的主从式光强度检测系统采用串口技术与计算机连接[5],在计算机没有安装网卡的情况下,使用串口通信将设备上的数据传送到计算机上。微软公司在推出Visual Studio 2008版本以后的开发工具,不需要采用第三方的控件就可以设计串口通信的程序。而且Famework类库中的SerialPort类,含有多种串口通信的功能[6?7],以SerialPort类为核心设计程序快速方便。C#中的SerialPort控件通过串口线连接外部设备的控件。图3为外部设备连接流程图。
在设置电源发送通信协议时,因为经常要改变变量的值,所以使用serialPort.Write()函数。由于通信协议中使用的是16进制,而数据的格式由用户随意输入,但是通信协议有特定的格式规定,所以需要将数据用ToString()函数转换数据格式。转换完成后在for循环中用Substring()函数索引数据中的每一个值并转换为char类型,放入byte类型数组中。再用Convert.ToByte()将数组中的每一个值转换成16进制。系统进行协议发送与数据接收,首先对接收的数据进行位数判断,如果数据还没有到达则继续等待直到接收完整,如果在设定的次数等待还不能完整接收数据则会跳出并返回,系统接收到数据后对数据进行处理。
数据接收使用serialPort.DataReceved()函数,当数据到达串口时,可以把数据接收的正确性判断、数据进制转换、数据修正放在serialPort.DataReceved()函数中。对光强值的判断使用函数rev[1]>0xC0,rev[1]是光强数据的高8位,光强检测系统有不同的衰减档,如果接收到的数据不在选择的衰减范围内,则会重新发送命令,将接收到的数据在另外的衰减范围内计算,乘以相应的衰减比。
3.3 数据处理
数据处理流程如图4所示。光强板采集到的信号并不是纯净的光强信号。光强板通电时,电路中有暗电流和噪声等干扰信号,如果测试的环境并不是全黑暗的条件,外界也会出现干扰信号,把干扰信号过滤,需要进行包括暗电流与噪声的背景检测。背景检测的条件与常规检测的条件应保持一致,但光源应处于关闭状态,将读取的背景信号保存至配置文件中。常规测试读取到的信号减去背景信号得到光源的光强信号,这时得到的光强信号只是相对值,与实际光强值存在一定函数关系,因此需要通过光强板测量标准灯的数据,再与标准灯的真实数据进行匹配,计算出光强标定系数,利用光强标定系数标定待测光源的光强值。光强标定后得到的标定系数保存在配置文件中,此后每次进行光强检测,都需要使用标定系数去修正,修正后的光强值接近真实值。由于硬件和外界条件的影响,测量得到的数据还会存在一定的误差,需要进行二次校准。光强二次校准是数学补偿的方法,可以提高数据的准确性。
数据显示使用极坐标、直角坐标和列表数据三种方式。极坐标的极轴表示测量角度,极径的长度代表光强幅度,而系统读取的数据使用直角坐标,所以需要将直角坐标数据转换成极坐标数据。极坐标图的选择控件是ZedGraph控件。ZedGraph控件可以利用任意点组合创建2D的图标[8?9],ZedGraph是一个很灵活的类库,图表中各个位置都可以被修改。直角坐标图使用的是C1Chart控件,C1Chart控件包含折线图、柱形图、扇形图等多种数据图形,为了更好的分析数据,这里使用的是折线图。系统将一个或多个数据使用者以同步的方式和一个数据提供者绑定,如果修改、添加或删除绑定数据集合中的一部分值,C1Chart控件将反映新的数据集合。
3.4 程序界面与功能交互
程序的主界面由MenuStrip控件组成菜单栏,MenuStrip控件可以添加各类ToolStripMenuItem,这些ToolStripMenuItem能够触发各种事件,完成所需操作,例如,开灯、关灯、复位等。数据图表显示的空间放入TabControl控件中,TabControl是选项卡容器,存放各种控件,系统使用了三个选项卡,分别存放极坐标图、直角坐标图和数据列表图。通过切换控件上方的选项卡来切换显示内容。状态栏显示控件为StatusStrip控件,StatusStrip控件包含Label子控件,使用Label子控件显示需要显示的状态。例如,在连接外部设备时,当连接成功或连接失败时,需要告诉用户知道当前的设备连接状态,可以用标志位判断连接结果,相应在StatusStrip控件上显示出来。程序设置功能可以完成对PLC、电源的设置,由于系统设置是子WinForm,所以需要传递参数。测试、停止、复位、开灯、关灯的功能都是发送对应的协议到PLC或者电源,完成对应的操作。
4 测试结果
4.1 样品测试
以卤素灯为样品对设计的主从式光强度检测系统的性能进行测试。系统测试平台自动转到初始角度,并按照设置的角度间隔转动,直到转到设置的角度。图5为测试结果,测出光源在不同角度的光强度值。由图5可知:当转动角度为0°时光强值最大,即光源正对光强探头;当转动角度为-90°和90°时,光源与光强探头垂直,光强值最小,接近于0,极坐标图中的光强线接近左右对称。图6所示为直角坐标测试结果图,图中的曲线符合光强角度分布,对称角度的光强幅值几乎相等。测试表明,光源的光强分布良好,设计的主从式光强检测系统性能稳定。
4.2 光谱仪与主从式光强度检测系统的测试数值对比
使用同一个卤素灯样品,把主从式光强度检测系统的测量数据与光谱仪测量数据进行比较,由图7可知,当卤素灯功率达到23.295 W时,光谱仪测量的光通量和主从式光强度检测系统测量的光通量约为90 lm和80 lm,在这个功率值附近主从式光强度检测系统所测试的光通量误差较大,而在其他测试点,特别是功率在7.5~20.0测量范围内,两条曲线值相一致,计算出曲线平均误差值为0.004 15,设计的光强度检测系统能满足允许误差范围内的应用。
5 结 语
本文设计的基于主从式架构的光强度检测系统,从机基于STM32F107的32位微处理器实现光强度数据采集,主机应用C#编程语言实现数据处理。系统主机端使用异步委托动态地对参数进行赋值和控件状态修改,调用线程类库处理密集型任务,使得程序具有更好的扩展性。以卤素灯为样品,分别使用光谱仪和主从式光强度检测系统对同一样品进行测试,测量的曲线分别在极坐标、直角坐标中显示。测试结果表明,设计的主从式光强度检测系统测试结果精确,可广泛应用于光源与照明的检测领域。
参考文献
[1] 胡爱华.半导体照明产业的发展与前景[J].现代显示,2010(2):63?70.
[2] 周强,李锦华.半导体照明产品检测实验室建设及展望[J].价值工程,2013(31):39?40.
[3] 孟强,徐慧,万青苗.基于STM32的数据采集及显示系统的设计[J].电脑知识与技术,2013(5):3183?3186.
[4] 李响,满庆丰,夏继强.基于TwinCAT 和C#的扭矩传感器校准系统[J].仪表技术与传感器,2014(4):41?45.
[5] 杨艳华.PC与单片机串行通信的协议策略研究及应用[J].云南大学学报(自然科学版),2007,29(z2):122?126.
[6] 翟希述,王宝兴,范淼.基于Visual C#的串口通信设计[J].电子科技,2011,24(2):24?26.
[7] 彭四伟,蒋尚秀.一种用C++动态扩展C#程序的方法[J].微计算机信息,2010,26(4):15?18.
[8] 成鑫.LED光强分布的解析形式及其应用[C]//2008全国LED显示应用技术交流暨产业发展研讨会文集.杭州:中国光学光电子行业协会,2008:94?95.
[9] 刘辉,常婉纶.基于C#的Winform程序参数传递和同步显示的实现[J].软件技术,2010(14):64?66.