本项目基于51单片机,实现了对光敏电阻两端电压信号的简单获取,并通过数码管显示,蜂鸣器可以根据电压信号的大小发出不同间隔的声音。
注意: 由于疫情原因限制,无法返校制作实物,故本项目仅在proteus中完成了仿真,未能完成实物制作,仿真结果可能与实物结果不符
光照度计是一种专门测量照度的仪器,通俗来讲就是测量被测物体表面的光强。 本文阐述的简易光照度计作为51的练手项目,当然不能做的像市面上的那样强大,这里只对信号进行了非常简单的处理
原理框图如下
光敏电阻阻值随光照的增强而减小,可以使用光敏电阻来捕捉光信号,并通过信号处理电路将信号发放大到合适的范围,为了得到线性的结果,可以使用恒压偏置电路,产生线性信号,为提高灵敏度可以对信号进行适当的放大。设计要求光信号可以控制数码管显示数值和蜂鸣器改变频率,对于数码管显示,可以使用ADC转换器,将模拟信号转换为数字信号,经过51单片机处理后送入数码管,对于蜂鸣器,可以采取与数码管同样的方案。
参考:光敏电阻调理电路
稳压管D1的稳定电压为3V,保证Q2管处于放大状态,对Q2来说:
V 1 = V D 1 = V L D R = 3 v V_1=V_{D1}=V_{LDR}=3v V1=VD1=VLDR=3v I C = I e = I L D R I_C=I_e=I_{LDR} IC=Ie=ILDR V 2 = V + 12 − I c R c V_2=V_{+12}-I_c R_c V2=V+12−IcRc
通过恒压偏置电路即可得到跟光照强度呈线性关系的电压。 C 1 C1 C1为去耦电容,大小为1.5pF,D1为稳压管,稳压管的压降要大于Q2的导通电压但又不能过大,这里选择稳定电压为3V的1N4372A,根据数据手册1N4372A的最小导通电流为20mA,故 R 2 R2 R2的阻值应该小于等于450Ω,在测试范围1.1-10.1Lus内,LDR阻值在4K-3KΩ内变化,故 R C R_C RC选取的10K以维持Q2的导通状态。
注意:
这里 R c R_c Rc 的10K并不是一个合适的值,我这里并不懂得如何调整,仅选取了一个比较常见的值所使用的的三极管2SC2547是一个功放管,因为没有找到合适的管子,迫不得已使用的,实物制作可能会出问题。此模块使用常见的AD转换芯片ADC0808作为AD数据采集模块,ADC0808是一款8位8通道比较型AD转换器,易于上手,在本工程中使用IN0作为数据采集端。
此处直接将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工作。
使用GetData函数接收AD数据,程序运行到此处会等待EOC变为1,当EOC变为1时,ADC转换结束,使能OE为高电平,读取数据,后将OE设为低电平。