当前位置:文档之家› 超声波传感器URM37 V4.0使用说明

超声波传感器URM37 V4.0使用说明

一、简介URM37 V3.2上已经很好的实现了超声波开关量、串口(TTL和RS232电平可选)、脉冲输出功能、模块还可以控制一个舵机的旋转组成一个空间超声波扫描仪。

为了方便客户使用模块,在出厂时可以根据客户需要配置其相应的参数,也可以根据客户具体需求定制软件,使他成为一个专用的模块。

当前版本URM37 V4.0在V3.2基础上对功能进行了升级使其具有更好的智能功能,机械尺寸与引脚接口以及通信命令兼容V3.2,在V3.2基础上做了如下更改:●串口电平选择由原来的跳针方式改为通过按键设置,用户可以轻松的选择TTL电平输出或是RS232电平输出(重启之后模式生效)。

●修改了测距算法,使测量盲区减小,精度提高。

●具有模拟电压输出功能,电压和测量距离正比。

●宽电压支持+3.3V-5.0V。

●具有电源接反保护功能。

●自动测量时间间隔可修改。

●修改舵机控制角度为0-180,兼容市面大部分舵机。

●测量时长为100ms。

二、产品参数1.产品规格●工作电源:+3.3V~+5.0V●工作电流:<20mA●工作温度范围:-10℃~+70℃●超声波距离测量:●最大测量距离―500cm●最小测量距离―5cm●分辨率-1cm●精度-1%●模块尺寸22mm ×51 mm●模块重量:约25g●超声波一次测量时间为100ms2.技术说明●由于使用了更好的测距处理方法,使测量距离更远更稳定,在测量上完全兼容V3.2,但是我们可以做到在0.3-3M的距离上稳定2mm的精度,如果有需要可以和公司联系定制。

●模块使用RS232串口通讯可靠性更高,同时可以通过电脑串口采集数据,编写通讯程序非常的便捷。

●串口电平工作方式是TTL还是RS232选择方式为按键设置或者软件设置(重启之后模式生效)。

●模块可以通过脉宽输出的方式将测量数据输出,这样使模块使用更简单。

●模块可以预先设定一个比较值,在自动测量模式下,测量距离小于这个值后管脚COMP/Trig输出一个低电平,这样模块能够方便的作为一个超声波接近开关使用。

●模块提供一个舵机控制功能,在非自动测量模式下,可以和一个舵机组组成一个180度测量组件用于机器人扫描0~180度范围障碍物。

●模块内带温度补偿电路提高测量的精度。

●模块内带123字节内部EEPROM,可以用于系统记录一些调电不丢失的系统参数。

●模块内带一个温度测量部件,可以通过通讯口读出分辨率0.1摄氏度的环境温度数据。

●具有电源接反保护功能。

●自动测量时间间隔可修改。

●具有模拟电压输出功能,电压和测量距离成正比。

3.引脚说明测距的模式有三种:一PWM触发测量模式、二自动测量模式、三串口被动测量。

还具有以下特性:模拟量输出(和测量距离正比)、温度读取、和串口电平方式设置(TTL或者RS232电平)、内部EEPROM掉电不丢失数据保存、串口读取EEPROM数据等。

URM37出厂时我们进行了严格的测试,用户购买到之后可根据自己的需求进行相关设置,首先是串口电平方式的设置(TTL或者RS232电平),设置好之后我们就可以通过串口对模块进行访问,然后设置测距模式(对内部EEPROM地址0x02写入数据),之后就可以通过MCU或者PC对超声波模块驱动。

注意:URM37 V4.0的出厂设置为串口TTL电平、测量模式为PWM触发测量方式、比较距离为0、自动测量时间间隔为25ms,内部EEPROM内数据全部为0x00,EEPROM地址0x00~0x04内存的数据为系统保留配置字,用户需谨慎操作。

1.模式/参数设置方法由于该模块有测距模式,电平选择等需要选择,因此这里将简单介绍相关的模式设定方法。

(1)EEPROM各地址配置字节含义关于模式设定,用户可以了解一下URM37内部EEPROM中,各存储单元中配置字节的含义(详见通信协议)。

地址意义0x00 比较距离高8位0x01 比较距离低8位0x02 测量模式(对模式寄存器写入0xaa自动测量模式,其他非0xaa数据都是PWM被动测量模式)0x03 串口工作模式(写入数据0x00为TTL电平,也是默认工作方式哦,写入数据0x01为RS232电平,当然如果用户对0x03这个地址写入其他数据,会被修改为默认方式TTL电平)0x04 自动测量时间间隔(默认最小间隔为25ms,写入数据为八位16进制,最小单位为ms。

例如写入64,即为100ms)(2)按键选择串口电平模式要和模块通信,首先需要进行的就是串口电平的选择(TTL电平、RS232电平)。

按下模块上的按键,指示灯亮,按住不动1s过后,设置成功,指示灯灭。

松开按键,重新上电。

即可更改串口输出模式。

再次上电后指示灯出现一长一短闪则为TTL电平输出,一长两短闪为RS232电平。

串口电平的选择,也可以通过对EEPROM地址0x03写入数据(见上表)。

注意:禁止在RS232工作模式下,将传感器接到TTL 适配器上,这样会造成器件损坏。

反之亦然!(3) 上位机软件选择测量模式当你按照上图连接好模块后,就可以使用我们的“URM37 V3.2伴侣”对模块进行在线测试了,当然我们需要按照前面的按键设置串口电平方式改变一下串口的工作模式,按照现在的配图我需要串口工作在RS232电平模式下。

软件的使用极其简单:先保证电脑上没有其他软件占用串口,然后运行伴侣,先选择COM口,再点击“打开串口”,右边窗口选择探测功能,选择“16位温度读取”可以进行温度测量,选择“16位距离读取”可以进行距离测量,“控制指令”窗口同时显示将要发送的指令,点击“启动功能”便完成操作。

此时,“返回数据”窗口中间两位显示的是16进制数据,软件下方状态栏内也会显示出温度及距离的10进制数据。

该软件使用方便、数据直观。

如果你还购买了我们的专用舵机,便可以使用舵机控制部分。

如图所示,在“舵机角度”窗口内选择要执行的角度,同时在选择“16位距离读取”,然后点击“启动功能”,舵机便旋转到相应的角度上,同时超声波测量该方向上障碍物的距离。

由此URM37V4.0配合舵机就可以完成空间障碍物扫描功能。

测量模式的切换通过给内部EEPROM地址0x02写入0xaa的数据即切换到自动测量模式。

串口发送数据0x44 0x02 0xaa 0xf0 .注意:测量模式的选择,也可以通过修改程序达到。

2.PWM触发模式测距使用教程硬件连接:●Vcc (Arduino) -> Pin 1 VCC (URM V4.0)●GND (Arduino)-> Pin 2 GND (URM V4.0)●Pin 3 (Arduino) -> Pin 4 ECHO (URM V4.0)●Pin 5 (Arduino) -> Pin 6 COMP/TRIG (URM V4.0)●Pin A0 (Arduino) -> Pin 7 DAC (URM V4.0)通过Arduino给超声波传感器Pin 6 COMP/TRIG发低电平触发脉冲启动测量后读取测量数据。

方法一:读取Pin 4 ECHO低电平持续的时间(通过pulseIn函数),测量到的距离数据以脉宽方式输出一个低电平脉冲,每50US代表1厘米,可以通过对这个低电平脉冲宽度的测量读取距离数据。

当测量无效时将返回一个50000US的脉冲表示这次的测量是无效的。

方法二:读取Pin 7 DAC的模拟量(使用analogeRead函数),读得的模拟电压值和测量距离成正比6.8mV/cm,模拟值*0.718即为距离值(单位cm)3.自动测量模式使用教程(1)设置模块为自动测量模式,设置方法:通过上位软件或者单片机串口对模块内部EEPROM 0x02地址写入数据0xaa即可切换到自动测量模式,对0x04地址写入一个8位的16进制数即可修改测量时间间隔。

(2)超声波传感器每隔一定时间间隔(由0x04地址内数据决定)自动测量数据,并将测量到的数据和比较值(由0x000x01地址内数据设定)做比较,如果测量距离等于或者小于比较值,COMP/TRIG脚输出低电平。

(3)通过控制器读取Pin 4 ECHO低电平持续时间获得距离值,每50US代表1厘米。

硬件接线图如下:电源、Pin 4 ECHO(读取测量数据)、RXD、TXD(用于单片机串口设置自动测量模式参数,如单片机通过串口发送0x44,0x02,0xaa,0xf0给超声波模块,即设定超声波模块为自动测量模式)4.串口被动测量模式使用教程串口被动测量模式不需要特别设定,任何时候都可以给超声模块串口发送命令来获取超声波模块测量的数据。

通信命令格式为:命令+数据0+数据1+校验和;通信模块串口波特率9600,无奇偶校验,一位停止位。

具体通信协议如下:(1)读取温度数据指令*发送:0x11+NC+NC+SUM*返回:0x11+温度高+温度低+SUM命令启动一次读取命令,测量温度完毕后模块发出带相同命令头的数据加两字节的温度数据:0x11+温度高+温度低+SUM(SUM代表效验和,NC代表任意数据)。

温度高字节的高4位代表温度正负,当高4位都是1时说明是负温度,当高4位都是0时是正温度,除去温度高字节的高4位后是12位的温度。

分辨率0.1度,每个数字代表0.1摄氏度。

当测量无效时返回的温度高位和低位数据都是0xff。

例如:发送:0x11 0x00 0x00 0x11返回:0x11 0x00 0xFA 0x0B效果:返回的数据0xFA就是测量到的温度即温度为25.0度(2)读取距离数据指令发送:0x22+度数+NC+SUM返回:0x22+距离高+距离低+SUM度数是控制舵机先旋转到一个度数后再进行测距。

180度分为46个角度,每个角度4度,数字范围是十进制0到45,如果数字超过45电机将不动作。

上电初始,舵机将旋转到当中即0度的位置。

当指令是0时,舵机逆时针旋转到0度,当指令是45时,舵机顺时针旋转到180度。

当测量完毕这时返回的数据是0x22+距离高+距离低+SUM。

当测量无效时返回的距离高位和低位数据都是0xff。

例如:发送:0x22 0x19 0x00 0x47返回:0x22 0x00 0x64 0x86效果:模块上的MOTO输出一个50Hz的方波,控制舵机转到100度(见参考表),返回距离低的数据为0x64,即距离为100cm。

(3)读取EEPROM数据指令0x33 0x00 0x00 0x33发送:0x33+地址+NC+SUM返回:0x33+地址+数据+SUM发送读取指令后,返回的数据即内部EEPROM地址的数据(4)写入EEPROM数据指令0x44 0x02 0x00 0x46发送:0x44+地址+写数据+SUM返回:0x44+地址+写数据+SUM写地址范围包括0-127单元,其中地址0x00-0x04内存储的数据是模块使用的配置字,操作时需谨慎!可以通过读指令来校验数据是否被写入。

相关主题