光学仪器  2021, Vol. 43 Issue (1): 56-62   PDF    
基于单片机的模拟光照度计设计
刘建钊1,2, 王宁1,2     
1. 上海理工大学 上海市现代光学系统重点实验室,上海 200093;
2. 上海理工大学 光电信息与计算机工程学院,上海 200093
摘要: 为了能使照度计显示照度的同时,将照度值所对应的感应电压值也显示出来,方便对光电探测器的工作状态进行实时监测,设计了基于单片机的模拟光照度计。对该光照度计的光电转换电路、放大滤波电路、A/D转换电路、显示电路以及报警电路进行了设计,搭建了硬件电路系统,做出了光照度计的实物,并完成了对实物的调试工作。实验证明,所设计的光照度计可有效显示感应电压值。
关键词: 感应电压    照度测量    单片机    实物调试    
Design of analog illuminometer based on single chip microcomputer
LIU Jianzhao1,2, WANG Ning1,2     
1. Shanghai Key Laboratory of Modern Optical System, University of Shanghai for Science and Technology, Shanghai 200093, China;
2. School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China
Abstract: In order to display the luxmeter of illumination and the induced voltage of illuminance, we design illuminometer based on a single chip microcomputer simulation, and the photoelectric conversion circuit, amplifier filtering circuit, A/D conversion circuit, display circuit and alarm circuit. The hardware circuit system is built. The debugging is completed. Experiments show that the system of illuminometer can display the induced voltage effectively.
Key words: induced voltage    illumination measurement    single chip microcomputer    physical debugging    
引 言

人们所生活的环境是一个充满光的世界,因此光照度与人们的生活有着密切的联系。针对不同场合的需求,合理地调节光源可以使人处在一种舒适的状态。为了能正确调整光照,需要对光照度进行测量。光照度的测量方法[1]分为目视法和客观法两种:目视法是人们利用肉眼对光照度做出的评价,带有一定的主观性;而客观法依据可靠的算法得出,所测得的照度值有一定的可信度。测量光照度的常用仪器是光照度计[2],它由主机和一个光电探测器[3]组成。光电探测器采集当前环境的可见光信号,并将该光信号转换为相应的电压信号,通过后续功能电路的数据处理,将照度值显示在主机上。

目前,在用市场上所销售的照度计测量照度时,主机的液晶显示屏上只显示出照度值,而与该照度值相对应的、由光电探测器所转换而来的感应电压值并没有被显示出来。感应电压是与光电探测器串联的电阻的电压,显示感应电压值有两个方面的作用:一方面,由感应电压值可以判断当前环境中可见光信号的强弱,方便人们对光源进行合理的调控;另一方面,由感应电压值可以估算出通过光电探测器的电流,进而方便人们对光电探测器的工作状态进行实时监测。这些对保护光电探测器以及延长其工作寿命都有一定的意义。

为此本文设计了一种基于单片机[4]的模拟光照度计,在显示光照度值的同时,可以显示与该光照度值相对应的电压值,从而对光电探测器的工作状态进行实时监测。

1 光照度测量原理

光照度的测量原理如图1所示。光电探测器采集可见光信号,并将其转换为相应的感应电压信号。对感应电压进行信号处理,包括放大滤波、模数转换等。当知道感应电压与照度的函数关系时,就可以由感应电压值计算出相应的照度值,进而将照度值显示出来。

图 1 光照度测量原理图 Figure 1 Schematic diagram of illumination measurement
2 系统设计方案 2.1 系统总体设计方案

光照度计系统的总体设计方案如图2所示。光照度计系统由光电检测模块、信号处理模块及数据显示模块组成。其中,光电检测模块由特定的光电探测器来探测光信号,并通过光电转换电路将微弱的光信号转换为电信号,这一电信号通常为电压的形式。信号处理模块由放大电路、滤波电路、A/D转换电路、单片机组成。放大电路将微弱的电压信号进行一定倍数的放大,这有利于后续数据的处理。滤波电路用来消除杂散光的干扰,滤波后的电压信号携带着光信息。此时,用模数转换器将该模拟电压转换为数字电压。根据该数字电压值,再通过一定的算法,即可算出照度值。算法是通过软件编写出的相应程序来实现。当照度值算出之后,需要将照度值在液晶显示屏上进行显示,这些工作也可以通过软件编程的方式来完成。当光电探测器探测到强度不同的光信号时,照度值可以相应地发生变化,实现照度的实时测量,同时与照度值相对应的电压值也显示在液晶显示屏上。

图 2 照度计系统总体设计方案 Figure 2 Overall design scheme of illuminometer system
2.2 硬件模块组成

光照度计的硬件模块如图3所示。选用型号5528的光敏电阻[5]作为光电探测器,这样不仅可以降低成本,而且还可以使光电转换电路的设计变得简便。集成运算放大器选用LM358芯片,它在电路中有两个作用:一是构成放大电路;二是构成滤波电路,且滤波电路同时具备电压放大作用。由模数转换器[6]ADC0832芯片将模拟电压信号转换为数字电压信号。转换后的电压信号由单片机STC89C52进行数据处理,计算出相应的照度值。最后,由液晶显示屏LCD1602将计算出的照度值和对应的电压值显示出来,并且用一个蜂鸣器和LED灯来进行报警。

图 3 系统硬件模块设计方案 Figure 3 The system hardware module design
2.3 软件模块设计

光照度计软件模块的程序控制流程如图4所示。当程序加载到单片机时,光照度计上的各元器件便会按照程序指令有序地工作。首先对液晶显示屏LCD1602以及模数转换器ADC0832芯片进行初始化。当光敏电阻采集到可见光信号后,将光信号转换为相应的感应电压。对这一感应电压进行放大滤波后,ADC0832芯片[7]采集到信号处理后的电压量,再将该模拟电压转换为数字电压。由单片机进行数据处理并计算出照度值,同时在液晶上显示出照度值,并将与该照度值相对应的电压值也进行显示。当所测的照度值超过所设置的阈值时,系统开始报警。

图 4 程序控制流程图 Figure 4 Flow chart of program control
3 数据模拟实验

由于光敏电阻所转换而来的感应电压很微小,不利后续的数据处理,因此采用LM358芯片构成的放大滤波电路对其进行两级电压放大,放大倍数为4。设Vdisplay 是放大4倍后的电压,Vinduced 是由光敏电阻转换而来的感应电压,则两个电压的关系如下:

${V_{\rm{{d}}isplay}} = 4{V_{\rm{induced}}}$ (1)

由式(1)可以看出,VdisplayVinduced一一对应,由Vdisplay可以计算出Vinduced,从而可以计算出流过光敏电阻的电流、功耗等,起到对光敏电阻的工作状态实时监测的作用。

测量一组光照度计的电压Vdisplay及其所对应的照度,用以确定照度计显示的电压和照度的关系,结果如表1所示。

表 1 电压及相应的照度 Table 1 Voltage and corresponding illuminance

根据表1所示的电压Vdisplay及其相应的照度数据,利用MATLAB软件对两者进行曲线拟合,得到结果如图5所示。

图 5 照度与电压的拟合曲线 Figure 5 The fitting curve of illumination and voltage

进而得到照度与电压的数学函数关系式,二者的数学函数关系表达式如下:

$Y = 9.46\;X{^2} + 32.44\;X + 2.77$ (2)

式中:Y为照度;X为电压值,并且有X=Vdisplay。该函数关系式亦是由电压Vdisplay计算出相应照度的核心公式。

4 光照度计电路图

光照度计电路系统原理图如图6所示。该电路系统由光电转换电路[8]、放大滤波电路、A/D转换电路、单片机最小系统[9]、液晶显示电路和报警电路构成。其中,光敏电阻采集光信号,并将光信号转换为电流信号,从而在负载电阻R1上产生一个感应电压。该感应电压需要用LM358芯片构成的两级放大电路对其进行放大,同时进行滤波处理。由A/D转换器将处理后的模拟电压转换为数字电压,由单片机进行数据处理计算出照度值。LCD1602液晶显示屏[10]的第一行显示电压值,第二行显示与该电压值相对应的照度值。当所测的照度值超过130 lx时,蜂鸣器响起,红色LED灯不断闪烁,开始报警。

图 6 照度计系统电路原理图 Figure 6 Schematic diagram of illuminometer system circuit
5 程序设计 5.1 主程序设计

光照度计的主程序执行流程如图7所示。单片机按照图7所示的流程不断执行相应的程序语句。

图 7 主程序设计流程图 Figure 7 Flow chart of main program design
5.2 其他子程序设计

用于显示光照度计电压数值的子程序如图8所示。

图 8 显示电压值的子程序设计 Figure 8 Subroutine design for voltage
 

计算并显示照度值的子程序设计如图9所示。

图 9 计算并显示照度值的子程序设计 Figure 9 Subroutine design for calculating and displaying illumination values
6 光照度计实物调试 6.1 光照度计组成

光照度计实物如图10所示。在面包板上用光敏电阻搭建了光照度计的光电转换电路,用运放LM358芯片搭建了放大滤波电路,并用ADC0832芯片搭建了模数转换电路,在STC89C52单片机开发板上接上LCD1602液晶显示屏。面包板上接有电源模块,该模块中的电源有三种选择,分别是3.3 V、5 V和12 V,可满足不同的供电需求。通过两根数据线分别将单片机开发板和面包板上的电源模块连接到电脑的USB端口,由电脑给单片机开发板和面包板供电。单片机开发板上有蜂鸣器模块和LED模块,给面包板和开发板通电后,把写好的程序加载到单片机中。这样,光照度计系统就可以按照程序指令正常工作,同时在液晶显示屏上可以看到电压值及相应的照度值。

图 10 光照度计实物图 Figure 10 Photo of the illuminometer
6.2 光电转换电路的调试

当LED灯照射光敏电阻时,用电压表测得与其串联的电阻R1的电压。电压表显示电阻R1的电压为0.364 V,该电压值即为感应电压。随着LED灯与光敏电阻距离的变化,该感应电压值也在变化。

6.3 单级放大电路的调试

电路采用两级同相输入比例电压放大电路。对单级电压放大电路其电压增益为

$ {A_{\rm{uf}}} = \frac{{{u_{\rm{o}}}}}{{u_{\rm{I}}}} = 1 + \frac{{{R_{\rm{F}}}}}{{{R_{\rm{I}}}}} $ (3)

式中:Auf为电压增益;uo为输出端电压;uI为输入端电压;RF为输出端反馈回输入端的等效电阻;R1为输入端和运放同相输入端之间的等效电阻。

单级放大电路的调试结果如图11所示。图11所示的输入电压为0.474 V,所示的输出电压为0.921 V,输出电压近似为输入电压的二倍。由此说明,运算放大器[11]芯片LM358可以正常工作,电路实现了电压放大作用。

图 11 单级放大电路调试结果图 Figure 11 Debug result of single stage amplifier
6.4 模数转换电路的调试

模数转换电路的调试结果如图12所示。液晶屏上显示当前电压为1.23 V,所对应的照度值是57.01 lx。用电压表测量ADC0832芯片的CH0端的电压,并将这一电压与液晶上显示的电压进行比较。可以看到,电压表所测得的CH0端的电压为1.23 V,与液晶上所显示的电压相同。由此说明,ADC0832芯片能正常读取模拟电压值。

图 12 模数转换电路调试结果图 Figure 12 Analog to digital conversion circuit debugging
6.5 显示电路的调试

图12所示的模数转换电路的调试结果可知,液晶屏已正确地将放大4倍后的模拟电压显示了出来。

6.6 报警电路的调试

当照度值超过130 lx后,系统开始报警。此时:LCD1602液晶屏的第一行显示“zdval is high”,表示照度值过高;第二行显示“start warning”,表示有警告;面板上的红色LED灯不断闪烁,蜂鸣器报警。

6.7 光敏电阻实时监测

型号为5528的光敏电阻,其最大功耗为100 mW。用表1中的第四组数据来计算光敏电阻的功耗。当显示电压Vdisplay=5.00 V时,相应的照度为401.61 lx。根据图6所示的照度计电路图,分析得到计算光敏电阻功耗的表达式为

$P = ({V_{\rm{cc}}} - {V_{\rm{induced}}}) \times \frac{{{V_{\rm{{in}}duced}}}}{{{R{\rm{1}}}}}$ (4)

式中:P是光敏电阻的功耗;Vcc是电源电压(其值为图6所示的12 V);Vinduced是感应电压值(其值由式(1)计算得出,当Vdisplay=5.00 V时,Vinduced=1.25 V);R1是电阻值(其值为10 kΩ)。将VccVinducedR1的数值代入式(4),得到此时光敏电阻的功耗为1.34 mW。该功耗值在光敏电阻的最大功耗范围内,表明光敏电阻可以正常工作。

在照度计使用过程中,可以根据液晶显示屏上的电压值来计算感应电压值,进而可以估算出光敏电阻的功耗值。这样,就可以对光敏电阻的工作状态进行实时监测,确保其工作性能稳定。

7 结 论

本文设计了基于单片机的模拟光照度计,该照度计的硬件模块主要由光电转换电路、放大滤波电路、A/D转换电路、单片机最小系统电路、LCD1602显示电路以及报警电路等组成。软件模块主要由显示电压值的子程序、计算并显示照度值的子程序和报警子程序等组成。在设计出电路系统之后,根据该电路系统做出了光照度计的实物,并对实物进行了调试。结果表明,光照度计能够正常工作,并且液晶可以显示放大4倍后的电压值。

随着光照度计的应用领域越来越广泛,这种将光电探测器所转换而来的感应电压也显示出来的设计思想,可为未来照度计的设计提供参考。

参考文献
[1] 张凌岩. 住宅空间内照度测量方法的比较研究[J]. 灯与照明, 2016, 40(3): 10–14. DOI:10.3969/j.issn.1008-5521.2016.03.003
[2] 朱鑫鑫, 刘枫, 周强. 数字式光照度计的设计与制作[J]. 数码世界, 2019(9): 116.
[3] 蒋东平. 也谈光电探测器[J]. 中国科技纵横, 2012(18): 28–29. DOI:10.3969/j.issn.1671-2064.2012.18.022
[4] 盛华. 对单片机在电子领域当中的应用[J]. 电子技术与软件工程, 2018(24): 242.
[5] 翁健衎, 刘卫玲, 常晓明. 基于光敏电阻的简易照度计的设计与实现[J]. 电子测量技术, 2017, 40(11): 217–220. DOI:10.3969/j.issn.1002-7300.2017.11.047
[6] 吴俊生. 模数转换器的测试研究[D]. 沈阳: 辽宁大学, 2011.
[7] 张亚林. 基于C52控制的ADC0832应用详解[J]. 数字技术与应用, 2013(3): 5–6.
[8] 王磊, 赵冬娥, 党浩淮. 光电转换放大电路的设计[J]. 伺服控制, 2013(4): 74–76.
[9] 李奥博. 基于最小化单片机系统的设计与创新应用[J]. 科学技术创新, 2019(7): 26–27.
[10] 郭营营. LCD1602液晶显示屏[J]. 内江科技, 2016, 37(7): 37 – 38.
[11] 王影, 王志鹏. 集成运算放大器的应用电路仿真分析[J]. 信息与电脑, 2020, 32(4): 101–102.