完整word版超声波传感器数据采集及界面开发.docx
《完整word版超声波传感器数据采集及界面开发.docx》由会员分享,可在线阅读,更多相关《完整word版超声波传感器数据采集及界面开发.docx(21页珍藏版)》请在冰点文库上搜索。
完整word版超声波传感器数据采集及界面开发
无线传感网络技术
课程实训(论文)
样张1
超声波传感器数据采集及界面开发
院(系)名称
电子与信息工程学院
专业班级
物联网121
学号
120402066
学生姓名
江立骥
指导教师
李锐副教授
起止时间:
2015。
6.29—2015.7.17
课程设计(论文)任务及评语
院(系):
电子与信息工程学院教研室:
物联网工程
学号
120402066
学生姓名
江立骥
专业班级
物联网121
课程设计(论文)题目
超声波传感器数据采集及界面开发
课程设计(论文)任务
任务要求:
1、建立点对点的无线传感网络;
2、在上位机开发出GUI界面;
3、读取超声波传感器采集数据;
4、数据经串口在GUI界面中显示;
5、采集数据转化为具有实际意义的可用数据。
技术要求:
1、GUI界面采用MATLAB语言进行开发;
2、无线数据通信部分采用Zigbee协议;
3、系统正常运行,软件界面友好、操作简单。
指导教师评语及成绩
平时成绩:
答辩成绩:
论文成绩:
作品成绩:
总成绩:
指导教师签字:
年月日
注:
平时成绩占20%,答辩成绩占20%,论文成绩占40%,作品成绩20%.
第1章绪论
1。
1超声波传感器发展概况
随着科技的迅猛发展越来越多科技成果被广泛的运用到人们的日常生活当中,给我们的生活带来了诸多方便。
这一设计就是本着这个宗旨出发,利用超声波的特性来为我们服务。
人们能听到声音是由于物体振动产生的,它的频率在20HZ-20KHZ范围内,超过20KHZ称为超声波,低于20HZ的称为次声波。
常用的超声波频率为几十KHZ—几十MHZ。
由于超声波指向性强,因而常于距离的测量.利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人,汽车安全,海洋测量等上得到了广泛的应用。
与激光测距、红外线测距相比,超声波对外界光线、色彩和电磁场不敏感,更适于黑暗、电磁干扰强、有毒、灰尘或烟雾的恶劣环境,在识别透明及漫反射性差的物体上也更有优势。
而且超声波还有其指向性强、能量消耗缓慢、传播距离较远等优点。
超声波测距是一种非接触式测量,广泛应用于倒车防撞雷达、机器人接近觉、海洋测量、物体识别等领域。
距离是在不同的场合和控制中需要检测的一个参数,所以,测距就成为数据采集中要解决的一个问题。
距离是在不同的场合和控制中需要检测的一个参数,所以,测距就成为数据采集中要解决的一个问题。
尽管测距有多种方式,比如,激光测距,微波测距,红外线测距和超声波测距等。
但是,超声波测距不失为一种简单可行的方法。
超声波距离传感器可以广泛应用在物位(液位)监测,机器人防撞,各种超声波接近开关,以及防盗报警等相关领域,工作可靠,安装方便,防水型,发射夹角较小,灵敏度高,方便与工业显示仪表连接,也提供发射夹角较大的探头。
本设计是超声波测距仪装置,该装置利用了发射接收一体化的超声波传感器和微处理器。
采用超声波传感器分时工作于发射和接收,利用声波在空气中的传播速度和发射脉冲到接收反射脉冲的时间间隔计算出障碍物到超声波测距器之间的距离。
因此经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。
在日常生活中起了广泛的作用。
1。
2超声波传感器在物联网技术中的应用
物联网传感器是人类五官的延长,又称之为电五官。
至上个世纪90年代物联网概念出现以来,越来越的人们对其产生兴趣。
物联网是在计算机互联网的基础上,利用射频识别、无线数据通信、计算机等技术,构造一个覆盖世界上万事万物的实物互联网。
作为政府从战略层面进行推进的产业,传感器在物联网中的应用如何从愿景走向现实并得到快速发展已成为业界关注的话题。
基于RFID、无线传感网络、超声波传感器等相关物联网技术提出了智能停车场管理系统模型,通过对车辆入场、入车位、出车位和出场的全流程描述,介绍车位预订、车位引导、停车位测控、出场管理等功能的实际应用.除此之外,还有超声波测距,超声波金属探伤等。
1.3本文研究内容
本文研究内容为用超声波传感器测量距离,实际需要用MATLAB工程软件开发适合自己的串口界面,用来对传感器采集的数据进行接收和显示。
除此之外还需要协调器,用来接收超声波传感器的数据;超声波传感器,用来实时测量距离的数据;32位转串软件和烧写程序,通过CC2530的IO端口发送一个高电平脉冲到超声波传感器的触发端,在超声波传感器的回声端采集高电平的长度.从而计算出障碍物离超声波传感器的距离.并通过MATLAB界面编程的串口,最后通过调试使得能够精确测量距离.
技术要求:
1、GUI界面采用MATLAB语言进行开发;
2、无线数据通信部分采用Zigbee协议;
3、系统正常运行,软件界面友好、操作简单。
第2章总体设计方案
2。
1方案论证
利用MATLAB开发串口界面,超声波传感器测量距离参数,协调器作为电脑和传感器之间的纽带进行数据传送。
最后综合调试,使其结构更加简单、可靠性更高、使用加方便。
图2。
1总体界面
2.2总体设计方案框图及分析
如图2。
2所示,本超声波传感器与之适配的直流稳压电源供电,产生的实时数据由与电脑USB相连的协调器接收。
协调器接收的是超声波传感器产生的无线信号,最后经过协调转换将数据通过数据线传送至电脑.由于距离不断变化,会不断输出不同的一组一组十六进制数据,同时协调器也会接收来自实验室内其它无用信号,最后经过程序甄别,挑出可用信号,转化为十进制可读的数据.即距离参数数据。
图2.2总体设计方框图
第3章超声波传感器单元硬件设计
3。
1超声波传感器特性与参数:
3.1。
1超声波传感器特性
当电压作用于压电陶瓷时,就会随电压和频率的变化产生机械变形.另一方面,当振动压电陶瓷时,则会产生一个电荷.利用这一原理,当给由两片压电陶瓷或一片压电陶瓷和一个金属片构成的振动器,所谓叫双压电晶片元件,施加一个电信号时,就会因弯曲振动发射出超声波。
相反,当向双压电晶片元件施加超声振动时,就会产生一个电信号。
基于以上作用,便可以将压电陶瓷用作超声波传感器。
超声探头的核心是其塑料外套或者金属外套中的一块压电晶片。
构成晶片的材料可以有许多种。
晶片的大小,如直径和厚度也各不相同,因此每个探头的性能是不同的,我们使用前必须预先了解它的性能。
超声波传感器的主要性能指标包括:
(1)工作频率。
工作频率就是压电晶片的共振频率。
当加到它两端的交流电压的频率和晶片的共振频率相等时,输出的能量最大,灵敏度也最高。
(2)工作温度。
由于压电材料的居里点一般比较高,特别时诊断用超声波探头使用功率较小,所以工作温度比较低,可以长时间地工作而不产生失效。
医疗用的超声探头的温度比较高,需要单独的制冷设备。
(3)灵敏度。
主要取决于制造晶片本身.机电耦合系数大,灵敏度高;反之,灵敏度低。
3。
1。
2超声波传感器参数
小功率超声探头多作探测作用。
它有许多不同的结构,可分直探头(纵波)、斜探头(横波)、表面波探头(表面波)、兰姆波探头(兰姆波)、双探头(一个探头反射、一个探头接收)等。
超声探头的核心是其塑料外套或者金属外套中的一块压电晶片。
构成晶片的材料可以有许多种晶片的大小,如直径和厚度也各不相同,因此每个探头的性能是不同的,我们使用前必须预先了解它的参数。
1)使用电压:
DC5V
2)静态电流:
小于2mA
3)电平输出:
高5V
4)电平输出:
底0V
5)感应角度:
不大于15度
6)探测距离:
2cm-450cm
7)高精度:
可达0。
3cm
板上接线方式,VCC、trig(控制端)、echo(接收端)、out(空脚)、GND
图3.1超声波时序图
3.2模块工作原理
最常用的超声测距的方法是回声探测法,超声波发射器向某一方向发射超声波,在发射时刻的同时计数器开始计时,超声波在空气中传播,途中碰到障碍物面阻挡就立即反射回来,超声波接收器收到反射回的超声波就立即停止计时。
一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出。
一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物面的距离s,即:
s=340t/2。
具体方法:
1)采用IO触发测距,给至少10us的高电平信号;
2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
3)有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2;
图3。
2超声波模块端口图示
第4章MATLAB串口界面开发调试
4.1MATLAB开发环境
MATLAB由一系列工具组成。
这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面.包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。
随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。
而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。
简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析.
Matlab是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点.用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。
新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。
使之更利于非计算机专业的科技人员使用。
而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。
MATLAB是一个包含大量计算算法的集合.其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。
函数中所使用的算法都是科研和工程计算中的最新研究成果,而且经过了各种优化和容错处理。
在通常情况下,可以用它来代替底层编程语言,如C和C++。
在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。
MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。
函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。
MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。
高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。
可用于科学计算和工程绘图。
新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。
同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。
另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。
4.2操作GUI具体方法
打开MATLAB软件;
图1MATLABGUI开发界面
新建BlankGUI:
file—new-GUI
图2创建新BlankGUI界面
设置所需的操作按钮和必要的元素,完成操作界面如下:
图3串口界面
4.2程序代码
4。
3。
1打开串口
functionstart_serial_Callback(hObject,eventdata,handles)
ifget(hObject,'value’)
%%获取串口的端口名
com_n=sprintf('com%d’,get(handles。
com,’value'));
%%获取波特率
rates=[30060012002400480096001920038400430005600057600115200];
baud_rate=rates(get(handles.rate,’value’));
%%获取校验位设置
switchget(handles。
jiaoyan,'value')
case1
jiaoyan=’none';
case2
jiaoyan='odd’;
case3
jiaoyan='even';
end
%%获取数据位个数
data_bits=5+get(handles.data_bits,'value');
%%获取停止位个数
stop_bits=get(handles.stop_bits,’value’);
%%创建串口对象
scom=serial(com_n);
%%配置串口属性,指定其回调函数
set(scom,'BaudRate’,baud_rate,'Parity’,jiaoyan,’DataBits',。
。
.
data_bits,'StopBits’,stop_bits,’BytesAvailableFcnCount’,10,。
..
'BytesAvailableFcnMode’,'byte','BytesAvailableFcn’,{@bytes,handles},...
'TimerPeriod’,0.05,’timerfcn’,{@dataDisp,handles});
%%将串口对象的句柄作为用户数据,存入窗口对象
set(handles。
figure1,'UserData',scom);
try
fopen(scom);%打开串口
catch%若串口打开失败,提示“串口不可获得!
”
msgbox(’串口不可获得!
');
set(hObject,'value’,0);%弹起本按钮
return;
end
set(handles。
period_send,'Enable’,’on’);%启用【自动发送】按钮
set(handles。
manual_send,'Enable’,'on’);%启用【手动发送】按钮
set(handles。
xianshi,'string',’');%清空接收显示区
set(handles.activex1,'value',1);%点亮串口状态指示灯
set(hObject,’String','关闭串口’);%设置本按钮文本为“关闭串口”
else%若关闭串口
%%停止并删除定时器
t=timerfind;
if~isempty(t)
stop(t);
delete(t);
end
4。
3.2停止显示
functiondataDisp(obj,event,handles)
globalvalue
%串口的TimerFcn回调函数
%串口数据显示
%%获取参数
hasData=getappdata(handles。
figure1,’hasData');%串口是否收到数据
strRec=getappdata(handles.figure1,'strRec');%串口数据的字符串形式,定时显示该数据
numRec=getappdata(handles.figure1,'numRec');%串口接收到的数据个数
%%若串口没有接收到数据,先尝试接收串口数据
if~hasData
bytes(obj,event,handles);
end
%%若串口有数据,显示串口数据
ifhasData
%%给数据显示模块加互斥锁
%%在执行显示数据模块时,不接受串口数据,即不执行BytesAvailableFcn回调函数
setappdata(handles.figure1,'isShow’,true);
%%若要显示的字符串长度超过10000,清空显示区
iflength(strRec)〉10000
strRec=’’;
setappdata(handles。
figure1,’strRec',strRec);
End
4.3.3十进制显示
%%显示数据
set(handles.xianshi,’string',strRec);
a=hex2dec(strRec(16));
b=hex2dec(strRec(17));
c=hex2dec(strRec(19));
d=hex2dec(strRec(20));
ss=a*4096+b*256+c*16+d;
set(handles.juli,'String’,ss);
4.3。
4清空
functionqingkong_Callback(hObject,eventdata,handles)
%%清空要显示的字符串
setappdata(handles。
figure1,'strRec','’);
%%清空显示
set(handles.xianshi,’String’,'’);
停止显示
functionstop_disp_Callback(hObject,eventdata,handles)
%%根据【停止显示】按钮的状态,更新isStopDisp参数
ifget(hObject,'Value’)
isStopDisp=true;
else
isStopDisp=false;
end
4。
3。
5清空发送区
functionclear_send_Callback(hObject,eventdata,handles)
%%清空发送区
set(handles。
sends,'string','’)
%%更新要发送的数据
set(handles.sends,'UserData’,[]);
functioncheckbox2_Callback(hObject,eventdata,handles)
functioncopy_data_Callback(hObject,eventdata,handles)
%%设置是否允许复制接收数据显示区内的数据
ifget(hObject,'value’)
set(handles。
xianshi,'enable’,'on');
else
set(handles。
xianshi,’enable’,’inactive’);
end
第5章综合测试与数据分析
5。
1仿真与调试
打开MATLAB软件,连接好电脑和协调器,开启超声波传感器,随后设置参数如下:
串口COM3,波特率115200,校验位为无校验,数据位为8,停止位为1。
图5。
1设计界面
5.2数据的采集
开启超声波传感器开关,红色提示灯会亮,并将传感器探头一段朝向桌面一定距离,并保持一段时间.随后通过自己开发的窗口显示的来自传感器的数据。
其中程序会将数据第六位由十六进制转换为十进制,并绘制图像。
实际测量效果图如图5。
3。
图5。
2传感器窗口实际效果图
图5。
3超声波传感器串口编号为0F
观5.2图,EE为起始位,第四列编号为传感器编号,其中0F为超声波传感器编号,编号详见5.3图。
经过程序甄别,识别第一组信号为超声波传感器数据,并将其由十六进制转换为十进制可读数据,试验成功。
图5.4协调器
第6章总结
本次课设超声波传感器数据采集及界面开发.在课设过程中,我们先从MATLAB软件的熟练使用学起,并在老师的带领下,用MATLAB试做了MATLAB计算器。
在此过程中,学会了许多有关界面开发的知识。
也犯了很多错误,但为后来的界面开发积累了实践经验。
刚开始设计串口界面时候,有些无从下手,但经过后来的思索和一步步实践,逐步找到了自己的节奏。
其中我感到最难的部分就是程序代码的逻辑结构,回调函数的使用。
由于之前只学过JAVA,对非JAVA的语言有些看不懂,也难以理解.后来经过老师的点拨,和自己上网查资料,逐渐学会了代码语言部分。
随后,经过对串口界面的开发,发现了自己在总体设计上的一些小缺陷。
比如按钮位置大小和排序的安排不当,使得不得不从新设计。
随着界面开发的深入,逐步加深对该软件的认识和对传感器参数的熟悉和理解.同时,我也阅读大量的资料了串口窗口一些特点。
课程设计是对所学知识的应用,理论联系实际让我对学过的知识有了更加深刻的理解。
尤其在十六进制数转换为十进制可读数据的过程,耽误我很多时间,也让我学会了很多,更加深对程序语言的理解。
通过对界面设计、制作、测试.调试的过程,不但掌握了基本的传感器调试技术,也掌握了MATLAB软件的操作。
最后经过不断调试,不断地修改以及小组成员的协作,顺利的测出结果。
本次课设中对我最大的困难就是编程语言的局限性。
以后会在学习中不断加深对语言的学习,暴露出许多缺点,也让我充分认识到自身的不足,让我更好地认识自己,并不断提升自己的专业水平。
经过这段时间里的学习,我学习到了很多新知识,也对传感器协作的过程有了更深的了解,并且对界面开发有了较深的认识,学会并掌握了MATLAB开发软件的使用与调整界面技术,加深了对MATLAB使用的熟练程度,认识到物联网技术宽广的应用前景。
为日后工作打下基础。
本人签字:
参考文献
[1]张应福.物联网技术与应用[J]。
通信与信息技术,2010,
(1)
[2]张莉。
ZigBee技术在物联网中的应用[J]。
电信网技术,2010年3月,第3期.
[3]赵茂泰。
智能仪器原理及应用[J]。
北京:
电子工业出版社。
[4]彭军.传感器与检测技术[M].北京:
高等教育出版社。
.
[5] 张谦琳。
超声波检测原理和方法[M]。
北京:
中国科技大学出版社,1993。
10。
[6] 时德刚,超声波测距的研究[J]. 计算机测量与控制,2002,9(10):
[7]。
吕泉. 现代传感器原理及应用[M]。
清华大学出版社有限公司, 2006。
[8]。
李建华. 超声波传感器的特性及应用[J]. 电子世界, 1990 (4):
12-14.
[9]. 梁子剑。
浅析超声波传感器及其应用[J]. 商情, 2013 (35):
238—238