前言:
此刻各位老铁们对“ao2传感器”大概比较看重,小伙伴们都需要学习一些“ao2传感器”的相关文章。那么小编也在网摘上网罗了一些关于“ao2传感器””的相关知识,希望我们能喜欢,看官们一起来了解一下吧!本文教程来自RVspace社区论坛发烧友HonestQiao,以下为教程原文:
本次课程将带领大家在昉·星光 2开发板上,更进一步的使用光敏传感器。
本次演示在昉·星光和昉·星光 2上,操作步骤相同。
一、学习目标学习昉·星光 2开发板使用光敏传感器的模拟输出二、准备工作
在开始本次课程的实际操作之前,同学们需要做好一些准备工作,课程中涉及到的硬件如下:
开发板:昉·星光开发板光线传感器: 带DO输出的光敏传感器模数转换模块:ADS1115杜邦线:若干
三、光敏传感器使用原理
本次课程中,使用的光敏传感器模块具体如下:
在这个光敏传感器上,提供了数字输出接口DO和模拟输出接口AO。
因为昉·星光开发板自身没有ADC模块,因此本次课程,专门使用了一块ADC模块,用于帮助开发板读取光敏传感器的模拟输出信息,从而火照光照强度数值。
在这个光敏传感器顶部,有一个光敏电阻,由于光电效应,光照愈强,阻值就愈低,随着光照强度的升高,电阻值迅速降低。反之,输出低电平信号。随着电阻值的变化,其模拟输出口AO的电压信号也会发生变化,再使用ADC模块即可将电压信号转变位数字信号。
本次课程使用的ADC模块为ADS1115,具体如下:
ADS1115是一个16位精度的ADC信号转换模块,使用IIC接口与开发板通讯,能同时测量4组电压信号进行转换,可以工作在2V至5.5V,可以配合多种开发板、单片机使用,在汽车、电视、传感器等非常多的应用场合都能使用。
四、光敏传感器使用
通过上述光敏传感器的原理,我们可以得知,要获取其测量的具体光线强度值,需要通过ADS1115来进行模数转换。
首先,将光敏传感器模块的AO接口与和ADS1115的A0接口相连,使得ADS1115能够获取光敏传感器输出的模拟电压信号。
然后,参考下图,将ADS115连接到昉·星光开发板:
实物连接如下:
注意:
应根据实际使用的传感器,确定供电电压。本次课程中使用的光敏传感器模块和ADS1115模块,均使用5V供电电压。
然后,编写如下的程序:
# -*- coding: utf-8 -*-# file: ~/projects/light/light_ao.pyimport ADS1115import timeimport numpy# 初始化ADS1115模块ads = ADS1115.ADS1115()while True: # 读取ADS1115模块通道0的数据,也就是A0 volt = ads.readADCSingleEnded(0) # 转换 per = numpy.interp(volt, [0, 5000], [0, 100]) # 输出信息 print("%d mV of A0, val is %f" % (volt, per)) # 延时 time.sleep(0.1)
上述程序的逻辑,通过ADS1115,检测光敏传感器模块的AO输出,然后转换到对应的光照强度数值。
要运行以上的程序,还需要安装相应的第三方支持库numpy和ADS1115。但ADS1115扩展库默认使用的是i2c-1,但是我们的开发板使用的是i2c-0,所以需要在安装扩展库以后,需要进行一下处理才能使用,具体如下:
# 安装扩展库pip install smbuspip install numpypip install ADS1115# 修改ADS1115库文件vi ~/.local/lib/python3.10/site-packages/ADS1115/__init__.py# 将该文件中的 smbus2.SMBus(1) 修改为 smbus2.SMBus(0),然后保存退出
编写完成后,运行 light_ao.py ,然后尝试不同的光照情况。
python3 light_ao.py
实际运行结果如下:
在明亮的环境下测试的结果如下:
使用不透明材料包裹光线传感器的感光部分:
使用手电筒照射光线传感器的感光部分:
五、总结
在本次演示中,我们学习了光敏传感器的模拟输出信号的读取。
通过光敏传感器获取当前环境光线强度数据,在很多场合都有使用。现在有很多台灯,能够根据当前环境的光线强度,自动调节灯光的来说,号称智能台灯,就是采用了光线传感器。
六、参考资料[DFRobot I2C ADS1115 16位AD转换模块]DFROBOT_Gravity: I2C ADS1115 16-Bit ADC模块_DFR0553__产品说明_使用教程)
标签: #ao2传感器