zl程序教程

您现在的位置是:首页 >  其它

当前栏目

红外LED反向雪崩脉冲信号

信号 反向 LED 雪崩 红外 脉冲
2023-09-11 14:15:19 时间

 

01 LED反向雪崩信号


一、背景介绍

  在昨天搭建了红外LED反向雪崩信号整形电路, 初步测量了它对光电信号的检测性能。 下面利用单片机MEGA8对脉冲信号进行计数。 测试一下红外反向单光子雪崩器件测量光强的一些基本功能。
GM1673847769_1280_800.MPG|_-4

▲ 图1.1.1 单光子雪崩信号整形电路

▲ 图1.1.1 单光子雪崩信号整形电路

二、单片机程序

  通过对于记录雪崩脉冲信号计数MEGA8单片机编程,对其串口输出数据协议进行定义。 命令代码0x1,串口返回100ms之内的脉冲数量。 命令代码0x2,串口返回四个ADC转换数值;这个命令是用于后期辅助模拟量测量。 命令代码0x55,每隔0.5秒自动输出脉冲计数数值。
GM1673838690_1280_800.MPG|_-5

序号命令代码功能
1获取脉冲读数0x1串口返回在100ms之内的脉冲数量
2获取ADC数值0x2串口返回四个ADC的转换数值
3连续发送脉冲数量0x55串口连续反馈100ms之内的脉冲数量
/*
**==============================================================================
** main.c :             -- by Dr. ZhuoQing, 2007-3-31
**
**   This project is designed for the PumpCnt
**
**==============================================================================
*/

//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
void C_task main(void) {
    unsigned int nCount;
    unsigned char ucChar;        
    unsigned int nShowCount;
    unsigned char ucSendFlag;
    unsigned char i;
    
    //--------------------------------------------------------------------------
    Mega8Init();
    ControlInit();    
    //--------------------------------------------------------------------------
    
    //--------------------------------------------------------------------------
    nCount = 0;
    nShowCount = 0;
    TCNT1 = 0;
    ucSendFlag = 0x55;
        
    for(;;) {
        //----------------------------------------------------------------------
        if(++nCount & 0x80) LED_ON;
        else LED_OFF;
        
        WaitTime(1);
        //----------------------------------------------------------------------
        
        if(++nShowCount > 500) {
            nShowCount = 0;
            
            if(ucSendFlag == 0x55) {
                SendInt16(g_nCnt1);            
                SendChar('\r');
                SendChar('\n');
            }
        }
        
        if(ucSendFlag == 1) {
            ucSendFlag = 0;
            SendInt16(g_nCnt1);            
            SendChar('\r');
            SendChar('\n');
        }
        
        if(ucSendFlag == 2) {
            for(i = 0; i < 4; i ++) {
                ADC_CHANNEL(i);
                ADC_SAMPLE;
                ADC_CHANNEL(i);
                ADC_SAMPLE;
                SendInt16(ADC);            
                SendChar(' ');
            }
            SendChar('\r');
            SendChar('\n');
            ucSendFlag = 0;
        }
        
        //----------------------------------------------------------------------
        if(CAN_RECE) {
            ReceChar(&ucSendFlag);
            
        }
        
        //----------------------------------------------------------------------
    }
}

//==============================================================================
//             END OF THE FILE : main.c
//------------------------------------------------------------------------------

D:\zhuoqing\window\Atmel\test\2023\SPADCounter\main.c

三、测量结果

1、反向电压与脉冲

  将红外LED置于一个黑色纸盒内, 纸盒内部有黑色海绵吸收光线。 测量反向电压从39.5V变化到45V对应的雪崩脉冲数量。 这反应了脉冲数量与红外LED反向电压之间的关系。
GM1673840656_1280_800.MPG|_-4

▲ 测量LED在无光情况下反向偏置电压与脉冲个数之间的关系

▲ 测量LED在无光情况下反向偏置电压与脉冲个数之间的关系

  这里给出了测量结果, 可以看到在41V之前,雪崩脉冲数值非常小。 随着电压的增加,反向单光子雪崩脉冲信号持续增加。 由于黑盒子内无法做到完全没有光线,所以后面脉冲增加也可以看成LED传感器灵敏度增加的结果。
GM1673841235_1280_800.MPG|_-4

▲ 图1.3.2 无光下反向偏置电压与脉冲数量之间的关系

▲ 图1.3.2 无光下反向偏置电压与脉冲数量之间的关系

vdim=[39.50,39.56,39.61,39.67,39.72,39.78,39.83,39.89,39.94,40.00,40.06,40.11,40.17,40.22,40.28,40.33,40.39,40.44,40.50,40.56,40.61,40.67,40.72,40.78,40.83,40.89,40.94,41.00,41.06,41.11,41.17,41.22,41.28,41.33,41.39,41.44,41.50,41.56,41.61,41.67,41.72,41.78,41.83,41.89,41.94,42.00,42.06,42.11,42.17,42.22,42.28,42.33,42.39,42.44,42.50,42.56,42.61,42.67,42.72,42.78,42.83,42.89,42.94,43.00,43.06,43.11,43.17,43.22,43.28,43.33,43.39,43.44,43.50,43.56,43.61,43.67,43.72,43.78,43.83,43.89,43.94,44.00,44.06,44.11,44.17,44.22,44.28,44.33,44.39,44.44,44.50,44.56,44.61,44.67,44.72,44.78,44.83,44.89,44.94,45.00]
pdim=[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,2.00,2.00,2.00,2.00,2.00,6.00,16.00,12.00,18.00,24.00,26.00,30.00,34.00,44.00,44.00,48.00,81.00,41.00,79.00,70.00,71.00,98.00,94.00,119.00,98.00,132.00,125.00,139.00,181.00,166.00,199.00,228.00,228.00,252.00,275.00,280.00,354.00,323.00,411.00,422.00,458.00,574.00,527.00,686.00,678.00,866.00,1049.00,1167.00,1168.00,1498.00,1608.00,1684.00,1669.00,2122.00,2304.00,2242.00,2547.00,2678.00,2949.00,2937.00,2772.00,3446.00,3587.00,3395.00,3938.00,4311.00,4682.00,4955.00,5192.00,5514.00,5709.00,5837.00,6783.00,7374.00,7242.00,7811.00,7906.00,8631.00,9132.00,9086.00,9386.00,9851.00,10491.00,11170.00,11273.00,11768.00,11767.00,12169.00,12818.00,12835.00]
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY                     -- by Dr. ZhuoQing 2023-01-16
#
# Note:
#============================================================

from headm import *

import serial
from _ast import Or
from serial.serialutil import SerialException
from tsmodule.tsvisa        import *


#------------------------------------------------------------
sport = serial.Serial()
sport.baudrate = 115200
sport.timeout = 0.05
try:
    sport.port = 'COM1'
except:
    printf('Set sport port COM1 error. ')

try:
    sport.open()
except serial.serialutil.SerialException:
    printf('Open sport port COM1 error.')
else:
    printf('Open sport port COM1 Ok.')

sport.setDTR(False)
sport.setRTS(False)

#------------------------------------------------------------
sport.write(bytes((0x1,)))
sport.read(10)

def readPulse():
    sport.write(bytes((0x1,)))

    ret = ''
    for i in range(10):
        time.sleep(.01)
        ret = sport.read(10)
        if len(ret) > 0:
            break

    nstr = ret.decode('utf-8')

    return int(nstr)
#------------------------------------------------------------

vdim = linspace(39.5, 45, 100)
pdim = []

for v in vdim:
    dh1766volt(v)
    time.sleep(.5)

    r = readPulse()
    printff(v, r)
    pdim.append(r)

    tspsave('result', vdim=vdim, pdim=pdim)

dh1766volt(40)

plt.plot(vdim, pdim)

plt.xlabel("Voltage(V)")
plt.ylabel("Number")
plt.grid(True)
plt.tight_layout()
plt.show()
#------------------------------------------------------------
printf('\a')

#------------------------------------------------------------
#        END OF FILE : TEST1.PY
#============================================================

2、脉冲数与光线之间关系

  在黑色纸盒内固定一个红色LED, 使其与红外LED正对, 测量LED的电流与接收LED反向雪崩脉冲信号数量之间的关系。 测量仍然在无光黑色盒子内进行, 尽量避免外部光线的影响。 LED电流通过测量串联电阻上的电压获得。
GM1673842973_1280_800.MPG|_-6

▲ 图1.3.3 测量雪崩脉冲数量与光线之间的关系

▲ 图1.3.3 测量雪崩脉冲数量与光线之间的关系

  在博文 LED的电流与光强之间的关系 工作中测量了红色LED的光强与通过电流之间的关系, 在一定范围内大体上呈现线性关系。
GM1673843148_1280_800.MPG|_-2

dp1308open(108)
dp1308p6v(3)

R = 220
vdim = linspace(0.5, 5, 100)
idim = []
rdim = []

for v in vdim:
    dp1308p6v(v)
    time.sleep(1.5)
    meter = meterval()
    vr = meter[0]
    i = vr/R*1000                   # unit:mA

    idim.append(i)
    r = readPulse()
    rdim.append(r)

    printff(i, r)

    tspsave('currresult', idim=idim, rdim=rdim)

plt.plot(idim, rdim)

plt.xlabel("Current(mA)")
plt.ylabel("Number")
plt.grid(True)
plt.tight_layout()
plt.show()

  这是测量结果,可以看出整体上随着LED电流增加,光强增加,雪崩脉冲数量也增加。 在2mA之前,脉冲数量与LED电流之间大体呈现线性关系。 随着后面电流增加, 电流逐步趋向饱和状态。 猜测是强光下,雪崩脉冲之间会相互重叠,熄火电路会掩盖部分脉冲,使得脉冲计数下降。
GM1673844534_1280_800.MPG|_-5

▲ 图1.3.4 LED电流与雪崩脉冲之间的关系

▲ 图1.3.4 LED电流与雪崩脉冲之间的关系

idim=[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.03,0.05,0.10,0.18,0.27,0.39,0.51,0.65,0.79,0.94,1.09,1.25,1.41,1.57,1.74,1.90,2.08,2.25,2.42,2.59,2.77,2.95,3.12,3.31,3.48,3.67,3.85,4.03,4.21,4.40,4.49,4.77,4.95,5.14,5.33,5.51,5.70,5.88,6.07,6.26,6.45,6.64,6.83,7.02,7.21,7.40,7.59,7.78,7.97,8.17,8.36,8.55,8.74,8.93,9.13,9.32,9.52,9.71,9.90,10.10,10.29,10.49,10.68,10.88,11.07,11.26,11.46,11.66,11.85,12.05,12.24,12.44,12.63,12.83,13.03]
rdim=[6.00,7.00,8.00,5.00,9.00,8.00,7.00,6.00,6.00,2.00,5.00,6.00,8.00,4.00,7.00,5.00,7.00,10.00,3.00,6.00,3.00,7.00,9.00,13.00,16.00,28.00,69.00,145.00,337.00,542.00,844.00,1177.00,1529.00,1825.00,2196.00,2633.00,2931.00,3238.00,3543.00,3889.00,4265.00,4566.00,4904.00,5158.00,5335.00,5616.00,6020.00,6098.00,6449.00,6631.00,6816.00,7075.00,7180.00,7422.00,7630.00,7754.00,7857.00,8112.00,8200.00,8330.00,8597.00,8690.00,8840.00,8960.00,9027.00,9288.00,9349.00,9418.00,9457.00,9684.00,9680.00,9859.00,9954.00,9978.00,10086.00,10252.00,10357.00,10418.00,10512.00,10486.00,10624.00,10654.00,10717.00,10843.00,10878.00,10927.00,10958.00,11061.00,11081.00,11152.00,11180.00,11221.00,11368.00,11453.00,11468.00,11471.00,11485.00,11594.00,11686.00,11595.00]

▲ 图1.3.5  光强大的时候,脉冲检测器的性能下降

▲ 图1.3.5 光强大的时候,脉冲检测器的性能下降

四、光电池发光

  光电池是将光转变成电流的器件, 如果对其通过电流是否可以发光呢?下面使用上面红外LED器件测量光电池的发光。
GM1673847472_1280_800.MPG|_-2

  将光电池与红外LED放置在黑盒子里面。 调整红外LED方向,使其正对光电池表面。 将它们密封在黑色纸盒子里面。 增加红外LED偏置电压,增加它的灵敏度。 下面测试光电池导通电流与雪崩脉冲信号之间的关系,看是否光电池通过电流之后会发光。
GM1673847168_1280_800.MPG|_-5

▲ 图A1.4.1 测量光电池发光信号

▲ 图A1.4.1 测量光电池发光信号

  这是测量结果,可以看到随着光电池电流增加,红外LED反向雪崩脉冲信号也增加了。 它们之间大体呈现线性关系。 这说明光电池的确发光,而且光线强随着电流增加线性增加。 这个实验也证明了红外LED反向雪崩信号的确可以检测非常微弱的发光。
GM1673846632_1280_800.MPG|_-4

▲ 图1.4.1 测量光电池发光

▲ 图1.4.1 测量光电池发光

idim=[0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.11,0.12,0.14,0.16,0.18,0.20,0.23,0.26,0.29,0.32,0.36,0.40,0.45,0.51,0.57,0.64,0.72,0.81,0.91,1.03,1.16,1.32,1.50,1.70,1.93,2.19,2.47,2.78,3.12,3.48,3.86,4.27,4.53,5.13,5.59,6.06,6.55,7.04,7.54,8.06,8.58,9.11,9.66,10.20,10.76,11.31,11.87,12.43,13.01,13.58,14.15,14.74,15.32,15.90,16.48,17.07,17.67,18.26,18.86,19.47,20.06,20.67,21.26,21.87,22.48,23.09,23.71,24.32,24.93,25.54,26.16,26.77,27.39,28.01,28.63,29.24,29.87,30.48,31.10,31.73,32.35,32.98,33.59,34.22,34.84,35.47,36.10,36.73,37.36,37.98,38.61,39.24,39.87]
rdim=[137.00,135.00,170.00,170.00,126.00,169.00,169.00,147.00,168.00,154.00,162.00,180.00,184.00,185.00,154.00,152.00,165.00,202.00,167.00,182.00,144.00,198.00,185.00,178.00,195.00,151.00,159.00,188.00,227.00,153.00,158.00,165.00,176.00,164.00,209.00,131.00,209.00,182.00,198.00,191.00,240.00,202.00,231.00,229.00,285.00,283.00,324.00,262.00,315.00,244.00,305.00,295.00,378.00,351.00,340.00,449.00,437.00,437.00,430.00,499.00,395.00,429.00,428.00,480.00,490.00,473.00,528.00,591.00,559.00,569.00,608.00,606.00,545.00,647.00,674.00,724.00,648.00,761.00,706.00,682.00,681.00,744.00,818.00,789.00,831.00,734.00,818.00,887.00,874.00,842.00,862.00,981.00,994.00,997.00,958.00,1007.00,1068.00,1058.00,1020.00,1130.00]

 

  结 ※


  文测试了红外LED反向雪崩器件特性,】】可以看到它作为弱光检测的基本应用。
GM1673848560_1280_800.MPG|_-2

▲ 图2.1 测量光电池的发光现象

▲ 图2.1 测量光电池的发光现象


■ 相关文献链接:

● 相关图表链接: