0°

(五)URM11V1.0超声波测距传感器—Arduino超声波传感器

简介URM11是在URM37的基础上做删减产生的产品,沿袭了URM37的主要信号变换电路和核心程序。最主要的更改体现在对模块的操作采用了单线方式。 另外为了适应Explorer MAX小车结构而做了外形的改变。

简介

URM11是在URM37的基础上做删减产生的产品,沿袭了URM37的主要信号变换电路和核心程序。最主要的更改体现在对模块的操作采用了单线方式。 另外为了适应Explorer MAX小车结构而做了外形的改变。

产品参数

  • 工作电压: 3.6V ~ 10V
  • 工作电流: < 20mA
  • 工作温度: -10℃ ~ 70℃
  • 测量范围: 5CM ~500CM
  • 尺寸:60mm × 31 mm
  • 重量:约30克
  • 测量周期:建议不小于50MS

引脚说明

Arduino超声波传感器-URM11V1.0超声波测距传感器

表名

Arduino超声波传感器-URM11V1.0超声波测距传感器

所需硬件

  • UNO x1
  • URM11模块 x1
  • 数字传感器 x1

所需软件

  • Arduino IDE

接线图

Arduino超声波传感器-URM11V1.0超声波测距传感器

读写URM11寄存器

  • URM11寄存器映射表
  • Arduino超声波传感器-URM11V1.0超声波测距传感器
  • 读写URM11寄存器

URM11的所有寄存器都可读,这里我们演示读距离寄存器低8位(地址0x09),在读寄存距离值之前先要向启动寄存器(START/STOP REG 地址0x05)写1开启模块,使URM11工作。读出的数据以CM为单位,例如读出的数据为0x000B,则代表当前测得的距离为11CM。(若读出的数据为0xFFFF,则代表测得的数据为无效或未测到数据)

将示例代码编译下载到Arduino板上,按照图示把超声波模块和Arduino连接就能够实现距离的测量。

注意:请先下载程序,再连接线路。因为UNO板下载程序时会占用TX/RX口,如果将arduino与SEN0001事先连接的话,将会导致程序下载失败。

演示代码

#include <SoftwareSinglebus.h>
char dataRegStart = 0x01;
char addrRegStart = 0x05;
SoftwareSinglebus  mySingleBus(2);

void SinglebusWriteByte(char reg, char* str, char len){
  mySingleBus.beginTransmission(0x01,WRITE);
  mySingleBus.write(reg);//register address
  while(len--)
    mySingleBus.write(*str++);//data
  mySingleBus.endTransmission();
}

char readdata(void){
  char data = -1;
  mySingleBus.beginTransmission(0x01,READ);
  mySingleBus.write(0x09);//register address
  mySingleBus.write(0x01);//length
  mySingleBus.endTransmission();
  mySingleBus.requestFrom(0x01,0x01);

  if(mySingleBus.available()){
    data = mySingleBus.read();  
  }
  mySingleBus.endTransmission();
  return data;
}
void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  mySingleBus.begin();
  SinglebusWriteByte(addrRegStart,&dataRegStart,1);// write 0x01 to START/STOP Reg 
  delay(10);
  
}

void loop() {
  // put your main code here, to run repeatedly:
  char data = readdata();//Read Distance_L Reg
  if(data != -1){
   Serial.print("distance  = ");
   Serial.print((unsigned char)data);
   Serial.println("cm");
  }
  delay(100);
}

结果

Arduino 板发送给串口上位机显示距离信息

Arduino超声波传感器-URM11V1.0超声波测距传感器

波特率选择115200

疑难解答

  • 如果用户在和Arduino连接的时候,出现无法使用它时,请首先检查一下当前串口电平的模式,有可能出现在使用TTL电平时,而我们的模块却工作在RS232电平。
  • 由于超声波在空气中衰减很厉害(与距离d的平方成反比),同时声音在障碍物表面反射时会受很多因素 (如障碍物形状、方向、质地)的影响,因此超声波测量的距离是有限的。
  • 本系统远距离测试被测物是一面墙,近距离测试被测物可以是一支笔。根据使用环境和被测物的质地的不同,将可能造成测量结果与提供的数据不符。差距不大,属于正常情况。
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论