首页 > 代码库 > Arduino 极速入门系列 - 光控灯(3) - 光敏电阻、与电阻分压那些事
Arduino 极速入门系列 - 光控灯(3) - 光敏电阻、与电阻分压那些事
继续是讲解基础原理,新手专用部分。这次讲光敏电阻,和用电阻分压。光电元器件有好几种,其中测光相关的元器件,常见的有光敏三极管和光敏电阻,我们这次光控灯用光敏电阻。在我们光控灯里面,将会使用它搭建出分压电路,给Arduino 的模拟引脚发送模拟量。新学的朋友们需要了解光敏电阻是什么回事,分压又是怎样做的,本篇就是讲解这两点。
光敏电阻
光敏电阻(photo-resistor / light-dependent resistor),是在特定波段照射下,阻值会减少的电阻。所谓特定波段,也包括了不可见的红外线。分类就三种,紫外线电阻器、红外线电阻器、和可见光电阻器。
最主要的参数有两个跟我们这次是直接相关的:光电流和光照特性曲线。就是说,有光很亮时候阻值多少,和亮度变暗时候与阻值增大的一个关系曲线图(注意这是曲线,不是线性关系的)。这个东西可以非常便宜,看完这篇有兴趣的可以买点回来玩玩看,淘宝有一包不同型号的光敏卖的。型号之间的差异可以看下表。
上表可以看到上升下降时间,我实测时候,它的上升下降时间,感觉没有上表说得那么接近,不太清楚它写的是什么概念。环境由暗变光,可能就半秒内吧,瞬间阻值减少(书本上说是几个毫秒)。环境有光变暗,需要好几秒钟阻值才爬升完毕。这响应时间其实与光敏材质和光波波长有直接关系。
单单文字讲解不够直接,看图。我们把万用表调到电阻档,连接好就开灯对准它照射,看看阻值:
580欧阻值。我这个型号5516,标称照度 10 lux 时候,阻值是 2-5K 欧姆。我是很难想象 10 lux 到底是多少。实测更直观,直接用灯近距离照射,580 欧姆。
然后我再试试,关灯(捂住它也行吧…),再看看阻值(注意万用表档位):
稍为遮挡、大幅度遮挡、和完全捂住时候,所读到的阻值分别是 7.8K,16.15K 和 502K。
它其实等同于一个可调电阻器、电位器(用两端作可调电阻用时候),只是它不是旋钮或者滑动,它是依据光来调阻值,然后光的强弱与阻值的关系并非线性。
要理解怎样用它在电路里面,首先我们得简单回顾一下电阻器怎样用。
电阻分压 - 新手专用
电阻器在电路里面主要有两种用法:限流和设置电压。限流我们在上一篇已经看过它怎样用来限制流到 LED 的电流。这次我们看看它的设置电压做法,分压。
我们在 Multisim 仿真看看。用两个电阻串联,试试不同阻值的组合,在两个电阻中间放置探针看看效果:
电阻的电流限制作用我们已经谈过。关于上图的电流值如何计算,后面有机会再讨论。这次我们集中看电压。可以看到,不同的阻值组合,可以影响到两个电阻中间位置的电压,它把电压的 5V,通过这方式对探针位置这个点,设置电压值,这个叫做电阻分压。分压的公式如下,假设我们把探针那个点的电压命名为 Vmes (mes 代表 Measurement,测量值):
左侧第一个电路 Vmes = V1 x (R2 / (R1 + R2)) Vmes = 5V x (1000 / (1000+1000)) Vmes = 2.5V | 中间的电路 Vmes = V2 x (R4 / (R3 + R4)) Vmes = 5V x (4000 / (1000+4000)) Vmes = 4V | 右侧电路 Vmes = V3 x (R6 / (R5 + R6)) Vmes = 5V x (4000 / (0+4000)) Vmes = 5V |
公式就是一个比例计算,很好记。用传统电流方向第二个电阻的阻值做分子,两个电阻阻值加总做分母,乘以流进第一个电阻时候的电压,就能计算得到 Vmes。
参考地端 - 新手专用
记得电压是两个点的电势差。所以仿真里面我们需要设置一个参考点,告诉Multisim 那个位置的电压就是零,0V,然后其他位置的测量值都是以此为依据。上面电路那地端符号是我放置的,与电池负极直接相连,为参考地。分压得到的测量值就是与此地端之间的电势差。
理解一下下图,参考地放置位置不同的效果:
可调电阻、电位器 - 新手专用
有了以上知识,我们继续看看可调电阻是干嘛的。我们用 Multisim 仿真,选电位器 (Potentionmeter)。一般电位器是有三只脚,三端都接好的话,电压输出端直接就是分压结果的了。这个以后,比如做摇杆时候再说明。
我们只接两端作为可调电阻用(就是跟光敏电阻一样作用),先理解一下以下三张图:
用上面分压公式可以计算到三个探针的值,不确定的请拿起纸笔自己算算,这个跟我们光控灯作品直接相关的。
利用以上分压电路加上光敏,我们可以对探针那个位置的电压进行测量,然后他的变化是跟随着光亮度而变动。读取电压,等同于读取光亮度了。
为何要这么麻烦,不买模块直接插来用? - 新手专用
光敏电阻,市面上也有模块卖,直接怼不好么,为何还要理解这些?
首先,模块上面的结构其实也极度简单,光敏加一个电阻,最多就再加电容做滤波,这完全可以自己做的。另外,电压不同时候你需要不同的阻值组合,模块你不能改动的,就算你不管直接用,也需要理解,你用了不同电压,它输出的模拟量范围会是多少。最后,自己 DIY,简单原理理解后,玩起来更有劲,不是么?
实际做法
以上都理解之后,到底我们要做什么?
首先第一个问题是亮度,10 LUX 亮不亮, 5 LUX 又该不该开灯,这些因人而异,是个人的感觉。第二个问题是,光敏的阻值与照射的亮度并非线性,而且在不同电压时候曲线稍有不同,我们做光控灯也并非科研,我们会想用更简单的办法去处理这个问题。
办法就是,把最终产品的灯,亮度分五级,找个办法让用户可以调节光的敏感度。就是说,用光敏再串联可调电阻:光亮度影响光敏阻值,用户再可以用串联了的可调电阻来调阻值,调节输出的模拟量幅度。
总结
我们以上几篇,已经理解了 LED 的供电应该怎么做,按钮怎么做,在本篇也知道了环境亮度如何读取。下一篇,我们用三极管,加上 PWM 的原理讲解,控制 LED 的五段亮度。
欢迎加入我们的大家庭 点击加入 Arduino 硬创联盟,群号 8580606
参考
实用电子元器件与电路基础 第三版 | 电子工业出版社,ISBN:9787121223785 |
模拟电子技术基础 第五版 | 高等教育出版社,ISBN:9787040425055 |
电子元器件的选择与应用 | 科学出版社,ISBN:9787030165060 |
电路基础(英文版 第五版) | 机械工业出版社,ISBN:9787111411840 |
Multisim 12.0 软件 | http://www.ni.com/multisim/ |
Arduino 极速入门系列 - 光控灯(3) - 光敏电阻、与电阻分压那些事