突然发现上个月买的单片机盒子里有个光敏电阻,这个没玩过,所以赶紧试试。光敏电阻器的阻值随入射光线(可见光)的强弱变化而变化,在黑暗条件下,它的阻值(暗阻)可达1~10M欧,在强光条件(100LX)下,它阻值(亮阻)仅有几百至数千欧姆。
下面看一下电路图:(我们把光敏电阻接入AIN0通道的J2插针处)

如何操作AD还是按照前篇文章的三步走战略,但是光敏电阻组值变动范围太大,很难严格的说出量程范围,我们只需要大体估计个就行,反正有比例关系。
我们知道当没有光照射的时候,光敏电阻阻值最大,AD将获得最大值(全1),我们索性规定当没有光照射的时候,输入的电压就是5V,这样对应的系数就有了,255 / 5 = 51 。(有些朋友可能会乱,哪里来这么多的规定!?要明白我要要检测AD转换的数字值,8位AD最大只能显示255,所以你模拟量再怎么变,AD最大到255就不动了,也许AD达到255的时候,我们估计的电阻值距离实际电阻值相差甚远,不过没关系,大体的比例关系有了),确定了系数就好了(51),没有光照情况下,将输出5.0V,其他的值就类推就OK了。
那怎么用呢,在程序中,我们可以检测测量到的值,当>4.5可粗略认为没有光照,当>3.0V且<4.5V代表有弱光照射,当<3.0V可代表有强光照射,进而我们可以进行其他的控制。我这里做实验只是简单的用LCD显示一下:
(上图为光敏电阻有弱光照)
(上图为光敏电阻有稍强光照)
代码非常简单:
#include "1602.h" #include "iic.h" #includeuchar temp,AIN0,TempData[2]; int main() { INIT_1602(); IIC_INIT(); while(1) { temp = read_byte(0x91,0x40); AIN0 = read_byte(0x91,0x40); TempData[0] = AIN0 / 51; TempData[1]=(((uchar)(((float)AIN0 / 51) * 10)) % 10); write_byte_lcd(0,7,0x30 + TempData[0]); write_byte_lcd(0,8,'.'); write_byte_lcd(0,9,0x30 + TempData[1]); } }
工程文件:

-
电路图
+关注
关注
10495文章
10764浏览量
557474 -
光敏电阻
+关注
关注
4文章
307浏览量
51946
发布评论请先 登录
昉·星光开发板方案:昉·星光开发板光敏传感器之光强度数据读取
在 VisionFive 2 上使用光敏传感器读取光强度数据
在 VisionFive 2 上使用光敏传感器
Teledyne FLIR OEM在MWC展会中发布Lepton XDS:采用MSX专利技术的紧凑型热成像与可见光双摄像头模块
睿创微纳推出覆盖可见光与红外波段的双光电子稳像技术
SAPHHIRE XT:COHERENT 全新紧凑型 1W 可见光激光平台为生命科学和半导体创新树立了新标准
晶圆级纳米制造多层衍射光学处理器可实现单向可见光成像
汽车玻璃可见光透射率VLT标准70%:关乎道路安全的关键指标
基于OPT3004数字环境光传感器的智能光感应用技术解析
中国科大研制可见光波段矢量光谱分析仪
六博光电推出高性价比可见光通信模块
LiFi技术:可见光通信在室内网络中的应用与前景
太阳光谱全面解析丨UVA、UVB、UVC与可见光、红外光
光敏电阻光线(可见光)的强弱变化实验案例
评论