河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
毕业设计(论文)
基于ARM的超声波测距模块开发
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
第一章 概述..................................................1
1.1 课题来源....................................................1
1.2 超声检测技术简述............................................1
1.2.1 超声波检测............................................1
1.2.2 超声检测误差来源......................................2
1.3 系统任务和要求..............................................3
1.4 系统方案设计................................................3
1.5系统开发意义及应用..........................................4
第二章系统原理分析................................................5
2.1 超声波检测系统分析..........................................5
2.1.1 超声波测距原理........................................5
2.1.2 温度补偿原理..........................................5
2.2 超声波检测预备知识..........................................6
2.2.1 超声波的应用..........................................6
2.2.2超声波传感器..........................................7
第三章系统总体设计...............................................11
3.1 智能测量模块总体设计.......................................11
3.1.1 超声传感器的选择.....................................11
3.1.2 超声信号的处理.......................................12
3.2 系统模块电路设计...........................................13
3.3 系统通信总体设计...........................................13 3.3.1 串行通信基本概念.....................................13 3.3.2 串行通信过程.........................................14
4.1.2 液晶显示器...........................................16
4.1.3 超声波传感器.........................................16
4.2 超声波检测模块.............................................17
4.2.1 超声波收发分体回路设计...............................17
4.2.2 超声波收发一体回路设计...............................19
4.3 液晶模块...................................................20
4.3.1 FYD12864-0402B 液晶模块介绍..........................20
4.3.2 FYD12864-0402B 液晶模块的应用........................21
4.4 串口通信模块...............................................21
4.4.1 串行通信协议.........................................21
4.4.2 串行通信总线标准接口.................................21
4.5 温度补偿模块...............................................22
4.5.1 温度传感器DS18B20原理...............................22
4.5.2 DS18B20 与ARM接口电路...............................22
第五章系统软件设计...............................................244.6 电源模块...................................................23
5.1 系统程序总体设计...........................................24
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
5.2下位机程序设计.............................................25第六章系统测试...................................................296.1系统操作...................................................306.2测试结果分析...............................................31第七章系统展望...................................................33结束语.............................................................34致谢.............................................................34参考文献...........................................................35附录一、系统PCB图.................................................37附录二、整机实物图.................................................37附录三、主要程序代码...............................................38附录四、翻译.......................................................41
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
第一章 概述
1.1课题来源
超声波测距技术是近年来出现的测距新技术[1],是一种非接触的检测方式,和红外、激光及无线电测距相比,它具有结构简单、可靠性能高、价格便宜、安装维护方便等优异特性,在近距范围内超声测距具有不受光线、颜色以及电、磁场的影响,在恶劣作业环境下有一定的适应能力[2]。因此利用超声波测距在实现定位及环境建模场合,如:液位、汽车防撞雷达、井深及管道长度测量、机器人定但传统的超声波测距仪测量精度普遍位、辅助视觉系统等方面得到广泛的应用。
较低,都不能满足高精度测量的要求。为了克服此不足,作者从测距仪结构设计和回波信号处理的角度出发,提出了基于回波包络峰值[3]的检测方法,从而进一步提高测距仪超声检测的精度、系统的稳定性和抗干扰性对。本设计是基于ARM来实现的。
1.2.1 超声波检测 1.2 超声检测技术简述
范围在20Hz~20kHz之间,频率低于20Hz的波称为次生波,而高于20kHz的波
称为超声波,频率高于109Hz的波称为特超声波[4]。声波频率界限如图1-1所示。
超声波检测中常用的工作频率在0.25~20MHz范围内。
图1-1声波频率界限
由于超声波具有的这些良好的品质,超声波的研究和应用已经渗入工业、农 |
业、国防、医学以及航天和航空等领域并且取得了卓有成效的进展[5]。甚至有人认为超声技术可以和电子技术、信息技术以及核技术相媲美,是一门具有广阔发 展前景的高新技术。
1
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
1.2.2超声检测误差来源
本系统采用渡越时间法进行物位测量,通过不断检测超声波发射后遇到被测界面所反射回来的回波,从而测出发射和接收回波的时间差t,然后求出待测物位到传感器的距离L,在已知声速v的情况下,不难得出:
L=0.5vt (1)下面对影响超声波距离测量精度的因素进行逐一分析。
(1)声速
从式(1)可以看出,必须知道声波在媒质中的传播速度v,才能从传播时间求出待测距离,但是各种媒质有不同的声速。因此,在实际测量时,很难把声速看成一个不变的恒量。当媒质的成分、温度、压强等因素都没有很大的变化,而且测量精度要求又不很高的情况下,把声速当作不变的方法才能勉强满足测量要求,否则就应该进行声速校正。
在多数情况下,温度是影响声速的一个重要因素,例如在空气中声速理论公
式为: vt 0 . 0005T2 (2)
响较大。所以,应进行温度补偿。通常情况下,可在设备中安装温度敏感元件,
采用适当的补偿电路,利用敏感元件的输出信号来对声速进行校正。
(2)硬件响应时间
硬件电路是有一定延时的。例如滤波电路一般在几十微秒左右。另外超声物 而ARM系统的延时,相对来讲也比距测量系统中广泛采用ARM来检测渡越时间,
较大。
例如利用ARM的外部中断来检测回波触发信号。尽管它己经被设置为最高的中断优先级,并且不会被其他的中断所阻碍,但是中断响应是需要一定时间的。
(3)触发时间
一般来说,以接收信号的幅值超过我们规定的阈值时的时刻作为停止计时信号[6]。当待测物位发生变化时,接收电路输出信号的幅值就发生变化,距离近输 出信号幅值较大,此时在回波信号的第二周幅值就有可能超过规定的阈值,进而
2
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
发出停止计时信号,距离较远时,输出信号幅值较小,回波信号的第3周(甚至第4周)幅值才有可能超过规定的阈值,并发出停止计时信号。从理论上讲,停止计时信号应在图中的a点发出,由于阈值的存在,而实际停止信号是在下图中的a点之后的某一时刻发出。并且发出的时刻(时间检出点)是随物位的变化而变化,这种“时间检出点”的变化就产生了物位测量的误差。
图1-2 放大滤波后的回波信号 | |
3、使用温度范围: | -10℃~50℃ |
4、显示: | 液晶显示 |
5、电源: | 内置电源,外置稳压电源12~24V |
6、抗干扰: | 去噪声能力强(检波能力强) |
7、检测类型: | 用1 或2 个超声头 |
8、外部接口: | RS232 接口 |
1.4系统方案设计
超声波测距技术在工业生产和科学研究中得到广泛的应用。超声波测距电路多种多样,甚至已有专用超声波测距集成电路[7],但是有的电路复杂,技术难度大,有的调试困难,专用集成电路的成本很高,操作很不方便。目前,国内的 超声波测距专用集成电路的精度只能达到厘米级,可以满足一般工业测量的要求,
3
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
但对于一些精度要求较高测距场合就不合适了。
本测距系统是基于ARM开发的,抗干扰性强,利用超声波测距原理,结合ARM
的数据处理,测量精度可以达到毫米级。串行通信、LCD显示于一体。串行通信
功能可以使系统和PC机进行通信;LCD显示功能用于显示测量数据。
本系统采用渡越时间法测量超声波,所谓渡越时间法可以表述为:设超声波
发射传感器到目标障碍物的距离为L,超声波在空气中的传播速度为v,超声波
从发射到接收传感器接收所经历的渡越时间为t,则L=vt/2。
其中该系统中超声波的往返时间间隔由ARM通过外部中断定时获得,并将
定时结果通过软件的算法算出最终距离,将最终结果通过ARM送液晶显示。再
通过RS232串口通信,将测得数据送给上位机显示,实现对数据的实时监控。
为了充分利用ARM中的资源,尽量降低测距系统的成本,系统采用ARM控制
产生40kHz的方波信号,驱动超声波传感器,为了增强测距范围,在发射部分
增加信号功率发大电路,为了进一步提高发射信号的功率[8],从而提高测距范
低廉,由于超声波在传播的过程中有很大程度的衰减,当到达超声波接收传感器围。在对接收信号的处理,系统采用了电压跟随、放大、电压比较的方案,成本
环境温度,并对超声波传播速度进行修正。
为了便于实时检测、控制,可以将测量到的数据每次距离变化时通过串口传
送给上位机,上位机可对测量到的数据进行相应的数字信号处理。
1.5系统开发意义及应用
超声波检测与控制技术是以超声波作为采集信息的手段,能在不损坏和不接
触被测量对象的情况下探测对象。距离是在不同的场合和控制中需要检测的一个
参数,超声波测距是一种很有效的测量方法,有着广泛的应用。但目前的超声波
测距系统存在着精度低,盲区大及测量数据不稳定等问题。针对上述缺点,作者
设计了独特、有效的盲区消隐和接收信号处理方法,并进行温度补偿,从而提高
了测量精度和灵活性;以ARM作为控制中心,研制了智能化、便携式超声波测量
系统。该系统的各种技术指标均能达到工程应用的要求,具有很大的市场潜力。
4
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
第二章 系统原理分析
2.1超声波检测系统分析
2.1.1超声波测距原理
本系统以ARM为核心,由ARM控制定时发出方波信号,同时准备接收。发
射机产生40KHz左右的脉冲信号,经放大后驱动超声波传感器,方波信号经超
声波传感器转换为超声信号向障碍物发射。超声波信号在介质中传播遇到待测物
体表面时,由于不同介质的反射性能差异很大,对超声波的传播影响不同。其发
射波被接收电路接收时,转变成电信号,该信号经相应地选频、检波、放大后,
再进行信号判别,给ARM相应的触发信号,ARM对接收数据进行处理,并参
照发出控制脉冲的基准时间,得出超声波在介质中的传播时间。其基本检测实现
方法如图2-1 所示。其原理可用公式表示为 | L | | 1 | vt | 。 |
| | | 2 | | |
2-1智能测量模块系统图
2.1.2温度补偿原理
常温常压下,空气近似为理想气体。超声波在理想气体中传播速度为
v rRTm/s,式中为气体摩尔质量;r为气体的比热比;R为气体常数;
T为热力学温度。对于一定的气体r、为定值。由公式可知:声速与热力学的
平方根成正比。温度越高声速越大,温度越低声速越小。必须考虑温度对超声波
的传播速度的影响,设0 | 0 | C | 时声速为 | v | 0 | ,则t | 0 | C | 时声度为 | v | ||||||||||
m/s, | vt | | ( | 273 | | t | ) | rR | m/s 。又 0 | 0 | C | 时,空气中声速的实验值为331.42m/s, |
5
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 | |||||||||||||||||||||||||
那么t | 0 | C | 空气中声速的表达式为: | vt | | v | 0 | 1 | | t | 273 m | / | s | ,式中 | v | 0 | 331 . 42 | m/s, | ||||||||
即: | vt | | 331 . 42 | 1 | | t | 273 m | / | s | 。用ARM 进行开方运算在程序上实现比较困难, |
为了便于ARMC语言编程,现用数学软件Matlab编程实现对公式的简化,运用Matlab多项式拟合编程实现如下:
t=0:0.01:100; %拟合的温度范围
v0=331.42*(1+t/273).^0.5; %声速与摄氏温度的理论公式
v=polyfit(t,v0,3); %拟合出的声速与温度多项式
fv=polyval(v,t);
subplot(1,2,1)
plot(t,v0,'.',t,fv,'-r');
gtext('蓝色曲线为理论速度曲线');
ylabel('速度V0((m/s)');
subplot(1,2,2); xlabel('温度 t(℃)');
ylabel('速度 V(m/s)'); 图2-2拟合曲线和理论曲线比较
xlabel('温度t(℃)');
运行Matlab程序得出的拟合声速与摄氏温度曲线与理论上声速与摄氏温度
曲线对比图2-2。运行程序后,可得拟合声速与摄氏温度的关系:
vt0. 0005t20. 6066t331. 422m/s。
于是,通过传感器测的空气中的温度代入上述公式,即可得到超声波在空气中的传播速度,再检测出超声波在空气中传播的时间T,便可得到超声波在空
气中传播的距离: | L | | 1 | vt | 。 |
| | | 2 | | |
2.2超声波检测预备知识
2.2.1 超声波的应用
6
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
超声波传感器是利用超声波特性而研制成的传感器,超声波传感器技术已广泛用工业、国防、交通、生物医疗和家庭领域[9]。超声波技术的应用如下表所示。
| 用途 | 备注 |
| 用途 | 备注 |
工 业 | 金属材料及非金属材料的探伤测量金属与非金属的厚度 | 各种制造业 板材、管材 化工、石油、轻工 | 海 | 鱼群探测 深度测量声纳 水中摄影 |
|
通 | 定向通信 |
| |||
医 | 超声波诊断仪(显像技术)超声波胎儿状态检查仪 | 断层图象 |
2.2.2超声波传感器
(1)超声波传感器原理
超声波传感器有两种工作方式:直射式,反射式。反射式超声波传感器的工
作原理如图2-3 所示。首先由振荡器产生40kHz 方波信号,在经过放大器来驱动 |
图2-3超声波传感器的工作原理(2)超声波基本特性
1.频率特性。图2-4是某超声波发射器的频率特性曲线,为发射器的中
心频率,在该频率处,发射器所产生的超声波最强,即超声声压能级最高,而在
7
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 | |||||||
f | 0 | 两侧,声压能级迅速衰减。因此在使用当中,一定要用频率接近 | f | 0 | 的交流电 | |||
压来驱动超声波发射器。图2-5 是某超声波接收器的频率特性.其中 | f | 0 | 为中心频 | |||||
率.由图2-5 知,当并联电阻较大时,曲线在 | f | 0 | 处最尖锐.接受灵敏度最高,可 |
知超声波具有较好的选频特性,其特性优势与并联电阻R有关。
图2-4 超声波发生器的频率特性
图2-5超声波接收器的频率特性
2.指向特性。由于传感器压电晶片是一个圆形片,故可以把其表面划分为许多
虽没有指向性,但离传感器空间某一点的声压是这些子波叠加的结果, 都具有指小点,把每个点都看作为一个振荡源,辐射出一个半球面波——子波,这些子波 |
图2-6 超声波传感器的指向特性
(3)超声波的回波检测
①小波分析理论
小波分析是一种信号的时间一尺度(时间一频率) 分析方法,它具有高分辨率的特点,而且在时、频两域都具有表征信号局部特征的能力,是一种窗口大小固定不变但其形状可改变、时间窗和频率窗都可以改变的时频局部化分析方法。
它在低频部分具有较高的频率分辨率和较低的时间分辨率,在高频部分具有较高
8
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
的时间分辨率和较低的频率分辨率。因此,可以利用小波分析法对接收到的回波
信号进行分析、去噪,获得更加平滑、有效的回波包络曲线,进而可以利用峰值
检测法准确计算出回波前沿的到达时刻。我们在这里采用Morlet复小波。因为当
其形状控制参数取较小值时。在几何形状方面,它较其它类型小波函数更加相似
于接收回波波形。根据小波分析的最大匹配原则,当子波与所分析的号在几何形
状上越相似时,利用该子波提取到的信号特征就越准确。Morlet复小波函数的数
| | | | | 1 | |
| 2 | 2 | | | | ||
学表达式为: | | ( t | ) | | | e | | 2 | | e | j | (1) | ||
| | | | | 2 | | | | | | |
式中j= - 1,β为形状控制参数,当取β=1时,其实部、虚部及模如图2-7所示。
图2-8回波包络峰值检测波形
从图2-7可以看出,复小波函数的模可完全平滑地包络其实部和虚部。因此,
利用复小波函数的模便可很容易获得回波信号的小波包络分析。回波信号经小波
包络运算处理后,可以帮助剔除环境噪声信号,获得更平滑、理想的回波包络曲线。
利用包络峰值检测原理对小波包络后的回波信号分析处理,从而准确计算回波前
9
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
沿的到达时刻。
②回波信号的包络峰值检测
根据小波分析理论提出一种新的确定回波前沿的计算方法,即回波信号的包络峰值检测法。通过示波器对回波波形进行观察,可以发现对同一探测物,不同传播距离的回波包络线都有较好的一致性,回波波形都大致相同,只是波幅不同,并且同一距离时的不同类型探测物的回波波形也大致相同,只是波幅不同。从工程精度考虑,
可以认为超声回波幅值包络线的形状基本不随回波信号的大小而变化。即回波信号包络峰值所对应时刻b与回波前沿到达时刻a间的时间差(b- a) 不随探测物远近的变化而变化。而时间差(b- a)也容易通过实验计算出来。
可将接收回波信号的包络峰值所对应的时刻b作为停止记数的时刻,用回波包此,
络峰值所对应时刻与回波前沿到达时刻的时间差(b- a) 就可消除由于时间检出点变化所引起的测量误差。
回波信号在进行线性包络检波之后,在分别通过微分电路、零点交叉检测,
值时间点的检测方法与信号振幅无关,故具有优良的传输时间检出特性。 包络峰最后进入ARM外部中断0的入口,从而完成传播声时的准确计时。因为采用包络峰
增加成指数规律增加的电路。在计数器开始计时的时刻,AGC电压开始随时间
增加而增加,在检测到回波脉冲后清零。零交叉点检测可以保证回波到达时刻不
受回波大小变化。采用鉴宽电路可以抑制偶然的尖峰干扰信号,使尖锐的干扰信
号被鉴宽电路挡住而不能到达电平比较电路。因此,采用包络峰值检测可以保
证回波前沿的准确到达时刻。
接收器等待发射脉冲第一个回波的同时,通知定时器/计数器T0在微处理器的外部中断接收到回波到来信号,T0计数器停止计数。ARM一旦识别到的第一个回波到达时,便发生中断,终止内部计数器计数,并对计数器中的数据进行程序处理。ARM通过内部设定程序的运算,可以算出超声波传感器到当前的障碍物
的距离,并将测得的距离实时地在液晶显示模块上显示。
10
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
第三章 系统总体设计
3.1智能测量模块总体设计
利用第二章讲述的测距原理,作者设计了超声波测距系统,它的作用是检测
当前障碍物的距离,并将测得的结果实时地在液晶上显示出来,并可将检测得到
的数据值通过RS232/485网络传送给上位机控制器。
图3-1超声测距原理框图
由图可看出该系统共有5个模块组成:超声波发射模块、超声波接收模块、
温度补偿模块、液晶显示模块、串行通信模块。对于具体电路模块的介绍见以下
章节。
3.1.1超声传感器的选择
超声检测精度取决于检测方法、仪器和超声换能器性能。目前在低超声频段
(20~100kHz),喇叭辐射面的面积比棒状换能器大,所以辐射面的声强较低,与
其粘结的不锈钢板表面空化腐蚀小。在本系统中采用喇叭状换能器,这种换能器
尤其在较高频段{40kHz以上),其优点更为突出。因为它可以削弱横向振动所带
来的不良影响,频带也较宽。在选择中,要综合考虑超声接收换能器各项参数指
11
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
标,比如其与电路的阻抗匹配问题,如果电路的输入阻抗与换能器的阻抗不一致, |
就会引起驻波,使波形模糊。
3.1.2超声信号的处理
系统的性能受背景噪声的限制,从抗干扰的角度来说,应充分利用信号场
与干扰场在时--空统计特性上的差异,对超声信号进行处理,以便最大限度地获
得增益。
1.信号的放大和噪声的抑制。由于从接收换能器传来的信号很微弱,又存
在着较强的噪声,所以放大信号和抑制噪声是首先必须考虑的。通常使用低噪声
晶体多级调谐放大器完成此项任务[11]。在检测过程中,由于工作频带窄,故应
按功率匹配,使前置放大器的输入阻抗与换能器输出阻抗的数值相近。通带中心
频率等于信号频率。这样环境噪声中的绝大部份能量就被阻挡在通带之外了,但
对通带内的噪音抑制则无能为力。可以通过增加发射功率和提高接受基阵的方向
性来提高信噪比,使这个问题得到改善。
数规律)来控制接收机增益的时间,增益控制界(TVG)对出现在接收机输入端的2.混响及其抑制。通常较简单的抑制混响方法是使用一定时间规律(例如指
(AGC) [12]。
3.回波信号的处理。回波信号的包络通常是不规则的,不便对它进行数字
处理,所以对它整形是必要的,整形电路形式多样,可以是单稳态电路,也可以
是施密特触发器或其它电路。
为了进一步滤除噪声及混响的影响,可设置一门限检测阈值,该门限电平一
般大于噪声的均方根值。当信号超过阈值时判断为有目标回波,若阈值过高,只
有强信号才能被检出,这样检出概率就降低;若阈值过低,信号超过阈值的机会
多了,但同时噪声超过阈值的机会也多,则检出的有用信号夹杂的噪声就会增多。
4.对目标回波信号的进一步处理。进行数字滤波和计算,求从发射信号开
始到收到目标回波为止的深度(距离)历经时间值,并将它转换成深度(距离)值,
然后将此值显示并打印。可采用微处理器。
本系统中,由ARM 产生的波形通过隔离放大后驱动超声换能器的发送端,
12
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
换能器的接收端接收的信号比较弱,另外由于换能器本身的特性和声程中随机干
扰、传播介质的非均匀性等造成的信号时延抖动是随机的,包含很多的噪声信号。
又由于超声波的传播介质中存在很多不确定的因素,难以抑制,这样势必影响检
测精度。对超声信号的模拟处理首先我们对信号的输出端进行隔离,防止回波产
生,在混波信号中选取其中有用信号,滤除无用的噪声信号,防止驻波干扰。在
简单的模拟化处理后,从软件上对信号进行数字化的处理。
本系统中数字信号处理是在ARM中用程序来实现的。在此,作者采用平均滤
波法,去除最大值和最小值后,将几个采样信号的平均值作为一个信号值,这样
就能将信号中的瞬时干扰噪声减小。选用多少采样信号求其平均值,是根据信号
频率及噪声的特征来确定的。同时也应用程序判断滤波法,从程序的角度判断有
用信号,将无用信号滤除,通过仿真实验证明,通过以上的信号处理方法能有效
的保证超声信号的重现,失真程度也很小。
3.2 系统模块电路设计 |
图3-1主机控制器总结构框图
3.3系统通信总体设计
3.3.1串行通信基本概念
(1)数据通信的基本概念
系统在实际工作中,像上位机的CPU与外部设备之间常常要进行数据交换
一样,为了通过上位机对系统进行实时控制,将系统测得数据实时传送给上位机,
13
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
所有这些信息交换均可称为数据通信。本系统采用的是串行数据通信方式,接口
为RS232串口,实验证明这种通信方式简单易行,符合本系统要求。
(2)串行通信
在串行通信过程中二进制数字系列以数字信号波形的形式出现。不论接收还
是发送,都必须有时钟信号对传送的数据进行定位。接收/发送时钟就是用来控
制通信设备接收/发送字符数据速度的,该时钟信号通常由处理器内部的时钟电
路产生。在接收数据时,接收器在接收时钟的上升沿对接收数据采样,进行数据
位检测;在发送数据时,发送器在发送时钟的下降沿将移位寄存器的数据串行移
位输出。如图3-2所示:
|
备同步,即同步发送设备和接收设备的工作节拍相同,以确保发送的数据在接收
端被正确读出。
3.4系统通信软件设计
系统通信软件由下位机、主机控制器通信软件和上位机控制软件三部分组成。
下位机通信软件功能主要是接收主机控制器发送过来的信号,针对各下位机
地址发送应答信号,再根据主机控制器发来的控制信号做出相应的反应,随后发
送主机控制器所需数据。其通信功能使用了ARM的串行中断和查询收发状态标志
位的方法实现。下位机平时对各监控点的进行数据采集并定时存贮,当有串行中
断时执行串行中断服务程序,判别是否为本机的地址信息,地址信息与本机地址
相符时,转为接收控制命令,并执行相应的操作;地址信息与本站地址不符时则
退出中断。下位机通信流程图如图3-4所示。
14
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
图3-4下位机通信流程
主机控制器的通信软件实现功能主要包括呼叫各从机,并向各机发送查询控
制命令。其工作过程为控制器发送需呼叫的从机的地址,然后等待接收从机的应 |
15
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
第四章 系统硬件设计
4.1关键器件选择
4.1.1嵌入式ARM微处理器LPC2131
(1)嵌入式ARM微处理器LPC2131概述
LPC2131是基于一个支持实时仿真和跟踪的16/32位ARM7TDMI-STMCPU[15],
带有32kB、64kB和512kB嵌入的高速Flash存储器[15]。128位宽度的存储器接口
和独特的加速结构使32位代码能够在最大时钟速率下运行[17]。多个32位定时
器、1个或2个10位8路的ADC、10位DAC、PWM通道、47个GPIO以及多达9个边
沿或电平触发的外部中断使它们特别适用于工业控制应用以及医疗系统[18]
(2)嵌入式ARM微处理器LPC2131主要特性[19]
①2个32位定时器/计数器(带4路捕获和4路比较通道)、PWM单元(6
路输出)和看门狗。
kbit/s)、SPITM和具有缓冲作用和数据长度可变功能的SSP。
②多个串行接口,包括2个16C550 工业标准UART、2个高速I2C 接口(400
4.1.2液晶显示器
液晶显示器(LCD)凭借其功耗低、图形美观等多种优势,在仪器仪表产品中
得到越来越多的应用,FYD12864-0402B是一种多功能的LCD驱动器,可以用软件
的方式设定系统功能,由于选择的是串行数据传输方式,所以FYD12864-0402B和
ARM之间只需要6根线的接口。
4.1.3超声波传感器
本测距系统中的超声波传感器[20]采用生产的T40-16(送信用)和R40-16(受
信用)的压电陶瓷传感器[21]。下图为超声波传感器的型号说明:
图4-1超声波传感器型号说明
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
4.2超声波检测模块
超声波检测模块主要包括发射超声波产生、超声传感器驱动部分、超声回波
的接收放大、滤波、信号比较电路。根据所选超声波传感器的类型及个数,超声
波检测电路可分为:收发分体回路和收发一体回路。下面对两种方案进行介绍。
4.2.1超声波收发分体回路设计
该方案采用一对单收、单发型超声波传感器。发射电路主要由超声波传感器
(发射),集成电路IC555、IC4049组成。电路采用555集成芯片构成一个频率
为40kHz的多谐振荡器,再通过IC4049集成电路驱动超声波传感器。接收电路
主要由超声波传感器(接收),集成运放LM5532,比较器LM393,集成电路
IC4011,IC555以及三极管9012组成。IC555构成一个延时回路,主要是用来设
置超声波检测的盲区[22]。集成运放LM5532构成一级、二级放大电路,实现对超
声波回波信号的增幅,LM393则是运用电压比较的原理来设置检测回波的阈值,
持超声波的检出信号为一脉宽可变的正脉冲,脉冲宽度就是超声波渡越时间,三从而识别回波信号的到达。四个2输入的与非门4011 构成一个RS触发器,保
D1 +12V VCC 7 6所示。 1 Vin Vout 3 1 Vin Vout 3
R117IC111D
GND
GND
18
C112 9 10 C115
8VCC R 4
1 IC111F
2C111 IC116 C110IC117 7 DISQ 33 2
11 122
25
Vin R118 IC111A
+12V P1
2
6
TRIG
THRIC106
IC111E
IC111B
GND1
C106
R114
8VCC 6
IC108B4
IC109D13
7DIS 4
R
D2R115
IC105
23
GND10 12
6TRIG Q
THR
C105
18
R113
714
9
2 10
3 IC108C8
IC109A1
12
IC108D11
C104 13
+12V
5
4
R110 6 VCC
IC109B
2
1IC108A
+12V
14R119
INT0 Port
3
IC109C911 R111
R112 Q1
R105
2
3
IC107A
1
R106
2
3 IC110A 1 4 8
4 8
R104 C102
R107
C116
+12V
+12V R109
P3 +12V+12V C103
R108
IC107B5
7
6
R103
R102 17
C101
R1 R101
2
图4-2硬件电路整机原理图
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
图4-3超声波发送模块
(a)超声波接收电路
18
(b)延时电路
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
(c)保持检出回波电路
图4-4超声波接收电路
4.2.2超声波收发一体回路设计
该方案采用收发兼用型超声波传感器。收发一体回路[24]主要由集成电路IC4049,IC4011,集成运放LM5532,比较器LM393及二极管,三极管组成。电路由ARM
IC4049 驱动超声波传感器。收到的回波信号经过LM5532一、二级放大,在经过
的T0口产生40kHz超声波,经三极管构成的共射极放大电路放大,再经过
超声波收发一体电路如图4-5所示。
图4-5 超声波收发一体电路19 |
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
以上两种方案的主要区别是分体回路发送的40kHz超声波由硬件电路产生,
一体回路的40kHz超声波ARM[25]通过软件编程产生,从总体上考虑本系统采用收
发分体方案,因为本系统的可编程模块较多,加上ARM的容量有限,在设计的时
候要尽量减少系统的程序,所以本系统采用收发分体回路。
4.3液晶模块
4.3.1FYD12864-0402B 液晶模块介绍
(1)FYD12864-0402B引脚说明
管脚号 名称 LEVEL功能
1 VSS 0V电源地
2 VDD +5V电源正(3.0V-5.5V)
3 V0 -对比度(亮度)调整
4 CS H/L模组片选端,高电平有效
5 SID H/L串行数据输入端
6 CLK H/L 上升沿时读取SID数据
15
17
19
PSB
/RESET
A
L
H/L
VDD背光源电压+5V
20
图4-6串口读写时序图
2.串口数据线模式数据传输过程图
图 4-7串口数据线模式数据传输过程图20 |
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
4.3.2FYD12864-0402B液晶模块的应用
(1)与嵌入式ARM微处理器接口
ARM与液晶FYD12864选用串行总线通信方式,所以液晶FYD12864的15脚PSB接低,ARM通过P0.13脚和FYD12864液晶模块进行通信,时钟控制由P0.11脚完成,P0.15脚控制FYD12864的片选端CS,其中ARM与液晶供地。
4.4串口通信模块
通信方式必须遵从统一的通信协议。串行通信协议包括同步协议和异步协议两种,在这里只讨论异步串行通信协议。要想保证通信成功,通信双方必须有一系列的
约定。这种约定就叫做通信规程或协议,它必须在编程之前确定下来。只有双方
都正确地识别并遵守这些规定才能顺利地进行通信。
4.4.2串行通信总线标准接口
由于系统是3.3V系统,所以要使用SP3232E进行RS-232电平转换。JP6为UART0口连接跳线,当使用串口功能时,将这些跳线短接到相应的功能端,JP6应短接TxD0和RxD0,在本系统中SP3232E芯片与ARM接口如图4-9所示。
21
图4-9SP3232E和ARM接口
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
4.5温度补偿模块
由于超声波的声速受环境温度的影响较大,所以在应用超声波进行检测时,需要对超声波的速度进行温度的补偿。本系统采用DALLAS公司生产的单总线、数字式温度传感器DS18B20采集环境温度送给ARM,由ARM通过软件编程对超声波的速度进行温度补偿。
4.5.1温度传感器DS18B20原理
DS18B20为1-Wire总线的数字温度传感器[26],其可提供可编程的9位至12位的摄氏温度(对于华氏温度应用场合,可以查表转换)的测量,其功能模块图如图4-10所示,引脚定义为:GND--地;VDD--电源;DQ--数据输入输出端。。配置寄存器用以给用户自由选择将DS1SB20传感器的数字输出设置为9,10,11或12位。8位CRC发生器用于暂存器读写阶段提供循环冗余检验使用。
图4-10DS18B20 功能模块图
4.5.2DS18B20 与ARM接口电路
DS18B20与ARM微处理器的硬件接口比较简单。图4-11和图4-12给出了DS18B20在两种供电方式下的硬件接口电路图。当设备使用外部电源供电的时候,使用ARM的一个通用接口就可以实现数据的传递。
图4-11 DS18B20 寄生供电电路22 |
|
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
DS18B20也可以采用寄生电源供电,这在远程度测量和测量空间受限制的情况下特别有价值。需要注意的是,DS18B20在进行温度转换或者将暂存寄存器里面的数据复制到EEPROM[27]内的时候,所需要的电流会达到1.5mA。这个电流将通过上拉电阻导致不期望的压降,而且超出了Cpp即所能提供的电流,此时可用如图4-11所示的一个三极管来提供电流。在本系统中DS18B20与ARM的接口电路如图4-13所示。
图4-13DS18B20 与ARM2131接口电路
4.6 电源模块 |
|
|
图4-14系统电源模块
23
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
第五章系统软件设计
5.1系统程序总体设计
本系统采用嵌入式ARM微处理器LPC2131为控制核心控制器件[28],用C
语言进行编程。本章主要介绍用系统的软件实现,本系统软件主要有两部分:上
位机(PC)控制软件和下位机(嵌入式ARM微处理器)控制软件。下位机软件
包括40kHz超声信号的产生、回波检测[29]、数据处理程序、温度检测、液晶、
SP3232E芯片、存储器芯片的驱动程序。上位机软件主要是串口通信软件包括串
口设置,发送数据、接收数据窗口等,可以在线设置各种通信速率、奇偶校验、
通信端口而无需重新启动程序,可以设置定时发送的数据以及时间间隔;可以自
动显示接收到的数据,并能在字符串、十进制和十六进制之间进行切换[30];设
置串口连线DTR、RTS线和显示CD、CTS、DSR线的状态。软件是整个系统的
灵魂,系统的最终实现必须要依靠软件来实现。系统下位机软件功能框图如图5-1
所示,系统上位机软件流程框图如图5-2所示:
图5-1下位机软件功能框图
图5-2 上位机软件流程图24 |
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
5.2下位机程序设计
系统的下位机主要负责环境温度的采集及超声测量信息的采集、处理、保存并通过串口将最终结果传送给上位机。系统测试的结果由ARM控制在液晶上显
示。系统主程序流程图如图5-3 所示。下面对各个电路模块的程序设计进行说明。 |
硬件要求在发射超声波时需要发送6-10个波。具体检测程序见附录
(2)超声波渡越时间的检测
系统收到的回波信号被放大、滤波、比较处理,最终送到ARM中断口的是一脉宽可调的正脉冲,脉宽就是超声波的渡越时间。具体程序见附录。
(3)FYD12864-0402B液晶模块驱动程序设计
FYD12864-0402B液晶模块程序实现流程图如图5-4,具体程序见附录。
25
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
图5-4FYD12864-0402B 液晶模块程序流程图
(4)温度传感器驱动程序设计
本系统采用DALLAS半导体公司最新单线数字温度传感器DS18B20,
DS18B20是支持“一线总线”接口的温度传感器。由于DS18B20是在一根I/O
线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格
的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时
序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器
件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如
果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。
数据和命令的传输都是低位在先。DS18B20时序图如下图所示。
图5-5 DS18B20 复位时序 |
图5-6DS18B20 读时序
图5-7DS18B20 写时序
5.3 上位机程序的设计 |
|
系统上位机程序是在Delphi 的开发环境中利用了微软的Visual Basic 中提 |
26
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
供的一个串口控件-Microsoft Communication Control(简称MSComm)控件进行串口编 |
程的。
5.3.1MSComm 控件处理通讯方式
(1)事件驱动方式
事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。可以利用MSComm控件的OnComm事件捕获并处理这些通讯事件。OnComm事件还可以检查和处理通讯错误。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。
(2)查询方式
查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。
5.3.2MSComm 控件属性
MSComm 控件有很多重要的属性,但首先必须熟悉几个属性[31]: CommPort设
字符串。MSComm控件常用的几个属性:CommPort属性、Settings属性、PortOpen
属性、Input属性、Output 属性。
5.3.3MSComm 控件的使用
MSComm控件通过串行端口发送和接收数据,为应用程序提供串行通信功能,使用非常方便。下面对Delphi中使用MSComm控件进行通信编程进行简单介绍。
(1)初始化并打开串口
设置MSComm控件的属性可以在程序设计期时直接指定,也可以在程序运行期间设置。除了使用对象观察器设置MSComm控件的属性外,Delphi还提供了一个属性对话框,双击窗体中的MSComm控件即可弹出,可以通信端口号、通信协议、传输速率参数、数据接收格式、通信端口开/关进行设定。
(2)捕捉串口事件
MSComm控件可以采用查询或事件驱动的方法从端口获取数据。由于控件的
27
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
OnComm事件通过CommEvent属性能够反映串口当前发生的错误和事件,所以操作串口最简单的方法就是适当地设置控件Rtreshold属性为一个正数,然后编写其OnComm事件处理代码。
(3)串口的读写
串口的读写分为两种情况:字符串的读写和二进制数的读写。由于Input和Output中都是Variant变量,Delphi能够直接将它们和字符串类型相互转换,所以可以直接读取MSComm控件的Input属性,以及直接用字符串为Output属性赋值。如果双方是以二进制形式发送数据,如果一方以字符串形式读写,那么通信就会失败。
(4)关闭串口
在使用完MSComm通信对象后,需要将通信端口关闭。如果关闭窗体,占用的端口也会被关闭。
5.3.4系统通信软件设计
在安装MSComm控件后,选择“File|New|Application”菜单项,保存项目具体实现程序见附录。和单元文件。然后在主窗口中添加各类组件,建立系统通信软件界面如图5-8,
图5-8 系统通信软件界面
28
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
第六章 系统测试
6.1系统测试
测试主要仪器:12V~24V稳压电源一台
TektronixTDS 2012 100MHz 1GS/s 示波器一台 万用表一台
PC机一台(有串口)
测试结果如下:
6.1.1发射回路的测试
用示波器观测超声波发射电路输出的驱动超声波传感器工作声波波形,峰-峰值为5V,输出波形为矩形波,频率为40kHz,波形基本不失真,并且相当稳定。波形如下图所示:
40KHZ 方波信号 的矩形
图5-3 4049 驱动后到达超声波发射传感器的40KHZ方波信号
29
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
6.1.2接收回路的测试
接收回路接收到回波后,经过放大比较,检出的有用信号为一个脉宽可变的正脉冲,脉宽就是超声波的渡越时间,并将该脉冲送给ARM的中断口,由ARM通过中断检测出脉冲的宽度,用示波器观测产生脉宽可变的正脉冲的波形过程如下图。波形很稳定,改变超声波传感器与障碍物的距离时,脉冲宽度也随之改变。
图5-4超声波接收传感器接收的回波信号
图5-7经RS触发器检出的脉宽反映超声波传播时间的正脉冲信号
6.1系统操作
启动仪器,液晶显示器上将显示当前环境的温度,如图5-8;再经过短暂的停顿后,系统将进入检测距离状态,如图5-9,如选择RS232输出设置,系统将
会把检测到的数据通过串口发送给PC 机,如图5-10。
30
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
图5-8温度检测 图5-9距离检测 图5-10与PC机通信
6.2测试结果分析
|
31
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
2300 | 2302 | 4500 | 4500 | 6900 | 6900 |
通过测试,系统精度达到了设计的要求,误差很难避免,但通过分析误差的来源,改变设计和测试方法,可以把降低系统的误差。从而使系统更加完美。如对测量结果进行数字滤波,对环境温度进行多点测量,避免局部温度对系统造成误差。
第七章 系统展望
32
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
在设计和开发过程中,严格遵循了系统的需求分析、总体设计、软硬件详细设计与实现、系统调试等开发步骤,分阶段的完成了各设计任务。但在系统调试过程中,发现存在一些问题有待进一步探讨和改进,主要包括以下几个方面: (1)检测精度方面。虽然课题采用ARM来提高系统检测的精度,并且采用温度补偿和数字滤波的方法减少了部分检测误差,但是系统的测量精度仍然与理论值有所差距。通过提高采样频率,可进一步提高检测精度,但是还是要综合考虑硬件的承受能力。
(2)性能稳定性方面。课题由于时间仓促,在电路分析设计上虽尽量全面考虑,但是在一些特殊的测量环境(如湿度比较大、风力比较大的环境),系统测试的数据并不稳定。并且在换能器驱动方面,发射功率还不是很理想,接收电路还需改进。
(3)嵌入式监控方面。由于本课题是作者第一次运用到嵌入式设计,许多运用不熟悉,在设计时遇到很多困难。虽然最终能实现系统要求,但会有数据丢失
(4) 系统全面完善。本课题主要还是着重在概念的提出,初步的实验阶段,
的现象发生。这方面设计需要进一部修改。
本课题利用波分析法对回波信号进行运算处理,大大提高了测距精度,并且
将嵌入式ARM微处理器引入其中,推动着超声测距系统向着控制精度更高、更加
智能化的方向发展。
超声波检测以其非接触性优点,在工程应用中,得到了广泛的应用。本智能测量模块可以用来测量料位、物位、液位等,可以做成环保局、水利局水位检测、采集、控制系统。可以把本系统安装在各个水位采集点,系统将各个采集点的水上位机可以通过通信网络对各个采集点的水位进行实时监位实时上传给上位机,控,本系统还可以加上无线发送模块,通过无线网络把数据传送给上位机。
33
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
结束语
毕业设计是对大学四年学习的一个系统考察,是理论学习与实践相结合的一个系统学习,也是我们对大学四年所学的一个系统总结。由于本智能测量模块的 我又对ARM机进行了系统的学习,完成了ARM核心控制器是ARM,在做课题之前,最小系统的设计和调试以及ARM外围电路的设计和编程(如键盘、液晶显示、蜂鸣器等),通过学习我对ARM的相关技术有了一个较为系统的把握。
毕业设计让我认识到,如果要想成功,就要有耐心和信心。在系统设计的过 但有些细微程中我曾遇到了许多困难,有些问题在导师的指导下很快就能解决,
的问题,就需要自己想办法去解决。通过系统编程,我深刻地认识到,在编程之前首先要画出程序流程图,然后在去按照流程图来进行具体的程序设计。
致 谢
本论文是在导师朱昌平教授的谆谆教诲和悉心指导下完成的。在此我要特别
导师的智慧和汗水。在导师的不断鼓励下,我得以顺利完成论文创作。导师严谨
感谢我的指导老师朱昌平教授!感谢朱老师对我的孜孜不倦的指导,论文汇聚了
师。在315实验室和老师、师兄、师姐一起的日子里我学到了很多,这段日子给
我以后的继续学习深造打下了一个坚实的基础,这段日子将永远留在我记忆中。
同时还衷心的感谢在本次毕业设计过程中给我以很大帮助的韩庆邦老师、单明雷老师、李建老师、路正莲老师他们在本次毕业设计中给了我们很多帮助和支持,在此表示我对他们的感谢。
感谢师兄郭卫栋、王月庆、邓星松、师姐路龙惠等在科研过程中给予我的大量的帮助。
感谢全体315实验室的兄弟姐妹,再次对关心和帮助过我的人们衷心说声:谢谢!谢谢你们的帮助和照顾,使我成为一个合格的本科毕业生。
最后我要感谢我的家人,是他们一直鼓励我、支持我,使我能够顺利的完成学业。 作者:刘晓萍 二零零七年六月
34
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
参考文献
【1】赵珂.时差法超声测距仪的研制[J].,(1):65-67.
【2】赵珂,向瑛,王忠等,高准确度超声波测距仪的研制[J]., :55-57.
【3】WalkerJames S. A Primer on WAVEL ETS and theirScientific Applications [M]. Florida : CRC Press LLC ,1999.
【4】腾艳菲,陈尚松.超声波测距精度的研究.国外电子测量技术,2006(2)【5】刘迎春,牟金秀,于复生,毕宏彦.基于时差的超声波测距研究[J]. ,(1):3-4.
【6】赵占林,刘洪梅.超声测距系统误差分析及修正[J].科技情报开发与经 济.2002(6):144-145
【7】罗忠辉,黄世庆.提高超声测距精度的方法[J].,(1): 109
超声和它的众多应用[M].长沙,1994:48-67.冯若.超声手【8】应崇福,查济璇.
【9】赵广涛,程荫杭.基于超声波传感器的测距系统设计[J].微计算机 册[M].1999,南京:313-473
1990 ,6(2) :248~256.
【11】徐国华,孔蕙,李贻斌等.超声波测距系统的设计与实现[J].电子应用 技术.1995(12):6-7
【12】康华光.电子技术基础[M].北京:高等教育出版社,2002
【13】求是科技.VisualC++串口通信工程开发实例导航[M].北京:人民邮电 出版社.2003
【14】求是科技,崔建华,郭瑞军.Delphi串口通信工程开发实例导航.北京: 人民邮电出版社,2003
【15】周立功.ARM微控制器基础与实战.北京:北京航空航天大学出版社,2004 北京航空航【16】周立功,张华.深入浅出ARM7、LPC2131X/214X[M].北京:
天大学出版社,2005.
【17】田泽.嵌入式系统开发与应用(第一版).北京:北京航空航天大学出版
社, 2005.
35
河海大学学士学位论文 | 基于ARM 的超声波测距模块开发 |
【18】陈赜,刘振兴,李宗福等.ARM嵌入式技术实验教程[M].北京:北京航
空航天大学出版社,2005.
【19】何荣森,何希顺.从ARM体系看嵌入式处理器的发展[J].微电子学与计算
机.2002(5):42-45
【20】ElmerHannes, Schweinzer Herbert. High resolution ultrasonic distance
measurementin air using coded signals[R]. Ultrasonics. 2002(2):1565-1570
【21】肖功纯.超声换能器的频率选择[J].自动化仪表.2001(1):9-13
【22】孙波,季远,李光军等.功率超声换能器导纳特性检测及电端匹配研究
[J].振动测试与诊断.2002(4):287-290
【23】郏东耀.利用超声波传感器测液位的方法[J].自动化与仪器仪
表.2002(5):51-53
【24】肖俊,牛炜,莫易敏等.收发同体超声测距系统设计[J].传感器技
术.2003(8):32-34
【25】郑德春,姚庆栋,刘鹏等.嵌入式模拟器中的JTAG应用[J].浙江大学学
【26】GRMMELP M. Improve ultrasonic detection using theanalytic signal
magitade[J ] . Ultrasonics , 1981 , 19(2) :73~76.报.2006(01)
velocimeterin turbulent pipe flow.Experiments in Fluids. 2003(6):553-559
【30】.[M].北京:
.2000
【31】杜功焕,朱哲民,袭秀芬.声学基础[M].上海:上海科学技术出版社.1981
36
河海大学学士学位论文 | 基于ARM 的超声测距模块开发 |
附录一、系统PCB图
37
河海大学学士学位论文 | 基于ARM 的超声测距模块开发 |
附录三、主要程序代码
(一)FYD12864 液晶函数
intmain (void)
{uint16 i, n=234;
PINSEL0 = 0x00000000; PINSEL1 = 0x00000000; // 设置所有管脚连接GPIOIO0DIR = all;
lcd_initial();DelayNS(20);
send_data(0xf8,0x00,0x20); DelayNS(20);
write_list_word(0,0,show1,16); DelayNS(20);
end_data(0xf8,0x00,0x20); write_list_word(0,1,show2,16);DelayNS(200);
show(3,2,1234);
while(1)
{for(i=0;i<99;i=i++) { show(3,2,i+10);}
}
return0;
}
(二)DS18B20 函数
(1)DS18B20复位子程序
{ DA1=1; bit ack; //数据线拉高 bitreset() //如果DS18B20在返回值为0,否则为1
DelayNS(10) DelayNS(10)
DelayNS(4)
ack=DA1; //读DS18B20应答脉冲
DelayNS(16)
return(ack);
}
(2)DS18B20读子程序
ucharDSRead(void) //DS18B20读子程序,返回值为一个字节数{ uchari,dat;
dat=0;
for(i=0;i<8;i++)
{ dat>>=1;
DA1=1;DelayNS(10)DA1=0;DA1=1;//产生读信号
_nop_();_nop_();_nop_();_nop_();
if(DA1) dat|=0x80; //DA为1就读1,否则读0
} | DelayNS(4) |
|
return(dat); |
|
38
河海大学学士学位论文 | 基于ARM 的超声测距模块开发 |
}
(3)DS18B20写子程序
voidDSWrite(uchar val)
{ uchar i;
bitvb;
for(i=0;i<8;i++)
{ vb=val&0x01; //送最低位到vb
DA1=1;DA1=0; //产生写信号
DelayNS(10);
DA1=vb;DelayNS(3)
DA1=1; val>>=1; //写下一位
}
}
(三)超声波渡越时间的检测函数
voidtest_time()
//收发一体超声波渡越时间的检测子程序{ start: TMOD=0x01; //设置定时器0工作在方式1
TL0=0x00;
TH0=0x00; //初始化定时器
EA=1; //中断允许
_B=0; _R=0; TR0=1; //设置盲区允许 //启动定时器定时T0:工作在方式1,计数初值为0 ET0=1; //定时器0 中断允许
{ TR0=0;time=TH0*256+TL0; //定时时间
}
else
{if(TF0==1)
{TF0=0;goto start;
}
else {goto Test;}
}
}
(四)距离显示函数
voidconvert(uint n)
{ uchar i;
uchar a[5];
for(i=4;i>=0;i--)
{ a[i]=n%10;n=n/10;if(!i) break; }
if(rs232) |
|
39
河海大学学士学位论文 | 基于ARM 的超声测距模块开发 |
{ watchdog();
printf("TheTemperature is : ");sendData(a[1]+0x30);sendData(a[2]+0x30);sendData('.'); sendData(a[3]+0x30);sendData(a[4]+0x30);printf(" ^C"); sendData('\n');
for(i=12;i>0;i--){sendData('\t');}
}
else //send temperature
{printf("The length is : ");
if(a[0])sendData(a[0]+0x30);sendData(a[1]+0x30);
sendData('.');sendData(a[2]+0x30);sendData(a[3]+0x30);sendData(a[4]+0x30);rintf("m");sendData('\n'); for(i=12;i>0;i--){sendData('\t');}
}
}
}
(五)串口通信函数
voidinit_232()
{TMOD=0x20;//mode 2 auto reload
TL1=0xfd; TH1=0xfd;//baudRate:9600 SCON=0x52;//sm0,sm1,sm2,ren,tb,rb8,ti,ri
PCON&=0x7f;//smod=0; TR1=1;
}
} (六)系统上位机函数 ucharsendData(uchar c)
{ while (!TI);{watchdog();} TI = 0;return(SBUF=c);
//打开串口
ComSetting:=ComSetting+','+cmbbxDataNum.Text;
ComSetting:=ComSetting+','+cmbbxStopBit.Text;
MSComm.Settings:=ComSetting;
MSComm.PortOpen:=True;
//变换各个组件的状态
shpSerial.Brush.Color:=clRed;//指示灯变红
Panel1.Enabled:=False;
btnSerial.Caption :='关闭串口';
chckbxHexShow.Enabled:=False;
end
else begin //关闭串口
40
河海大学学士学位论文 | 基于ARM 的超声测距模块开发 |
附录四、翻译
THEINTRODUCE OF I2C-BUSPROTOCOL
1、THEI2C-BUSSPECIFICATION
1.1、Hereare some of the features of the I2C-bus:
·Onlytwo bus lines are required; A serial data line (SDA)and a serialclock line (SCL).
·Eachdevice connected to the bus is software addressable by a uniqueaddress and simple master/slave relationships exist at all times;Masters can operate as master-transmitters or as master-receivers.
·It’sa true multi-master bus including collision detection and arbitrationto prevent data corruption if two or more masters simultaneouslyinitiate data transfer.
·Serial,8-bit oriented, bi-directional data transfers can be made at up to100 kbit/s in the Standard-mode, up to 400 kbit/s in the Fast-mode,or up to 3.4 Mbit/s in the High-speed mode.
·On-chipfiltering rejects spikes on the bus data line to preserve dataintegrity·Thenumber of ICs that can be connected to the same bus is limited onlyby a maximum bus capacitance of 400 pF.
2、INTRODUCTION TO THE I2C-BUSSPECIFICATION
peripheral devices such as memories and I/O expanders
·The cost of connecting the various devices within the system must beminimized·A system that performs a control function doesn’t requirehigh-speed data transfer· Overall efficiency depends on the devices chosen and the nature ofthe interconnecting bus structure.
Toproduce a system to satisfy these criteria, a serial bus structure isneeded. Although serial buses don’t have the throughput capabilityof parallel buses, they do require less wiring and fewer ICconnecting pins. However, a bus is not merely an interconnectingwire, it embodies all the formats and procedures for communicationwithin the system.
Devices communicating with each other on a serial bus must have someform of protocol, which avoids all possibilities of confusion, dataloss and blockage of information. Fast devices must be able tocommunicate with slow devices. The system must not be dependent onthe devices connected to it, otherwise modifications or improvementswould be impossible. A procedure has also to be devised to decidewhich device will be in control of the bus and when. And, ifdifferent devices with different clock speeds are connected to thebus, the bus clock source must be defined.
All these criteria are involved in the specification of the I2C-bus.
41
河海大学学士学位论文 | 基于ARM 的超声测距模块开发 |
3、THEI2C-BUSCONCEPT
TheI2C-bussupports any IC fabrication process (NMOS,CMOS, bipolar). Two wires,serial data (SDA) and serial clock (SCL), carry information betweenthe devices connected to the bus. Each device is recognized by aunique address (whether it’s a microcontroller, LCD driver, memoryor keyboard interface) and can operate as either a transmitter orreceiver, depending on the function of the device. Obviously an LCDdriver is only a receiver,
whereasa memory can both receive and transmit data. In addition totransmitters and receivers, devices can also be considered as mastersor slaves when performing data transfers (see Table 1). A master isthe device which initiates a data transfer on the bus and generatesthe clock signals to permit that transfer. At that time, any deviceaddressed is considered a slave.
TheI2C-busis a multi-master bus. This means that more than one device capableof controlling the bus can be connected to it. As masters are usuallymicro-controllers,let’s consider the case of a data transferbetween two
microcontrollersconnected to the I2C-bus
This highlights the master-slave and receiver-transmitterrelationships to be found on the I2C-bus.It should be noted that these relationships are not permanent, butonly depend on the direction of data transfer at that time.
·microcontroller A terminates the transfer.
terminates the transfer. Even in this case, the master(microcontroller A) generates the timing and
been developed. This procedure relies on the wired-AND connection ofall I2C
interfacesto the I2C-bus.
Iftwo or more masters try to put information onto the bus,the first toproduce a ‘one’ when the other produces a ‘zero’ will losethe arbitration. The clock signals during arbitration are asynchronized combination of the clocks generated by the masters usingthe wired-AND connection to the SCL line
Generation of clock signals on the I2C-busis always the responsibility of master devices; each master generatesits own clock signals when transferring data on the bus. Bus clocksignals from a master can only be altered when they are stretched bya slow-slave device holding-down the
clockline, or by another master when arbitration occurs.
4、GENERALCHARACTERISTICS
BothSDA and SCL are bi-directional lines, connected to a positive supplyvoltage via a current-source or pull-up resistor. When the bus isfree, both lines are HIGH.
The output stages of devices connected to the bus must have anopen-drain or open-collector to perform the wired-AND function. Dataon the I2C-bus can be
transferred at rates of up to 100 kbit/s in the Standard-mode, up to400 kbit/s in the
42
河海大学学士学位论文 | 基于ARM 的超声测距模块开发 |
Fast-mode,or up to 3.4 Mbit/s in the High-speed mode. The number of interfacesconnected to the bus is solely dependent on the bus capacitance limitof 400 pF. For information on
High-speedmode master devices, see Section 13.
5、BITTRANSFER
Dueto the variety of different technology devices (CMOS,NMOS, bipolar)that can be connected to the I2C-bus,thelevels of the logical ‘0’ (LOW) and ‘1’ (HIGH) are not fixedand depend on the associated level of VDD. One clock pulse isgenerated for each data bit transferred.
6、TRANSFERRINGDATA
6.1、Byteformat
Everybyte put on the SDA line must be 8-bits long. The number of bytesthat can be transmitted per transfer is unrestricted. Each byte hasto be followed by an acknowledge bit. Data is transferred with themost significant bit (MSB) first. If a slave can’t receive ortransmit another complete byte of data until it has performed someother function, for example servicing an internal interrupt, it canhold the clock line SCL LOW to force the master into a wait state.Data transfer then continues when the slave is ready for another byteof data and releases clock line SCL.
CBUS compatible devices for example). A message which starts withsuch an address can be terminated by generation of a STOPcondition,even during the transmission of In some cases, it’spermitted to use a different format from the I2C-bus format (for
7.1、 Synchronization
Allmasters generate their own clock on the SCL line to transfer messageson the I2C-bus. Data is only valid during the HIGH period of theclock. A defined lock is therefore needed for the bit-by-bitarbitration procedure to take place.
Clocksynchronization is performed using the wired-AND connection of I2Cinterfaces to the SCL line. This means that a HIGH to LOW transitionon the SCL line will cause the devices concerned to start countingoff their LOW period and, once a device clock has gone LOW, it willhold the SCL line in that state until the clock HIGH state isreached. However, the LOW to HIGH transition of this clock may notchange the state of the SCL line if another clock is still within itsLOW period. The SCL line will therefore be held LOW by the devicewith the longest LOW period. Devices with shorter LOW periods enter aHIGH wait-state during this time.
When all devices concerned have counted off their LOW period, theclock line will be released and go HIGH. There will then be nodifference between the device clocks and the state of the SCL line,and all the devices will start counting their HIGH periods. The firstdevice to complete its HIGH period will again pull the SCL line LOW.
In this way, a synchronized SCL clock is generated with its LOWperiod
43
河海大学学士学位论文 | 基于ARM 的超声测距模块开发 |
determinedby the device with the longest clock LOW period, and its HIGH perioddetermined by the one with the shortest clock HIGH period.
7.2、Arbitration
Amaster may start a transfer only if the bus is free. Two or moremasters may generate a START condition within the minimum hold time(tHD;STA) of the START condition which results in a defined STARTcondition to the bus.
Arbitrationtakes place on the SDA line, while the SCL line is at the HIGH level,in such a way that the master which transmits a HIGH level, whileanother master is transmitting a LOW level will switch off its DATAoutput stage because the level on the bus doesn’t correspond to itsown level.
Arbitrationcan continue for many bits. Its first stage is comparison of theaddress bits (addressing information is given in Sections 10 and 14).If the masters are each trying to address the same device,arbitration continues with comparison of the data-bits if they aremaster-transmitter,or acknowledge-bits if they are master-receiver.Because address and data information on the I2C-busis determined by the winning master, no information is lost duringthe arbitration process.
Amaster that loses the arbitration can generate clock pulses until theend of the byte in which it loses the arbitration.
Asan Hs-mode master has a unique 8-bit master code, it will alwaysfinish the arbitration during the first byte
addressing stage, it’s possible that the winning master is tryingto address it. The losing master must therefore switch overimmediately to its slave mode. If a master also incorporates a slavefunction and it loses arbitration during the
and the actual level on the SDA line, its data output is switchedoff, which means that
aHIGH output level is then connected to the bus. This will not affectthe data transfer initiated by the winning master.
Sincecontrol of the I2C-busis decided solely on the address or master code and data sent bycompeting masters, there is no central master, nor any order ofpriority on the bus.
Specialattention must be paid if, during a serial transfer, the arbitrationprocedure is still in progress at the moment when a repeated STARTcondition or a STOP condition is transmitted to the I2C-bus.If it’s possible for such a situation to occur, the mastersinvolved must send this repeated START condition or STOP condition atthe same position in the format frame. In other words, arbitrationisn’t allowed.
Arepeated START condition and a data bit
ASTOP condition and a data bit
Arepeated START condition and a STOP condition.
Slavesare not involved in the arbitration procedure.
8、 FORMATS WITH 7-BIT ADDRESSES
After the START condition (S), a slave address is sent. This address is 7 bits long
44
河海大学学士学位论文 | 基于ARM 的超声测距模块开发 |
followedby an eighth bit which is a data direction bit (R/W) - a ‘zero’indicates a transmission (WRITE), a ‘one’ indicates a request fordata (READ). A data transfer is always terminated by a STOP condition(P) generated by the master. However, if a master still wishes tocommunicate on the bus, it can generate a repeated START condition(Sr) and address another slave without first generating a STOPcondition.
Variouscombinations of read/write formats are then possible within such atransfer.
Possibledata transfer formats are:
· Master-transmitter transmits to slave-receiver. The transferdirection is not changed.
· Master reads slave immediately after first byte. At the moment ofthe first acknowledge, the master- transmitter becomes a master-receiver and the
slave-receiverbecomes a slave-transmitter. This first acknowledge is stillgenerated by the slave. The STOP condition is generated by themaster, which has previously sent a not-acknowledge (A).
·During a change of direction within a transfer, the START conditionand the slave address are both repeated, but with the R/W bitreversed. If a master receiver sends a repeated START condition, ithas previously sent a not-acknowledge (A).
NOTES:
1. Combined formats can be used, for example, to controla serial memory. During the first data byte, the internal memorylocation has to be written. After the START condition and slaveaddress is repeated, data can be transferred. 2. All decisions onauto-increment or decrement of previously accessed memory locationsetc. are taken by the designer of the device.
inthe sequence.
repeated START condition such that they all anticipate the sending ofa slave address,
evenif these START conditions are not positioned according to the properformat. 5. A START condition immediately followed by a STOP condition(void message) is an illegal format.
I2C总线协议简介
1、I2C总线规范
1.1、I2C总线的特征
• 只要求两条总线线路一条串行数据线SDA一条串行时钟线SCL。
• 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机从机关系软
件设定地址主机可以作为主机发送器或主机接收器。
• 它是一个真正的多主机总线如果两个或更多主机同时初始化数据传输可以通过冲突
检测和仲裁防止数据被破坏。
• 串行的8位双向数据传输位速率在标准模式下可达100kbit/s快速模式下可达
400kbit/s高速模式下可达3.4Mbit/s。
• 片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整。
• 连接到相同总线的IC器件数量只受到总线的最大电容400pF限制。
2、介绍I2C 总线规范
45
河海大学学士学位论文 | 基于ARM 的超声测距模块开发 |
对于面向8位的数字控制应用譬如那些要求用微控制器的要建立一些设计标准: •一个完整的系统通常由至少一个微控制器和其他外围器件例如存储器和I/O扩展器组成。
• 系统中不同器件的连接成本必须最小。
• 执行控制功能的系统不要求高速的数据传输。
• 总的效益由选择的器件和互连总线结构的种类决定。
产生一个满足这些标准的系统需要一个串行的总线结构,尽管串行总线没有并行总线的数据吞吐能力,但它们只要很少的配线和IC连接管脚。然而总线不仅仅是互连的线,还包含系统通讯的所有格式和过程。
串行总线的器件间通讯必须有某种形式的协议避免所有混乱数据丢失和妨碍信息的可
能性。快速器件必须可以和慢速器件通讯。系统必须不能基于所连接的器件,否则不可能进
行修改或改进应当设计一个过程决定哪些器件何时可以控制总线。而且,如果有不同时钟速度的器件连接到总线必须定义总线的时钟源。所有这些标准都在I2C总线的规范中。
3、I2C总线的概念
I2C总线支持任何IC生产过程(NMOS、CMOS、双极性)两线―串行数据(SDA)和串行时钟(SCL)线在连接到总线的器件间传递信息。每个器件都有一个唯一的地址识别 ,而且都可以作为一个发送器或接收(无论是微控制器、LCD驱动器、存储器或键盘接口)
器9由器件的功能决定。很明显,LCD驱动器只是一个接收器,而存储器则既可以接收又可以发送数据。除了发送器和接收器外器件在执行数据传输时也可以被看作是主机或从机。
由于主机通常是微控制器,让我们考虑以下数据在两个连接到I2C总线的微控制器之间传I2C总线是一个多主机的总线。可以连接多于一个能控制总线的器件到总线。主机是初始化总线的数据传输并产生允许传输的时钟信号的器件。此时,任何被寻址的器件
都被认为是从机。
输的情况。
传输。
连接多于一个微控制器到I2C总线的可能性意味着超过一个主机可以同时尝试初始化传输数据。为了避免由此产生混乱,发展出一个仲裁过程,它依靠线与连接所有I2C总线接口到I2C总线。
如果两个或多个主机尝试发送信息到总线,在其他主机都产生0的情况下首先产生一个1的主机将丢失仲裁。仲裁时的时钟信号是用线与连接到SCL线的主机产生的时钟的同步结合。
在I2C总线上产生时钟信号通常是主机器件的责任:当在总线上传输数据时,每个主机产生自己的时钟信号。主机发出的总线时钟信号只有在以下的情况才能被改变:慢速的从
机器件控制时钟线并延长时钟信号,或者在发生仲裁时被另一个主机改变。
4、总体特征
SDA 和SCL都是双向线路,都通过一个电流源或上拉电阻连接到正的电源电压。当总线空闲时,这两条线路都是高电平,连接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与的功能。I2C总线上数据的传输速率在标准模式下可达100kbit/s,在快速模400pF的限制决定。 式下可达400kbit/s,在高速模式下可达3.4Mbit/s。连接到总线的接口数量只由总线电容是
5、位传输
46
河海大学学士学位论文 | 基于ARM 的超声测距模块开发 |
由于连接到I2C 总线的器件有不同种类的工艺(CMOS 、NMOS、双极性),逻辑0(低) |
和1(高)的电平不是固定的,它由VDD的相关电平决定。每传输一个数据位就产生一个时钟脉冲。
6传输数据
6.1字节格式
发送到SDA线上的每个字节必须为8位,每次传输可以发送的字节数量不受限制,每个字节后必须跟一个响应位。首先传输的是数据的最高位(MSB),如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL保持低电平,迫使主机进入等待状态。当从机准备好接收下一个数据字节并释放时钟线SCL后,数据传输继续。
在一些情况下,可以用与I2C总线格式不一样的格式(例如兼容CBUS的器件)。甚至在传输一个字节时,用这样的地址起始的报文可以通过产生停止条件来终止。此时不会产生响应。
7仲裁和时钟发生
7.1同步
所有主机在SCL线上产生它们自己的时钟来传输I2C总线上的报文数据,只在时钟的高电平周期有效。因此需要一个确定的时钟进行逐位仲裁。
时钟同步通过线与连接I2C接口到SCL线来执行。这就是说:SCL线的高到低切换会使器件开始数它们的低电平周期,而且一旦器件的时钟变低电平,它会使SCL线保持这
高切换不会改变SCL线的状态。因此,SCL线被有最长低电平周期的器件保持低电平。此时,低电平周期短的器件会进入高电平的等待状态。当所有有关的器件数完了它们的低电平周期后,时钟线被释放并变成高电平。之后,器
种状态直到到达时钟的高电平。但是,如果另一个时钟仍处于低电平周期,这个时钟的低到
7.2 仲裁
主机只能在总线空闲的时候启动传输。两个或多个主机可能在起始条件的最小持续时间
(tHD;STA)内产生一个起始条件,结果在总线上产生一个规定的起始条件。
当SCL线是高电平时,仲裁在SDA线发生;这样,在其他主机发送低电平时,发送高电平的主机将断开它的数据输出级,因为总线上的电平与它自己的电平不相同。
仲裁可以持续多位。它的第一个阶段是比较地址位。如果每个主机都尝试寻址相同的器 ,或者比较响应位(如果是主机—接收件,仲裁会继续比较数据位(如果是主机—发送器)
器)。因为I2C总线的地址和数据信息由赢得仲裁的主机决定,在仲裁过程中不会丢失信息。丢失仲裁的主机可以产生时钟脉冲直到丢失仲裁的该字节末尾。由于Hs模式的主机有一个唯一的8位主机码,因此一般在第一个字节就可以结束仲裁。
如果主机也结合了从机功能,而且在寻址阶段丢失仲裁,它很可能就是赢得仲裁的主机在寻址的器件,因此,丢失仲裁的主机必须立即切换到它的从机模式。
当然,可能包含更多的内容(由连接到总线的主机数量决定)。此时,产生DATA1的主机的内部数据电平与SDA线的实际电平有一些差别,如果关断数据输出,这就意味着总线连接了一个高输出电平。这不会影响由赢得仲裁的主机初始化的数据传输。由于I2C总线的控制只由地址或主机码以及竞争主机发送的数据决定,没有中央主机,
总线也没有任何定制的优先权。 47
河海大学学士学位论文 | 基于ARM 的超声测距模块开发 |
必须特别注意的是:在串行传输时,当重复起始条件或停止条件发送到I2C总线的时候,仲裁过程仍在进行。如果可能产生这样的情况,有关的主机必须在帧格式相同位置发送这个
重复起始条件或停止条件。也就是说,仲裁在不能下面情况之间进行。
• 重复起始条件和数据位
•停止条件和数据位
•重复起始条件和停止条件,从机不被卷入仲裁过程。
8、7位的地址格式
在起始条件(S)后,发送了一个从机地址。这个地址共有7位,紧接着的第8位是数据方向位(R/W)—0表示发送写,1表示请求数据读。数据传输一般由主机产生的停止位P终止。但是,如果主机仍希望在总线上通讯,它可以产生重复起始条件Sr和寻址另一个从机,而不是首先产生一个停止条件。在这种传输中,可能有不同的读/写格式结合。
可能的数据传输格式有
•主机发送器发送到从机接收器传输的方向不会改变。
•在第一个字节后,主机立即读从机。在第一次响应时,主机-发送器变成主机-接收器,从机-接收器变成从机-发送器。第一次响应仍由从机产生。之前发送了一个不响应信号(/A)的主机产生停止条件。
•传输改变方向的时侯,起始条件和从机地址都会被重复。但R/W位取反。如果主机接 。收器发送一个重复起始条件,它之前应该发送了一个不响应信号(/A)
注意:
1.复合格式可以用于例如控制一个串行存储器。在第一个数据字节期间,要写内部存储
2.自动增加或减少之前访问的存储器位置等所有决定都由器件的设计者决定。 3.每个字节都跟着一个响应位在序列中用A或/A模块表示。
器的位置。在重复起始条件和从机地址后,数据可被传输。
48