一种34位MCU超声相控阵导盲系统设计

发布者:平和的心态最新更新时间:2024-03-20 来源: elecfans关键字:STM32 手机看文章 扫描二维码
随时随地手机看文章

  引言

  根据世界卫生组织公布的数据,全世界目前有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 超声相控阵的介绍

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


  多个超声换能器阵元按照一定的形状、尺寸排列构成超声换能器阵列。按维数可分为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



  d.jpg

  e.jpg

  6 结语

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


关键字:STM32 引用地址:一种34位MCU超声相控阵导盲系统设计

上一篇:UART和USART有区别
下一篇:基于STM32、ESP32,钢铁侠打造机械臂设计

推荐阅读最新更新时间:2024-11-11 13:55

stm32 i2c eeprom 24C02
电路图 举例 #define i2c_scl PBout(10) #define i2c_sda PBout(11) #define i2c_ack PBin(11) void I2C_init() { GPIO_InitTypeDef gpio10 = { GPIO_Pin_10, GPIO_Speed_50MHz, GPIO_Mode_Out_PP }; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //时钟使能 GPIO_Init(GPIOB, &gpio10); } void I2
[单片机]
<font color='red'>stm32</font> i2c eeprom 24C02
STM32笔记之七:让它跑起来,基本硬件功能的建立
0、 实验之前的准备 a) 接通串口转接器 b) 下载IO与串口的原厂程序,编译通过保证调试所需硬件正常。 1、 flash,lib,nvic,rcc和GPIO,基础程序库编写 a) 这几个库函数中有一些函数是关于芯片的初始化的,每个程序中必用。为保障程序品质,初学阶段要求严格遵守官方习惯。注意,官方程序库例程中有个platform_config.h文件,是专门用来指定同类外设中第几号外设被使用,就是说在main.c里面所有外设序号用x代替,比如USARTx,程序会到这个头文件中去查找到底是用那些外设,初学的时候参考例程别被这个所迷惑住。 b)
[单片机]
【实验一】跑马灯实验
一、实验目的 通过控制战舰STM32开发板上的两个LED灯:DS0和DS1交替闪烁,实现类似跑马灯的效果。 二、STM32 IO简介 STM32 的每个 IO 端口都有 7 个寄存器来控制。他们分别是:配置模式的 2 个 32 位的端口配置寄存器 CRL 和 CRH; 2 个 32 位的数据寄存器 IDR 和 ODR; 1 个 32 位的置位/复位寄存器BSRR;一个 16 位的复位寄存器 BRR; 1 个 32 位的锁存寄存器 LCKR。 8种模式: 1、 输入浮空 2、 输入上拉 3、 输入下拉 4、 模拟输入 5、 开漏输出 6、 推挽输出 7、 推挽式复用功能 8、 开漏复用功能 IO 操作步骤:
[单片机]
如何使用assert_param
在STM32的固件库和提供的例程中,到处都可以见到assert_param()的使用。如果打开任何一个例程中的stm32f10x_conf.h文件,就可以看到实际上assert_param是一个宏定义;在固件库中,它的作用就是检测传递给函数的参数是否是有效的参数。 所谓有效的参数是指满足规定范围的参数,比如某个参数的取值范围只能是小于3的正整数,如果给出的参数大于3,则这个assert_param()可以在运行的程序调用到这个函数时报告错误,使程序员可以及时发现错误,而不必等到程序运行结果的错误而大费周折。 这是一种常见的软件技术,可以在调试阶段帮助程序员快速地排除那些明显的错误。 它确实在程序的运行上牺牲了效率(但只
[单片机]
STM32的IO口灌入电流和输出驱动电流最大是多少?
最大可以输出8mA,灌入20mA,但要保证所有进入芯片VDD的电流不能超过150mA,同样所有从VSS流出的电流也不能超过150mA。 详细请看STM32的数据手册中的相关内容。 例如,STM32F103中容量产品,需要看5.2节和5.3.12节,里面有更详细的数据: http://www.st.com/stonline/products/literature/ds/13587.pdf STM32F103X8B
[单片机]
<font color='red'>STM32</font>的IO口灌入电流和输出驱动电流最大是多少?
STM32常见问题:低温下部分产品RTC不工作的问题探析
前言 客户反馈在批量生产阶段,发现部分产品的MCU的RTC在低温(0℃)下工作不正常,但是在常温下又是正常的,且其他正常的MCU的RTC在常温与低温下都是正常的。 问题跟进 通过与客户邮件沟通,了解到客户使用的MCU型号是STM32F030C6T6TR。在产品的主从结构中主要用作电源管理和时钟管理。通过客户的描述,似乎相同型号不同片子都存在较大的差异。 由于时间紧急,在了解到初步信息后拜访客户,针对客户认为有问题的MCU芯片做针对性试验。通过STM32CubMx生成测试工程,分别使用LSI(40K),LSE(32.768K),RTC工作时每秒通过LED1(PB5)取反一次(通过LED1灯是否闪烁来指示RTC是否工作正常),
[单片机]
<font color='red'>STM32</font>常见问题:低温下部分产品RTC不工作的问题探析
STM32中sysTick的设置
SysTick_Config(SystemFrequency / 10) 函数的形参就是systick重装定时器的值。 systck计数频率为每秒72000000次,所以7200000次就是1/10秒,也就是100ms。 SysTick是1个24bit递减计数器,通过对SysTick控制与状态寄存器的设置,可选择HCLK时钟(72M)或HCLK的8分频(9M,缺省是这个)作为SysTick的时钟源。 SysTick的重装寄存器决定了定时器频率。 若SysTick的时钟源是72M, SystemFrequency = 72000000Hz 所以 SysTick_Config(SystemFrequency / 1
[单片机]
STM32的I2C通讯配置(硬件实现)——学习笔记(6-2)
文章内容根据野火学习教程进行整理,仅仅是学习记录。 开发板: 野火STM32F429-挑战者V2 官方固件库版本: STM32F4xx_DSP_StdPeriph_Lib_V1.8.0 这里以与EEPROM进行通讯的代码作为例子。 一、看电路图 1、要得知那些信息 从电路图上主要是要知道3点关键信息 I2C设备挂载在I2C1、I2C2、I2C3的哪一个总线上 SDA、SCL接的是哪两个GPIO I2C设备地址(有的是可以选择的,比如这个EEPROM) 2、挂在哪个I2C总线以及哪个GPIO 从电路图上可以看出: 挂载在I2C1上的 SDA接的是PB7引脚 SCL接的是PB6引脚 这个一般硬件工程师都会在电路
[单片机]
<font color='red'>STM32</font>的I2C通讯配置(硬件实现)——学习笔记(6-2)
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved