导航:首页 > 制冷设备 > mixly超声波测距模块怎么用

mixly超声波测距模块怎么用

发布时间:2024-03-04 16:47:25

❶ 老师,关于多超声波测距,有什么样的方法才能同时测得数据。如果采用循环来测距应该怎么做

对于多超声波测距来说,如果你要同时做,你就得让这些超声波的频率互相间隔开,否则互相会产生干扰。
如果你觉得这种间隔不容易做到,也可以采用循环扫描法来做,也就是先确定比如4个点,每个点上都有一套超声波测距装置(一个发射探头,一个接收探头),按一定的规律循环扫描。比如先启动1号探头,发射,接收,测量好数据后。启动第2个,发射,接收,测量好数据。然后第3,第4个。全部测量完成后,把数据集中,按照中学几何(平面几何或者立体几何,具体跟你的探测点放置有关系,物体的位置就相当于以你的探测头为圆心,以探测出的距离为半径的一个圆弧上,由于目标只有一个,因此理论上,4个点测出的圆弧最终会相交于1点,也就是物体位置,利用平面或者立体坐标,以及圆的数学函数方程,可以轻易算出来),算出坐标。然后再启动一次循环,第二次测量出坐标。多测几次后,把坐标(可能是平面,也可能是立体坐标)进行统计测算(比如求平均值),就可以求出比较准确的物体的坐标了。
从现在的情况看,你要做这么几步:
1、首先确保你会使用一个超声波探头测量距离。
2、你要温习一下中学几何的知识。
3、我建议你不要玩模块,这种东西虽然看似比较简单,其实你真正能学会的东西不多。而且如果它的软硬件设计有缺陷(比如你现在遇到的问题),你查也没法查出来。

❷ 超声波测距模块使用

一、超声波测距模块的类型

四、超声波测距的应用

  1. 超声波测距,可应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。

  2. 测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。


❸ 超声波传感器如何测距

超声波传感器测距工作原理:超声波传感器是将超声波信号转换成其他能量信号(通常是电信号)的传感器。超声波是指频率大于20 kHz的在弹性介质中产生的机械震荡波,其具有指向性强、能量消耗缓慢、传播距离相对较远等特点,因此常被用于非接触测距。由于超声波对液体、固体的穿透本领很大,尤其是在阳光不透明的固体中。超声波碰到杂质或分界面会产生显著反射形成反射成回波,碰到活动物体能产生多普勒效应。,因此超声波测距对环境有较好的适应能力,此外超声波测量在实时、精度、价格也能得到很好的折中。
目前超声波测距的方法有多种:如往返时间检测法、相位检测法、声波幅值检测法。其原理是超声波传感器发射一定频率的超声波,借助空气媒质传播,到达测量目标或障碍物后反射回来,经反射后由超声波接收器接收脉冲,其所经历的时间即往返时间,往返时间与超声波传播的路程的远近有关。

❹ 超声波模块的原理应该怎么理解

超声波测距原理是通过超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时
超声波在空气中传播时碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。
超声波在空气中的传播速度为v ,而根据计时器记录的测出发射和接收回波的时间差△t ,就可以计算出发射点距障碍物的距离S

❺ 怎样用超声波 在固定的距离中 测到障碍物,然后避开

我分为2个.c文件和2个.h文件,3辅1主

1.文件名:chaoshengbo.c

// 注 :需要用杜邦线把 超声波模块的 VCC----VCC TRIG---P1.0 ECHO---P1.1 GND----GND 相连
/**********************************包含头文件**********************************/
#include <reg52.h>
/************************************宏定义************************************/
#define VELOCITY_30C 3495 //30摄氏度时的声速,声速V= 331.5 + 0.6*温度;
#define VELOCITY_23C 3453 //23摄氏度时的声速,声速V= 331.5 + 0.6*温度;
#define uchar unsigned char
#define uint unsigned int
/************************************位定义************************************/
sbit INPUT = P3^2; //RX P3^2是外部中断口,用来计算时间用的
sbit OUTPUT = P1^7; //TX output可以在P0、P1、P2的24个口
//sbit INPUT = P2^1; //回声接收端口
//sbit OUTPUT = P2^0; //超声触发端口
/********************************定义变量和数组********************************/
long int distance=0; //距离变量
uchar count;
/******************************************************************************/
/* 函数名称 : Init_MCU */
/* 函数描述 : 初始化单片机函数 */
/* 输入参数 : 无 */
/* 参数描述 : 无 */
/* 返回值 : 无 */
/******************************************************************************/
void Init_MCU(void)
{
TMOD = 0x01; //定时器2初始化,设置为16位自动重装模式
TL0 = 0x66;
TH0 = 0xfc; //1ms
ET0 = 1; //开定时器2
EA = 1; //总中断使能
}
/******************************************************************************/
/* 函数名称 : Init_Parameter */
/* 函数描述 : 初始化参数和IO口函数 */
/* 输入参数 : 无 */
/* 参数描述 : 无 */
/* 返回值 : 无 */
/******************************************************************************/
void Init_Parameter(void)
{
OUTPUT =1;
INPUT = 1;
count = 0;
distance = 0;
}
/******************************************************************************/
/* 函数名称 : Trig_SuperSonic */
/* 函数描述 : 发出声波函数 */
/* 输入参数 : 无 */
/* 参数描述 : 无 */
/* 返回值 : 无 */
/******************************************************************************/
void Trig_SuperSonic(void)//出发声波
{
OUTPUT = 1;
delayms(1);
OUTPUT = 0;
}
/******************************************************************************/
/* 函数名称 : Measure_Distance */
/* 函数描述 : 计算距离函数 */
/* 输入参数 : 无 */
/* 参数描述 : 无 */
/* 返回值 : 无 */
/******************************************************************************/
void Measure_Distance(void)
{
uchar l;
uint h,y;
TR0 = 1;
while(INPUT)
{
;
}
TR0 = 0;
l = TL0;
h = TH0;
y = (h << 8) + l;
y = y - 0xfc66;//us部分
distance = y + 1000 * count;//计算总时间
TL0 = 0x66;
TH0 = 0xfc;
delayms(30);
distance = VELOCITY_30C * distance / 20000;//4位数:xxxx毫米
}
/******************************************************************************/
/* 函数名称 : main */
/* 函数描述 : 主函数 */
/* 输入参数 : 无 */
/* 参数描述 : 无 */
/* 返回值 : 无 */
/******************************************************************************/
long int Ceju(void)
{
while(1)
{
Init_Parameter(); // 参数重新初始化
Trig_SuperSonic(); //触发超声波发射
while(INPUT == 0) //等待回声
{
;
}
Measure_Distance(); //计算脉宽并转换为距离
if(distance != 0)
return distance;
}
}
/******************************************************************************/
/* 函数名称 : timer0 */
/* 函数描述 : T0中断处理函数 */
/* 输入参数 : 无 */
/* 参数描述 : 无 */
/* 返回值 : 无 */
/******************************************************************************/
void timer0 (void) interrupt 1
{
TF0 = 0;
TL0 = 0x66;
TH0 = 0xfc;
count++;
if(count == 18)//超声波回声脉宽最多18ms
{
TR0 =0;
TL0 = 0x66;
TH0 = 0xfc;
count = 0;
}
}
/******************************************************************************/
2.文件名:delay.h
#ifndef __DELAY_H_
#define __DELAY_H_
/**********************************
包含头文件
**********************************/
//#include<reg51.h>
#define FOSC 11059200L //晶振设置,默认使用11.0592M Hz
/**********************************
定义延时函数
**********************************/
/*延时函数1,用于PWM高电平的时长,即用于定位*/
void delay10us(unsigned char us) //us增量为0.01193ms,范围为:43~208
{
unsigned char a, b;
for(b=us;b>0;b--)
for(a=1;a>0;a--);
}
/*延时函数2,用于PWM低电平的时长*/
void delay17ms489us(void) //误差 -0.935763888893us
{
unsigned char a,b,c;
for(c=14;c>0;c--)
for(b=164;b>0;b--)
for(a=2;a>0;a--);
}
/*延时函数3,用于ms级的延时*/
void delayms(unsigned int ms)
{
unsigned int i,j;
for(i=0;i<ms;i++)
#if FOSC == 11059200L
for(j=0;j<114;j++);
#elif FOSC == 12000000L
for(j=0;j<123;j++);
#elif FOSC == 24000000L
for(j=0;j<249;j++);
#else
for(j=0;j<114;j++);
#endif
}
#endif
3.文件名:IOdefine.h
#ifndef __IODEFINE_H_
#define __IODEFINE_H_
/**********************************
包含头文件
**********************************/
//#include<reg51.h>
/**********************************
定义IO口
**********************************/
/*反馈信号灯串口,用于检测故障*/
sbit Return_LED = P0^3;
sbit Left_LED = P0^0;
sbit Right_LED = P0^1;
sbit Front_LED = P0^2;
//sbit Left_Front_LED = P0^3;
//sbit Right_Front_LED = P0^4;
//sbit Slow_LED = P0^5;
//sbit Fast_LED = P0^6;
sbit Power_LED = P0^7;
/*红外感应器串口*/
sbit Left_IR = P1^1;
sbit Right_IR = P1^2;
sbit Front_IR = P1^3;
//sbit Left_Front_IR = P1^3;
//sbit Right_Front_IR = P1^4;
/*舵机MG90s串口*/
sbit Duoji = P1^5;
#endif
4.文件名:main.c
#include <reg52.h>
#include <IOdefine.h>
#include <Delay.h>
#include "Chaoshengbo.c"
/*位置数值宏定义*/
#define Limit_Left 34 //左极限
#define Limit_Right 199 //右极限
#define Half_Left 79 //左45度
#define Half_Right 159 //右45度
#define Mid 119 //中位
void Run(unsigned char time)
{
unsigned char i = 5;
Duoji = 0;
while(i--)
{
Duoji = 1;
delay10us(time);
Duoji = 0;
delay10us(199-time);
delay17ms489us();
}
}
void main(void)
{
long int S = 0;//距离
unsigned char i = Mid;
Init_MCU(); //超声波模块初始化
Run(i);
while(1)
{

S = Ceju();//超声波测到的距离
/*可修改代码段 *///用上之前设定的工具,按照逻辑
if(Left_IR == 0) //左障
{
// delayms(5);
if(Left_IR == 0)
{
while(1)
{
if(S > 320)
{

Run(Half_Right);
}
// if(i > Half_Right)
// i = Half_Right;
if(Left_IR == 1)
break;
}
}
}
else if(Right_IR == 0) //右障
{
// delayms(5);
if(Right_IR == 0)
{

while(1)
{
if(S > 320)
{

Run(Half_Left);
}
// if(i < Half_Left)
// i = Half_Left;

❻ 超声波测距仪是怎么定时的

利用单片机定时器的TMOD中的Gate,和外部中断一起使用。

❼ 怎样用超声波传感器来检测前方一定距离内有无障碍,求高手指教!!!

严格的说“前方一定距离有无障碍”太笼统。
什么是前方障碍,从大范围来说,一个钉子、一个坑,一根横着的绳子,它们都是障碍,但这些超声波的识别率很低。实际上微波、视频也很难胜任,激光就更不用提了。
所以,我不得不明确一下,如果前方有一面墙,超声波是能检测到的,如果是一根电线或者水坑什么的,超声波是无法识别的。在这一点能接受的情况下,我们才可以继续把这个想法深入下去:
用超声波来判断前方障碍,用一个测距模块就可以了,MCU反复读取前方测距的数值,如果连续几次测距,返回的距离信息都在‘障碍’定义的距离范围之内,就判断为前方有障碍,程序则控制转向或停车,或者报警。

❽ 超声波测距模块

对于第一个问题:
超声波测距,通常在10米以内,但也有个别厂家做到几十米甚至百米的。超声波测距有以下几个特点:1、频率越高,精度也越高,但检测距离越近(空气衰减增大);2、输出功率越高、灵敏度越高,检测距离也越远(虽然是废话,但我必须写上);3、通常检测角度小的,测距范围略远;4、以上因素所造成的影响加起来,可能没有被测物体带来的影响更大:例如一个刚性表面(例如钢板)和一根铁丝、或者在钢板表面铺满吸音绵、或者把钢板与探头法线夹角从垂直改为倾斜45度等等,这些因素所带来的影响最大的。这也许不太容易理解,如果把超声波比作可见光,那么刚性表面可以理解成镜子,要想让你发现距离很远的人,对方用镜子‘晃’你是最好不过的了。但如果把镜子罩上黑纸,或者把镜子倾斜45度所带来的影响,你我可想而知,超声波也一样。

第二个问题:
一个单片机上同时使用几个不同频率的超声波模块,这就是软件程序的问题,没有什么难度,大学生就可以做,我想你一定也没问题。关于测距模块,从20KHz~400KHz,测距范围从0.1m~30m这些都不难购到,技术也不是很难。问题是,你能找到这么多频率的探头么?虽然超声波探头的各种频率都有,但它是针对量程来划分的,同一个量程里,频率都很接近(例如3-10米测距基本都是40KHz)。你要在同一个量程里找出4种不同频率来,恐怕是有难度的。当然你也可以用4种不同的频率来驱动同一种探头。可是,若4个频率中的某个频率与探头的中心频率差别大了(例如超过5%),会导致效率大幅减低,如果频率差别小了,识别、区分他们又有困难,例如对于一个40KHz的探头,一般厂家规定的下限和上限也就是38KHz~42KHz,我们就算冒险用到37KHz~43KHz(从可靠性和稳定性考虑,我不赞成这么用),你需要区分37KHz、39KHz、41KHz、43KHz四种频率的反馈信号,如此以来,常规的测距电路是不能用了,你需要研究一种全新的测距方案来识别他们,而且不能影响正常的计时精度,我建议你参考一些微波雷达的技术。

阅读全文

与mixly超声波测距模块怎么用相关的资料

热点内容
内径5轴承内圈误差多少 浏览:934
轴承的正反怎么分辨 浏览:883
磁电系仪表被烧毁是什么原因 浏览:338
阀门中UTS是什么缩写 浏览:912
设备油箱液位计怎么看 浏览:39
装卸搬运的原则是什么有哪些设备 浏览:798
阀门材质r代表什么 浏览:139
香港金尚电动工具 浏览:705
鹤壁家庭消防器材都有哪些 浏览:207
自贡低压阀门厂 浏览:731
杭州盈江机械制造有多少员工 浏览:277
机械做什么传说套 浏览:568
机器人器材去哪里买 浏览:739
lol机械眼皮肤多少钱 浏览:330
polo汽车仪表油耗怎么调 浏览:474
机械制图怎么才算圆角 浏览:579
超声波灰尘怎么清理 浏览:640
机械制图r50怎么画 浏览:998
如何制作机械BOM 浏览:613
余姚市钱江阀门厂 浏览:813