Arduino超声波传感器-URM04V2.0超声波测距传感器
外 观
概 述
- URM04是在广受欢迎的URM37超声波传感器基础上开发的RS485接口版本,主要解决了以前无法多个使用URM37的问题。
- 对于需要多传感器应用的场合,比如移动机器人的障碍物检测、超声波定位,多传感器的并行工作是一个比较麻烦的问题,在URM04采用了RS485串行通信总线的架构以后,不但可以使得32路URM04同时在线,而且不会增加用户的开发和调试的时间。
- 其串行控制方式和URM37的串行控制方式原理上保持一致。
- 应用场合:移动机器人,停车场,安全检测,超声波空间定位。
性能描述
- 工作电源:+5V
- 工作电流:<20mA
- 工作温度范围 :-10℃~+70℃
- 接口方式:RS485
- 超声波距离测量:
- 最大测量距离―500cm
- 最小测量距离―4cm
- 分辨率-1cm
- 误差-1%
- 模块使用RS485总线通讯,编写通讯程序非常的便捷。
- 模块内带温度补偿电路提高测量的精度。
- 模块尺寸:34×51mm
- 模块重量:约30g
模块测量角度
安装尺寸及接口引脚定义
RS485接口:2个,组网并联下一个模块时使用。
- : +5V 电源+5V输入
- : GND 电源地
A : A RS485总线A(正)
B : B RS485总线B(负)
ISP接口:非用户接口。
通讯指示灯:模块上电后,该指示灯会闪烁4次,表示模块正常,通讯时该指示灯会随数据变化而闪烁。
跳线A:没有使用。
跳线B:多模块组网时,需要开始和末端的模块短接该跳线,加入终端电阻保证网络中阻抗匹配。
模块通讯协议
模块波特率 19200BPS,无奇偶效验,一位停止位。
1.模块地址设置 指令:
返回值:
注:用户可以自行给模块设置地址,以适应组网需要,这时RS485总线只能连接待编程的模块。发送通用的编址命令,将地址ADD参数设置到模块,ADD地址范围0X10<ADD<=0X80。模块返回操作标志。设置成功S返回0X01,设置失败无返回。(模块出厂时默认地址为0x11)
2.触发超声波测量 指令:
注:触发一次测量,测量结果会在最多延迟30MS(超声波最大测距5米,反射路径10米,声速度331米/秒)保存到存储器,等待读取命令
3.超声波测距读取 指令:
返回值:
注:本指令读取超声波测量距离,测量成功返回16位距离数据,两字节0XFF表示测量失败。 如果在触发后立即进行读操作,超声波模块会先完成测量后才响应读取操作将数据返回。
- 温度读取 指令:
返回值:
注:本指令读取一次环境温度,温度高字节的高4位代表温度正负,当高4位都是1时说明是负温度,当高4位都是0时是正温度,除去温度高字节的高4位后是12位的温度数据。分辨率0.1度,每个数字代表0.1摄氏度。当测量无效时返回的温度高位和低位数据都是0xFF。
模块连接与测试
一.模块的连接方法:
模块使用2个PH2.0 四芯插座并联,方便多个模块并联在RS485总线上使用。因为模块是RS485总线接口,所以不能直接与单片机(MCU)或电脑相连接,具体的连接方法如下示意图。
A.模块与单片机(MCU)的连接:
模块与PCU连接示意图
B.模块与电脑(PC)的连接:
模块与PC USB连接示意图
模块与PC 窜口连接示意图
注意:以上连接方法,模块都需要供5V电源。
二.模块的测试:
运行测试伴侣前,请先确保您的电脑已经安装了.net2.0版本以上的软件。
步骤1,模块连线:按照模块与电脑(PC)连接的方法连接好模块,同时模块需要供5V电源;
步骤2,设置电脑串口及波特率:打开伴侣软件,先选择你所使用的串口号,再选择波特率为19200,然后点“连接”;
步骤3,设置模块地址:模块的出厂默认地址为0x11,如果需要改变模块地址,可以在“设置传感器地址”栏中填写或选择你想改的地址(注意:模块地址范围0X10<ADD<=0X80),地址写好后,点击“设置地址”按钮,即完成操作。
步骤4,读取距离值:在操作栏下面的“传感器地址”中填写或选择你的模块地址,然后点击“读取距离值”按钮,在右边的黑色距离值框中将会显示当前测到的距离值(单位cm),点击一次 “读取距离值”按钮,测量一次。如果您想连续测量,请将“连续测量距离”前打勾,再点一次“读取距离值”按钮,这时模块就不停的测量,距离值显示也不断的更新,直到取消连续测量或关闭串口才停止,连续测量还可以设置“读去间隔”时间,最小70 ms,最大1000ms。
读取距离值
连续读取距离值,70ms时间间隔
连续读取距离值,1000ms时间间隔
步骤5,读取温度值:点“读取温度”按钮,黑色温度值框就会显示当前模块测到的温度,点一次测量一次。
步骤6,查找传感器:当模块接好后,点击“查找传感器”,这时连接到RS485总线上的模块地址都会被找到,并显示出来,最多32个,查找模块时,距离和温度读取功能将被屏蔽,终止后边功能恢复
模块组网
- URM04模块组网最多可以并联32个,RS485布网一般采用终端匹配的总线型结构,不支持环形或星形网络。在构建网络时,应注意如下几点:
(1)采用一条双绞线电缆作总线,将各个节点串接起来,从总线到每个节点的引出线长度应尽量短,以便使引出线中的反射信号对总线信号的影响最低。有些网络连接尽管不正确,在短距离、低速率仍可能正常工作,但随着通信距离的延长或通信速率的提高,其不良影响会越来越严重,主要原因是信号在各支路末端反射后与原信号叠加,会造成信号质量下降。
(2)应注意总线特性阻抗的连续性,在阻抗不连续点就会发生信号的反射。下列几种情况易产生这种不连续性: 总线的不同区段采用了不同电缆,或某一段总线上有过多收发器紧靠在一起安装,再者是过长的分支线引出到总线。
总之,应该提供一条单一、连续的信号通道作为总线。
在RS485组网过程中另一个需要注意的问题是终端负载电阻问题,在设备少距离短的情况下不加终端负载电阻整个网络能很好的工作但随着距离的增加性能将降低。一般终端匹配采用终端电阻方法, RS-485应在总线电缆的开始和末端都并接终端电阻。终接电阻在RS-485网络中取120Ω。相当于电缆特性阻抗的电阻,因为大多数双绞线电缆特性阻抗大约在100~120Ω。模块跳线B就是终端电阻接入跳线。
组网的例子:
假设现在机器人按照60度间隔安装6个URM04覆盖360度空间,这时可以同时触发背对方向的两个超声波,此时是没有干扰的,此时需要等待30MS(等待30MS期间处理器可以用于处理其他的任务)然后再触发另外一对背对的超声波组,等待30MS接下来再触发剩下的另外一对超声波。触发完毕,即可对6个超声波依次读取。可加快超声波传感器的采集频率,同时也避免了相互干扰。
常见问题
1.由于超声波在空气中衰减很厉害(与距离d的平方成反比),同时声音在障碍物表面反射时会受很多因素 (如障碍物形状、方向、质地)的影响,因此超声波测量的距离是有限的。
2.本系统远距离测试被测物是一面墙,近距离测试被测物可以是一支笔。根据使用环境和被测物的质地的不同,将可能造成测量结果与提供的数据不符。差距不大,属于正常情况。
模块版本说明
本文整理于DFRobot wiki
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号