反射式红外光电管 ITR8307

简 介: 测了了ITR8307的基本特性,包括它的静态、动态特性等。并通过测量独轮车惯量轮转速展示了它的应用。

关键词: ITR8307,反射式光电管

image-20240704153157790

§01 反射式光电管

ITR8307 是一款集成有红外发射管与接收三极管的光电管。在 TB ITR8307 可以购买到SOP-4封装的小型光电管。

一、基本信息

反射式光电开关 ITR8307 是一款集红外发射管与红外接收管于一体的光电开关,当有被检测到物体经过的时候,物体将光电开关发射端发射的信号反射到接收端,于是光电开关就产生开关型号。

▲ 图1.1 基本封装

▲ 图1.1 基本封装
  在 ITR8307/S18/TR8反射式光电开关传感器感应距离测距1mm贴片SOP-4 给出了SOP-4封装下的引脚功能分布。

▲ 图1.2 SOP-4封装管脚功能图

▲ 图1.2 SOP-4封装管脚功能图
  在 ITR8307光耦反射式非接触 传感器,有人将该传感器制作成通用的检测模块。 原装亿光ITR8307/S17/TR8(B)贴片反射式光电开关红外线光电传感器 给出的价格只有RMB0.37。

▲ 图1.3 ITR8307实际管教分布

▲ 图1.3 ITR8307实际管教分布

二、特性测试

1、静态特性

使用万用表(DM3068)二极管档,测量 PIN2-1:前向导通电压。PIN2+, PIN1-。

红外发光二极管测量结果:
电流: 1mA
电压:1.077V
  测量PIN3,4之间的电阻,可以验证三极管两个方向电阻不一样。并且随着手遮挡光电管上面的光线,PIN3,4之间的电阻会变大。

光电三极管测量结果:
PIN3+,PIN4-:0.577MΩ
PIN3-,PIN4+:∞

2、引线封装
▲ 图1.2.1 引出光电管管脚

▲ 图1.2.1 引出光电管管脚
  引出的PIN4引线(100mil)的管脚定义与ITR8307的管脚 ① ~ ④ 一致。

3、测试电路

在面包板上搭建如下的测试电路。工作电压为+5V。

电路测量:
V2:1.193V
V3:4.98V

▲ 图1.2.2 测试电路原理图

▲ 图1.2.2 测试电路原理图
  手持反射式光电管对准白纸,可以看到V3的变化不大。

4、不同R2

为了提高输出电压的灵敏度,提高R2可以增加输出电压的灵敏度。这同时也会使得环境光线对于光电管的影响。

(1) 光电管平行放置

将光电管平行放置,此时光电管周围并没有反射物体。

使用变阻箱,改变R2阻值:100k ~ 1M对应的V3电压的变化。

【表1-4-1 光电管平行放置,对应不同Rc时V3电压值】

R(100k)1 R(100k)2 R(100k)3 R(100k)4 R(100k)5 R(100k)6 R(100k)7 R(100k)8 R(100k)9 R(100k)10
4.661900 4.357700 4.064400 3.779500 3.504000 3.234400 2.972500 2.715700 2.463400 2.228700
(2) 光电管垂直放置

设置R2=500kΩ,移动光电管,由于实验桌上面的台灯亮度不同,会引起V3电压的变化。

▲ 图1.4.1 光电管不同位置引起电位变化

▲ 图1.4.1 光电管不同位置引起电位变化
三、距离对于输出电压影响
  利用 单轴步进驱动模块SH-20403 控制单轨步进滑轨带动光电管移动,测量距离白纸之间的距离与V3电压之间的关系。

▲ 图1.3.1 使用步进电轨带动光电管

▲ 图1.3.1 使用步进电轨带动光电管

1、实验1

实验条件:
步长Step:200
步数:100
R2电阻:500kΩ
R1电阻:330Ω
移动距离:20mm
  测量数据如下:

▲ 图1.4.1 不同步数下的输出电压

▲ 图1.4.1 不同步数下的输出电压
  观察测量数据,可以看到, 在步数小于55(约11mm距离)之前,输出电压都是很低;当步数大于55之后,V3电压呈现快速上升趋势;

在V3上升过程中,电压出现了比较明显的波动现象。具体原因不详。

2、实验2

实验条件:
移动步长:500
移动步数:100
  R1,R2的数值与实验1相同。测量结果如下:

▲ 图1.2.2 不同移动步数下输出电压

▲ 图1.2.2 不同移动步数下输出电压
3、实验3
  减少R2的阻值,降低到 200kΩ,重新测量移动距离与输出电压之间的关系。

实验条件:
移动步长:200
移动步数:100
R2阻值:200kΩ
R1阻值:330Ω

▲ 图1.2.3 不同移动步数下输出电压变化

▲ 图1.2.3 不同移动步数下输出电压变化
  可以看到随着R2的增加,输出电压信号相比实验1有了以下变化:

输出电压拐点缩小了,大约35部(越7mm距离);
电压没有了波动线性,非常平滑了。
4、实验4
实验条件:
移动步长:200
移动步数:100
R2阻值:900kΩ

▲ 图1.2.4 不同步数下输出电压

▲ 图1.2.4 不同步数下输出电压
  可以看到随着R2的增加,输出电压的拐点增加到了75步(大约距离15mm)。

from headm import *
import lscm8
from tsmodule.tsstm32       import *
'''

lscm8.lscm8mf(20000)
exit()
'''
vdim = []
step = 200

for i in range(100):
    lscm8.lscm8mb(step)
    time.sleep(2)
    meter = meterval()
    printff(i, meter[1])

    vdim.append(meter[1])

    tspsave('measure', vdim=vdim)

plt.plot(vdim)
plt.xlabel("Step")
plt.ylabel("Voltage(V)")
plt.grid(True)
plt.tight_layout()
plt.show()

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# LSCM8.PY                     -- by Dr. ZhuoQing 2020-01-14
#
# Note:
#============================================================
from head import *
import serial
#------------------------------------------------------------
cmdportdef = 'COM2'
cmdport = serial.Serial(cmdportdef, baudrate=115200, timeout=0.1)
cmdport.setDTR(False)
#cmdport.setRTS(False)
printf("Open %s for LSCM8."%cmdportdef)
#------------------------------------------------------------
COMMAND_FRAME_HEAD		= 0x56
COMMAND_FRAME_TAIL		= 0x65
COMMAND_STATUS_WAIT		= 0x0
COMMAND_STATUS_COMMAND	        = 0x1
COMMAND_STATUS_LENGTH	        = 0x2
COMMAND_STATUS_DATA		= 0x3
COMMAND_STATUS_CHECK	        = 0x4
COMMAND_STATUS_TAIL		= 0x5
#------------------------------------------------------------
COMMAND_HELLO_ECHO		= 0x20
COMMAND_BEEP_ON			= 0x21
COMMAND_BEEP_OFF		= 0x22
COMMAND_DIR_ON			= 0x23
COMMAND_DIR_OFF			= 0x24
COMMAND_REL_ON			= 0x25
COMMAND_REL_OFF			= 0x26
COMMAND_PUL_SET			= 0x27
COMMAND_PUL_STOP		= 0x28
COMMAND_GOTO_HEAD		= 0x29
COMMAND_GOTO_TAIL		= 0x2A
COMMAND_GET_STATE		= 0x2B
COMMAND_GET_PULSEOUT	        = 0x2C
COMMAND_CLEAR_PULSEOUT	        = 0x2D
#------------------------------------------------------------
def lscm8cmd(cmd, cmddata):
    checksum = cmd + len(cmddata)
    for cd in cmddata:
        checksum = checksum + cd
    checksum = (checksum & 0xff) ^ 0xff
    cmdstr = b'' + byte(COMMAND_FRAME_HEAD) + byte(cmd) + byte(len(cmddata)) +\
             cmddata + byte(checksum) + byte(COMMAND_FRAME_TAIL)
#    printf(cmdstr)
    cmdport.write(cmdstr)
def lscm8hello():
    lscm8cmd(COMMAND_HELLO_ECHO, b'')
def lscm8beepon():
    lscm8cmd(COMMAND_BEEP_ON, b'')
def lscm8beepoff():
    lscm8cmd(COMMAND_BEEP_OFF, b'')
#------------------------------------------------------------
def lscm8relon(bits):
    cmd = bits.to_bytes(1, byteorder='big')
    lscm8cmd(COMMAND_REL_ON, cmd)
#------------------------------------------------------------
# bits:0:relay0, 1:relay1
def lscm8reloff(bits):
    cmd = bits.to_bytes(1, byteorder='big')
    lscm8cmd(COMMAND_REL_OFF, cmd)
def lscm8diron(bits):
    cmd = bits.to_bytes(1, byteorder='big')
    lscm8cmd(COMMAND_DIR_ON, cmd)
def lscm8diroff(bits):
    cmd = bits.to_bytes(1, byteorder='big')
    lscm8cmd(COMMAND_DIR_OFF, cmd)
#------------------------------------------------------------
def lscm8setpulse(bits, pulse):
    cmd = bits.to_bytes(1, byteorder='big') +\
          pulse.to_bytes(4, byteorder='big')
    lscm8cmd(COMMAND_PUL_SET, cmd)
def lscm8stoppulse():
    lscm8cmd(COMMAND_PUL_STOP, b'')
def lscm8gotohead():
    lscm8cmd(COMMAND_GOTO_HEAD, b'')
def lscm8gototail():
    lscm8cmd(COMMAND_GOTO_TAIL, b'')
def lscm8clearpulseout():
    lscm8cmd(COMMAND_CLEAR_PULSEOUT, b'')
def lscm8mf(steps):
    lscm8diron(3)
    lscm8reloff(3)
    lscm8setpulse(3, steps)
def lscm8mb(steps):
    lscm8diroff(3)
    lscm8reloff(3)
    lscm8setpulse(3, steps)
#------------------------------------------------------------
if __name__ == "__main__":
    time.sleep(.5)
    if len(sys.argv) > 1:
        step = int(sys.argv[1])
        if step > 0:
            lscm8mf(step)
        else: lscm8mb(-step)
    else:
        lscm8mb(1000)
    tspbeep(1500, 100)
    printf('End of the command')
#------------------------------------------------------------
#        END OF FILE : LSCM8.PY
#============================================================

§02 应用测试

一、测试独轮车转速

独轮车也许是下一届 智能车竞赛 的车模。下面使用反射式的宫外光电管测量它在自载电池作用下的转速。

车载电池为两节1.5V干电池。为了能够使用反射式的光电管测量转速,使用记号笔在惯量轮上涂抹一段1.5cm的黑色标记。

▲ 图2.1.0 使用反射式光电管测量独轮车惯量轮的转速

▲ 图2.1.0 使用反射式光电管测量独轮车惯量轮的转速

1、测试结果

测量条件:
R2阻值: 50kΩ

▲ 图2.1.1 测了V3波形

▲ 图2.1.1 测了V3波形
  测量得到:脉冲的频率: 80.91Hz,这也反映了惯量轮的转速为80转/秒。

通过波形,也可以看到在50kΩ Rc 下,光电管的频率响应大约是1kHz。

▲ 图2.2.2  独轮车在行进

▲ 图2.2.2 独轮车在行进

▲ 图2.2.3  独轮车运行

▲ 图2.2.3 独轮车运行

二、测量频率响应

改变反射式桑外光电二极管的电压,测量输出波形。

1、测量结果

R2的阻值: 50k欧姆。

▲ 图2.2.2 在方波驱动下的输出波形

▲ 图2.2.2 在方波驱动下的输出波形
R2的阻值: 100kΩ。

▲ 图2.2.3 在方波驱动下的输出波形

▲ 图2.2.3 在方波驱动下的输出波形
R2的阻值: 10kΩ

▲ 图2.2.4 在方波驱动下的输出波形

▲ 图2.2.4 在方波驱动下的输出波形

§测量结论

ITR8307是一款反射式的光电管。可以用于近距离的反射物运动测量。测量距离通过不同的Rc 可以在5mm - 15mm左右
————————————————

赞赏