简 介: 通过实验给出了对于激光管信号调整发送与接受检测的方案。验证了这种方案在可靠发送和接收的距离。通过检测100Hz出得信号频谱,可以有效获得信号中调制信号的信息。在 SP-1CL3 陶瓷接收管 光电接收二极管 红外线接收管 中测试了使用SP-1CL3进行光电转换的方案,可以满足检测需要。

关键词室内AI组激光信号调制检测目标靶标智能车竞赛

01 智慧AI组激光信号


1.激光信号检测

(1)检测要求

在第十六届 全国大学生智能车竞赛 中部包括一组 第十六届全国大学生智能车竞赛竞速组-室内视觉组补充说明 。要求运行的车模不仅可以通过视觉检测到目标,而且能够对于目标的方位进行估计。通过可以准直的激光发送器来对于目标进行发送,从而检测车模对于目标检测的精度以及运动控制精度的检测。

根据题目要求,则需要需要对于车模上透射的激光发送信号进行检测,来检测是否车模的激光投影对准了路旁的图案标尺。

对于检测的要求如下图所示。需要检测目标中心是否有激光信号。同时在目标四周也布置有检测器,来检测发送的激光光斑是否打偏。

▲ 目标检测点示意图

如果仅仅有中心检测传感器获得信号,而四周的传感器没有检测到光斑,则认为此次任务完成。否则,则认为激光打偏,没有完成任务。

(2)检测方案

对于激光信号的检测的方案之一,就是在检测点处安放光电管,对于发送过来的激光信号进行检测。

a)检测传感器

为了不是的检测光电管对于目标图片造成更大的干扰,所以要求检测光电管横截面积要小下面是两款响应速度比较快的光电管:

  • 全新进口原装 BPW34 直插 DIP-2 硅光电池二极管
  • 【MT】BPW34 硅光电池 光电二极管 DIP2 直插 3*3
b)发送激光器件

发送的激光器需要能够将透射的光斑直径进行调整的半导体激光器。发送的光盘大小保持在直径5厘米左右。这样一方面可以提高对于目标中心击中的冗余角度误差,同时也防止干扰的目标四周传感器。

c)信号调制与检测解调方案

,在比赛场地,会有各种光源的光线对于检测到的光电管有干扰,为了区分激光信号,因此要求对于激光信号进行调制,将信号搬移到一个高频信号频段,然后进行选频放大,之后在进行窄带信号检测。

2.激光信号调制

(1)激光器

下面的 红色激光管 发送点光源。在博文 使用BH1750测量激光发射器的强度 证明了该激光管在2.25V之上,便可以发出恒定的光强。通过拆解可以看到其中具有恒流保护电路。 经过猜测,恒流控制可能是由 TM1810-3, TM1810-2 LED恒流驱动IC 来提供的。

▲ 激光管

(2)控制器

使用 ESP32 模块,利用MicroPython编程来控制前面激光管的开关。

▲ ESP32模块上的PIN22(对应板上BLUE LED)闪烁

a)输出控制

可以在所有的IO口上实现PWM输出,从而可以控制激光管的输出。

b)ADC输入

根据 Quick reference for the ESP32 — MicroPython 1.14 documentation 可以知道,ESP32可以通过PIN32-39来读取对应外部的12-bit的信号。下面的模块管脚定义可以看到其中只有死路(32,33,34,35)出现在模块上。

▲ ESP32外部管脚定义

  • 读取ADC测试代码:
from machine import ADCadc = ADC(Pin(32))          # create ADC object on ADC pin
adc.read()                  # read value, 0-4095 across voltage range 0.0v - 1.0vadc.atten(ADC.ATTN_11DB)    # set 11dB input attenuation (voltage range roughly 0.0v - 3.6v)
adc.width(ADC.WIDTH_9BIT)   # set 9 bit return values (returned range 0-511)
adc.read()                  # read value using the newly configured attenuation and width

(3)驱动激光管

使用NPN晶体管9018来驱动激光管。

▲ 小型高频三极管

▲ 通过9018驱动激光管闪烁

02 激光的调制性能测量


根据前面给出的激光管的驱动方案,下面测量一下该激光器的调制后发送光强的性能。

1.测量光强信号

使用 SP-45ML光电二极管 来测量光强信号。通过 SP-45ML光电二极管放大电路及其动态特性 实验,可以验证,SP-48ML光电管的频率响应大于25kHz。因此可以使用该传感器反过来测量激光管的调制光强信号。

根据 SP-45ML光电二极管放大电路设计 知道对应的SP-45ML测光模块外部4PIN的接口电路功能定义为:

PIN1(白点) PIN2 PIN3 PIN4
+5V GND GND OUT

▲ 激光发射管与SP-45ML光强接收光线

2.测量调试光强

使用ESP32产生500Hz,DUTY=50%的方波。

from machine                import Pin,PWM
import time
pwm12 = PWM(Pin(22))
pwm12.freq(500)
pwm12.duty(512)
while True:pass

测量三极管驱动电压(蓝色)以及光强信号(青色)如下图所示:

▲ 三极管驱动电压以及光强信号

输出光强检测,出现信号占空比大于50% ,这可能是由于接收光强太大。通过在接收头前增加一定厚度的白纸作为光强衰减,进而改善SP-45ML光强传感器饱和特性。

下面是在SP-45ML光线前增加一个白色胶带之后,SP-45ML输出的检测电压信号。可以看到笑出了SP-45ML内部放大电路饱和所带来的影响。

▲ 三极管驱动电压计光强信号

将驱动信号的频率提高到1kHz,下面是测量所得到的辛苦。

▲ 三极管驱动电压以及SP-45ML光强输出信号

下面是对应调制频率为10kHz下,的三极管C极电压信号与SP-45ML光强输出信号。

▲ 三极管驱动电压以及SP-45ML光强输出信号

3.拉开距离测量

将发射激光管前面的聚光透镜调整在散焦的情况。将SP-45ML接收光线距离激光发送管60厘米左右。此时激光斑点扩大到5厘米左右。下图显示了接收在调制1kHz下,接收信号波形。接收到的信号输出幅值已经降低到200mV左右。

▲ 三极管驱动电压以及SP-45ML光强输出信号

根据 SP-45ML模块放大电路 的参数可以看到,此时激光管对于SP-45ML的影响,降低到大约20微安的电流。

4.入射光的角度

在SP-45ML测量模块中,使用了 超亮黑皮塑料导光光纤 尾部端点引发光传递光钎 光导纤维线光纤灯 将外部光线引入黑色密封盒内。如果入射光与光导纤维有一定的夹角,会影响接收光的强度。利用这种特性可以将环境光的影响降低到一定程度。

▲ 导光光纤

改变SP-45ML导光纤维与直射激光之间的夹角,影响接收信号的输出的幅值。所以使用

▲ 改变SP-45ML导光纤维与直射激光之间的夹角,影响接收信号的输出的幅值

03 信号采集


1.采集数据代码

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TESTADC.PY                   -- by Dr. ZhuoQing 2021-04-01
#
# Note:
#============================================================from head import *from machine                import ADC,Timer,Pin,PWM
from time                   import sleep_msled = Pin(22, Pin.OUT)pwm = PWM(Pin(19))
pwm.freq(100)
pwm.duty(512)adc = ADC(Pin(32))#------------------------------------------------------------
SAMPLE_LEN = const(1024)sampledata = [0]*SAMPLE_LEN
samplecount = 0
ledstatus = 0#------------------------------------------------------------
ledstatus = 0
def timercall(t):global sampledata, samplecountglobal ledstatus, adcif samplecount < SAMPLE_LEN:sampledata[samplecount] = adc.read()samplecount += 1else:if ledstatus == 0:ledstatus = 1led.on()else:ledstatus = 0led.off()#------------------------------------------------------------
print('Begin Sample.')#------------------------------------------------------------
timer0 = Timer(0)
timer0.init(period = 1, mode=Timer.PERIODIC, callback=timercall)#------------------------------------------------------------
while True:if samplecount >= SAMPLE_LEN:print(sampledata)breakwhile True:pass#------------------------------------------------------------
#        END OF FILE : TESTADC.PY
#============================================================

2.采集到的波形

▲ 发送波形与接受的波形

(1)采集参数

采集参数:
采集频率:1000Hz
发送频率:100Hz
采集时间长度:1024

(2)采集数据

▲ 采集到的频率

▲ 采集到的数据

▲ 采集数据的FFT

(3)没有激光照射背景信号

▲ 采集数据的FFT

▲ 采集数据的FFT

3.远距离信号

将发射激光与接收管之间的距离相距65厘米。接收到的信号波形为:

▲ 采集到的信号波形

▲ 采集到的数据波形

▲ 接收到的数据FFT

▲ 采集到的波形

▲ 采集到的数据FFT

▌实验结论 ▌


通过实验给出了对于激光管信号调整发送与接受检测的方案。验证了这种方案在可靠发送和接收的距离。通过检测100Hz出得信号频谱,可以有效获得信号中调制信号的信息。

SP-1CL3 陶瓷接收管 光电接收二极管 红外线接收管 中测试了使用SP-1CL3进行光电转换的方案,可以满足检测需要。

▌附件


1.ESP32程序

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TESTADC.PY                   -- by Dr. ZhuoQing 2021-04-01
#
# Note:
#============================================================from head import *from machine                import ADC,Timer,Pin,PWM
from time                   import sleep_msled = Pin(22, Pin.OUT)pwm = PWM(Pin(19))
pwm.freq(100)
pwm.duty(512)adc = ADC(Pin(32))#------------------------------------------------------------
SAMPLE_LEN = const(1024)sampledata = [0]*SAMPLE_LEN
samplecount = 0
ledstatus = 0#------------------------------------------------------------
ledstatus = 0
def timercall(t):global sampledata, samplecountglobal ledstatus, adcif samplecount < SAMPLE_LEN:sampledata[samplecount] = adc.read()samplecount += 1else:if ledstatus == 0:ledstatus = 1led.on()else:ledstatus = 0led.off()#------------------------------------------------------------
print('Begin Sample.')#------------------------------------------------------------
timer0 = Timer(0)
timer0.init(period = 1, mode=Timer.PERIODIC, callback=timercall)#------------------------------------------------------------
while True:if samplecount >= SAMPLE_LEN:print(sampledata)breakwhile True:pass#------------------------------------------------------------
#        END OF FILE : TESTADC.PY
#============================================================

2.采集数据

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# DRAW1.PY                     -- by Dr. ZhuoQing 2021-04-01
#
# Note:
#============================================================from headm import *def thonnycmd(cmd):tspsendwindowkey('Thonny', 's', alt=1)tspsendwindowkey('Thonny', '%s'%cmd)
tspsendwindowkey('Thonny', 's', alt=1)
tspsendwindowkey('Thonny', 'ac', control=1)
pastestr = clipboard.paste()curve = [float(s) for s in pastestr.split('[')[-1].split(']')[0].split(',')]
printf(curve)plt.plot(curve)
plt.xlabel("n")
plt.ylabel("Sample")
plt.grid(True)
plt.tight_layout()
plt.show()#------------------------------------------------------------
#        END OF FILE : DRAW1.PY
#============================================================

3.计算信号频谱

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TESTFFT.PY                     -- by Dr. ZhuoQing 2021-04-01
#
# Note:
#============================================================from headm import *def thonnycmd(cmd):tspsendwindowkey('Thonny', 's', alt=1)tspsendwindowkey('Thonny', '%s'%cmd)
tspsendwindowkey('Thonny', 's', alt=1)
tspsendwindowkey('Thonny', 'ac', control=1)
pastestr = clipboard.paste()curve = [float(s) for s in pastestr.split('[')[-1].split(']')[0].split(',')]fftdata = fft.fft(curve)plt.plot(abs(fftdata[1:]))
plt.xlabel("n")
plt.ylabel("FFT")
plt.grid(True)
plt.tight_layout()
plt.show()#------------------------------------------------------------
#        END OF FILE : TESTFFT.PY
#============================================================

■ 相关文献链接:

  • 智能车竞赛相关的教高司公函:公函[2005]201号文、教高司[2005]13号
  • 第十六届全国大学生智能车竞赛竞速组-室内视觉组补充说明
  • 全新进口原装 BPW34 直插 DIP-2 硅光电池二极管
  • 【MT】BPW34 硅光电池 光电二极管 DIP2 直插 3*3
  • 红色激光管
  • 使用BH1750测量激光发射器的强度
  • TM1810-3, TM1810-2 LED恒流驱动IC
  • ESP32开发板 V1.0.0 Rev1 wifi 蓝牙4MB FLASH MicroPython
  • Quick reference for the ESP32 — MicroPython 1.14 documentation
  • SP-45ML光电二极管放大电路设计
  • SP-45ML光电二极管放大电路及其动态特性
  • SP-1CL3 陶瓷接收管 光电接收二极管 红外线接收管

智慧AI组对于激光投影的检测方案相关推荐

  1. 全国大学生智能车智慧交通组AI板卡赠送名单

    . §01 AI板卡名单 百度赛道线上课程讲座申请&百度智慧交通组AI板卡赠送第一波名单公示.

  2. 家用激光投影将成未来发展趋势,当贝投影占据其50%销量份额

    在技术持续迭代和消费升级的共同驱动下,智能投影市场未来成长潜力巨大.随着消费者对激光投影仪凭借更高的亮度和更优秀的画质,逐渐成为更多人的选择.据奥维云网(AVC)线上监测数据显示,2022年1-8月, ...

  3. 原创 | 基于AI的智能急性颅内出血类型检测

    作者:杨毅远 本文约6400字,建议阅读10分钟 本文介绍了通过AI技术检测急性颅内出血类型方面的知识. 颅内出血(颅骨内出血)是医疗领域严重的健康问题,需要快速且经常进行密集的医学治疗.在美国,颅内 ...

  4. 线上比赛中关于视觉AI组与信标组补充说明

    简 介: 本文给出了在第十六届全国大学生智能车竞赛中,线上比赛地区(广东省.山东省)AI视觉组以及信标组中补充的信息. 关键词: 智能车竞赛,AI视觉组,信标组 §01 AI视觉组   根据 第十六届 ...

  5. 第十六届智能车竞赛视觉AI组相关议题讨论

    简 介: 本文记录了在2021-7-5上午与逐飞就第十六届智能车竞赛视觉AI组比赛的相关议题进行讨论的过程. 关键词: 智能车竞赛,视觉AI,逐飞 §01 讨论议题 一.议题列表 1.AI视觉组比赛流 ...

  6. 基于激光投影技术的虚拟键盘

    今天给大家带来的开源项目是:基于激光投影技术的虚拟键盘 原文链接:https://mp.weixin.qq.com/s/shFAY6kA9EGqWNZB_Wv8PA 直接看图,看了你就明白了!(键盘运 ...

  7. 第十七届全国大学智能车竞赛百度智慧交通组获奖名单

    01 全国总决赛奖项 一.线下比赛组别 参赛省市 队伍名称 学校名称(全称) 指导老师 指导老师 参赛队员(1) 参赛队员(2) 参赛队员(3) 参赛队员(4) 参赛队员(5) 奖项 辽宁省 A大五个 ...

  8. 激光投影虚拟键盘的设计与实现

    激光投影虚拟键盘的设计与实现 原理和实现流程 硬件系统 效果图 部分代码 对大学期间做的一些设计的汇总之一 原理和实现流程 激光投影虚拟键盘是基于OpenCV结合一字红外激光.图像摄像头.红外滤光片组 ...

  9. 一篇文告诉你,当贝超短焦激光投影U1研发“内幕”

    过去,长焦投影仪如何放?放哪里?一直是个让人头疼的问题.10月20日,当贝新品超短焦激光投影U1发布,从此小户型也能享受大视野.不少人好奇这款产品究竟是如何诞生的,接下来为大家解答心中疑惑,揭秘当贝U ...

最新文章

  1. 分析与解决:MySQL分区表复制bug导致的主从延迟
  2. wiki维基百科上logo中字母的意思是什么?
  3. 关于 SAP Spartacus CSR fallback 之后,是否仍然会继续进行 SSR 的处理
  4. android 滑动过程 触发,android 代码实现模拟用户点击、滑动等操作
  5. 平板电脑怎么投屏到电视上_学而思网课怎么投屏到电视上
  6. 无法装载这个对象_面试官:别的我不管,这个JVM虚拟机内存模型你必须知道
  7. 编译原理教程_5 自底向上分析
  8. iTOP-4418/6818开发板-QtE4.7WIFI_MT6620热点
  9. python比对excel表数据_【转】用python比对数据库表数据的脚本
  10. 前端程序员专用的在线工具箱
  11. 泰晤士报华科计算机排名,最新USNews中国内地高校计算机学科排名,北大第7,华科第2?...
  12. 7个用于开源网络情报渗透测试工作的热门OSINT工具
  13. (转)BluePrint Framemaker学习
  14. aspose给word添加水印
  15. 京东云服务器使用教程
  16. shell命令之cd切换目录
  17. (英文版)吴恩达机器学习第三周笔记
  18. Netty与SpringBoot整合
  19. .net4.7.2在win7安装失败
  20. CentOS环境装Oracle 11g启动报错

热门文章

  1. 关于:last-child的一点见解
  2. nova instance出错:message: Proxy error: 502 Read from server failed
  3. DIY Ruby CPU 分析 Part III
  4. SDN/NFV:现状,挑战和未来
  5. 页面刷新vuex数据消失问题解决方案
  6. Java使用正则表达式
  7. location.href使用方法总结
  8. Samba服务器配置(1)--源码安装
  9. 聪明人的游戏(3)镜子颠倒了什么?
  10. 如何调试进入Asp.NET MVC源代码