这个超声波型号为URM37 V3.2的测距传感器是一种智能传感器,所谓智能传感器就是信号采集,数字处理,和信息传送为一体。用户只要通过单片机TTL电平串口,向传感器发出四个字节的信息读取命令,传感器接收命令后,会向单片机发回四个字节的信息,这四个字节里有两个字节就是16位被测距离信息。如果高位字节和低位字节都是 0xFF,这意味着测量无效,超出测量范围,否则,高位字节乘以256再加上低位字节就是被测距离,单位是厘米。
本实验的Arduino设备源于DFrobot官方旗舰店: http://dfrobot.taobao.com/
请看URM37V3.2超声波测距传感器文章:http://www.roboticfan.com/blog/user_2005/1229/201047153354.shtml
通过Labview前面板显示的距离信息与卷尺对比,测量比较精确。URM37V3.2超声波测距模块与单片机是通过TTL模式的串口连接的,只需四根线:VCC、GND、RXD,TXD具体接线图如下:
其实这个智能传感器除了测距,还有一些附加的实用功能,这样我把它的说明书给大家看,请下载:
5.part1.rar
5.part2.rar
URM37V3.2超声波测距传感器与Arduino控制器的串口连线,可通过4根杜邦线一端插在传感器的引针上,另一端插在层叠在Arduino控制器的传感器扩展板的引针上。如图所示:
注意:当通过USB,下载Arduino程序,传感器的RXD和TXD这两根杜邦线要拔掉,否则无法下载程序。
讲到这里,另外再提一个话题,Arduino用户需特别注意,我曾经出现过类似下载故障:
在使用Arduino的过程中,最令人头痛的估计就是bootloade毁坏,需要重新烧写bootloader了。最常见的一种情况就是,在 Arduino IDE环境中下载程序的时候,较长时间没有反应,这时很多人就直接选择断开USB连接线或者电源,然后就会出现无法再上传程序的错误。其实出现这种情况时正确的做法是一直等到Arduino超时返回出错信息,直接断电的做法往往会导致bootloader毁坏。如果bootloader毁坏,唯一的办法就是通过ISP下载线重新烧写bootloader。
这个实验的Arduino程序的任务是:
向传感器发出“读取距离信息”的命令,Ardiuno控制器马上接收传感器返回的距离信息,并把两个字节的距离信息换算为十进制数据,如果该数据小于等于30厘米,则连接在控制器数字接口的LED灯亮,否则熄灭。然后向上位机发送即将上传距离值的标志和两个字节的距离信息,上位机当接受到标志后,马上就接受两个字节的距离信息,再运算后把传感器所测距离实时显示在Labview前面板上。
int USValue = 0;//定义存放超声波测量距离
int ledpin =11; //定义灯作显示,小于30CM,灯亮
boolean flag=true;
byte DMcmd[4] = {0x22, 0x00, 0x00, 0x22}; //距离命令
void setup() {
Serial.begin(9600); //串口波特率设置
pinMode(ledpin,OUTPUT); //初始化,把灯熄灭
digitalWrite(ledpin,HIGH);
delay(200);
}
void loop( )
{
flag=true;
for(int i=0;i<4;i++)
{
Serial.print(DMcmd[i],BYTE);//发送超声波测距命令
}
delay(75); //一个延时
while(flag)
{
if(Serial.available()>0) //查询串口有无数据
{
byte header=Serial.read(); //0x22开始接收距离数据
byte highbyte=Serial.read();//距离数据高8位
byte lowbyte=Serial.read();//距离数据低8位
byte sum=Serial.read();//sum校验和
if(highbyte==255) //数据无效
{
USValue=65536; //
}
else
{
USValue = highbyte*256+lowbyte;
if (USValue <=30)
{//如果距离小于30厘米小灯亮起
digitalWrite(ledpin,LOW);
}//如果距离大于30厘米小灯熄灭
else
digitalWrite(ledpin,HIGH);
}
Serial.print(10,BYTE);//上传即将发送距离值的标志
Serial.print(highbyte,BYTE);//向上位机LABVIEW软件
Serial.print(lowbyte,BYTE);//输出距离
flag=false;
}
}
delay(100); //
}
上位机Labview前面板:
上位机Labview框图程序:(双击图片,放大)
程序下载:超声波测距.zip
采用Labview、Arduino控制器和超声波智能传感器,象搭积木一样很快组建出自己的超声波测距仪。
实验时,把手掌当做障碍物,伸入到超声波传感器的视野里,前后晃动手掌,Labview前面板的滑动杆上的游标也跟着晃动,蛮有意思的!