本帖最后由 gaoyang9992006 于 2022-11-13 15:23 编辑
早在2006年Maxim推出了一系列的专用MCU,这其中包括一款高端的用于超声波测距的专用单片机。该单片机基于16位RISC微控制器,专门用于倒车超声雷达或工业应用,支持多目标识别,它就是MAXQ7667。
开箱
笔者有幸拿到了由贸泽电子提供的ADI-MAXQ7667EVKIT-1评测板。该板如下图所示,具备mini-USB接口,随套件提供了一根USB数据线。下图中2个黑色凸起即为超声波换能器。
如下图所示,评测板背面有一颗USB转串口芯片。可通过该串口与MCU通信或使用内部BootLoader烧录固件。
同时板上还提供了JTAG接口,可用于调试。
芯片简介
如上所示,该芯片具备内部PGA增益放大器,可提供60到1000倍的放大能力;
同时具备内部校准功能;
提供了数字输出接口;
典型电流:25mA
具备LIN、SPI、UART三种通信接口;
CPU:内置16位,16MHz微控制器
具备5通道12位的ADC模数转换器
单价:12.5美元起
产品定位
作为一个高集成度的 DAS(数据采集系统 ),该款 SoC为弱信号的远距离测量或多 目标识别应用提供高性价 比方案 。器件集成 的功能 允许设 计人 员为成本敏 感的传感器信 号调理 系统增 添智能化功能 。MAXQ7667针对EPA(电子泊车辅助 )和 PDC (泊车距离控制 )等汽车传感器 系 统 进 行 了优 化 ,该器 件 还 非常 适 合需 要位置 测 量 的工 业 处 理 、自动化及手持式应用 。MAxQ7667具有可编 程 突 发 频 率 发 生 器 ,用于补偿变送器的容差 、根据温度调整频率 、以及实现诊断功能。可编程突发信号和占空比可以根据环境条件优化功率
实现方法
MAXQ7667是Maxim公司生产专门用于超声波检测的混合信号上系统控制器。该控制器被广泛的应用用于包括带有微弱输入信号 的远距离测量或者多目标识别 。其 中集成 了脉冲信号发生器和 回声接收组件用来处 理25kHz~U100kHz之 间的超 声波信号 。每组接收组件是由一个可编程增益低噪声放大器 (LNA)、一个将接收到的回声信号数字化的l6位sigma-deltaADC,以及数字信号处 理器 (DSP)组成 。可 编程 锁相 环 (PLL)频 率合成器为瞬时脉冲群发生器提供参考频率,并为 回声接收器 的数字滤波器提供时钟 。MAXQ7667通过监控每个回声信号实现了智能传感,然后主动改变发送和接收参数,从而得到理想的结果。数字滤波器和瞬时脉冲合成不需要CPU的介入。这使得CPU能够全力应用于回声优化 、通信、诊断信息和额外的噪声 处理 。
开发板功能说明
MAXQ7667评估板(EV kit)提供了一个评估MAXQ7667超声测距微控制器(µC)的简易平台。评估板包含连接PC以及运行演示应用程序所需的所有硬件电路。除MAXQ7667微控制器外,该评估板还包含带有驱动变压器的超声传感器、外部温度传感器、用于非易失存储的SPI™ E²PROM、以及用于连接汽车网络的LIN收发器。
功能演示
开发板没有预留串口外接功能,这里可以使用Maxim提供的评估上位机软件进行评测。
如下图所示,通过数据线连接开发板到PC机后,运行上位机软件,可观察到当前运行的参数与扫描到的数据,该数据以波形显示,X轴为距离,Y轴为信号回波强度,也就是ADC采集的回波值。根据回波信号的峰值分布可确定在多少距离存在障碍物返回了调制声波。
左边窗口显示了三个障碍物回波,分别按照信号强度排序显示。
以上图为上位机实现,接下来我们用串口助手发送指令,让其读取数据我们绘制图形;
设置采样256个数据
- 9b 02 c6 02 ac 02 58 02 e5 01 77 01 24 01 09 01 09 01 15 01 18 01 0c 01 f3 00 d4 00 aa 00 8b 00 76 00 6e 00 6d 00 6b 00 66 00 61 00 5f 00 62 00 65 00 69 00 67 00 60 00 59 00 53 00 52 00 54 00 57 00 55 00 4b 00 3d 00 2b 00 18 00 0a 00 09 00 0c 00 0f 00 0d 00 09 00 0a 00 10 00 17 00 1a 00 1a 00 1a 00 1c 00 1e 00 20 00 21 00 25 00 2b 00 35 00 3b 00 3b 00 38 00 32 00 2c 00 25 00 1e 00 1b 00 1b 00 1d 00 1f 00 1f 00 21 00 28 00 38 00 46 00 50 00 53 00 50 00 4a 00 41 00 36 00 32 00 35 00 3f 00 48 00 4d 00 50 00 4d 00 48 00 45 00 45 00 45 00 44 00 40 00 37 00 31 00 2c 00 2a 00 29 00 26 00 1f 00 15 00 11 00 16 00 21 00 30 00 3d 00 4b 00 58 00 5d 00 5c 00 55 00 44 00 34 00 2e 00 38 00 48 00 57 00 5f 00 5c 00 53 00 48 00 3e 00 33 00 2b 00 24 00 23 00 28 00 31 00 3a 00 3c 00 42 00 63 00 b6 00 17 01 73 01 b1 01 ba 01 90 01 57 01 23 01 12 01 16 01 24 01 27 01 19 01 ff 00 d3 00 a5 00 83 00 7e 00 9b 00 ca 00 f4 00 14 01 1d 01 19 01 00 01 db 00 ab 00 71 00 57 00 61 00 85 00 b5 00 cf 00 d4 00 bd 00 99 00 79 00 71 00 8b 00 af 00 d8 00 05 01 25 01 38 01 3a 01 28 01 05 01 da 00 ab 00 8f 00 7d 00 75 00 79 00 84 00 94 00 a8 00 b5 00 bb 00 bb 00 b6 00 b0 00 aa 00 ab 00 b4 00 bf 00 ca 00 ce 00 ca 00 b7 00 9d 00 80 00 62 00 43 00 31 00 28 00 23 00 1e 00 18 00 15 00 19 00 22 00 30 00 42 00 52 00 5f 00 6d 00 73 00 68 00 4b 00 2e 00 24 00 20 00 1e 00 1d 00 1e 00 24 00 34 00 41 00 4f 00 60 00 66 00 5d 00 46 00 34 00 2f 00 3e 00 5a 00 6e 00 82 00 95 00 a2 00 aa 00 a5 00 90 00 80 00 87 00 af 00 d7 00 f3 00 08 01 18 01 1f 01 08 01 cc 00 91 00
以上为16进制数据,我们用Python来处理它
- from matplotlib import pyplot as plt
- f = open('indata256.txt')
- txt = []
- for line in f:
- txt.append(line.strip())
- txt = txt[0].split(" ")
- nn = [(int(txt[x+1], 16) << 8) + int(txt[x], 16) for x in range(int(len(txt))) if x % 2 == 0]
- print(nn)
- plt.subplot(211)
- plt.plot(nn)
- f = open('indata.txt')
- txt = []
- for line in f:
- txt.append(line.strip())
- txt = txt[0].split(" ")
- nn = [(int(txt[x+1], 16) << 8) + int(txt[x], 16) for x in range(int(len(txt))) if x % 2 == 0]
- print(nn)
- plt.subplot(212)
- plt.plot(nn)
- plt.show()
与上位机绘制的图像对比256采样点的数据,发现非常吻合
结论:该方案可实现一个超声波换能器即可实现发送超声波与接收超声波。由于手册中未明确说明(也许是我没看懂英文手册)如何测距的。
我假设超声波发射出去脉冲后,等待很短的一个时间后,开始进入接收状态,并开始定时器工作计时,由于中间的时间差,那么此时如果检测到第一个回波即表明存在一个至少的距离X0,接下来定时读取回波强度,我们设置的是256次,那么即按定时器间隔读取256次ADC回波测量结果。只需要绘制出波形,或通过算法找到峰值点,即可知道在某个距离存在障碍物。这也是实现单个超声换能器进行多点测量的依据。
搞明白了测距原理与使用方法,最后我们将其链接到单片机上控制小车,实现小车避障。
|