在此项目中,我们将使LDR与ATMEGA8微控制器接口,并由此可以测量该区域的光强度。在ATMEGA8中,我们将使用10位ADC(模数转换)功能来测量光强度。
Am LDR是一种传感器,当LIGHT落在其表面变化时会改变其电阻。LDR传感器有不同的尺寸和形状。
LDR由半导体材料制成,以使其具有光敏特性。使用的材料类型很多,但是一种流行的材料是硫化镉(CdS)。这些LDR或照片电阻器的工作原理是“光电导”。现在,这个原理就是说,只要光线落在LDR的表面上(在这种情况下),元件的电导就会增加,换句话说,当光线落在LDR的表面上时,LDR的电阻会减小。由于它是表面上使用的半导体材料的特性,因此实现了LDR电阻降低的特性。 LDR通常用于检测光的存在或测量光的强度。
上图显示了不同类型的LDR,每种都有不同的规格。通常,LDR在完全黑暗的条件下将具有1MΩ-2MΩ,在10 LUX时具有10-20KΩ,在100 LUX时具有2-5KΩ。LDR的典型LUX电阻曲线如图所示。
如上图所示,传感器的两个触点之间的电阻随着光强度而减小,或者传感器的两个触点之间的电导增加。
现在,为了将这种电阻变化转换为电压变化,我们将使用分压电路。在这种电阻网络中,我们有一个恒定电阻和另一个可变电阻。如图所示,R1是恒定电阻,R2是用作电阻的力传感器。
分支的中点被测量。当电阻R2变化时,Vout随之线性变化。因此,有了这个电压,电压会随重量而变化。
现在要注意的重要一点是,控制器用于ADC转换的输入低至50µAmp。基于电阻的分压器的这种负载效应非常重要,因为从分压器的Vout汲取的电流会增加误差百分比,因此现在我们不必担心负载效应。
我们在这里要做的是使用两个电阻器并形成一个分压器电路,以便对于25V的Vin,我们得到5V的Vout。因此,我们要做的就是在程序中将Vout值乘以“ 5”以获得真实的输入电压。
组件
硬件: ATMEGA8,电源(5v),AVR-ISP编程器,JHD_162ALCD(16 * 2LCD),100uF电容器,100nF电容器(5个),10KΩ电阻器,LDR(光敏电阻)。
Sofware : Atmel Studio 6.1,progisp或flash魔术。
电路图和工作说明
ATMEGA8的PORTD电路连接到数据端口LCD。在16 * 2 LCD中,如果有背光,则全部有16个引脚,如果没有背光,则有14个引脚。一个人可以给背光灯供电或离开。现在,在14个引脚中,有8个数据引脚(7-14或D0-D7),2个电源引脚(1&2或VSS&VDD或gnd&+ 5v),第三个用于对比度控制的引脚(VEE控制字符的粗细)和3个控制引脚(RS&RW&E)
在电路中,您可以观察到我只接了两个控制引脚。对比度位和READ / WRITE不经常使用,因此它们可以接地。这使LCD处于最高对比度和读取模式。我们只需要控制ENABLE和RS引脚即可相应地发送字符和数据。
LCD的连接如下:
PIN1或VSS ------------------接地
PIN2或VDD或VCC ------------ + 5v电源
PIN3或VEE ---------------地面(为初学者提供最大的对比度)
PIN4或RS(寄存器选择)--- uC的PB0
PIN5或RW(读/写)-----------------接地(将LCD置于读取模式可简化用户的通信)
PIN6或E(启用)--- uC的PB1
PIN7或D0 ----------------------------- uC的PD0
uC的PIN8或D1 ----------------------------- PD1
uC的PIN9或D2 ----------------------------- PD2
uC的PIN10或D3 ----------------------------- PD3
uC的PIN11或D4 ----------------------------- PD4
uC的PIN12或D5 ----------------------------- PD5
uC的PIN13或D6 ----------------------------- PD6
PIN14或D7 ---- uC的PD7
在电路中,您可以看到我们使用了8位通信(D0-D7),但这不是强制性的,我们可以使用4位通信(D4-D7),但是使用4位通信程序会变得有些复杂。因此,仅从上表的观察,我们就可以将LCD的10针连接到控制器,其中8针是数据针,而2针是控制针。
R2两端的电压不是完全线性的。会很吵。为了滤除噪声电容器,如图所示,在分压器电路中的每个电阻器之间放置了电容器。
在ATMEGA8中,我们可以为PORTC的四个通道中的任何一个提供模拟输入,因为选择的是相同的通道并不重要。我们将选择PORTC的通道0或PIN0。在ATMEGA8中,ADC的分辨率为10位,因此控制器可以检测到Vref / 2 ^ 10的最小变化,因此,如果参考电压为5V,则每5/2 ^ 10 = 5mV,我们将获得一个数字输出增量。因此,对于输入中的每5mV增量,数字输出中的增量为1。
现在,我们需要 根据以下术语设置ADC的寄存器:
1.首先,我们需要在ADC中启用ADC功能。
2.这里将获得用于ADC转换的最大输入电压为+ 5V。因此我们可以将ADC的最大值或基准设置为5V。
3.控制器具有触发转换功能,这意味着ADC转换仅在外部触发之后发生,因为我们不希望将ADC的寄存器设置为在连续自由运行模式下运行。
4.对于任何ADC,转换频率(模拟值到数字值)和数字输出的精度成反比。因此,为了获得更好的数字输出精度,我们必须选择较小的频率。对于正常的ADC时钟,我们将ADC的预售设置为最大值(2)。由于我们使用的是1MHZ的内部时钟,因此ADC的时钟为(1000000/2)。
这是我们开始使用ADC所需了解的仅有的四件事。
以上所有四个功能均由两个寄存器设置,
红色(ADEN):必须将该位置1以启用ATMEGA的ADC功能。
BLUE(REFS1,REFS0):这两位用于设置参考电压(或我们将要提供的最大输入电压)。由于我们希望参考电压为5V,因此应通过下表设置REFS0。
黄色(ADFR):必须将该位置1,ADC才能连续运行(自由运行模式)。
PINK(MUX0-MUX3):这四个位用于告知输入通道。由于我们将使用ADC0或PIN0,因此无需像表中那样设置任何位。
棕色(ADPS0-ADPS2):这三个位用于设置ADC的预分频器。由于我们使用的是2的预分频器,因此我们必须设置一位。
暗绿色(ADSC):该位置1使ADC开始转换。当我们需要停止转换时,可以在程序中禁用该位。
因此,在16x2 LCD屏幕上具有LDR电阻时,我们可以将其与LUX图进行匹配以获取光强度。