Arduino制作光控LED灯的亮与灭_电子/电路_工程科技_专业资料。在本实验中,咱们将学习如何利用光敏电阻制作根据光线的强弱来控制LED灯的亮与灭。这个实验非常实用。比如路灯,当晚上来临时,将要求灯亮起来,而在白天为了节约能量,需要路灯熄灭。这是可以借鉴此例子来根据光线的强弱控制LED灯的亮与灭。类似的,依据相应的原理,咱们也可以制作声控LED灯。
SmartArduino 7 用 Arduino 制作光控 LED 灯 7.1 问题描述:如何利用 Arduino 制作光控 LED? 在本实验中,咱们将学习如何利用光敏电阻制作根据光线的强弱来控制 LED 灯的亮与 灭。这个实验非常实用。比如路灯,当晚上来临时,将要求灯亮起来,而在白天为了节约能 量,需要路灯熄灭。这是可以借鉴此例子来根据光线的强弱控制 LED 灯的亮与灭。类似的, 依据相应的原理,咱们也可以制作声控 LED 灯。 7.2 所需材料 本实验所需要的材料比较简单,可在实验 7 的基础上,将数码管改换成光敏电阻即可, 如表 7-1 所示。 表 7-1:所需材料 序号 名称 数量 作用 备注 1 Arduino 软件 1套 提供 IDE 环境 最新版本 1.05 2 Arduino UNO 开发板 1块 控制主板 各种版本均可 3 USB 线条 烧录程序 随板子配送 4 杜邦线 光敏电阻的特性 在实验之前,必须弄清楚光敏电阻的相关特性和原理。在这小节将重点介绍光敏电阻的 有关特性。光敏电阻的英文名称 photoresistor。 (1) 光电导效应 又称为光电效应、光敏效应,是光照变化引起半导体材料电导变化的现象。即物质吸收 了光子的能量产生本征吸收或杂质吸收,引起载流子浓度的变化,从而改变了物质电导率的 现象,就成为光电导效应。 (2) 光敏电阻表示 光敏电阻器是利用半导体的光电导效应制成的一种电阻值随入射光的强弱而改变的电 阻器,又称为光电导探测器;入射光强,电阻减小,入射光弱,电阻增大。还有另一种入射 光弱,电阻减小,入射光强,电阻增大。如图 7-1 所示。文字符号: “RL”、“ RG”或“R” (a) 光敏电阻实物 (b) 光敏电阻表示符号 图 7-1 光敏电阻实物及符号表示 (3) 光电导材料 具有光电导效应的材料有 Si,Ge 等本征半导体与杂质半导体,以及 CdS,CdSe,PbS 等。这 些材料可以制成电导率随着入射光辐射量的变化而变化。 (亦老师) SmartArduino (4) 光敏电阻结构 光敏电阻的结构有三种:蛇形结构,刻型结构,梳型结构。通常由光敏层、玻璃基片(或 树枝防潮膜)和电极等组成的。 (a) 光敏电阻的组成 (b)蛇形结构 (c) 刻型结构 (d) 梳型结构 图 7-2 光敏电阻的组成与结构 (5) 光敏电阻分类 1)按制作材料分类:多晶和单晶光敏电阻器,还可分为硫化镉(CdS)、硒化镉(CdSe) 、 硫化铅(PbS)、硒化铅(PbSe)、锑化铟(InSb) 光敏电阻器等。 2)按光谱特性分类: ● 可见光光敏电阻器:主要用于各种光电自动控制系统、电子照相机、光报警等地。 ● 紫外光光敏电阻器:主要用于紫外线探测仪器。 ● 红外光光敏电阻器:主要用于天文、军事等领域的有关自动控制系统。 (6) 光敏电阻特性 光敏电阻器是利用半导体光电导效应制成的一种特殊电阻器,对光线十分敏感,它的电阻值 能随着外界光照强弱(明暗)变化而变化。它在无光照射时,呈高阻状态;当有光照射时, 其电阻值迅速减小。 (7) 光敏电阻器的主要参数 1)亮电阻(k?):指光敏电阻器受到光照射时的电阻值。 2)暗电阻(M?):指光敏电阻器在无光照射(黑暗环境)时的电阻值。 3)最高工作电压(V):指光敏电阻器在额定功率下所允许承受的最高电压。 4)亮电流:指光敏电阻器在规定的外加电压下受到光照射时所通过的电流。 5)暗电流(mA):指在无光照射时,光敏电阻器在规定的外加电压下通过的电流。 6)时间常数(s):指光敏电阻器从光照跃变开始到稳定亮电流的 63%时所需的时间。 7)电阻温度系数:指光敏电阻器在环境温度改变 1℃时,其电阻值的相对变化。 8)灵敏度:指光敏电阻器在有光照射和无光照射时电阻值的相对变化。 (8) 光敏电阻作用 广泛应用于各种自动控制电路(如自动照明灯控制电路、自动报警电路等)、家用电器(如 电视机中的亮度自动调节,照相机的自动曝光控制等)及各种测量仪器中。 (亦老师) SmartArduino 7.4 实验与原理 只要我们弄清楚了光敏电阻的特性后,本次实验的工作原理比较简单。就是通过光敏电 阻和其串联的电阻进行分压。当光敏电阻分到的电压小于一个给定的门限值时,将触发与 Arduino 连接的端口 8 一个高电平,从而点亮 LED。否则给端口 8 送一个低电平,LED 灯灯 不会被点亮。但为什么光敏电阻的电压要小于门限值呢?咱们来分析一下。假设给家里的卫 生间安装一个由光敏电阻控制的灯管。当外界光线很亮时,光敏电阻的阻值迅速下降,同时 我们也不希望家里卫生间的灯此时亮起来,正好此时给光敏电阻分得电压就非常小(因为电 阻值小,在串联电路中,电压和电阻值成正比),所以家里卫生间的灯管就不会亮起来了, 图 7-3 是本实验的电路原理图。但是,咱们该如何得到光敏电阻的门限电压呢?这是本实验 的一个关键问题。如图 7-3,其中 R1 是串联的电阻,R2 是光敏电阻(暂时用这个符号替代)。 其中光敏电阻的阻值 20Ω叫亮电阻,可根据万用表大概测量出来,如图 7-4 表示用万用表 测量光敏电阻的亮电阻(实测为 17.49Ω,但为了计算方便取 20Ω),此数值一般在产品说 明中会给出,且还会给出暗电阻数值。 图 7-3 光敏电阻的分压原理 图 7-4 用万用表测量光敏电阻的亮电阻 那接下来,咱们计算一下光敏电阻的门限电压(即低于这个门限电压值,光敏电阻将不 能被点亮)。如图 7-3 所示,其中 A0 表示光敏电阻的一端接在 Arduino 的正极,一端接在光 敏电阻一端,起着分压的作用,具体电路图也可以参考 7-5 所示。V2 即表示光敏电阻两端 的电压。根据串联电路的分压原理有:V2=5V*R2/(R1+R2),把相关参数数值代入可得光敏 电阻两端的电压约为 3.34V。 但是,根据光敏电阻的电压可以通过 Arduino 主板上的模拟端口 A0 输入,其语句为 analogRead(A0),但此语句输出为一个整型数据,其范围在 0~1024 之间(具体可参考 analogRead()语句的语法)。所以咱们还必须将电压 3.34V 换算成 0~1024 之间的数值。5V 对 (亦老师) SmartArduino 应的是 1024,那 3.34V 对应的就是 1024*3.34/5=683。所以咱们可以将门限电压设为 683。 门限电压值越高,对光线就越敏感。其电路原理如图 7-5 所示。 图 7‐5 Arduino 光控 LED 按照图 7‐5 的原理图连接好电路后,如图 7‐6 所示。运行 Program 7,用手或遮挡物遮挡 一下光敏电阻的光线,会发现光敏电阻的 LED 灯已经亮起来。 01 //Program 7:如何实现 Arduino 光控 LED 灯的亮与灭 02 int n = 0; //定义变量 n=0 为电压读取的模拟端口。 03 int ledPin8 = 8; //定义变量 ledPin8=8 为 led 电平输出端口 04 int val = 0; //定义 val 变量的起始值 05 void setup() { 06 Serial.begin(9600);//设置串口波特率 07 pinMode(ledPin8, OUTPUT); //使 ledPin8 为输出模式 08 } 09 10 void loop() { 11 val = analogRead(n); //从传感器读取值 12 13 Serial.print(val); //打开 Arduino 自带的监视器 14 Serial.println(); //输出换行 15 if(val=683){ //683=23.34V,想让传感器敏感一些的时候,把数值调高, 想让传感器迟钝的时候把数值调低。 16 digitalWrite(ledPin8, HIGH); //当 val 小于 683(3.34V)的时候,led 亮。 17 } 18 else{ 19 digitalWrite(ledPin8, LOW); 20 } 21 } (亦老师) SmartArduino 图 7-6 Arduino 光控电路 图 7-7 Arduino 自带的串口监视器 同时咱们让 LED 灯的光线变亮一些,LED 灯中由于光敏电阻阻值迅速下降,使得光敏 电阻两端所能分到的电压也迅速下降,以致不足以触发 Arduino 主板上端口 8。所以无法点 亮端口 8 中的 LED 灯,如图 7-8 所示。注意,我们可以用随声携带的手机给咱们的 LED 灯 光线 光敏电阻无法点亮 LED 灯 (亦老师) SmartArduino 7.5 要点总结 1)光敏电阻的阻值随着光线增强而变小,所得电压减小,无法触发 Arduino 的控制端口。 所以 LED 灯无法被点亮。 2)利用光敏电阻控制 LED 灯的亮与灭,依据的是电路的分压原理。 3)一般来说,亮电阻值都会在产品说明中给出。 4)光敏电阻广泛应用于自动控制中。 (亦老师)