相信大家对LED这个器件并不陌生,LED的全称是LightEmitting Diode,即发光二极管。 但是,LED除了发光,其实也可以作为感光器件使用,很神奇吧,但这其实是二极管的一种通用特性——PN结可以根据光强度改变漏电流。 按照内部结构的不同,感光器件一般分为光敏电阻、光敏二极管、光敏三极管。大家最常见的就是光敏电阻了,但是光敏二极管和光敏三极管好像不是那么的常见。
光敏电阻 这是因为,这三者里面,光敏电阻最便宜,反应速度最慢。但是,因为探测光线多数不会有突变的情况,所以光敏电阻应用的也最广泛。 不过,如果是需要检测快速变化的亮度信号,一般就会使用光敏三极管或者光敏二极管了。而光敏电阻的反应时间一般在10ms左右,如果光信号的变化速度比光敏电阻的反应时间还要快,那么可能就检测不到有效的信号了。当然,这种应用场景并不是很多,一般场景使用光敏电阻就可以了。 但是光敏二极管的反应速度就不一样了,普遍在10ns这个级别左右。这里为什么要提反应速度这个事情呢?因为这是后面能让LED同时高频切换发光和感光的关键特性,如果没有这个高速反应特性,那么就有可能出现感光无法反应过来的问题,也就没法实现这种单LED同时感光和发光的有趣现象了。 首先,我们介绍一下LED在发光状态和感光状态的等效电路图。
普通的发光输出就是将两个IO直接设置为推挽输出,一个输出0(低电平),另一个输出PWM来控制亮度。
而这个感光电路就比较有意思了,首先是不改变发光二极管负极型IO的状态,直接将电平给1,同时将另一个IO的模式变成高阻输入,并且打开下拉电阻。 此时,在单片机内部形成了一个电压采样回路,R上的电压就是(流过LED的光电流xR的阻值)。使能ADC采样,即可采样到一个随着外部光线强度变化的ADC数值。 此时,LED的感光和发光都有了,高频切换两个功能,即可实现同时感光和发光。使用程序映射一下,就得到了一个随着外部光线亮度变弱,发光强度变强的小夜灯了!
|