GD32F470_US-016 模拟电压输出 双量程 模拟量 超声波测距模块 高精度

2.18 US-016电压式超声波测距传感器

US-016是市场上唯有的一款模拟量输出的超声波测距模块,输出的模拟电压和距离值成正比,可以方便的和其他系统相连,US-016工作稳定可靠。
US-016超声波测距模块可实现2cm~3m的非接触测距功能,供电电压为5V,工作电流为3.8mA,支持模拟电压输出,工作稳定可靠。本模块根据不同应用场景可设置成不同的量程(大测量距离分别为1m和3m);当Range管脚悬空时,量程为3m。US-016能将测量距离转化为模拟电压输出,输出电压值与测量距离成正比。

2.18.1 模块来源

采购链接:
US-016 模拟电压输出 双量程 模拟量 超声波测距模块 高精度
资料下载链接:
http://pan.baidu.com/s/1c08JuBQ

2.18.2 规格参数

工作电压:3.3V-5V
工作电流:3.8MA
感应角度:小于15度
探测距离:2CM-300CM
探测精度:0.3CM+1%
输出方式: 模拟电压
管脚数量:4 Pin
工作电流:3.8MA
感应角度:小于15度
探测距离:2CM-300CM
探测精度:0.3CM+1%
输出方式: 模拟电压
管脚数量:4 Pin

2.18.3 移植过程

我们的目标是在梁山派GD32F470上能够判断前方障碍物距离的功能。首先要获取资料,查看数据手册应如何实现,再移植至我们的工程。

2.18.3.1 查看资料

模块上电后,系统首先判断 Range 引脚的输入电平,根据输入电平状态来设置不同的量程。当 Range 引脚为高电平时,量程为 3m,当 Range 管脚为低电平时,量程为 1m。然后,系统开始连续测距,同时将测距结果通过模拟电压在 Out 管脚输出。当距离变化时,模拟电压也会随之进行变化。模拟电压与测量距离成正比,模拟电压的输出范围是0~Vcc。

  • 当系统量程为 1m 时,测量距离为:L = 1024*Vout/Vcc(mm)。当输出电压为 0V 对应距离为 0m,输出 Vcc 对应为 1.024m。
  • 当系统量程为 3m 时,测量距离为:L = 3096*Vout/Vcc(mm)。 当输出电压为 0V 对应距离为 0m,输出 Vcc 对应为 3.072m。

2.18.3.2 引脚选择

超声波模块立创·梁山派
VCC3V3
range浮空
outPC1
GNDGND

在这里插入图片描述

2.18.3.3 移植至工程

移植步骤中的导入.c和.h文件与上一节相同,只是将.c和.h文件更改为bsp_US016.c与bsp_US016.h。见2.2.3.3 移植至工程。这里不再过多讲述。移植完成后面修改相关代码。
在文件bsp_US016.c中,编写如下代码。

/********************************************************************************* 文 件 名: bsp_US016.c* 版 本 号: 初版* 修改作者: LC* 修改日期: 2023年04月06日* 功能介绍:          ******************************************************************************* 注意事项:
*********************************************************************************/#include "bsp_US016.h"
#include "systick.h"
#include "bsp_usart.h"
#include "stdio.h"//超声波量程 Range接地量程为1  Range接VCC量程为3  浮空量程为3 
//测试时,Range浮空,故量程为3#define RANGE   0       //=0则量程为3米  =1则量程为1米/******************************************************************* 函 数 名 称:US016_GPIO_Init* 函 数 说 明:US016超声波模块引脚初始化* 函 数 形 参:无* 函 数 返 回:无* 作       者:LC* 备       注:
******************************************************************/
void US016_GPIO_Init(void)
{/* 开启时钟 */rcu_periph_clock_enable(RCU_OUT);   /* 使能ADC时钟 */rcu_periph_clock_enable(RCU_OUT_ADC);                /*        配置AO为浮空模拟输入模式        */gpio_mode_set(PORT_OUT, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO_OUT); /*        配置ADC为独立模式        */adc_sync_mode_config(ADC_SYNC_MODE_INDEPENDENT);/*        使能连续转换模式        */adc_special_function_config(PORT_OUT_ADC, ADC_CONTINUOUS_MODE, ENABLE);/*        使能扫描模式        */adc_special_function_config(PORT_OUT_ADC, ADC_SCAN_MODE, ENABLE);/*        数据右对齐        */        adc_data_alignment_config(PORT_OUT_ADC, ADC_DATAALIGN_RIGHT);/*        ADC0设置为规则组  一共使用 CHANNEL_NUM 个通道                */  adc_channel_length_config(PORT_OUT_ADC, ADC_REGULAR_CHANNEL, CHANNEL_NUM);/*        ADC规则通道配置:ADC0的通道CHANNEL_ADC的扫描顺序为0;采样时间:15个周期                */  /*        DMA开启之后 gt_adc_val[x][0] = PC1的数据   */adc_regular_channel_config(PORT_OUT_ADC, 0, CHANNEL_OUT_ADC, ADC_SAMPLETIME_15);/*        ADC0设置为12位分辨率                */  adc_resolution_config(PORT_OUT_ADC, ADC_RESOLUTION_12B); /*        ADC外部触发禁用, 即只能使用软件触发                */  adc_external_trigger_config(PORT_OUT_ADC, ADC_REGULAR_CHANNEL, EXTERNAL_TRIGGER_DISABLE);/*        ADC0使能 */adc_enable(PORT_OUT_ADC);/*        等待ADC稳定                */  delay_1ms(1);/*        开启ADC自校准                */adc_calibration_enable(PORT_OUT_ADC); /*        开启软件触发ADC转换                */adc_software_trigger_enable(PORT_OUT_ADC, ADC_REGULAR_CHANNEL); 
}                           /******************************************************************* 函 数 名 称:Get_ADC_Value* 函 数 说 明:对ADC值进行平均值计算后输出* 函 数 形 参:num采集次数* 函 数 返 回:对应扫描的ADC值* 作       者:LC* 备       注:无
******************************************************************/
unsigned int Get_ADC_Value(unsigned int num)
{unsigned int Data=0;int i = 0;for( i = 0; i < num; i++ ){/*        读取ADC常规组数据寄存器  */Data += adc_regular_data_read(ADC0);delay_1ms(1);}Data = Data/num;return Data;
}
/******************************************************************* 函 数 名 称:Get_distance* 函 数 说 明:读取测距距离* 函 数 形 参:无* 函 数 返 回:浮点型的测距的距离* 作       者:LC* 备       注:
量程为3米时距离公式为:L = (A*3072/4096)*(Vref/Vcc)
量程为1米时距离公式为:L = (A*1024/4096)*(Vref/Vcc)Vref 为 ADC 的参考电压,Vcc 为 US-016 的电源电压
******************************************************************/
float Get_distance(void)
{float distance = 0;unsigned int d = Get_ADC_Value(30);#if !RANGE  distance = d * 0.75;#elsedistance = d * 0.25;#endifreturn distance;
}

在文件bsp_US016.h中,编写如下代码。

#ifndef _BSP_US016_H_
#define _BSP_US016_H_#include "gd32f4xx.h"#define RCU_OUT           RCU_GPIOC
#define PORT_OUT           GPIOC
#define GPIO_OUT           GPIO_PIN_1#define RCU_OUT_ADC          RCU_ADC0
#define PORT_OUT_ADC         ADC0
#define CHANNEL_OUT_ADC      ADC_CHANNEL_11//采样通道数 
#define CHANNEL_NUM     1void US016_GPIO_Init(void);
float Get_distance(void);
#endif

移植现象:距离20CM处摆放障碍物,输出换算后的实际距离。在这里插入图片描述
移植成功示例,见文件2.18.4-1 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/799827.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

掌握Go语言:Go语言错误处理,从基础到高级,让你的代码更健壮!(33)

Go 语言的错误处理机制非常灵活&#xff0c;它通过错误值&#xff08;error&#xff09;来表示可能发生的错误&#xff0c;并提供了多种处理错误的方法和技巧。除了基本的错误处理方式外&#xff0c;还有一些高级用法可以进一步提升代码的健壮性和可读性。 Go 语言的错误处理基…

【LeetCode热题100】74. 搜索二维矩阵(二分)

一.题目要求 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中&#xff0c;返回 true &#xff1b;否则&#xff0c;…

Dapr(四) Dapr核心组件的使用二

结合前三期 Dapr(一) 基于云原生了解Dapr(Dapr(一) 基于云原生了解Dapr-CSDN博客) Dapr(二) 分布式应用运行时搭建及服务调用(Dapr(二) 分布式应用运行时搭建及服务调用-CSDN博客) Dapr(三) Dapr核心组件的使用一(Dapr(三) Dapr核心组件的使用一-CSDN博客)。下一期使用Dapr中的…

【LeetCode热题100】34. 在排序数组中查找元素的第一个和最后一个位置(二分)

一.题目要求 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 二.题…

LangChain-12 Routing By Semantic Similarity 让GPT根据不明确的问题 自动选择工具集 根据语义自动路由

问题背景 平常我们设计程序的时候&#xff0c;会这么写&#xff1a; // 随便举例 String type paramDTO.getType(); if (type.equals("吃饭")) {// do } else if (type.equals("喝水")) {// do } else {// do }此时如果type传入的不是数字&#xff0c;那…

docker使用arthas基本教程

供参考也是自己的笔记 docker容器下使用遇到的问题&#xff1a;大致是连接不上1号进程 我这边主要的问题是用户权限问题&#xff0c;docker容器使用aaa用户启动&#xff0c;那个在docker容器内&#xff0c;需要使用aaa用于启动 docker 容器如何使用arthas #实现下载好arthas …

前端开发语言都有哪些?

前端开发主要涉及以下几种语言&#xff1a; HTML (HyperText Markup Language)&#xff1a;作为网页内容的骨架&#xff0c;定义了网页的结构和内容。是所有Web开发者必须掌握的基础语言。CSS (Cascading Style Sheets)&#xff1a;用于设置网页的样式和布局&#xff0c;包括字…

Python内置函数any()和ascii()详解

Python是一种高级编程语言&#xff0c;提供了丰富的内置函数来简化开发过程。其中&#xff0c;any()和ascii()是两个常用的内置函数&#xff0c;本文将深入探讨它们的用法和功能。 any()函数 any()函数是Python中的一个内置函数&#xff0c;用于判断可迭代对象中的元素是否全…

2604B吉时利2604B数字源表

181/2461/8938产品概述&#xff1a; 型号2604B用于台式应用&#xff0c;不包括TSP-Link、接触检查或数字I/O功能。关于系统使用&#xff0c;请参见型号2602B 吉时利2600B系列源表SMU仪器是业界领先的电流/电压源和测量解决方案&#xff0c;采用了吉时利第三代SMU技术。2600B系…

【Wbpack原理】基础流程解析,实现 mini-webpack

【Wbpack原理】基础流程解析&#xff0c;实现 mini-webpack ⛄&#xff1a;webpack 对前端同学来说并不陌生&#xff0c;它是我们学习前端工程化的第一站&#xff0c;在最开始的 vue-cli 中我们就可以发现它的身影。我们的 vue/react 项目是如何打包成 js 文件并在浏览器中运行…

计算机毕业设计java 基于Android的拼图游戏app

当今社会&#xff0c;随着电子信息技术的发展&#xff0c;电子游戏也成为人们日常生活的一部分。这种娱乐方式结合了日新月异的技术&#xff0c;在游戏软件中结合了多种复杂技术。拼图游戏流行在各种电子产品上&#xff0c;从计算机&#xff0c;掌上游戏机到如今的手机&#xf…

go 搭建api后台笔记

一、修改代理 修改成国内代理&#xff0c;是为了方便下载引用包 export GOPROXYhttps://goproxy.cn,direct二、写个例子 main.go package mainimport ("fmt""net/http""github.com/gin-gonic/gin" )func getPage(c *gin.Context) {page : c.…

山海鲸智慧交通:可视化技术助力城市交通管理升级

随着城市化进程的加速和汽车保有量的不断增加&#xff0c;交通拥堵、安全事故频发等问题日益凸显。在这样的背景下&#xff0c;智慧交通成为了解决城市交通难题的重要途径。山海鲸智慧交通可视化解决方案&#xff0c;以其创新的技术和卓越的性能&#xff0c;为城市交通管理提供…

STC8H8K64U 学习笔记 - 矩阵键盘

这里写自定义目录标题 环境说明引脚说明 矩阵键盘 环境说明 该内容仅针对我自己学习的开发板做的笔记&#xff0c;在实际开发中需要针对目标电路板的原理图进行针对性研究。 芯片&#xff1a;STC8H8K64U烧录软件&#xff1a;stc-isp-v6.92G编码工具&#xff1a;天问 引脚说明 …

1688详情API接口:解锁多元化应用场景java php c++

随着互联网的快速发展&#xff0c;数据交换和信息共享已成为企业日常运营不可或缺的一部分。在这样的背景下&#xff0c;API&#xff08;应用程序接口&#xff09;接口作为实现数据互通的重要工具&#xff0c;受到了越来越多企业的青睐。1688详情API接口作为阿里巴巴旗下的重要…

【算法每日一练]-动态规划(保姆级教程 篇17 状态压缩)

目录 今日知识点&#xff1a; 把状态压缩成j,dp每行i的布置状态&#xff0c;从i-1和i-2行进行不断转移 把状态压缩成j,dp每行i的布置状态&#xff0c;从i-1行进行状态匹配&#xff0c;然后枚举国王数转移 POJ1185&#xff1a;炮兵阵地 思路&#xff1a; 题目&#xff1a;互…

Mysql的四种索引实现方式

MySQL的索引实现方式主要包括以下四种&#xff1a; Btree索引&#xff08;B-Tree或BTree&#xff09; ○ 数据结构&#xff1a;Btree索引基于B树或B树数据结构实现。B树是一种自平衡的多路搜索树&#xff0c;每个节点包含多个键值对&#xff0c;并且所有数据都存储在叶子节点上…

ChatGPT技巧揭秘:学术论文写作全攻略

ChatGPT无限次数:点击直达 html ChatGPT技巧揭秘&#xff1a;学术论文写作全攻略 在当今数字化时代&#xff0c;如何写出优质的学术论文成为许多研究者关注的焦点。ChatGPT作为一款强大的自然语言处理工具&#xff0c;为学术论文的写作提供了全新的思路和技巧。本文将揭秘如…

TRIZ理论在创新实践中的优势体现在哪些地方?

当下&#xff0c;创新已成为推动企业和社会发展的关键动力。TRIZ&#xff0c;即发明问题解决理论。作为一套系统化的创新方法论&#xff0c;它通过分析大量专利和发明案例&#xff0c;总结出一套解决问题的通用方法和流程。那么&#xff0c;TRIZ理论在创新实践中的优势具体体现…

振弦采集仪在地下水位监测中的可行性研究与实践

振弦采集仪在地下水位监测中的可行性研究与实践 地下水位的监测对于水资源管理和地下水环境保护具有重要意义。传统的地下水位监测方法主要包括井水位计、压力传感器和雨水入渗监测等。然而&#xff0c;这些方法存在着一些局限性&#xff0c;如需要人工维护、监测周期长、监测…