基于MSPG的超声波测距Word文档格式.docx
《基于MSPG的超声波测距Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于MSPG的超声波测距Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
当被测距离小于预设报警值是,红灯亮起,提示距离过近。
在测距系统中加入蜂鸣器后能够实现预设的距离报警功能,进一步改良成为智能车倒车报警系统。
第2章超声波测距原理
超声波简介
咱们明白,当物体振动时会发作声音。
科学家们将每秒钟振动的次数称为声音的频率,它的单位是赫兹。
咱们人类耳朵能听到的声波频率为20~20000赫兹。
当声波的振动频率大于20000赫兹或小于20赫兹时,咱们便听不见了。
因此,咱们把频率高于20000赫兹的声波称为“超声波”。
通经常使用于医学诊断的超声波频率为1~5兆赫。
超声波具有方向性好,穿透能力强,易于取得较集中的声能,在水中传播距离远等特点。
可用于测距,测速,清洗,焊接,碎石等。
在医学,军事,工业,农业上有明显的作用。
超声波测距原理
超声波是利用反射的原理测量距离的,被测距离一端为超声波传感器,另一端必需有能反射超声波的物体。
测量距离时,将超声波传感器对准反射物发射超声波,并开始计时,超声波在空气中传播抵达障碍物后被反射回来,传感器接收到反射脉冲后当即停止计时,然后依照超声波的传播速度和计不时刻就能够计算出两头的距离。
测量距离D为
式中c——超声波的传播速度;
——超声波发射到接收所需时刻的一半,也确实是单程传播时刻。
第3章方案论证
设计思路
超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后碰到障碍物反射回来的时刻,依照发射和接收的时刻差计算动身射点到障碍物的实际距离。
由于超声波易于定向发射、方向性好、强度易操纵、与被测量物体不需要直接接触的优势,超声波测距仪可应用于倒车提示、建筑工地、工业现场等的距离测量。
本实验设计并制作了了一款基于单片机的低本钱、高精度、微型化的超声波测距仪。
采纳单片机作为主操纵器,操纵发射触发脉冲的开始时刻及脉宽,响应回波时刻并测量、计数发射至来回的时刻差。
操纵产生超声波信号,通过输出引脚输入至驱动器,经驱动器驱动后推动生超声波;
一旦探头接到回波,那么其输出引脚的电平将从“1”变成“0”,这种电平转变能够作为单片机对接收探头的接收情形进行实时监控。
同时还操纵显示电路,实现数字显示。
硬件系统结构设计
超声波测距仪系统结构如以下图所示。
它要紧由单片机、超声波发射及接收模块、LCD显示电路及电源电路组成。
系统要紧功能包括:
1)超声波的发射、接收,并依照计不时刻计算测量距离;
2)LED显示器显示距离;
3)当系统运行不正常时,用复位电路复位
第4章要紧元件介绍
单片机MSP430launchpadM430G2553
MSP430LaunchPad是一款易于利用的闪存编程器和调试工具,它提供了在MSP430超值系列器件上进行开发所需的一切内容。
它提供了具有集成仿真功能的14/20引脚DIP插座目标板,可通过SpyBi-Wire(2线JTAG)协议对系统内置的MSP430超值系列器件进行快速编程和调试。
由于MSP430闪存的功耗极低,因此无需外部电源即可在数秒内擦除闪存并对其进行编程。
LaunchPad将MSP430器件与CodeComposerStudio版本4或IAR嵌入式工作平台等集成软件环境相连接。
MSP430超值系列器件上的这些IDE是免费且非受限的软件。
LaunchPad支持所有采纳14或20引脚DIP封装(TI封装代码:
N)的MSP430G2xx闪存器件。
LaunchPad还采纳用于定制项目和应用的板载可编程LED和按钮!
10引脚PCB连接器还可用于连接LaunchPad和附加器件。
实此刻采纳14或20引脚DIP(N)封装的所有MSP430超值系列器件上的开发。
LaunchPad的集成仿真器接口将基于闪存的MSP430超值系列器件与PC相连接,可通过USB实现实时系统内编程和调试。
超声波传感器HC-SR04
接线方式,VCC、trig(操纵端)、echo(接收端)、GND
模块工作原理:
(1)采纳IO触发测距,给至少10us的高电平信号;
(2)模块自动发送8个40khz的方波,自动检测是不是有信号返回;
(3)有信号返回,通过IO输出一高电平,高电平持续的时刻确实是
超声波从发射到返回的时刻.测试距离=(高电平常刻*声速(340M/S))/2;
5110LCD液晶显示屏
NOKIA
公司生产的可用于其5110、6150,6100
等系列移动的液晶显示模块。
该产品除应用于移动外,也可普遍应用于各类便携式设备的显示系统。
Nokia5110是一款经典机型,可能由于经典的缘故,旧机械很多,因此很多电子工程师就把旧机械的屏幕拆下来,自己驱动Nokia5110,用于开发的设备显示
1)
性价比高,Nokia5110能够显示15个汉字,30个字符。
2)
接口简单,仅四根I/O线即可驱动,LCD1602需11根I/O线,LCD12864需12根。
3)
速度快,是LCD12864的20倍,是LCD1602的40倍。
4)
Nokia5110工作电压,正常显示时工作电流200uA以下,具有掉电模式,适合电池供电的便携式移动设备
第5章软件设计
主程序流程
系统上电后,第一系统初始化,按时器开始按时,操纵超声波传感器发出超声波,同时使按时器开始按时。
当动身管脚为低电平常接收到回波,当即便按时器停止工作,保留按时器的计数值。
然后依照传输时刻计算距离计算出距离后挪用距离显示子程序,LCD显示距离。
N
子程序设计
超声波发送子程序及超声波接收中断子程序
超声波发生子程序的作用是通过端口发送超声波脉冲信号(频率约40kHz的方波),脉冲宽度为12μs左右,同时把计数器T1打开进行计时。
voidsend_15us()//超声波发送15us的高电平
{
P2OUT&
=~BIT0;
delay_us(20);
P2OUT|=BIT0;
}
while
(1)
{
send_15us();
delay(100);
}
距离计算子程序
当前温度和超声波来回时刻均测量出来后,用C语言依照公式计算距离来编程是比较简单的算法。
TIME1=TA1CCR0;
if(TIME1>
TIME0)
TIME1=TIME1-TIME0;
else
TIME1=TIME1+(65535-TIME0);
Distance0=TIME1*170;
Distance_test=(Distance0/10000)-7;
ge=Distance_test%10+48;
shi=(Distance_test/10)%10+48;
bai=(Distance_test/100)%10+48;
qian=(Distance_test/1000)%10+48;
液晶显示程序
#defineLCD5110_CE_HP1OUT|=0x80//5110片选置位1
#defineLCD5110_CE_LP1OUT&
=0x7f//5110片选复位0
#defineLCD5110_DC_HP1OUT|=0x40//5110数据命令选择端置位1
#defineLCD5110_DC_LP1OUT&
=0xbf//5110数据命令选择端复位0
#defineLCD5110_DIN_HP1OUT|=0x20//5110数据输入端置位1
#defineLCD5110_DIN_LP1OUT&
=0xdf//5110数据输入端复位0
#defineLCD5110_CLK_HP1OUT|=0x10//5110数据命令选择端置位1
#defineLCD5110_CLK_LP1OUT&
=0xef//5110数据命令选择端复位0
#defineLCD5110_BL_HP2OUT|=0x02//5110背光控制端置位1
#defineLCD5110_BL_LP2OUT&
=0xfd//5110背光控制端复位0
#defineLCD5110_RST_HP2OUT|=0x01//5110背光控制端置位1
#defineLCD5110_RST_LP2OUT&
=0xfe//5110背光控制端复位0
#defineLCD_CMD0x00//八位0
#defineLCD_DATA0xff//八位1
externvoidDELAYms(unsignedinttime);
//延时ms函数
externvoidLCD5110_SET_XY(charx,chary);
//写坐标函数
externvoidLCD5110_Init(void);
//屏幕初始化
externvoidLCD5110_Clear(unsignedcharL);
//清除指定行
externvoidLCD5110_Clear_All(void);
//清除全屏
externvoidWrite_Char(charc);
//写一个ASCII字符
externvoidWrite_String(constchar*p);
//写字符串
第6章系统调试及误差分析
系统焊接
以万用板做载板,将LCD显示模块,单片机操纵模块和超声波发射接收模块组合在一路。
用杜邦线连接各模块的管脚。
误差及特性分析
依照超声波的特性,距离测量时必需知足条件:
①被测目标必需垂直于超声波测距仪。
②被测目标表面必需平坦。
③测量时在超声波测距仪周围没有其他可反射超声波的物体。
因此在测量进程中稍不警惕就会接收不到超声波,而致使没有测量结果。
由于超声波的来回时刻由单片机msp430的按时器T1来记,按时器T1工作在方式1,其最大定不时刻为,可得出最大的测量距离在10m之内。
且因为发射功率有限,测距仪也无法测量10m外的物体。
在实际的测试中3m之内有较高的测量精度。
由于程序设计的问题,在移动测距装置的进程中,LCD液晶屏上显示的数据无法实时刷新,需要在测试时按下复位按键实现距离数据的刷新。
附录一:
要紧程序
#include<
>
#include"
"
charflag_time=0;
longTIME0=0,TIME1=0;
longDistance_test=0;
longDistance0=0;
charge,shi,bai,qian;
//时钟初始化
voidCLK_Init(void)
if(CALBC1_1MHZ==0xFF||CALDCO_1MHZ==0xFF)
while
(1);
BCSCTL1=CALBC1_1MHZ;
DCOCTL=CALDCO_1MHZ;
//端口初始化
voidGPIO_Init(void)
P1DIR|=BIT4+BIT5+BIT6+BIT7;
P2DIR|=BIT0+BIT1;
P2DIR&
=~BIT3;
//作为捕获输入
P2SEL|=BIT3;
//主功能模块触发
P2DIR|=BIT2;
//作为触发端,设为输出
P2OUT&
=~BIT2;
//输出低电平
P1REN|=BIT3;
//启用内部上下拉电阻
P1OUT|=BIT3;
//设置为上拉电阻
P1IES|BIT3;
//为下降沿触发中断
P1IE|BIT3;
//中断允许
//定时器TIME1_A3初始化函数
voidTIME1_A3_Init(void)
TA1CTL|=TASSEL1+MC_2;
//SMCLK作为时钟源,连续计数模式
TA1CCTL0|=CM_3+CCIS_1+SCS+CAP+CCIE;
//上升沿与下降沿都捕获,输入源为CCI0B,同步捕获模式,使能中断
TA1CCR0=0;
constchartable1[]={"
DISTANCE:
};
constchartable2[]={"
CM(+-)1CM"
//主函数
intmain(void)
WDTCTL=WDTPW+WDTHOLD;
//关闭看门狗定时器
CLK_Init();
GPIO_Init();
TIME1_A3_Init();
LCD5110_Init();
LCD5110_Clear_All();
LCD5110_SET_XY(0,1);
Write_String(table1);
LCD5110_BL_H;
_EINT();
//中断使能
LPM0;
_NOP();
//定时器Timer1_ACCR0中断服务函数
#pragmavector=TIMER1_A0_VECTOR
__interruptvoidTIMER1_A0__ISR(void)
TACTL|=TASSEL_2+MC_2+TAIE+TACLR;
TA1CCTL0|=CM_3+CCIS_1+SCS+CAP+CCIE;
//上升沿与下降沿都捕获,
while
(1){
TIME1=TA1CCR0;
//根据实际距离校准后的数值补偿
LCD5110_Clear(4);
LCD5110_SET_XY(0,4);
Write_Char(qian);
Write_Char(bai);
Write_Char(shi);
Write_Char(ge);
LCD5110_SET_XY(24,4);
Write_String(table2);