admin管理员组

文章数量:1559063

目录

一、超声波测距的基本原理

二、hc-sr04超声波测距模块 

三、hc-sr04超声波测距模块代码

四、串口打印数据

五、工程代码

六、串口调试助手软件

七、超声波传感器原理图资料 


一、超声波测距的基本原理

        超声波测距原理是在超声波发射装置发出超声波,它的根据是接收器接到超声波时的时间差,与雷达测距原理相似。 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。(超声波在空气中的传播速度约为340m/s,根据计时器记录的时间t(秒),就可以计算出发射点距障碍物的距离(s),即:s=340t/2)

        超声波在空气里的传播速度受温度影响,一般以常温20摄氏度作为参考进行计算:
超声波在空气中的传播速度为340m/s(当然温度不同,传播速度也不同,带温度校准的模块得到的数据会更准),根据计时器记录的时间t(秒),就可以计算出发射点距障碍物的距离(s),即:s=340t/2。

原理如图所示:

二、hc-sr04超声波测距模块 

该实物图的正反面如上图所示,hc-sr04超声波测距模块可实现 2cm~4.5m 的非接触测距功能,拥有 2.4~5.5v 的宽电压输入范围,静态功耗低于 2ma,自带温度传感器对测距结果进行校正,同时具有 gpio,串口两种通信方式实现数据的读取,工作稳定可靠。 

相关说明如下:

1 号 pin:vcc接电源(供电范围 2.4v~5.5v)。   

2 号 pin:当为 uart 模式时,接外部电路 uart 的 tx 端(注意);当为电平触发模式时,接外部电路的 trig 端。

3 号 pin:当为 uart 模式时,接外部电路 uart 的 rx 端(注意);当为电平触发模式时,接外部电路的 echo 端。

 4 、5号 pin:gnd接外部电路的地。

三、hc-sr04超声波测距模块代码

hc-sr04.c文件驱动代码

#include "stm32f10x.h"                  // device header
#include "hcsr04.h"
#include "delay.h"
#include "timer.h"
uint16_t time;//高电平时间
void hcsr04_init()
{
	rcc_apb2periphclockcmd(trig_rcc, enable);
	
	gpio_inittypedef gpio_initstruct;
	
	gpio_initstruct.gpio_mode = gpio_mode_out_pp;	//推挽输出
	gpio_initstruct.gpio_pin = trig_pin;          //pa0
	gpio_initstruct.gpio_speed = gpio_speed_50mhz;//io口速度50mhz
	gpio_init(trig_port, &gpio_initstruct);
	
	gpio_initstruct.gpio_mode = gpio_mode_ipd;		//上拉输入
	gpio_initstruct.gpio_pin = echo_pin;					//pa1
	gpio_initstruct.gpio_speed = gpio_speed_50mhz;
	gpio_init(echo_port, &gpio_initstruct);
	
	gpio_resetbits(trig_port, trig_pin);
}
void hcsr04_start()
{
	gpio_setbits(trig_port, trig_pin);
	delay_us(45);
	gpio_resetbits(trig_port, trig_pin);
	timer_init();
}
uint16_t hcsr04_getvalue()
{
	hcsr04_start();
	delay_ms(100);
	return ((time * 0.0001) * 34000) / 2;  // cm/s  [(0.00001s*340m/s)/2] * 100
//	return time;
}

hc-sr04.c文件声明函数

#ifndef __hcsr04_h
#define __hcsr04_h
#define trig_port 		gpioa
#define trig_pin 		gpio_pin_0 //scl
#define trig_rcc		rcc_apb2periph_gpioa
#define echo_port 		gpioa
#define echo_pin 		gpio_pin_1 //cda
#define echo_rcc		rcc_apb2periph_gpioa
void hcsr04_init(void);
uint16_t hcsr04_getvalue(void);
#endif 

四、串口打印数据

五、工程代码

《stm32单片机 hc-sr04超声波测距传感器 oled屏幕 蜂鸣器报警 超声波测距数据发送到串口调试助手》源代码资源-csdn文库

六、串口调试助手软件

串口调试助手-keil5调试工具资源-csdn文库

七、超声波传感器原理图资料 

超声波传感器原理图、模块资料资源-csdn文库

本文标签: