基于STM32的超声相控阵导盲系统研究

发布者:Asawen最新更新时间:2012-07-27 来源: 现代电子技术 关键字:导盲系统  超声相控阵  STM32  CORTEX 手机看文章 扫描二维码
随时随地手机看文章
0 引言
    根据世界卫生组织公布的数据,全世界目前有3 000多万人目盲,其中约有18%是中国人。针对盲人行动不便的情况,本文介绍了一种基于超声相控阵的盲人避障系统。
    本文综合超声波的导盲设计,采用超声相控阵技术对障碍物进行探测,核心控制器件STM32为ST公司推出的基于CORTEX内核的32位MCU,具有丰富的外设和强大的数据处理能力。通过它对外围电路的控制,及其强大的信号处理能力,实瑰障碍物的探测以及环境的判断。

1 系统组成及原理
    本设计是利用意法半导体有限公司推出的基于CORTEX 内核的高性能 32 位 MCU,STM32F103RBT6为核心硬件。多个超声探头按照一定规则组成的超声相控阵,通过芯片与探头及外围电路共同组成的信号发送与识别系统完成导盲避障功能。系统工作原理方框示意图如图1所示。

a.jpg


    系统采用超声相控阵以多发一收的形式完成障碍探测。具体方案如下:超声信号的工作频率是40 kHz,首先STM32F103RBT6 MCU产生40 kHz的方波信号,工作时各个探头按照预定的延迟时间依次发送5个周期的方波信号。根据不同的延时时间,超声相控阵发出的信号能够在前方9个点实现不同情况的聚焦。这9个点分布于超声相控阵前方的左、中、右3个方向上,每个方向有上、中、下3个点。其中左右以及上下方向的偏转角度设为30°。聚焦深度为1.5 m。信号从发射到在聚焦点返回,所需时间约为8.8 ms。所以发送完信号后经过8 ms的延迟,打开接收通道的开关,开始接收回波信号。由于回波比较微弱,所以先将信号进行放大,将其放大为单片机能够识别的信号。经A/D转换后进行存储,之后进行相关的信号分析与处理工作,从而实现相控阵扫描。

2 超声相控阵的介绍
    超声相控阵换能器由多个相互独立的压电晶片组成阵列,按照一定的规则和时序用电子系统控制激发各个晶片单元,来调整焦点的位置和聚焦的方向。相控阵换能器最显著的特点是可以灵活、便捷而有效地控制声束形状和声压分布。其声束角度、焦柱位置、焦点尺寸及位置在一定范围内连续、动态可调。无需声透镜便可实现声束聚焦,从而可以灵活有效地控制声束,实现区域扫描探测;相控阵技术能够实现理想的声束聚焦;采用同样幅度的电压驱动每个阵元,聚焦区域的实际声场强度远大于常规的超声波技术;在分辨力、信噪比、障碍检出率等方面有明显的优越性。[page]

    多个超声换能器阵元按照一定的形状、尺寸排列构成超声换能器阵列。按维数可分为1维阵列和2维阵列,这里主要分析由相邻间距为d的N个阵元组成的1维线阵。使用多个线阵按一定角度组合,调整各阵元的发射信号的相位延迟,可以有效地实现波束在空间中任意点的聚焦,从而实现对空间区域的探测,相控阵的聚焦如图2所示。

b.jpg



3 超声相控阵的相位延时及发射
    相位延时是超声相控阵技术的核心。为了实现超声相控阵的聚焦、偏转等功能,各个阵元应按照不同的相位来发射信号。现有的技术能将相位延时精度做到5ns以内。考虑到导盲对聚焦精度的要求不是太高,本设计采用STM32的定时器实现延时,也能够满足设计要求的精度。另一方面STM32芯片的价格也比较低,适于本项目对低成本产品的定位需求。
    本设计采用的是TCF40-18TR1型传感器。这是一款压电陶瓷式收发同体超声波传感器。其中心频率为40 kHz,发射声压在10 V。设计中采用软件的方法产生频率为40 kHz超声信号。STM32F103RBT6包含1个高级定时器和3个通用定时器。通用定时器时钟可由下列时钟源提供:内部时钟、外部时钟、内部触发输入。此处采用APB1外设时钟,频率为36 MHz。可编程通用定时器的主要部分是一个16位计数器和与其相关的自动装载寄存器。通用定时器包含4个独立通道,每个通道都可用于输入捕获、输出比较、PWM和单脉冲输出模式。这里分别将通用定时器TIM2和TIM3的4个独立通道设置成输出比较模式,以产生40 kHz的方波信号。信号经GPIO口输出到超声波换能器放大,再由超声波传感器的探头发出。

4 回波信号的接收部分
    超声信号经反射回到探头位置,探头接收到的回波信号一般在毫伏量级。先经过两级的比例放大将信号幅度放大到几百毫伏。比例放大采用的是美国TexasInstruments公司的OPA2725运算放大器,OPA2725具有两个通道,支持单电源供电,轨到轨输出,具有20 MHz的增益带宽。本设计中比例放大由两级运放组成。将收到的回波信号加到同相端和地之间,在反相输入端引入电压负反馈。
    信号经比例放大后幅度增大至几百毫伏,此时的信号已经夹杂一定的高频噪声,由于回波信号中的有用信号都集中在40 kHz左右这一频段,所以选用低通滤波电路滤除高频干扰信号。为了得到完整的障碍物信息,低通滤波电路的截止频率即为超声波信号的频率的5倍即200 kHz。低通滤波后的信号再经过一级时间增益(TGC)放大之后进行A/D转换,并存入单片机的存储器中,以进行相关的信号分析。

5 回波信号处理与分析
    对应不同的障碍物和地形,系统收到回波的波形和时间都会有区别。根据这2个条件可以实现对障碍物和地形的判断。这里用到1个由N个探头组成的线阵。探头分别编号为1,2,…,N-1,N。当遇到如图3所示障碍物时,相控阵在中间的焦点碰到障碍物接收到的回波,应该是N路声波在焦点处的叠加;而在左右两边聚焦点处由于没有碰到障碍物,所以不会有叠加后的波形返回。以上2种情况收到的波形分别如图4和图5所示。如果碰到沟壑类的障碍物时,如图6所示,这里假设编号N-1探头接收回波信号,当人走到a处时,相控阵聚焦在c点,此时焦点到探头N-1的距离为l,则超声波从探头N-1发射到聚焦点返回探头的时间为t=2l/c,c为空气中超声波的速度。当人走到b点时,相控阵聚焦在d点,这时在d处不会有聚焦后的波形返回,只能是各路超声波在沟壑底面发生反射。仍以编号N-1探头为例,从发射到接收到回波的时间应为t’=f.jpg,△l为聚焦点到到沟壑的长度。从上面的分析可以看出,当相控阵的位置从a移动到b,系统收到的回波波形以及接收到波形的时间均发生了明显变化,从而为判断地形提供了可靠依据。

c.jpg

[page]

d.jpg

e.jpg



6 结语
    本文介绍了一种基于STM32的超声相控阵导盲系统,主要涉及到系统的硬件设计部分以及超声相控阵识别几种障碍的方法。对于不同的障碍物和地形环境能够得到不同的回波信号,对不同的回波信号进行分析,能够得出不同的漳碍物的特征,从而对障碍做出正确的判断。现阶段国内很多盲人仍然以拐杖提供的触觉感知作为行动的参考,如能在拐杖上面安装本文所介绍的这样一部超声相控阵的导盲装置,必然能给盲人的行动带来极大的方便。

关键字:导盲系统  超声相控阵  STM32  CORTEX 引用地址:基于STM32的超声相控阵导盲系统研究

上一篇:基于STM32的全彩LED显示屏系统的设计
下一篇:STM32中采用DMA实现方波的产生和捕获

推荐阅读最新更新时间:2024-03-16 13:04

STM32单片机在KIEL4配置开发中的设置
开发环境:KIEL4,芯片STM32F103VCT6。函数库VC3.5 1.配置开发环境。 2.Option for Target,主要是C/C++和debug两个部分设置。 3.变量和函数名自动补全以及中文乱码设置。 4.逻辑分析仪。信号不存在或者不能出图形。
[单片机]
<font color='red'>STM32</font>单片机在KIEL4配置开发中的设置
巩固产品生态系统STM32微处理器性能升级
横跨多重电子应用领域的全球领先的半导体供应商意法半导体(STMicroelectronics,简称ST; 纽约证券交易所代码:STM) 为STM32MP1系统微处理器(MPU)产品增加了新的授权合作伙伴和软件功能,并显著提升了处理性能,将时钟速度提高到800MHz,软件引脚与650MHz产品兼容。 新STM32MP1 MPUs现在搭载800MHz Arm®Cortex®-A7双核应用处理器和209MHz Cortex-M4处理器,具有优异的语音和音频处理性能,解码质量达到高清视频级别,在神经网络和机器学习应用中,能够实现更强大的AI(人工智能)功能,还为Android系统带来更好的用户体验。新产品集成运算及3D图形加速器
[单片机]
巩固产品生态<font color='red'>系统</font>,<font color='red'>STM32</font>微处理器性能升级
STM32局部变量的数组最大能到多少?
当在一个函数中声明一个较大的局部数组变量时,程序可以编译通过,但运行时,老是进入hardfaulthandler,导致出现改问题的原因可能是栈溢出。因为局部变量是存放在栈区的,而全局变量在全局区(静态区),如果栈区较小,会产生溢出。 解决这种问题的方法: 方法1:启动文件里面对栈的大小有固定的值。函数里面的数组是在调用该函数的时候,才给你分配空间。将启动文件下的堆栈改大 Stack_Size EQU 0x00000400 。 Stack Size,一般小工程0X400足够,大工程才设置0X1000就够用,所以默认无需设置太大。 方法2:用静态数组代替普通局部数组。 方法3:数组过大,栈溢出了,有可能覆盖了其他全局变量的值
[单片机]
STM32 flash被锁定不能烧写解决方法
在误操作后会锁死芯片导致不能烧录,如下图: 解决办法是用STM32 ST-LINK Utility 工具去解锁芯片: 先连接设备然后在target选项下做如下操作解锁,选择unselecet all 然后应用即可:
[单片机]
<font color='red'>STM32</font> flash被锁定不能烧写解决方法
STM32】NVIC寄存器组
在STM32的固件库中定义了三个结构体与这三个寄存器组相对应,这三个结构体与ARM手册中寄存器的对应关系如下: 一、NVIC寄存器组 STM32的固件库中有如下定义: typedef struct { vu32 ISER ; u32 RESERVED0 ; vu32 ICER ; u32 RSERVED1 ; vu32 ISPR ; u32 RESERVED2 ; vu32 ICPR ; u32 RESERVED3 ; vu32 IABR ; u32 RESERVED4 ; vu32 IPR ; } NVIC_TypeDef; 它们对应ARM手册中的名称为 ISER = Interrupt Set-En
[单片机]
stm32---RS485初始化
u8 RS485_RX_BUF ; //接收缓冲,最大64个字节. u8 RS485_RX_CNT=0; //接收到的数据长度 /* 函数:RS485_Init 功能:串口初始化配置 参数:Baud:波特率 备注:GPIO/USART/NVIC初始化,开启串口中断,使能串口中断(中断处理函数) 步骤: 1---GPIO/USART1/NVIC初始化结构体定义 2---开启串口USART,GPIO端口时钟 3---复位串口 4---USART2_TX/USART2_RX 串口接受/发送端口配置寄存器结构体参数配置 5---NVIC 中断控制器配置 6---USART2 初始化设置 7---开启中断 8---
[单片机]
STM32 总线空闲 + DMA 方式接收
STM32 的 USART 支持一个总线空闲中断,如果这个中断和DMA配合,能够较好的实现接收不定长数据的功能。 总线空闲中断是在检测到在接收数据后,数据总线上一个字节的时间内,没有再接到数据后发生。也就是RXNE位被置位之后,才开始检测,只被置位一次,除非再次检测到RXNE位被置位,然后才开始检测下一次的总线空闲。 函数 // 配置串口3 void USART3_Init(void) { // 使能PORTB口时钟 RCC- APB2ENR |= APB2_IOPB_EN; // 使能串口3时钟 RCC- APB1ENR |= APB1_USART3_EN;
[单片机]
STM32如何高效接收串口数据?
硬件:stm32f103cbt6 软件:STM32F10x_StdPeriph_Lib_V3.5.0 DMA,直接内存存取,可以用它的双手释放CPU的灵魂,所以,本文通过USART3进行串口收发,接受使用DMA的方式,无需CPU进行干预,当接受完成之后,数据可以直接从内存的缓冲区读取,从而减少了CPU的压力。 具体的代码实现如下: usart_driver.h 封装了接口,数据接收回调函数类型,基本数据结构等; usart_driver.c 函数原型实现,中断服务函数实现等; 拷贝这两个文件即可,可以根据目录下的参考用例,进行初始化。 头文件usart_driver.h已经声明了外部函数可能用到的接口; USART3_DR的地
[单片机]
<font color='red'>STM32</font>如何高效接收串口数据?
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved