总述

本项目基于51单片机,实现了对光敏电阻两端电压信号的简单获取,并通过数码管显示,蜂鸣器可以根据电压信号的大小发出不同间隔的声音。

注意: 由于疫情原因限制,无法返校制作实物,故本项目仅在proteus中完成了仿真,未能完成实物制作,仿真结果可能与实物结果不符

介绍

光照度计是一种专门测量照度的仪器,通俗来讲就是测量被测物体表面的光强。
本文阐述的简易光照度计作为51的练手项目,当然不能做的像市面上的那样强大,这里只对信号进行了非常简单的处理

具体指标

  1. 用两位数码管显示实时光照强度,在改变传感器参数时显示电路实时同步更新。
  2. 同时驱动一个 1KHz 音频蜂鸣器在光照强度由弱到强变化时让蜂鸣器发出不同间隔的报警音,即光照越弱声音断续节奏越慢,光照越强音频节奏越快。
  3. 整机供电电压不高于 12v。

原理部分

原理框图如下

普中esp32读取光敏电阻值 光敏电阻在proteus_单片机

原理简述

光敏电阻阻值随光照的增强而减小,可以使用光敏电阻来捕捉光信号,并通过信号处理电路将信号发放大到合适的范围,为了得到线性的结果,可以使用恒压偏置电路,产生线性信号,为提高灵敏度可以对信号进行适当的放大。设计要求光信号可以控制数码管显示数值和蜂鸣器改变频率,对于数码管显示,可以使用ADC转换器,将模拟信号转换为数字信号,经过51单片机处理后送入数码管,对于蜂鸣器,可以采取与数码管同样的方案。

模块设计

信号拾取模块

  1. 由于没有实物光敏电阻选取proteus中的LDR光敏原件,使用带有数值表示的LDR原件,方便得到数值类型的结果。
  2. 为了得到相对线性的结果,这里使用处理光敏电阻常用的恒压偏置电路来实现对光敏电阻信号的获取。

参考:光敏电阻调理电路

信号拾取模块连线图

普中esp32读取光敏电阻值 光敏电阻在proteus_普中esp32读取光敏电阻值_02

原理说明

稳压管D1的稳定电压为3V,保证Q2管处于放大状态,对Q2来说:

\[V_1=V_{D1}=V_{LDR}=3v \]

\[I_C=I_e=I_{LDR} \]

\[V_2=V_{+12}-I_c R_c \]

通过恒压偏置电路即可得到跟光照强度呈线性关系的电压。
\(C1\)为去耦电容,大小为1.5pF,D1为稳压管,稳压管的压降要大于Q2的导通电压但又不能过大,这里选择稳定电压为3V的1N4372A,根据数据手册1N4372A的最小导通电流为20mA,故\(R2\)的阻值应该小于等于450Ω,在测试范围1.1-10.1Lus内,LDR阻值在4K-3KΩ内变化,故\(R_C\)选取的10K以维持Q2的导通状态。

注意:

  1. 这里\(R_c\)
  2. 所使用的的三极管2SC2547是一个功放管,因为没有找到合适的管子,迫不得已使用的,实物制作可能会出问题。

信号转换模块

此模块使用常见的AD转换芯片ADC0808作为AD数据采集模块,ADC0808是一款8位8通道比较型AD转换器,易于上手,在本工程中使用IN0作为数据采集端。

信号转换模块连线图

普中esp32读取光敏电阻值 光敏电阻在proteus_单片机_03

简单说明

此处直接将ADDA、ADDB、ADDC,接地,默然选择通道IN0,不需要通过软件来调整,节省单片机的IO口资源。
使用软件来对ADC值进行采集,由于在硬件连接上ALE端和START端连接在一起,根据ADC0808数据手册描述,使能ALE为1,将地址送入地址锁存器,经地址译码器从8路通道中选择一路模拟量送到比较器,此时由于ALE与START连接在一起,START也为高电平。接下来使ALE = 0,本质是为了使START = 0,给START送入一个下降沿,adc启动转换。由于没有外置的时钟信号,故,使用单片机的P2.5口产生PWM波来驱动ADC0808工作。

AD采集软件设计

普中esp32读取光敏电阻值 光敏电阻在proteus_普中esp32读取光敏电阻值_04

普中esp32读取光敏电阻值 光敏电阻在proteus_数据_05

使用GetData函数接收AD数据,程序运行到此处会等待EOC变为1,当EOC变为1时,ADC转换结束,使能OE为高电平,读取数据,后将OE设为低电平。