基于STM32 的超声波测距仪

2023-09-21 01:36钟家弘陶英婷
物联网技术 2023年9期
关键词:主控板数码管寄存器

钟家弘,陶英婷

(重庆科技学院 电气工程学院,重庆 401331)

0 引 言

随着现代社会科技的飞速发展,电子技术不断得到创新,非接触式光学检测技术被广泛推广,如红外光谱测距新技术、雷达红外测距新技术、激光红外测距新技术、超声波激光测距新技术等均是我国目前应用较为普遍的非接触式光学红外测距技术[1]。相对其他测距方法来说,超声波激光测距的主要优点是比较安全、耐受脏污,可以在条件较差的室内环境中使用,甚至可以在一般人员无法轻易进入的极端恶劣的环境中精准快速地进行测距。例如,在粉尘烟雾和有毒化学物质污染较重,或者电磁噪声等其他环境因素干扰严重的环境下,如果通过人工进行测距则会非常困难[2],此时若通过超声波进行精确测距则非常方便。因此,超声波精准测距技术被广泛地应用到各个领域,例如倒车雷达、扫地机器人、传送菜机器人、无人机等,甚至在我国的国防军事领域也被大量应用[3]。超声波测距技术与目前其他非接触式测距技术方式相比,它信号的连续传播时间长、能量消耗较慢、指向性较强,更适用于直接测量近距离目标[4]。与红外线和激光测距技术相比,超声波的测距效果比较稳定、价格低廉、下限高、耐高强度使用、易操作[5]。因此,本文以STM32L052K8 芯片为主要控制器设计了一个超声波测距仪,并对其性能进行了验证。

1 超声波测距原理

1.1 超声波介绍

声音是由外界某种物体振动而产生的,物体每秒振动的次数即为声频,单位为Hz。物体的连续振动是指处在运动状态的物体在靠近振动平衡位置进行的一种连续规律的往复运动。例如,用手轻敲鼓面几下后,鼓面立即开始一阵上下起伏的振动,这种上下起伏的振动状态又能够通过其他媒质迅速地向周围传播。一般情况下,人能够清楚听到的声波频率为16 Hz ~20 kHz;声频低于16 Hz 时,则为次声波或超低声;声频高于20 kHz时,人耳无法准确听到,则为超声波[6]。

1.2 超声波测距原理

如图1 所示,超声波测距是通过超声波发射端向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播时碰到障碍物就立即返回来,超声波接收端收到反射波就立即停止计时。超声波在空气中的传播速度为v,常温下为344 m/s,根据计时器记录的超声波发射端和接收端的时间差Δt,能够得出距离S[7]。

图1 超声波原理

1.3 超声波模块介绍

超声波模块顶底部视图分别如图2、图3 所示。本模块采用的是HC-SR04 型号超声波测距传感器,共有4 个引脚:VCC(3.3 ~5 V)、TriG(控制端,发出信号)、Echo(模块接收端,接收信号)、GND(地)。超声波模块从ctrl 端口发射出一共电信号,超声波模块接收端等待电信号,一旦超声波模块的接收终端检测到电信号,就可以逆时针输出高低电平信号,这时可以通过计算得到一个信号反馈的时间值,由此则可以处理输出信号。

图2 超声波模块顶部视图

图3 超声波模块底部视图

超声波时序如图4 所示。根据图4,只需要提供至少一个10 μs 及以上频率的脉冲触发时钟信号,该脉冲时钟模块在系统内部只会连续发出大约8 个40 kHz 以上的周期电平脉冲信号并可同时检测回波。一旦检测到有回波信号时系统将立即输出一个回响信号。回响信号的高电平脉冲宽度一般与实际检测的传输距离大小成正比。由此可通过确定实际发射信号到接收信号之间的时间间隔就可以计算信号传输距离,公式为:传输距离=高电平时间×声速/2。建议测量距离的时间周期为60 ms 以上,尽量避免发射时信号衰减或对接收的回响信号产生影响。

图4 超声波时序

1.4 超声波模块PCB

超声波模块主要有电路输入和输出两部分。发射放大电路工作原理是将主控芯片所发出的低能脉冲信号通过发射放大控制电路升高,降低电阻的值,提高功率,从而延长探测距离;输入电路则通过运算放大器来放大电信号[8]。超声波模块PCB 如图5 所示。

图5 超声波模块PCB

2 显示模块设计

2.1 移位寄存器74HC595 芯片介绍

74HC595 是指一个由8 位串行输入、平行式输出组成的位移缓存器。平行式输出为三态输出,分别为具有极高电平、低电平和相对较高的阻抗值三种最基本的输出寄存器工作状态。输出寄存器也可以被直接清除,在SCK 的上升沿具有100 MHz 及以上的数据移位频率,单行输出的数据会直接由外部SDL 的输存人输出到外部的8 位位移缓存器,并最终由外部SQH 输出;而平行输出的数据则是在外部LCK的上升沿由外部的8 位位移缓存器和内部的数据输存人分别输出到内部的8 位平行输出缓存器[9]。当串行数据输入端OE 的控制电平信号转换为一个极低电位使能信号时,平行输出端的实际输出阻抗值将恰好等于平行输出端的数据缓存器的实际存储阻抗值。即使此时接收端OE 的电平信号为相对较高的电位,也就是平行输出端被关闭时,平行输出端也可能依然处在一个较高阻抗值的状态。当输入MR 电压为高电平,数据在SHCP 电压的上升沿输入移位寄存器,并继续在STCP 电压的上升沿输出到并行端口。当使能端OE 的电压下降为较低电平时,低电平有效;为较高电平时则输出关闭使能,并不影响连接到其他输入端。移位寄存器74HC595芯片管脚如图6 所示。

图6 移位寄存器74HC595 芯片管脚

2.2 74HC138 译码器芯片介绍

74HC138 是一款高速的CMOS 图像解码器选件,其引脚可兼容低功耗的肖特基TTL(LSTTL)系列。基本参数74HC138 译码器可同时接收具有3 个位长的二进制加权地址的有效输入端信号(A0、A1、A2),并且当使能时能提供8个互斥的且很低的有效输出信号(Y0 至Y7)。74HC138 特有的是3 个使能有效输入端,即两个较低有效端信号(E1和E2)和一个很高的有效端信号(E3)。除非把E1 和E2 都置低且只将E3 置为较高,否则74HC138 将会始终保持把所有的输出置为高。74HC138 译码器芯片管脚如图7 所示。

图7 74HC138 译码器芯片管脚

2.3 数码管简介

数码管显示屏芯片(LED Segment Displays)是一种新型发光晶体控制显示器件,其基本单元是数字半导体发光晶体二极管,如图8 所示。基本参数数码管是由7 个发光二极管组成的"8"字形器件,加上最后一个小数点后就是8 位。"8"字形的各段分别用a、b、c、d、e、f、g 表示,小数点用dp 表示。二极管上所有的引线连接工作均在二极管器件的内部各个连接处完成,只需引出一个连接到外部的引线段或任何一个公共电极,即可实现硬件连接。数码管与LED 二极管的电路连接方法不同,一般分为共阴极管和共阴阳极管两类,其与内部照明电路所用的半导体发光元件原理几乎相同,只是它们连接的外部电源极性不同。

图8 数码管展示

2.4 数码管与主控板连接

点亮数码管需要前面介绍的74HC595 锁存移位寄存器芯片和74HC138 译码器芯片。给74HC595 译码器增加了一个有额外功能的串行电路控制器,输入寄存器的SCLK 时钟端口接在主控板的PA0 时钟端口,输出寄存器的时钟端口LOAD 接在主控板的PA1 时钟端口,数据的串行输入时钟端口SDI 接在主控板PA2 口,从输入时钟端口SDI 每输入一位寄存器数据,串行在输入寄存器的时钟SCLK 上升下沿有效一次,持续到最后八位输入寄存器数据被输入完毕,输出寄存器时钟LOAD 上升沿有效一次,此时输入端的寄存器数据也几乎全部送到了输出端。为了控制数码管的位码端,将74HC138 译码器的A0 数据口接入主控板的PA3 口,A1 数据口接入主控板的PA4 口,A2 数据口接主控板的PA5 口,OE数据口接入主控板的PA6 口,A0、A1、A2 端口依次循环发送数据“1”,即循环使Y0 至Y7 的某一位拉高,使能该数码管LED 灯的公共端。数码管与主控板连接情况如图9 所示。

图9 数码管与主控板连接

3 上位机设计

开发上位机时,先在PyCharm 软件里安装PyQt5 库、PyQt5-tools 库、serial 库,后续也会依赖这些库。

在PyCharm 的安装目录里搜索designer.exe,就可以打开QT Designer 这个软件;然后选择Main Window 并点击创建,拖动旁边的功能选项就可以搭建想要的界面;再将Designer 生成的UI 文件保存在PyCharm 程序目录下,并将UI 文件在Terminal(终端)下转换成py 文件;最后打开所生成的py 文件。串口助手界面如图10 所示。

图10 串口助手界面

4 测距系统整体设计

4.1 系统整体设计

系统整体设计如图11 所示。在用户对电源系统的各种性能参数进行实际测量的整个过程中常常会遇到LCD 屏显示的一些数据出现闪烁的现象,产生该现象的一个最主要原因是电源系统本身的电源电路模块在制作工艺或者设计上存在缺陷,使得电源系统从电源7805 的引脚处输出的电压信号源不会一直保持在3.3 V 以内的稳定直流电压,存在输出电压信号异常波动等现象。一方面可能是由于焊接电路元件中的焊接工艺不良;另一方面可能是由于在整个系统测试中实际要测量的距离与超声波实际传输距离之间存在较大误差,而产生此误差的原因在于超声波电源电路系统内信号输出端电压信号经常存在较大幅度的波动,外界环境对整个超声波电路也存在干扰,如电磁环境、信道环境的干扰,导致超声波电信号在实际传播过程中产生衰减[10]。另外,由于整个设计之初在软件及相关硬件上都尽量作了简化,因而忽略了温度变化对超声波信号传播产生的影响。

图11 整体系统图

4.2 系统硬件设计

系统硬件包括数码管显示模块、STM32L052K8 主控板、HC-SR04 超声波模块以及USB 转TTL 模块。具体设计如图12 所示。

图12 硬件连接方式

4.3 系统软件设计

系统软件程序流程如图13 所示。先在STM32CubeMx配置引脚,通过串口1 使能,生成程序。编写74HC5959 数码管段选程序和74HC138 数码管位选程序,然后编写显示两位数码管的程序。用滴答定时器实现精确时延,编写TIM21回调函数,收到回答,启动定时器开始计数,计算出结果,通过串口通信上传给上位机。最后在主函数里启动超声波测距转换脉冲。

图13 软件程序流程

5 测试结果

为验证超声波测距系统的性能,开展了实验测试。从实验结果来看,系统基本上可以满足在5 ~32 cm 范围内进行精确测距,误差为1.6%;当超声波探头水平安装时,其误差缩小为0.98%;当探头垂直安装时,其误差较大,最大达到了2.6%。在被探测物体的表面不是规则的矩形时误差巨大;当声波探测到规则矩形时,其探测效果最好,准确率高达98%。当声波探测到圆形时,由于圆形表面有无数个近似120°的曲面,大量的超声波会被散射到其他位置,无法返回到超声波接收探头,所以探测准确率大幅下降,只能达到原有性能的80%;当声波探头探测到正三角体时,由于正三角体表面全是接近60°的小角度,将会导致绝大多数声波被散射到其他地方,没有声波能有效地返回声波接收探头,导致测距精度无限接近于0。由此可以得出结论,超声波探测的最佳环境是在规则矩形的情况下,系统可以发挥最大98%的性能;最差环境是在被测距物形状为三角体时,几乎不能发挥原有性能,而且会得到非常混乱的数据,无法整理,所以现代对雷达隐形飞机的外观设计,多数为不规则三角形。

6 结 语

与其他测距方法相比,超声波测距方法具有安全、耐受脏污、能够在较差环境中使用、连续传播时间长、能量消耗较慢、指向性较强、测距效果稳定等优点。因此,本文以STM32L052K8 芯片为主要控制器设计了一款超声波测距仪。系统基本上可以满足在5 ~32 cm 范围内进行精确测距。

猜你喜欢
主控板数码管寄存器
一种快速可靠的主控冗余及切换机制的设计与实现
Lite寄存器模型的设计与实现
Arduino编程
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
基于Qt的数码管数字编码系统的设计与实现
升级双主控板交换机ISO
分簇结构向量寄存器分配策略研究*
变频器检测台的设计、制作及主控板的维修
基于看门狗原理的冗余保护机制