搜索
bottom↓
回复: 36

LED感光检测又一方法

[复制链接]

出0入0汤圆

发表于 2009-6-19 13:10:26 | 显示全部楼层 |阅读模式
前些时,坛里发表了用LED感光的测试方法,就是利用给LED的结电容反向充电,再测试电荷放电的时间长短来判断无光照还是有光照。下面给出另一个方法:利用AVR的ADC,直接测量LED的光电效应。方法简单至极:用一个透明封装的LED:红绿均可,正极接ADC口,例如PC3,负极接地。然后进行ADC转换即可。程序没有特别之处。等一会上效果图。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2009-6-19 13:20:07 | 显示全部楼层
占位

出0入0汤圆

发表于 2009-6-19 13:27:15 | 显示全部楼层
哦?好东西哦

出0入0汤圆

 楼主| 发表于 2009-6-19 13:38:22 | 显示全部楼层

近窗荫处 (原文件名:led1.jpg)


节能灯照射 (原文件名:led2.jpg)



手指遮挡 (原文件名:led3.jpg)

出0入0汤圆

发表于 2009-6-19 13:44:22 | 显示全部楼层
不错....支持一下

出0入0汤圆

发表于 2009-6-19 15:37:08 | 显示全部楼层
占位.学习.

出0入0汤圆

发表于 2009-6-19 15:46:43 | 显示全部楼层
简单就是最好的
我早有此想法 而没试验

出0入0汤圆

发表于 2009-6-19 16:04:59 | 显示全部楼层
好东西,等会俺也试一下~

出0入0汤圆

发表于 2009-6-19 16:34:52 | 显示全部楼层
copy

出0入0汤圆

发表于 2009-6-19 16:47:42 | 显示全部楼层
等程序看看~早些时候也考虑过这个方法

出0入0汤圆

发表于 2009-6-19 17:18:18 | 显示全部楼层
这个方法确实简单实用,支持一下。

出0入0汤圆

发表于 2009-6-19 17:48:58 | 显示全部楼层
刚刚做了试验 以下是许许多多的数据之一:
00 00 FF FF 00 00 FF FF 00 00 FF FF 00 03 FF FF 00 02 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 04 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 07 FF FF 00 08 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 09 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 05 FF FF 00 09 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 0C FF FF 00 0B FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 0B FF FF 00 00 FF FF 00 00 FF FF 00 01 FF FF 00 02 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 02 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 10 FF FF 00 03 FF FF 00 00 FF FF 00 00 FF FF 00 01 FF FF 00 0D FF FF 00 03 FF FF 00 00 FF FF 00 00 FF FF 00 0D FF FF 00 0E FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 10 FF FF 00 0F FF FF 00 00 FF FF 00 00 FF FF 00 06 FF FF 00 0E FF FF 00 04 FF FF 00 00 FF FF 00 00 FF FF 00 06 FF FF 00 02 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 03 FF FF 00 02 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 03 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 09 FF FF 00 0B FF FF 00 00 FF FF 00 00 FF FF 00 01 FF FF 00 06 FF FF 00 04 FF FF

FF FF  是分界
03以下是 手不遮
06以上是 手遮

然后 中间有些00 00  以上是每隔1秒测一次的数

出0入0汤圆

发表于 2009-6-19 17:55:25 | 显示全部楼层
又做一次 100ms测一次 因为室内 光线 太暗了 (当前时间是17:53 天又下雨 )
前一半是手不遮
后一半是手遮
可以看出来 后半偶有出现大于5 的 前面偶有小于4 的
00 01 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 01 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 01 FF FF 00 02 FF FF 00 00 FF FF 00 00 FF FF 00 02 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 01 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 03 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 04 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 01 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 01 FF FF 00 02 FF FF 00 00 FF FF 00 00 FF FF 00 02 FF FF 00 06 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 01 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 04 FF FF 00 02 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 04 FF FF 00 02 FF FF 00 00 FF FF 00 00 FF FF 00 02 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 01 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 03 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 01 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 02 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 04 FF FF 00 02 FF FF 00 00 FF FF 00 00 FF FF 00 02 FF FF 00 03 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 02 FF FF 00 02 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 03 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 01 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 04 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 01 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 01 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 05 FF FF 00 02 FF FF 00 00 FF FF 00 00 FF FF 00 02 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 01 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 03 FF FF 00 02 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 02 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 02 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 02 FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 05 FF FF 00 08 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 0C FF FF 00 07 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 09 FF FF 00 04 FF FF 00 00 FF FF 00 00 FF FF 00 03 FF FF 00 09 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 0C FF FF 00 0C FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 10 FF FF 00 07 FF FF 00 00 FF FF 00 00 FF FF 00 01 FF FF 00 0C FF FF 00 02 FF FF 00 00 FF FF 00 00 FF FF 00 07 FF FF 00 0C FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 09 FF FF 00 0E FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 0F FF FF 00 08 FF FF 00 00 FF FF 00 00 FF FF 00 02 FF FF 00 09 FF FF 00 03 FF FF 00 00 FF FF 00 00 FF FF 00 03 FF FF 00 09 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 09 FF FF 00 0C FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 0F FF FF 00 07 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 0C FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 03 FF FF 00 0A FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 09 FF FF 00 0C FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 0F FF FF 00 0C FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 0B FF FF 00 04 FF FF 00 00 FF FF 00 00 FF FF 00 01 FF FF 00 0C FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 07 FF FF 00 0A FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 0A FF FF 00 0C FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 0B FF FF 00 05 FF FF 00 00 FF FF 00 00 FF FF 00 01 FF FF 00 0A FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 0A FF FF 00 0C FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 09 FF FF 00 04 FF FF 00 00 FF FF 00 00 FF FF 00 02 FF FF 00 09 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 0C FF FF 00 09 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 0A FF FF 00 0B FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 0C FF FF 00 06 FF FF 00 00 FF FF 00 00 FF FF 00 02 FF FF 00 0C FF FF 00 01 FF FF 00 00 FF FF 00 00 FF FF 00 03 FF FF 00 09 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 0C FF FF 00 0C FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF 00 0E FF FF 00 06 FF FF 00 00 FF FF 00 00 FF FF 00 00 FF FF

出0入0汤圆

发表于 2009-6-19 18:02:29 | 显示全部楼层
太乱了...建议按数值大小显示不同颜色..哈哈..

出0入0汤圆

发表于 2009-6-19 21:35:42 | 显示全部楼层
学习!

出0入0汤圆

发表于 2009-6-22 13:50:32 | 显示全部楼层
临时搭了一个,大概0.xS测一次,使用串口助手查看。
拿灯照着大概800+。
平常400到800左右不固定。
拿手捂了一会,怎么会出现800+和0交替出现呢?(AD采样不对?二极管特性?)

一下是俺的程序:
//===========================================================
/*
//By: SlowHand
*/
#include "iom16v.h"
#include <macros.h>

#define AD_FLAG (1 << ADIF)
#define AD_SC (1 << ADSC)
#define AD_EN (1 << ADEN)

void UartInit(void){
        UCSRB = 0x00;                                                 //Close usart
        UCSRA = 0x02;                                                //Document page151
        UCSRC = 0x06;                                                //Write UCSRC,set 8 bit
        UBRRH = 0x00;
        UBRRL = 0x0C;                                                      //BAUD 9600(1M->0C;6M->4D)
        UCSRB = 0x98;                                                //open usart ,enable transmit and receive
}

void SetUpPort(void){
        DDRA = 0x00;//(0->input; 1->output)
        PORTA = 0x00;//low voltage
        DDRB = 0xFF;//output
        PORTB = 0xFF;//high
        DDRC = 0xFF;
        PORTC = 0xFF;
        DDRD = 0xFF;
        PORTD = 0xFF;
}

unsigned int GetAD(void) {

        unsigned int tmp_AD;

        ADMUX = 0xC6;        // 1100 0xxx AREF(INNER); align(right); AD port(6)
        ADCSRA = 0xC4;        // 1100 0100 frequency( 1M / 16 = 62.5K )       

        while(!(ADCSRA & AD_FLAG)) _NOP();                        //Wait for AD ready flag set(when ADIF Bit = 0)
        for(tmp_AD=0x20; tmp_AD; tmp_AD--) _NOP();        //Delay time
        tmp_AD = ADC;
       
        ADCSRA &= ~AD_FLAG;        //clear flag(set ADIF Bit = 1)
        ADCSRA &= ~AD_SC;        //Close A-D convert

        return tmp_AD;
}

void Uart_Transmit(unsigned char i) {

        while (!(UCSRA & (1<<UDRE)));//wait till null
        UDR = i;//send data
}

void main(void){

        unsigned int i;
        char str[8];

        SetUpPort();       
        UartInit();
       
        while(1){
                for(i=0; i<0xFFFF; i++){ _NOP(); }
                Uart_Transmit( 'A' );
                Uart_Transmit( 'D' );
                Uart_Transmit( ':' );
                itoa( str, GetAD(), 10 );
                for(i=0; i<8; i++){
                        if( str == '\0' ) break;
                        Uart_Transmit( str );
                }
                Uart_Transmit( '\n' );
        }
}

出0入0汤圆

发表于 2009-6-22 14:20:54 | 显示全部楼层
顶下

出0入0汤圆

发表于 2009-6-22 15:23:22 | 显示全部楼层
记号,有时间试试

出0入0汤圆

发表于 2009-6-22 16:30:44 | 显示全部楼层
建议lz用坛子里串口示波器

出0入0汤圆

 楼主| 发表于 2009-6-22 22:28:34 | 显示全部楼层
如果把led反向接,效果有不同了,透明封装红色管:负极接ADC,正极接地,不强的光照:000,遮光:50以上,用黑色笔套全遮住达到200以上

出0入0汤圆

发表于 2009-6-23 00:39:17 | 显示全部楼层
新手看不懂只能好奇

出0入0汤圆

发表于 2009-6-23 05:22:13 | 显示全部楼层
【19楼】 AAVVRR  如果把led反向接
-----正向反向我都试验了 唯没有透明封装的 用3mm的红发红的

出0入0汤圆

发表于 2009-6-23 08:22:02 | 显示全部楼层
透明白光LED,反接。
大概0.5S连续采8次,貌似还是不行。
(在VTG,ADC,GND之间串可调电阻实验,数值稳定。)

前半段有光,后半段拿手捂住。

俺还是去找点计算放电时间的例子试试了。

出0入0汤圆

发表于 2009-6-23 08:56:40 | 显示全部楼层
有时间试试

出0入0汤圆

 楼主| 发表于 2009-6-23 09:30:51 | 显示全部楼层
【21楼】 zhwm3064 沉伦蜗牛
一定要透明封装的,有色封装恐怕不行
【22楼】 slowhand
这个东西好像反应较慢,我现在2Mz主频,1024分频t/c0中断时间131毫秒,按照8次中断转换一次也就要1秒多,可是发现遮挡时要几秒钟读数才能稳定下来,还是转换间隔太长?是不是lcd结电容没有放电回路的关系,不过无论如何,变化还是明显的

出0入0汤圆

 楼主| 发表于 2009-6-23 09:54:52 | 显示全部楼层
以下使用透明封装红色高亮lcd试验:
位置:朝北的飘窗,普通绿玻璃,2/3窗帘遮住,阴天上午10点,电脑桌距离窗子1米,led负极接m8的PC3,正极接地:
几次试验如下图:

完全无遮挡 (原文件名:led11.jpg)


手指遮住LED顶部 (原文件名:led12.jpg)


用黑色塑料笔套把LED罩住 (原文件名:led13.jpg)

出0入0汤圆

发表于 2009-6-23 10:16:21 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-6-23 12:05:43 | 显示全部楼层
俺这里测的数据浮动太大且毫无规律(总体上捂住和没捂住还是有点区别的)。

有几个疑问。(俺硬件很菜)
LED是直接连引脚和地吗?(没有串电阻什么的吧,俺看到另一种测时间的方法串电阻了)
每次AD转换之前,AD口不用先作为输出口置高或置低吧?

俺翻了几个老帖子,用IO口检测时间的方法成功了。
用手捂住竟然得好几秒~囧。

出0入0汤圆

 楼主| 发表于 2009-6-23 12:27:10 | 显示全部楼层
没有串任何电阻,就是直接并在adc和地。没有在转换前置高置低ad口,就是到时间就转换。还有我用arduino程序也做过试验,转换结果通过串口直接上电脑,波动是有,不是特别大。老办法是测量led反向充电后,在不带上拉的输入口放电,有光照很快放电,无光照,放电时间变长,可以作为触摸按钮。这个试过的,就是程序麻烦点。led占用2个口。和这个不一样

出0入0汤圆

发表于 2010-4-2 23:17:41 | 显示全部楼层
顶一顶。。。。

出0入0汤圆

发表于 2010-4-3 00:19:25 | 显示全部楼层
測adc是可行的 不過ad採樣阻抗得比較高
用m8等avr應該可以
但是試過用stm32
貌似不行  呵呵

出0入0汤圆

发表于 2010-4-18 22:02:07 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-18 22:10:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2015-10-12 16:43:21 | 显示全部楼层
吓得我赶紧把64G SSD的数据复制到HDD备份一下

出0入0汤圆

发表于 2015-10-12 21:16:48 | 显示全部楼层
little_Monkey 发表于 2015-10-12 16:43
吓得我赶紧把64G SSD的数据复制到HDD备份一下

不是吧,有什么关系?

出0入0汤圆

发表于 2015-10-12 21:29:31 | 显示全部楼层
qingyin2009 发表于 2015-10-12 21:16
不是吧,有什么关系?

额,回错主题了

出0入0汤圆

发表于 2015-10-12 21:45:55 | 显示全部楼层

回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 12:36

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表