直接使用模块可以简单通过adc得到光照亮度范围
模拟输出 AO
adc提供0~1023范围的数值, 光越亮数值越大, 越暗数值越小
想想原理是什么, 如何得到的电压变化
- 光敏电阻的阻值范围
了解阻值范围, 才能设计出相应的adc电路, 光敏电阻的阻值根据光照不同而变化, 在阳光照射下, 光敏电阻会降低到几k欧姆的范围, 在暗环境下光敏电阻可以达到1M欧姆的范围 - 根据光敏电阻来确定串联电阻阻值, 阻值必须相对于光照下极大, 而暗环境下又极小的条件
Vout = Vcc/(Rl+R0)*R0
带入R0 = 10k, Rl在1000~1M范围, Vcc为5v, Vout最大输出为4.5v~0.05v
数字输出 DO
数字输出相对简单, 光敏电阻和比较电阻, 再加一个比较器, 就可以构成, 比较电阻做成可调节的变阻器, 光敏电阻作为比较器的正输出, 比较电阻作为负输出, 如果光敏电阻输出信号Vl电压高于比较电阻, 那么就输出高电平, 如果低于可变电阻, 就输出低电平
为什么AO输出也要经过比较器
有些电路设计, 你会发现, 输出模拟信号也会接通一个比较器, 这个比较器的作用是用来增强信号的, 防止传递时的信号衰减, 相当于接力棒的作用, 同时也能隔绝输入和输出
有人会问, 为什么不用放大器, 而是用比较器, 为什么经过比较器的模拟信号并不会输出高电平或者低电平这么简单的信号, 答案很简单:
当你想问题时, 想得更本质就会找到答案
- 比较器其实是变化迅速的放大器, 当+电压高时, 输出Vcc, 当-高时输出Gnd
- 比较器并不是完全的0和1信号, 它只是变化十分迅速而已
-
如下图, 构成正反馈电路, 输出信号被+补正, 公式相当于
Vout += (Vin-Vout)/2
迅速逼近Vin