HC-SR04超声波测距传感器树莓派程序

合集下载

hc-sr04的使用流程为

hc-sr04的使用流程为

HC-SR04的使用流程流程概述本文档将介绍如何使用HC-SR04超声波模块进行测距,包括硬件连接和代码编写的详细步骤。

HC-SR04是一款常用的低成本超声波测距模块,通过发射超声波信号并接收回波来计算距离。

该模块广泛应用于机器人、自动避障系统等场景。

硬件连接使用HC-SR04超声波模块之前,首先需要进行正确的硬件连接。

下面是连接步骤:1.将HC-SR04超声波模块插入面包板中。

确保连接正确,模块的GND引脚与面包板的地线相连,VCC引脚与5V电源相连。

2.连接Trig引脚和Echo引脚。

Trig引脚连接到面包板的数字引脚,而Echo引脚连接到面包板的模拟引脚。

软件设置完成硬件连接后,需要进行相关的软件设置。

具体步骤如下:1.在Arduino开发环境中创建一个新的项目。

2.导入Ultrasonic.h库。

这个库提供了访问HC-SR04模块的函数和方法。

3.定义Trig和Echo引脚的数字引脚号。

4.在setup()函数中初始化HC-SR04模块。

使用Ultrasonic类的构造函数,并传入Trig和Echo引脚号。

5.在loop()函数中使用Ultrasonic类的read()方法来读取距离值。

代码示例下面是一个简单的代码示例,演示了如何使用HC-SR04超声波模块进行测距:```cpp #include <Ultrasonic.h>// 定义Trig和Echo引脚的数字引脚号 #define TRIG_PIN 2 #define ECHO_PIN 3Ultrasonic ultrasonic(TRIG_PIN, ECHO_PIN);void setup() { // 初始化HC-SR04模块 ultrasonic.init(); }void loop() { // 读取距离值 float distance = ultrasonic.read();// 输出距离值 Serial.print(。

HC-SR04超声波测距模块说明书

HC-SR04超声波测距模块说明书

HC-SR04超声波测距模块◼产品概述HC-SR04是一款升级的超声波测距模块。

新增加UART,IIC及1-WIRE(单总线)功能,模式可以通过外围电阻设置。

2CM超小盲区,4M典型最远测距,2mA超低工作电流。

采用自研超声波测距解调芯片,使其外围更加简洁,工作电压更宽(2.8-5.5V)。

驱动采用扫频技术,减少探头本身一致性对灵敏度的影响。

内部40K驱动频率采用正温度补偿,切合探头中心频率的温度特性,减小温度影响。

外部晶振为外观兼容而放置的晶振,不起任何作用,不焊接晶振的模块价格更有优势。

◼实物图片◼主要特性⚫采用专业解调芯片⚫工作电压:2.8-5.5V⚫工作电流:2mA⚫支持GPIO,UART,IIC及1-WIRE多种接口模式,默认输出模式兼容HC-SR04⚫2CM盲区,4M典型最远测距⚫200mS周期⚫可配置各种颜色及加固型探头◼典型应用⚫玩具,机器人避障⚫液位,水位测量⚫坐姿检测⚫其它测距应用◼性能参数◼GPIO/UART/IIC/1-WIRE模式选择◼测量操作一:GPIO模式工作模式同HC-SR04。

外部MCU给模块Trig脚一个大于10uS的高电平脉冲;模块会给出一个与距离等比的高电平脉冲信号,可根据脉宽时间“T”算出:距离=T*C/2(C为声速)声速温度公式:c=(331.45+0.61t/℃)m•s-1(其中330.45是在0℃)0℃声速:330.45M/S20℃声速:342.62M/S40℃声速:354.85M/S0℃-40℃声速误差7左右。

实际应用,如果需要精确距离值,必需要考虑温度影响,做温度补偿。

如有需要,可关注我司带温补单芯片RCWL-9700。

二:UART模式UART模式波特率设置:9600N1命令返回值说明0XA0BYTE_HBYTE_MBYTE_L 输出距离为:((BYTE_H<<16)+(BYTE_M<<8)+BYTE_L)/1000单位mm0XF1公司及版本信息连接串口。

超声波模块HC-SR04简介以及编程

超声波模块HC-SR04简介以及编程

超声波模块H‎C-SR04简介‎以及编程1、本模块性能稳‎定,测度距离精确‎,模块高精度,盲区小。

产品应用领域‎:机器人避障物体测距液位检测公共安防停车场检测。

2、主要技术参数‎:1:使用电压:DC---5V2:静态电流:小于2mA3:电平输出:高5V4:电平输出:底0V5:感应角度:不大于15度‎6:探测距离:2cm-450cm7:高精度可达0.2cm实物图接线方式:VCC、trig(控制端)、echo(接收端)、GND基本工作原理‎:(1)采用IO口T‎RIG触发测‎距,给至少10u‎s的高电平信‎号;(2)模块自动发送‎8个40kh‎z的方波,自动检测是否‎有信号返回;(3)有信号返回,通过IO口E‎CHO输出一‎个高电平,高电平持续的‎时间就是超声‎波从发射到返‎回的时间。

测试距离=(高电平时间*声速(340M/S))/2; 本模块使用方‎法简单,一个控制口发‎一个10US‎以上的高电平‎,就可以在接收‎口等待高电平‎输出.一有输出就可‎以开定时器计‎时,当此口变为低‎电平时就可以‎读定时器的值‎,此时就为此次‎测距的时间,方可算出距离‎.如此不断的周‎期测,即可以达到你‎移动测量的值‎5、操作:初始化时将t‎r ig和ec‎h o端口都置‎低,首先向给trig 发送至少10‎us的高电平‎脉冲(模块自动向外‎发送8个40‎K的方波),然后等待,捕捉echo端输出上升沿‎,捕捉到上升沿‎的同时,打开定时器开‎始计时,再次等待捕捉‎e cho的下‎降沿,当捕捉到下降‎沿,读出计时器的‎时间,这就是超声波‎在空气中运行‎的时间,按照测试距离=(高电平时间*声速(340M/S))/2 就可以算出超‎声波到障碍物‎的距离。

6、下面是飞思卡‎尔XS128‎单片机测距的‎程序:while(1){PT1AD0‎_PT1AD‎00 = 1;//给超声波模块‎输入高脉冲PITINT‎E_PINT‎E1=1; //打开PIT1‎定时器while(!(counte‎r0>=4)); //等待20us‎PITINT‎E_PINT‎E1=0;counte‎r0 = 0;//关闭定时器,计数清零PT1AD0‎_PT1AD‎00 = 0; //trig管脚‎拉低PORTB_‎P B0 = 0; //指示灯0while(!(PT1AD0‎_PT1AD‎01 == 1)); //等待echo‎输出上升沿PORTB_‎P B1 = 0; //指示灯1PITINT‎E_PINT‎E0=1; //打开PIT0‎定时器while(!(PT1AD0‎_PT1AD‎01 == 0)); //等待下降沿distan‎c e = counte‎r*17/20; //计算距离,单位CMPITINT‎E_PINT‎E0=0; //关闭定时器PORTB_‎P B2 = 0; //指示灯2PITINT‎E_PINT‎E0=1; //打开定时器定‎时500ms‎,数码管显示 while(!(counte‎r>=10000)){Showin‎g(distan‎c e); //显示距离,精确1cm}PITINT‎E_PINT‎E0=0;counte‎r=0; //关闭定时器,清零}。

HC-SR04 超声波模块 DEMO 程序(淳修良)

HC-SR04 超声波模块 DEMO 程序(淳修良)
#define TX P1_2
unsigned int time=0;
unsigned int timer=0;
float S=0;
bit flag =0;
/********************************************************/
void Conut(void)
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.87)/100; //算出来是CM
if(flag==1) //超出测量
{
flag=0;
printf("-----\n");
while(!RX); //当RX为零时等待
TR0=1; //开启计数
while(RX); //当RX为1计数并等待
TR0=0; //关闭计数
Conut(); //计算
delayms(100); //100MS
}
}
/***********************************************************************************************************/
//HC-SR04 超声波测距模块 DEMO 程序
//晶振:11。0592
//程序
TH1=0xFD;
TL1=0xFD;
TH0=0;
TL0=0;
TR0=1;
ET0=1; //允许T0中断
TR1=1; //开启定时器
TI=1;
EA=1; //开启总中断

树莓派控制HC-SR04超声波模块测距(新手向+C语言向)

树莓派控制HC-SR04超声波模块测距(新手向+C语言向)

树莓派控制HC-SR04超声波模块测距(新⼿向+C语⾔向) 因为作业要求使⽤c语⾔代码,这⾥先附上⼀段摘⾃⽹上的代码 感谢KalaerSun的c语⾔代码,摘⾃https:///qq_25247589/article/details/628921401 #include <wiringPi.h>2 #include <stdio.h>3 #include <sys/time.h>4#define Trig 45#define Echo 567void ultraInit(void)8 {9 pinMode(Echo, INPUT); //设置端⼝为输⼊10 pinMode(Trig, OUTPUT); //设置端⼝为输出11 }1213float disMeasure(void)14 {15struct timeval tv1; //timeval是time.h中的预定义结构体其中包含两个⼀个是秒,⼀个是微秒16/*17 struct timeval18 {19 time_t tv_sec; //Seconds.20 suseconds_t tv_usec; //Microseconds.21 };22*/2324struct timeval tv2;25long start, stop;26float dis;2728 digitalWrite(Trig, LOW);29 delayMicroseconds(2);3031 digitalWrite(Trig, HIGH);32 delayMicroseconds(10); //发出超声波脉冲33 digitalWrite(Trig, LOW);3435while(!(digitalRead(Echo) == 1));36 gettimeofday(&tv1, NULL); //获取当前时间开始接收到返回信号的时候3738while(!(digitalRead(Echo) == 0));39 gettimeofday(&tv2, NULL); //获取当前时间最后接收到返回信号的时候40/*41 int gettimeofday(struct timeval *tv, struct timezone *tz);42 The functions gettimeofday() and settimeofday() can get and set the time as well as a timezone.43 The use of the timezone structure is obsolete; the tz argument should normally be specified as NULL.44*/45 start = _sec * 1000000 + _usec; //微秒级的时间46 stop = _sec * 1000000 + _usec;4748 dis = (float)(stop - start) / 1000000 * 34000 / 2; //计算时间差求出距离4950return dis;51 }5253int main(void)54 {55float dis;5657if(wiringPiSetup() == -1){ //如果初始化失败,就输出错误信息程序初始化时务必进⾏58 printf("setup wiringPi failed !");59return1;60 }6162 ultraInit();6364while(1){65 dis = disMeasure();66 printf("distance = %0.2f cm\n",dis);67 delay(1000);68 }6970return0;71 } 因为是刚开始接触树莓派开发,所以⽂章中可能会出现错误,希望⼤神们能多多指教,不胜感激。

单片机超声模块(HC-SR04)说明

单片机超声模块(HC-SR04)说明

单片机超声模块说明(HC-SR04)了解超声模块我们要分几步来理解,包括它的工作原理和在单片机上的运行情况,只有两者相互理解透才能更好的利用超声模块来开发一些东东!不同型号的超声模块其实大致是一样,也就没必要区分型号,除非你是特别要求,对于爱好者,初学者,则是没必要这么苛刻!第一步:超声模块的工作原理参数的设置时序图的说明第二步:单片机的连接上面我们知道怎么连接单片机的线了,对于TRIG发射端,ECHO 接受端,它们只需要四I/O端口就可以。

第三步:程序的编写和功能的开发这里我选择TRIG = P2^0 ECHO = P3^2设置一个报警器,当距离超过150cm是就报警,不超过是就不报警。

/******************************************板子:郭天祥老师的52单片机板?设计者:蒋时间:2012-4-29学校:南昌航空大学******************************************/#include <reg52.h>sbit dula=P2^6; //数码管段选,锁存器控制信号sbit wela=P2^7; //数码管位选,锁存器控制信号sbit a=P2^3;#define uchar unsigned char#define uint unsigned intint time;int succeed_flag;uchar timeL;uchar timeH;sbit Trig=P1^0;sbit Echo=P3^2;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f, 0x6f}; void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void delay_20us(){uchar a ;for(a=0;a<100;a++);}//显示数据转换程序void display(uint temp){uchar ge,shi,bai;bai=temp/100;shi=(temp%100)/10;ge=temp%10;dula=0;P0=table[ge]; //送数字8到段码端口dula=1;dula=0;wela=0;P0=0x7b; //数码管位选wela=1;wela=0;delay(5);dula=0;P0=table[shi]; //送数字8到段码端口dula=1;dula=0;wela=0;P0=0x7d; //数码管位选wela=1;wela=0;delay(5);dula=0;P0=table[bai]; //送数字8到段码端口dula=1;dula=0;wela=0;P0=0x7e; //数码管位选wela=1;wela=0;delay(5);if(temp>150)a=0;elsea=1;}void main(){uint distance;Trig=0; //首先拉低脉冲输入引脚EA=1; //打开总中断0TMOD=0x10; //定时器1,16位工作方式while(1){EA=0; //关总中断Trig=1; //超声波输入端delay_20us(); //延时20usTrig=0; //产生一个20us的脉冲while(Echo==0); //等待Echo回波引脚变高电平succeed_flag=0; //清测量成功标志EA=1;EX0=1; //打开外部中断0TH1=0; //定时器1清零TL1=0; //定时器1清零TF1=0; //计数溢出标志TR1=1; //启动定时器1delay(20); //等待测量的结果TR1=0; //关闭定时器1EX0=0; //关闭外部中断0if(succeed_flag==1){time=timeH*256+timeL;distance=time*0.0172; //厘米}if(succeed_flag==0){distance=0; //没有回波则清零}display(distance);}}//外部中断0,用做判断回波电平void exter() interrupt 0 // 外部中断0是0号{EX0=0; //关闭外部中断timeH =TH1; //取出定时器的值timeL =TL1; //取出定时器的值succeed_flag=1;//至成功测量的标志//定时器1中断,用做超声波测距计时void timer1() interrupt 3 //{TH1=0;TL1=0;}一遍可能看的有点糊涂!多看几遍就可以看懂!不明白问me+739141300技术付出的是金钱和汗水,收获的是一份自信!。

Raspberry Pi 的 HC-SR04 代码和连接[共2页]

Raspberry Pi 的 HC-SR04 代码和连接[共2页]

传感器实战全攻略int trigPin =8;int echoPin=7;fl oat v=331.5+0.6*20;//m/svoid setup(){Serial.begin(115200);pinMode(trigPin,OUTPUT);// ApinMode(echoPin,INPUT);// B}fl oat distanceM(){//发送声音脉冲digitalWrite(trigPin,LOW);delayMicroseconds(3);digitalWrite(trigPin,HIGH);delayMicroseconds(5);digitalWrite(trigPin,LOW);//监听回声fl oat tUs =pulseIn(echoPin, HIGH);// msfl oat t = tUs/1000.0/1000.0/2;// sfl oat d=t*v;// mreturn d*100;// cm}void loop()// C{int d=distanceM();Serial.println(d,DEC);delay(200);// ms}A 之前使用Ping传感器时,我们没有遵守在setup()中设置针脚模式的习惯,因为它需要不断改变模式(Ping在一个针脚上触发脉冲并读取回声)。

HC-SR04使用标有Trig的针脚触发声音。

B 标有Echo的针脚返回脉冲长度,也就是读取到反射回声的时间。

C 除了改变针脚设定外,HC-SR04的主程序与Ping传感器的主程序几乎相同。

Raspberry Pi的HC-SR04代码和连接搭建电路(见图3-6)并上传案例3-4的代码。

注意除了跳线之外,你还需要两个10kΩ的电阻。

(为了辨别阻值,使用第16页的“第三条色环的规则”中介绍的方法。

)下面的代码与Ping传感器类似。

案例 3-4.hc-sr04.py# hc-sr04.py - 将距离输出到串口,单位为厘米(cm)# (c) - Karvinen, Karvinen, Valtokariimport timeimport botbook_gpio as gpiodef readDistanceCm():triggerPin =22# AechoPin =2734。

说明hc-sr04传感器模块的控制方法及连接方式。

说明hc-sr04传感器模块的控制方法及连接方式。

说明hc-sr04传感器模块的控制方法及连接方式。

HC-SR04是一种超声波传感器模块,可以用于测量距离。


面是HC-SR04传感器模块的控制方法和连接方式的说明:
控制方法:
1. 初始化:将TRIGGER引脚设置为输出模式,并将其电平置
为低电平。

2. 发送触发信号:将TRIGGER引脚电平置为高,持续时间至
少10微秒,然后再将其电平置为低。

3. 接收返回信号:启动计时器,等待ECHO引脚电平置为高。

然后启动另一个计时器开始计时,直到ECHO引脚电平再次
置为低。

4. 计算距离:根据计时器的计时值(通常以微秒为单位),可以通过以下公式计算距离:距离 = (计时值 * 声速) / 2。

连接方式:
1. VCC引脚连接到正电源(通常是5V)。

2. GND引脚连接到地。

3. TRIGGER引脚连接到控制器的一个GPIO引脚(输出模式)。

4. ECHO引脚连接到控制器的另一个GPIO引脚(输入模式)。

5. 可以为模块上的超声波传感器提供一个适当的位置,以确保它可以正确地测量到待测物体的距离。

注意事项:
1. 在使用HC-SR04模块之前,请确保您已了解和理解其规格
和特性,并按照规格书上的要求正确连接和操作模块。

2. 在发送触发信号之前,务必等待适当的时间间隔,以确保传感器准备好了进行测量。

3. 在进行测量之前,请确保没有超声波信号被其他物体或障碍物反射回传感器,以免影响测量结果。

4. 根据您的具体应用需求,您可能需要采取其他措施来滤除噪音信号或进行多次测量以提高准确性。

超声测距模块HC—SR04的超声波测距仪设计

超声测距模块HC—SR04的超声波测距仪设计

置 相 应 的环 境 变 量 。
( )QtE e d d和 Qtpa开 发环 境 的 建 立 2 / mb d e oi 建 立 QtE e d d和 Qtpa开 发 环 境 的具 体 步 骤 如 / mb d e oi
G I 扩 展 资 源 , 现 对 超 声 波 测 距 模 块 HC—S 0 PO 实 R 4的 数
引 言
随着 国 民 经 济 的 迅 速 发 展 , 声 波 在 机 械 制 造 、 油 超 石 化 工 、 空 航 天 等 领 域 发 挥 着 越 来 越 重 要 的作 用 。 航
为 t超 声 波 在 空气 中 的传 播 速 度 为 c 则 从 传 感 器 到 目标 , ,
物 体 的距 离 D可 用 下 式 求 出 :
数 g l—nt 于 初 始 化 GPI po ii用 ’ O 没备 。 函数 g i eu — d v创 建 并 p0 t p c e s
传 播 过 程 中 会 产 生 衰 减 且 发 射 功 率 有 限 , 致 远 距 离 回 波 导
很 难 检 测 到 ,所 以会 有 一个 最 远 测 量 距 离 。另 外 , 过 温 通
波 从 发 射 到返 回 的 时 间 。
碍 障 匝

S20 显D 处 4 L屏 3器 示 C1 C 理
3 软 件 设 计
在 软 件 开 发 之前 , 先 要 完 成 软 件 开 发 环 境 的搭 建 , 首 接 下 来 最 重 要 的工 作 就 是设 备 驱 动 程 序 的 开 发 。 当 软 件 系统 底 层 的程 序 完 成 之 后 , 可 以 着 手上 层 的 与 设 备 无 关 就 的应 用 程 序 。最 后 就 是 系统 的 图形 界 面 的设 计 , 并将 应 用 程 序 烧 写 到 ¥ C 4 0开 发 板 上 。 321

超声波传感器C程序HC-SR04

超声波传感器C程序HC-SR04

#include <reg52.h>#define uchar unsigned char#define uint unsigned int//void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}//void delay_20us(){uchar a ;for(a=0;a<100;a++);}//******************************************** *******************//显示数据转换程序void display(uint temp){uchar ge,shi,bai;bai=temp/100;shi=(temp%100)/10; ge=temp%10;wela=1;P0=0xf7;wela=0;dula=1;P0=table[bai];dula=0;delay(1);dula=1;P0=0x00; //关位码 dula=0;wela=1;P0=0xef;wela=0;dula=1;P0=table[shi];dula=0;delay(1);dula=1;P0=0x00; //关位码dula=0;dula=1;P0=table[ge];dula=0;wela=1;P0=0xdf;wela=0;delay(1);dula=1;P0=0x00; //关位码dula=0;}//******************************************** *******************void main(){uint distance;test =0;Trig=0; //首先拉低脉冲输入引脚EA=1; //打开总中断0TMOD=0x10; //定时器1,16位工作方式while(1){EA=0; //关总中断Trig=1; //超声波输入端delay_20us(); //延时20usTrig=0; //产生一个20us的脉冲while(Echo==0); //等待Echo回波引脚变高电平succeed_flag=0; //清测量成功标志EA=1;EX0=1; //打开外部中断0TH1=0; //定时器1清零TL1=0; //定时器1清零TF1=0; //计数溢出标志TR1=1; //启动定时器1delay(20); //等待测量的结果TR1=0; //关闭定时器1EX0=0; //关闭外部中断0if(succeed_flag==1){time=timeH*256+timeL;distance=time*0.172; //厘米display(distance);}if(succeed_flag==0){distance=0;//没有回波则清零test= !test; //测试灯变化}}}//******************************************** *******************//外部中断0,用做判断回波电平void exter() interrupt 0 // 外部中断0是0号{timeH =TH1; //取出定时器的值timeL =TL1; //取出定时器的值succeed_flag=1;//至成功测量的标志EX0=0; //关闭外部中断}//******************************************** ********************//定时器1中断,用做超声波测距计时void timer1() interrupt 3 //。

超声波测距模块(hc-sr04)用户手册

超声波测距模块(hc-sr04)用户手册

超声波测距模块(HC-SR04)
用户手册
版本号:
版本日期:2011-2-27
1.产品特色
产品框图
3.接口定义
4.模块工作原理
5.注意事项
1 产品特色:
1、典型工作用电压:5V。

2、超小静态工作电流:小于2mA。

3、感应角度:不大于15度。

4、探测距离:2cm-400cm
5、高精度:可达0.3cm。

6、盲区(2cm)超近。

7、完全谦容GH-311防盗模块。

8、带金属USB外壳,坚固耐用。

2 产品框图:
3 接口定义:
Vcc、 Trig(控制端)、 Echo(接收端)、 Gnd
本产品使用方法:控制口发一个10US以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了。

4 模块工作原理:
(1)采用IO触发测距,给至少10us的高电平信号;
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
(3)有信号返回,通过IO输出一高电平,高电平持续的时间就是
(4)超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2;
5注意事项:
1:此模块不宜带电连接,如果要带电连接,则先让模块的Gnd端先连接。

否则会影响模块工作。

2:测距时,被测物体的面积不少于平方米且要尽量平整。

否则会影响测试结果。

HCSR04超声波测距模块.pdf

HCSR04超声波测距模块.pdf

H C-S R04超声波测距模块1、产品特点:HC-SR04 超声波测距模块可提供2cm-400cm 的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。

基本工作原理:(1)采用 IO 口 TRIG 触发测距,给至少 10us 的高电平信号; (2)模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回; (3)有信号返回,通过IO 口 ECHO 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。

测试距离=(高电平时间*声速(340M/S))/2;2、实物图:如右图接线,VCC 供5V 电源,GND 为地线,TRIG 触发控制信号输入,ECHO 回响信号输出等四支线。

图一实物图3、电气参数:电气参数HC-SR04 超声波模块工作电压DC 5 V工作电流15mA工作频率40Hz最远射程4m4、超声波时序图:图二、超声波时序图以上时序图表明你只需要提供一个 10uS 以上脉冲触发信号,该模块内部将发出 8 个 40kHz 周期电平并检测回波。

一旦检测到有回波信号则输出回响信号回响信号的脉冲宽度与所测的距离成正比。

由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。

公式:uS/58=厘米或者 uS/148=英寸;或是:距离=高电平时间*声速(340M/S)/2;建议测量周期为 60ms 以上,以防止发射信号对回响信号的影响。

注:1、此模块不宜带电连接,若要带电连接,则先让模块的GND 端先连接,否则会影响模块的正常工作。

2、测距时,被测物体的面积不少于0.5 平方米且平面尽量要求平整,否则影响测量的结果5、实物规格:。

HC-SR04超声波测距模块程序

HC-SR04超声波测距模块程序

HC-SR04超声波测距模块程序/************************************************************** *********************************************///HC-SR04 超声波测距模块//晶振:12MHZ//接线://串口波特率2400//编写:by kai*************************************************************** ********************************************/#include#include#include#define uchar unsigned char#define uint unsigned intsbit RX = P3^3; // ECHOsbit TX = P1^4; // TRLGsbit BEEP = P1^6; // BEEPsbit K1 = P4^5; // 报警距离 +sbit K2 = P4^3; // 报警距离 -unsigned int time=0;unsigned int timer=0;float S=999;bit flag =0;unsigned int B1 = 150; //设置报警距离 2-400//延时void Delay10ms() //@12.000MHz {unsigned char i, j;_nop_();_nop_();i = 117;j = 183;do{while (--j);} while (--i);}void Delay800ms() //@12.000MHz {unsigned char i, j, k;i = 37;j = 123;k = 92;do{do{while (--k);} while (--j);} while (--i);}/********************************************************/void Conut(void){time=TH0*256+TL0;TH0=0;TL0=0;S=(time*1.87)/100; //算出来是CMif(flag==1) //超出测量{flag=0;printf("-----\n");}printf("S=%f\n",S);}/********************************************************/void zd0() interrupt 1 //T0中断用来计数器溢出,超过测距范围{flag=1; //中断溢出标志}/********************************************************/void StartModule() //T1中断用来扫描数码管和计800MS启动模块{TX=1; //800MS 启动一次模块Delay800ms();;TX=0;}void ceju(void){EA = 0; //关闭中断,防止影响测量数据StartModule();while(!RX); //当RX为零时等待TR0=1; //开启计数while(RX); //当RX为1计数并等待TR0=0; //关闭计数EA = 1;Conut(); //计算}void Timer0Init(void) //微秒@12.000MHz{AUXR &= 0x7F; //定时器时钟12T模式TMOD &= 0xF0; //设置定时器模式TMOD |= 0x01; //设置定时器模式TL0 = 0x00; //设置定时初值TH0 = 0x00; //设置定时初值TF0 = 0; //清除TF0标志ET0 = 1; //开启定时器1中断EA = 1; //开启定时器1中断}voidUartInit(void)//***************** {PCON &= 0x7F; //波特率不倍速SCON = 0x50; //8位数据,可变波特率AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12TAUXR &= 0xFE; //串口1选择定时器1为波特率发生器TMOD &= 0x0F; //清除定时器1模式位TMOD |= 0x20; //设定定时器1为8位自动重装方式TL1 = 0xF3; //设定定时初值TH1 = 0xF3; //设定定时器重装值ET1 = 0; //禁止定时器1中断TR1 = 1; //启动定时器1TI=1;}void baojing(){EA = 0;while(K1==0||K2==0){if(K1 == 0) // 报警距离 +{BEEP = 1;Delay10ms(); //消抖BEEP = 0;B1 = B1+5;}if(K2 == 0) // 报警距离 -{BEEP = 1;Delay10ms();BEEP = 0;B1 = B1-5;}}if(S{BEEP = 1;Delay800ms();Delay800ms();BEEP = 0;Delay800ms();BEEP = 1;Delay800ms();Delay800ms();BEEP = 0;Delay800ms();BEEP = 1;Delay800ms();Delay800ms();BEEP = 0;}EA = 1;}/********************************************************/ void main(void){Timer0Init();UartInit();K1 = 1;K2 = 1;P1M1 = 0X00;P1M0 = 0X40;BEEP = 1;Delay800ms(); BEEP = 0; while(1){ceju();Delay800ms(); baojing();}}。

超声波测距模块_HC-SR04_ 用户手册-V2.0

超声波测距模块_HC-SR04_ 用户手册-V2.0

超声波测距模块(HC-SR04)用户手册版本号:V2.01.产品特色2.产品实物图3.接口定义4.最远探测距离调节5.模块工作原理6.应用注意事项7.模块线路图1 产品特色:1、典型工作用电压:5V2、超小静态工作电流:小于2mA3、感应角度(R3电阻越大,增益越高,探测角度越大): R3电阻为392/432,不大于15度R3电阻为472, 不大于30度4、探测距离(R3电阻可调节增益,即调节探测距离): R3电阻为392/432 2cm-450cmR3电阻为472 2cm-700cm5、高精度:可达0.3cm6、盲区(2cm)超近2产品实物图:顶部视图底部视图3 接口定义:Vcc、 Trig(控制端)、 Echo(接收端)、 Gnd本产品使用方法:控制口发一个10US以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了。

4 最远探测距离调节:上图标志电阻即R3,可以调节最大探测距离。

R3电阻为392或432,探测距离最大4.5M 左右,探测角度小于15度;R3电阻为472,探测距离最大7M左右,探测角度小于30度;出厂默认392或432,即最大探测距离4.5M左右。

R3电阻大,接收部分增益高,检测距离大,但检测角度会相应变大,容易检测到前方旁边的物体。

当然,客户在不要求很高的测试距离的条件下,可以改小R3来减小探测角度,这时最大测距会减小。

5 模块工作原理:(1)采用IO触发测距,给至少10us的高电平信号;(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;(3)有信号返回,通过IO输出一高电平,高电平持续的时间就是(4)超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2;6 应用注意事项:1:此模块不宜带电连接,如果要带电连接,则先让模块的Gnd端先连接。

超声波测距模块(HC-SR04)用户手册

超声波测距模块(HC-SR04)用户手册

超声波测距模块(HC-SR04用户手册版本号:V1.0版本日期:2011-2-271. 产品特色2. 产品框图3. 接口定义4. 模块工作原理5. 注意事项1产品特色:1、典型工作用电压:5V。

2、超小静态工作电流:小于2mA3、感应角度:不大于15度。

4、探测距离:2cm-400cm5、高精度:可达0.3cm。

6、盲区(2cm)超近。

7、完全谦容GH-311防盗模块。

8、带金属USB外壳,坚固耐用。

2产品框图:⑷超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2;3接口定义:Vcc、Trig (控制端)、Echo (接收端)、Gnd本产品使用方法:控制口发一个10US以上的高电平,就可以在接收口等待高电平输出 . 有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了。

4模块工作原理:(1) 采用10触发测距,给至少10us的高电平信号;(2) 模块自动发送8个40khz的方波,自动检测是否有信号返回;(3) 有信号返回,通过IO输出一高电平,高电平持续的时间就是⑷ 超声波从发射到返回的时间.测试距离 =(高电平时间*声速(340M/S))/2; 越声at 时序BB :10uS 的 TTL慰发信号______ 回响电平输出 与检测距离成上匕例圏二、超声波时序图以上时睜图表切你只需要提供一个1OuS 以匕脉冲触发信号,该模块内部将 发出&个4以缶周期电平井检测回波。

一 11检测到仔回波信巧则输出刖响信号口 回响信号的尿冲宽度弓所测的距离成正比“由此通过发射信号到收到的回响信号 时间间隔可以计算得到距离。

公式:uS/58=厘米或者uS/148=英寸;或是*距离 =高电平时间*声速(34OMS) 2:建议测舅周期为60ms W 上.以防止发射信号 对回响倩号的影响&5注意事项:1:此模块不宜带电连接,如果要带电连接,则先让模块的Gnd 端先连接。

树莓派练习程序(超声波测距)

树莓派练习程序(超声波测距)

树莓派练习程序(超声波测距)最近弄了块树莓派,业余研究研究。

超声波模块⽤的是HC-SR04,⼀共四个引脚,如下图:树莓派的引脚如下图:我们将Vcc连接物理接⼝2,Trig连接物理接⼝38,Echo连接物理接⼝40,Gnd连接物理接⼝39。

实物连接如下图:编程使⽤WiringPi库,使⽤wpi引脚编码⽅式控制GPIO。

代码如下:#include <wiringPi.h>#include <stdio.h>#include <sys/time.h>#define Trig 28#define Echo 29void ultraInit(void){pinMode(Echo, INPUT);pinMode(Trig, OUTPUT);}float disMeasure(void){struct timeval tv1;struct timeval tv2;long start, stop;float dis;digitalWrite(Trig, LOW);delayMicroseconds(2);digitalWrite(Trig, HIGH);delayMicroseconds(10); //发出超声波脉冲digitalWrite(Trig, LOW);while (!(digitalRead(Echo) == 1));gettimeofday(&tv1, NULL); //获取当前时间while (!(digitalRead(Echo) == 0));gettimeofday(&tv2, NULL); //获取当前时间start = _sec * 1000000 + _usec; //微秒级的时间stop = _sec * 1000000 + _usec;dis = (float)(stop - start) / 1000000 * 34000 / 2; //求出距离return dis;}int main(void){float dis;if (wiringPiSetup() == -1) { //when initialize wiring failed,print messageto screen printf("setup wiringPi failed !");return1;}ultraInit();while (1) {dis = disMeasure();printf("distance = %0.2f cm\n", dis);delay(1000);}return0;}结果如下图:参考:/jcdjx/article/details/27313345/xdw1985829/article/details/39580401/。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档