带温度补偿的超声波测距系统设计模板
超声波测距器的设计说明书模板
超声波测距器的设计摘要用单片机控制超声波的发射,通过单片机记录和读取发射超声波和接收到的回波的时间差,进而计算出测量的距离。
文中详细论述了超声波测距的原理、测量电路和程序设计的方案。
关键词:超声波测距仪单片机目录摘要................................................Ⅰ1前言.................................................1 1.1 设计任务.............................................1 1.2本设计的应用意义.....................................1 2总体设计方案.............................................2 2.1设计原理...................................................3 2.2总体设计框图...............................................4 3电路原理的设计...............................................5 3.1超声波传感器....................................5 3.2超声波发射电路设计........................................7 3.3超声波回波接收处理电路设计.................................8 3.4LED显示电路设计...................................9 3.5键盘电路设计.............................................10 4软件设计.............................................12 4.1超声波测距原理........................................124.1.1超声波脉冲法测距原理...................................204.1.2超声波信号测量..................................21 4.2程序框架.......................................174.3测距控制程序...............................18 4.416Hz时基中断处理程序.............................194.6EXT1外部中断程序......................................22 4.7显示刷新程序.........................................23 4.8主程序.........................................23 5系统调试...........................................245.1硬件电路调试.........................................245.2软件程序调试.........................................255.2.1调试的主要方法.................................265.2.2调试中遇到的问题.................................275.3综合调试.............................................28 6 设计总结.......................................................29 致...........................................................30 参考文献.......................................................31 附录A:超声波测距器电路原理图....................................32 附录B:程序清单...................................................321 前言1.1 设计任务本设计实现超声波测距,要求测距围为100cm~500cm,用LED 数码管显示测量结果,以厘米为单位,精度为1 厘米;测量用按键触发:(1)开机时数码管显示000;(2)按下键盘则进行一次测量,并把测量结果显示在LED 数码管上。
51单片机超声波测距离(带温度补偿)
超声波模块原理图:发射接收原理图PCB:51单片机原理图:软件部分C语言程序:/*=========================================================== =========调试要求:1.MCU:A T89S52芯片或AT89C522.晶振:12MHz调试注意:本程序带温度补偿,采用DS18B20测量温度1.LCD1602液晶屏有显示后,才接入超声波模块。
2.注意超声波模块电源的极性。
不清楚请参好淘宝的电路图3.没有选用频率为12MHz晶振,用了别的频率晶振,单片机定时器的测量值与发出的40KHz频率脉冲不对。
4.使用者经常误发出20KHZ脉冲当40KHZ脉冲。
(40KHz频率脉冲,周期25us,占空比为50% = 12.5us)5.如果是用开发板调超声波模块,请检查开发板上的电路是否与超声波模块的控制脚复用了, 若复用了,请通过跳线分开发板上的电路。
6如果使用的是万用板,请确定单片机的复位电路和晶振电路是否正常,同时单片机的31脚(EA)记得接高电平。
============================================================= =======*/#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//===============================LCD1602接口定义=====================/*-----------------------------------------------------|DB0-----P2.0 | DB4-----P2.4 | RW-------P0.1 ||DB1-----P2.1 | DB5-----P2.5 | RS-------P0.2 ||DB2-----P2.2 | DB6-----P2.6 | E--------P0.0 ||DB3-----P2.3 | DB7-----P2.7 | 注意,P0.0到P0.2需要接上拉电阻---------------------------------------------------============================================================= */#define LCM_Data P2 //数据接口#define Busy 0x80 //用于检测LCM状态字中的Busy标识sbit LCM_RW = P0^1; //读写控制输入端,LCD1602的第五脚sbit LCM_RS = P0^2; //寄存器选择输入端,LCD1602的第四脚sbit LCM_E = P0^0; //使能信号输入端,LCD1602的第6脚//===============================超声波模块定义========================sbit RemPin =P3^2;// 接收端(这个不能修改,因为是外部中断(INT0)的引脚) sbit TxPin =P3^1;// 发射端//******************************************************************** ***//ds18b20数字温度传感器控制引脚定义sbit dq_ds18b20=P3^3;//定义控制DS18B20//******************************************************************** ***//LCD显示模块的函数声明void WriteDataLCM (uchar WDLCM);//LCD模块写数据void WriteCommandLCM (uchar WCLCM,BuysC); //LCD模块写指令uchar ReadDataLCM (void);//LCD模块读数据uchar ReadStatusLCM (void);//读LCD模块的忙标void DisplayOneChar (uchar X,uchar Y,uchar ASCII);//在第X+1行的第Y+1位置显示一个字符void DisplayListChar (uchar X,uchar Y,uchar delayms,uchar code *DData); void DisplayCursorPos (uchar X, uchar Y);void LCMInit (void);void DisplayIntData (uchar X, uchar Y,int ZhengShu,uchar Digit,uchar XiaoShu);void DisplayCharData (uchar X, uchar Y,uchar ZiFu);//******************************************************************** **//延时函数声明void delay25us_40KHz(unsigned char us);void DelayUs(uint us);void DelayMs(uint Ms);void delay_3us();//3US的延时程序void delay_8us(unsigned int t);//8US延时基准程序void delay_50us(unsigned int t);//延时50*T微妙函数的声明//******************************************************************** ***//DS18B20测温函数定义void w_1byte_ds18b20(uchar value);//向DS18B20写一个字节uchar r_1byte_ds18b20(void);//从DS18B20读取一个字节的数据void rest_ds18b20(void);//DS18B20复位程序void readtemp_ds18b20(void);//读取温度void display_temp(void);//温度显示程序//******************************************************************** ***//参数定义uint length = 0; // 测距的长度0.00Muchar flag = 0; // 测距的标志有信号接收=1uchar templ,temph;uint speed;//根据温度计算出来的声音速度uchar t_b,t_s,t_g,t_x;//从左到右分别存储温度百位,十位,个位,小数位uchar flag1;//温度正负性暂存,1为正数,0为负数const unsigned char tabl3[]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x0 8,0x09,0x09};/*=========================================================== ================主程序============================================================= ================*/void main(void){uchar i;LCMInit(); //1602初始化EX0 = 1; //允许总中断中断,使能INT0 外部中断ET0 = 1;TMOD=0x11; //设定T0为16位时器,设定T1为16位时器DisplayOneChar( 0,14,'m');DisplayListChar(0,0,0, "Distanc: "); //显示字符串while(1){readtemp_ds18b20();display_temp();//显示温度for(i=0;i<20;i++){DisplayIntData(0, 13,length,5,3);//显示测量距离TH0=0x00;TL0=0x00;TR0=1; //启动定时器0EA = 1; //允许所有中断delay25us_40KHz(15); //发出脉冲信号DelayMs(200);}}}//******************************************************************** ***********//温度显示函数void display_temp(){if(flag1==1)//温度为正数时的显示程序{DisplayOneChar( 1,2,'+');}else{DisplayOneChar( 1,2,'-');}//显示温度信息DisplayOneChar( 1,0,'T');DisplayOneChar( 1,1,':');DisplayOneChar( 1,3,t_s+0x30);DisplayOneChar( 1,4,t_g+0x30);DisplayOneChar( 1,5,'.');DisplayOneChar( 1,6,t_x+0x30);//显示速度信息DisplayOneChar( 1,8,'S');DisplayOneChar( 1,9,':');DisplayOneChar( 1,10,speed/100%10+0x30);DisplayOneChar( 1,11,speed/10%10+0x30);DisplayOneChar( 1,12,speed%10+0x30);DisplayOneChar( 1,13,'M');DisplayOneChar( 1,14,'/');DisplayOneChar( 1,15,'S');}//****************************************************//读取温度void readtemp_ds18b20(void){uchar temp32;rest_ds18b20();w_1byte_ds18b20(0xcc); //跳过读序列号的操作w_1byte_ds18b20(0x44); //启动温度转换delay_8us(2);rest_ds18b20();w_1byte_ds18b20(0xcc); //跳过读序列号的操作w_1byte_ds18b20(0xbe); //读取温度寄存器等(共可读9个寄存器)前两个就是温度templ=r_1byte_ds18b20();temph=r_1byte_ds18b20();if((temph&0xf0))//判断温度的正负性{flag1=0;temph=-temph;templ=-templ;t_x=tabl3[templ & 0x0f];//计算温度的小数temp32=temph & 0x0f;temp32<<=4;templ>>=4;temp32=temp32 | templ;t_b=temp32/100%10;//计算温度的百位数据t_s=temp32/10%10;//计算温度的十位数据t_g=temp32%10;//计算温度的个位数据speed=331.4-0.607*(temp32 | templ);}else//为正数{t_x=tabl3[templ & 0x0f];//计算温度的小数temp32=temph & 0x0f;temp32<<=4;templ>>=4;temp32=temp32 | templ;t_b=temp32/100%10;//计算温度的百位数据t_s=temp32/10%10;//计算温度的十位数据t_g=temp32%10;//计算温度的个位数据flag1=1;speed=311.4+0.607*(temp32 | templ);}}/*=========================================================== =========功能:在1602显示一个整数数据说明:显示一个整数数据-9999->32625. 从右至左显示数据5位:============================================================= =========*/void DisplayIntData(uchar X, uchar Y,int ZhengShu,uchar Digit,uchar XiaoShu) {uchar i=0,k=0, BCD[5]={0};if(Digit>5) Digit=5;if(ZhengShu<0){k=1;//负数示志位ZhengShu=-ZhengShu;}BCD[4] =ZhengShu / 10000; //求出万位数据ZhengShu = ZhengShu % 10000;BCD[3] =ZhengShu / 1000; //求出千位数据ZhengShu = ZhengShu % 1000;BCD[2] =ZhengShu / 100; //求出百位数据ZhengShu = ZhengShu % 100;BCD[1] =ZhengShu / 10; //求出十位数据BCD[0] =ZhengShu % 10; //求出个位数据for(i=0;i<Digit;i++)//输出显示的数值{if((i==XiaoShu)&&(0!=XiaoShu)){DisplayOneChar(X,Y-i,'.');//输出小数点Y= Y-1;}DisplayOneChar(X,Y-i,BCD[i]+0x30); //显示一个字符}if(k==1)DisplayOneChar(X,Y-1,'-');//输出负符}//****************************************************************//读一个字节uchar r_1byte_ds18b20(void){uchar i=0;uchar value= 0;for (i=0;i<8;i++){value>>=1;dq_ds18b20=0;// DQ_L;delay_3us();dq_ds18b20=1; //DQ_H;delay_8us(2);if(dq_ds18b20==1) value|=0x80;delay_8us(6); //延时40us}dq_ds18b20=1;return value;}//******************************************************************** ***********//子程序功能:向DS18B20写一字节的数据void w_1byte_ds18b20(uchar value){uchar i=0;for(i=0;i<8;i++){dq_ds18b20=1;delay_3us();dq_ds18b20=0;delay_8us(2);if (value& 0x01) dq_ds18b20=1; //DQ = 1delay_50us(1); //延时50us 以上delay_8us(2);value>>=1;}dq_ds18b20=1; //DQ = 1}//;**************************************************//ds18b20复位子程序void rest_ds18b20(void){rest:delay_3us(); //稍做延时delay_3us();dq_ds18b20=1;delay_3us();dq_ds18b20=0;// DQ_L;delay_50us(11);//480us<T<960usdq_ds18b20=1;//拉高总线delay_8us(5);if(dq_ds18b20==1){return;}delay_50us(2); //延时90usif(dq_ds18b20==1){return;}else{goto rest;}}//==============================超声波模块测试子程序================================================/*=========================================================== =========注意:是用12MHz晶振设定延时时间:x*25us 与产生40KHZ的脉冲============================================================= =======*/void delay25us_40KHz(unsigned char us){while(us--){TxPin = 0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();TxPin = 1;_nop_();_nop_();_nop_();_nop_();}TxPin = 1;}/*=========================================================== ==================中断程序的入口(注意:接收与发射的电平是相反的)============================================================= ==================*/void init0int() interrupt 0{uint timer_us = 0;TR0=0; //关闭定时器0timer_us =TH0*256+TL0;if(timer_us>190)timer_us=timer_us-180; //修正测距的距离if(timer_us<=735){timer_us=timer_us-96;//二次修正}if(timer_us>5059){timer_us+=29;}if(timer_us>5470){timer_us+=29;}if(timer_us>6410){timer_us+=29;}if(timer_us>7410){timer_us+=29;}if(timer_us>8410){timer_us+=29;}if(timer_us>9410){timer_us+=29;}if(timer_us>10410){timer_us+=29;}length = ((unsigned long)(speed)*timer_us)/2000;//计算长度,是扩大100倍flag = 0;EA = 0; //禁止所有中断}/*=========================================================== =========功能:在1602显示一个字符数据说明:显示一个字符数据0~256. 从左至右显示数据3位============================================================= =========*/void DisplayCharData(uchar X, uchar Y,uchar ZiFu){uchar i=0;uchar V alueBCD[3];V alueBCD[0] = ZiFu / 100; //求出百位数据ZiFu = ZiFu % 100;V alueBCD[1] = ZiFu / 10; //求出十位数据V alueBCD[2] = ZiFu % 10; //求出个位数据for(i=0;i<3;i++)//输出显示的数值{DisplayOneChar(X,Y+i,V alueBCD[i]+0x30); //显示一个字符}}/*=========================================================== ================超出测量时间============================================================= ================*/void timer0int (void) interrupt 1{TR0=0; //关闭定时器0length = 0; //超出测量时间显示示0flag = 1; //EA = 0; //禁止所有中断}/*=========================================================== ===========LCM初始化============================================================= =========*/void LCMInit(void){LCM_Data = 0;WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号DelayMs(5);WriteCommandLCM(0x38,0);DelayMs(5);WriteCommandLCM(0x38,0);DelayMs(5);WriteCommandLCM(0x38,1); //显示模式设置,开始要求每次检测忙信号WriteCommandLCM(0x08,1); //关闭显示WriteCommandLCM(0x01,1); //显示清屏WriteCommandLCM(0x06,1); // 显示光标移动设置WriteCommandLCM(0x0C,1); // 显示开及光标设置DelayMs(100);}/*=========================================================== =========显示光标的位置============================================================= =======*/void DisplayCursorPos( unsigned char X, unsigned char Y){X &= 0x1;Y &= 0xF; //限制Y不能大于15,X不能大于1if (X) Y |= 0x40; //当要显示第二行时地址码+0x40;Y |= 0x80; // 算出指令码WriteCommandLCM(Y, 1); //这里不检测忙信号,发送地址码}/*=========================================================== =========按指定位置显示一串字符:第X 行,第y列注意:字符串不能长于16个字符============================================================= =========*/void DisplayListChar(uchar X,uchar Y,uchar delayms, uchar code *DData){unsigned char ListLength;ListLength = 0;X &= 0x1;Y &= 0xF; //限制X不能大于15,Y不能大于1while (DData[ListLength]!='\0') //若到达字串尾则退出{if (Y <= 0xF) //X坐标应小于0xF{DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符ListLength++;Y++;DelayMs(delayms);//延时显示字符串}elsebreak;//跳出循环体}}/*=========================================================== =========设定延时时间:x*1us============================================================= =======*/void DelayUs(uint us){while(us--);}/*=========================================================== =========设定延时时间:x*1ms============================================================= =======*/void DelayMs(uint Ms){uint i,TempCyc;for(i=0;i<Ms;i++){TempCyc = 250;while(TempCyc--);}}//==============================LCD1602显示子程序================================================/*=========================================================== ==========写数据函数: E =高脉冲RS=1 RW=0============================================================= =========*/void WriteDataLCM(unsigned char WDLCM){ReadStatusLCM(); //检测忙LCM_Data = WDLCM;LCM_RS = 1;LCM_RW = 0;LCM_E = 0; //若晶振速度太高可以在这后加小的延时LCM_E = 0; //延时LCM_E = 1;}/*=========================================================== =========写指令函数: E=高脉冲RS=0 RW=0============================================================= =========*/void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC为0时忽略忙检测{if (BuysC) ReadStatusLCM(); //根据需要检测忙LCM_Data = WCLCM;LCM_RS = 0;LCM_RW = 0;LCM_E = 0;LCM_E = 0;LCM_E = 1;}/*=========================================================== =========//读数据============================================================= =========*/unsigned char ReadDataLCM(void){LCM_RS = 1;LCM_RW = 1;LCM_E = 0;LCM_E = 0;LCM_E = 1;return(LCM_Data);}/*=========================================================== =========正常读写操作之前必须检测LCD控制器状态:E=1 RS=0 RW=1;DB7: 0 LCD控制器空闲,1 LCD控制器忙。
具有温度补偿功能的超声波测距系统设计
1 引 言
2 超 声 波测 距 系统 原 理
超 声 波 测 距 与红 外 线 、激 光 测 距 相 比 ,其 对 外 界 电磁
超 声 波测距 系统 如 图 1所 示 。硬 件 主 要 有 :超 声 波 发
场 、光 线及 色彩 敏感 度低 ,更 适 于 电磁 干扰 强 、有 毒 、黑 暗 、 射电路 、超声 波接 收 电路 、温度 检测 电路 、AT89C51单 片机
Abstract: In order to overcom e the error of environm ent tem perature fluctuation caused by the ultrasonic ranging system ,this paper uses the tem perature sensor DS18B20 to acquire tem perature data in tim e.W hen the tem perature in the environm ent changes,the tem perature sensor DS1 8B20 extracts tem perature and corrects the tem perature using the com puter tim ely according to the c0rresponding relationship betw een the value of the tem perature and ultrasonic w ave to correct the change of tem perature caused by the error produced by the ultrasonic ranging system .The system takes single chip AT89C5 1 as the core,and designs temperature acquisition,ultrasonic transm ission and reception and other hardware circuits and softw are parts.T he test show s that the system can effectively avoid the errors caused by the change of the tem perature in the ranging system w ith the m easurem ent accuracy up to 1 . Keywords: ultrasonic ranging; tem perature com pensation;A T89C5 1; DS1 8B20
超声波测距设计报告
超声波测距—设计报告摘要利用超声波测距原理,出于低成本、高精度的目的,提出了一种基于AT89C52的超声波测距的设计方案。
硬件部分采用AT89C52单片机作为控制器,主要有超声波发射电路、超声波接收电路、温度检测电路、LCD显示电路和报警电路。
在分析超声波测距原理的基础上,给出了实现超声波测距的硬件设计电路图和软件设计流程图。
该系统测量精度为1cm,测量范围为0.30-3.00m,能够很好的满足测距的设计要求。
关键字单片机超声波温度补偿测距 LCD显示1、设计任务(1)超声波测距系统原理1)超声波传感器总体上讲,超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。
电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。
他们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。
目前较为常用的是压电式超声波发生器。
压电式超声波发生器实际上是利用压电晶体的谐振来工作的。
它有两个压电晶片和一个共振板。
当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。
反之,如果两极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。
超声波传感器结构如下:图 2超声波传感器外部结构 图 3 超声波传感器内部结构 2) 超声波测距的方案超声波测距方法主要有三种:1)相位检测法:精度高,但检测范围有限;2)声波幅值检测法:易受反射波的影响;3)渡越时间法:工作方式简单,直观,在硬件控制和软件设计上都容易实现,其原理为:检测从发射传感器发射的超声波经气体介质传播到接收传感器的时间t ,这个时间就是渡越时间,然后求出距离l 。
设l 为测量距离,t 为往返时间差,超声波的传播速度为c ,则有l=ct/2。
综合以上分析,本设计将采用渡越时间法。
图 4 测距原理由于超声波也是一种声波,其声速c 与空气温度有关,一般来说,温度每升高1摄氏度,声速增加0.6米/秒。
带温度补偿超声波测距系统设计
南通大学传感器与检测课程设计(预习)报告项目:带温度补偿的超声波测距系统设计班级:姓名:学号:联系方式:学期:2015-2016-2前言 (3)一.课题调研 (3)1.1传感器选型 (3)1.1.1可选温度传感器 DS18B20 (3)1.1.2可选用AD590温度传感器 (4)1.2超声波传感器 (5)1.2.2选用MAX232芯片做发射电路 (7)1.2.3超声波发射电路 (8)1.2.4超声波接收电路 (10)1.2.5选用TL074芯片作为接受电路 (11)1.3多种实现方法。
(12)1.3.1方法一:系统结构框图 (12)1.3.2工作原理 (12)1.3.3方案二:系统结构图如下。
(13)二.总体设计 (14)2.1电路图 (14)2.1.1超声波模块电路 (14)2.2.1主程序设计。
(19)前言以AT89S51单片机为核心,设计了一种带温度补偿的超声波测距系统。
系统包括单片机、超声波发射及接收模块、温度补偿模块、信息显示模块。
温度补偿模块采用温度传感器DS18B20 采集环境温度,根据超声波速度与温度值的对应关系及时修正波速,以纠正温度的变化引起超声波测距系统产生的误差。
一.课题调研1.1传感器选型集成传感器是采用硅半导体集成工艺而制成的,因此亦称硅传感器或单片集成温度传感器,它是将温度传感器集成在一个芯片上、可完成温度测量及模拟信号输出功能的专用IC。
模拟集成温度传感器的主要特点是功能单一(仅测量温度)、测温误差小、价格低、响应速度快、传输距离远、体积小、微功耗等,适合远距离测温、控温,不需要进行非线性校准,外围电路简单。
1.1.1可选温度传感器DS18B20由于声音的速度在不同的温度下有所不同,因此为提高精度,应通过温度补偿对超声波的传播速度进行校正。
系统采用DS18B20传感器测量温度,DS18B20 温度传感器具有不受外界干扰、精度高、测温范围宽等优点。
单片机口接DS18B20 数据总线,控制DS18B20 进行温度转换和传输数据,数据总线接10 kΩ的上拉电阻,作用是使总线控制器在温度转换期间无需一直保持高电平。
超声波测距系统中的温度补偿
机在通过单总线接口访问 DS18B20 时 , 其工作流程必 需要遵守严格的操作时序 , 如果顺序中任意一步缺少 [ 6, 7 ] 或顺序错乱 , DS18B20 将不会响应 。DS18B20 的操 作顺序是 : 第一步 : 对 DS18B20 初始化 ; 第二步 : 发送 ROM 命令 ; 第三步 : 发送功能命令 。超声波测距系统 上电后 ,单片机开始初始化 DS18B20, 检测现场温度 , 软件控制 DS18B20 的具体流程如图 4 所示 。
- 30 313 - 20 319 - 10 325 0 323 10 338 20 344 30 349 100 386
收稿日期 : 2008 - 07 - 16; 修回日期 : 2008 - 09 - 10 3 基金项目 : 天津市应用基础与前沿技术计划 ( 07JCZDJC09300) ; 天津市教委科技发展基金 ( 2006BA12) 作者简介 : 赵小强 ( 1983 —) ,男 ,天津人 ,天津理工大学学生 ,硕士研究生 ,研究方向为检测与控制技术 , ( E - mail) zhaoxiaoqiang1983@163. com。
图 3 硬件结构
・6 3 ・
・ 控制与检测 ・
312 软件设计 DS18B20 对时序和电性参数要求很高 , 所以单片
tmpw ritebyte ( 0xcc) ; tmpw ritebyte (0x44) ;
AT89C2051单片机结合温度补偿的超声波测距系统设计
AT89C2051单片机结合温度补偿的超声波测距系统设计0 引言超声波是一种在弹性介质中的机械震荡,它是由与介质相接触的震荡源所引起的,其频率在20kHz以上。
由于超声波的速度相对于光速要小得多,其传播时间就比较容易检测,并且易于定向发射,方向性好,强度好控制,因而利用超声波测距在很多距离探测应用中有很重要的用途,包括无损检测、过程测量、机器人测量和定位,以及流体液面高度测量等。
利用单片机控制超声波检测往往比较迅速、方便、计算简单、易于实现,并且测量精度高。
1 系统设计超声波测距的最远距离和分辨能力,不仅需要良好的换能器,也需要合理的驱动电路及回波探测电路。
对发射而言,为了使电能到机械能的转换效益最大,换能器必须工作在它的共振频率处。
对接收电路而言,为了使机械能到电能的转换效率最大,最佳工作点必须取在反共振频率处,在传感器系统中,发射部分的共振频率要与接收部分的反共振频率相匹配。
同时,温度对声速有着较大的影响,温度补偿无疑是减少误差的很好方法。
本设计选用T40-16T/R超声波传感器,设计了一种以AT89C2051单片机为核心的低成本、高精度、微型化数字显示超声波测距仪。
为了进一步提高系统测量精度和系统稳定性,在硬件上增加了温度传感器测温电路,采取声速预置和媒质温度测量相结合的办法对声速进行修正,降低了温度变化对测距精度的影响。
有力提高了超声波测距系统的测量精度。
设计系统由单片机主控模块、显示模块、超声波发射模块、接收模块、温度测量补偿模块等五个模块组成,组成框图。
超声波发射电路由单片机输出端直接驱动超声波发送,超声波接收电路输出端与单片机相连接,单片机的输出端与显示电路输入端相连接。
单片机在TO时刻发射方波,同时启动定时器开始计时,当收到回波后,产生一负跳变到单片机中断口,单片机响应中断程序,定时器停止计数。
计算时间差即可得到超声波在媒介中传播的时间t,由此便可计算出距离。
2.1 超声波测距单片机控制系统单片机AT89C2051采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。
基于温度补偿的超声波测距
unsigned int timer=0;sbit RS = P2^3; //数据命令选择端定义sbit RW = P2^4; //读写选择端定义sbit EN = P2^5; //使能端定义sbit Tr = P3^2; //触发信号输入定义sbit Ec = P3^3; //回响信号输出定义sbit Tr1 = P3^4;sbit Ec1 = P3^5;sbit DQ = P3^7;//定义ds18B20总线IOuint distance = 0;uchar count;void delayms(uint x) //毫秒延时函数{uint i,j;for(i=x;i>0;i--)for(j=110;j>0;j--);}void write_com(uchar com) //写命令{RS = 0; //写命令时RS=0,RW=0 RW = 0;EN = 0;//把使能端设置为0P0 = com;//把要写的命令字送到数据总线上delayms(2);//延时2ms以待数据稳定EN = 1;//使能端给高脉冲delayms(5);//延时EN = 0;//把使能端置0以完成高脉冲delayms(2);}void write_dat(uchar dat) //写数据{RS = 1;//写数据时RS=1,RW=0RW = 0;EN = 0;//把使能端设置为0P0 = dat;//把要写的数据字送到数据总线上delayms(2);//延时2ms以待数据稳定EN = 1;//使能端给高脉冲delayms(5);//延时EN = 0;//把使能端置0以完成高脉冲delayms(2);void Init_1602() //初始化液晶{write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口delayms(5);write_com(0x0c);//设置开显示,不显示光标delayms(5);write_com(0x06);//写一个字符后地址指针自动加1delayms(5);write_com(0x01);//显示清屏,数据指针清0delayms(5);}void Init_TIMER0() //初始化定时器{TMOD = 0x01; //设置定时器0为工作方式1 ,16位定时器TL0 = 0x00;//装初值0TH0 = 0x00;}void Init_TIMER1() //初始化定时器{TMOD = 0x10; //设置定时器0为工作方式1 ,16位定时器TL1 = 0x00;//装初值0TH1 = 0x00;}void Init_mk() //初始化超声波传感器{Tr =0;//初值设为0Ec = 0;distance = 0;}void Init_mk1() //初始化超声波传感器1{Tr =0;//初值设为0Ec = 0;distance = 0;}void init_fs()//信号触发函数{Tr= 1;Tr1=1; //把触发信号Tr设为高电平_nop_();//使高电平信号保持15uS等待模块内部发出8个40KH周期电平并检测回波信_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();Tr = 0;Tri=0//等待15uS后,Tr=0}void D_Distance()//测距函数{uint y;TR0 = 1;//启动定时器0while(Ec);//当检测到回响信号EcTR0 = 0;//关闭定时器0y = TH0*256+TL0;//取出定时器0高八位TH0中的数乘以256再加上第八位TL0,并将这个数赋给yTL0 = 0x00;//重装初值TH0 = 0x00;distance = y;//将定时器的时间计算出来在这里为了方便期间用距离变量表示}void D_Distance1()//测距函数{uint x;TR1 = 1;//启动定时器0while(Ec);//当检测到回响信号EcTR1= 0;//关闭定时器0x = TH1*256+TL1;//取出定时器0高八位TH0中的数乘以256再加上第八位TL0,并将这个数赋给yTL0 = 0x00;//重装初值TH0 = 0x00;juli = x;//将定时器的时间计算出来在这里为了方便期间用距离变量表示}void tmpDelay(int num)//延时函数{while(num--) ;}void Init_DS18B20()//初始化ds1820{unsigned char x=0;DQ = 1; //DQ复位tmpDelay(8); //稍做延时DQ = 0; //单片机将DQ拉低tmpDelay(80); //精确延时大于480usDQ = 1; //拉高总线tmpDelay(14);x=DQ; //稍做延时后如果x=0则初始化成功x=1则初始化失败tmpDelay(20);}unsigned char ReadOneChar()//温度传感器读一个字节{unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i--){DQ = 0; // 给脉冲信号dat>>=1;DQ = 1; // 给脉冲信号if(DQ)dat|=0x80;tmpDelay(4);}return(dat);}void WriteOneChar(unsigned char dat)//温度传感器写一个字节{unsigned char i=0;for (i=8; i>0; i--){DQ = 0;DQ = dat&0x01;tmpDelay(5);DQ = 1;dat>>=1;}}unsigned int Readtemp()//读取温度{unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); // 跳过读序号列号的操作WriteOneChar(0x44); // 启动温度转换Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器a=ReadOneChar(); //连续读两个字节数据//读低8位b=ReadOneChar(); //读高8位t=b;t<<=8;t=t|a; //两字节合成一个整型变量。
基于单片机的超声波测距及温度补偿设计与实现
期末课程设计学院:软件学院_ __ 专业:软件工程_ __ 年级:2009级__ _ 课程:_单片机应用技术_ _姓名:_郭汉杰_ _ ___ 学号:_123012009138 __ ___二〇一二年六月基于单片机的超声波测距及温度补偿设计与实现摘要本文介绍了基于单片机STC90C516RD+的超声波测距系统的设计方案与软硬件实现。
采用温度传感器DS18B20 采集温度数据,液晶显示屏LCD1602C 显示温度数据及来回波的时间,当环境温度变化较大时,提取测得的温度,根据不同的温度对超声波测距系统的声速进行修正。
测距时接收到回波,点亮绿色发光二极管;当没有回波时,定时器溢出,点亮红色发光二极管。
本文给出了系统总体框架、硬件电路、软件设计和程序流程图,并在硬件平台上实现了所设计的功能。
关键词STC90C516RD+;超声波测距;温度补偿;温度传感器;液晶显示器一、引言1.1超声波测距系统概述随着社会的发展,超声波测量及控制变得越来越重要。
本文采用单片机STC90C516RD+设计了超声波测距及温度补偿系统。
单片机STC90C516RD+能够根据温度传感器DS18B20所采集的温度数据来修正测距系统中的声速,从而使超声波测得的距离更准确。
同时,当温度高于设定的温度时,单片机启动蜂鸣器发出报警,并点亮绿色发光二极管;当温度低于设定的温度时,蜂鸣器停止报警。
所有测距和温度数据均通过液晶显示器LCD1602 显示出来。
当收到回波时,测距成功,并在屏幕上现实来回波的时间及距离,并可看到动态变化的当前温度和来回波时间;当未收到回波时,定时器溢出,测距失败,在屏幕上显示出错。
1.2本设计任务和主要内容制作超声波测距系统,并外加温度补偿使测距更精确。
前期制作超声波发送与接收电路,经过调试正常可用后,编写相应的超声波程序,完成对于整个测距系统的控制。
设计的最终结果是使超声波测距仪能够产生超声波,实现超声波的发送与接收,从而实现利用超声波方法测量物体间的距离。
带温度补偿的360_超声波测距测速系统设计
收稿日期: 2010-04-15基金项目: 梅州市科学技术局、嘉应学院联合自然科学研究重点基金资助项目( 2009KJZ04 ) ; 梅州市科技计划重点基金资助项目( 2009A21)作者简介: 朱向庆( 1979- ) , 男, 广东梅州人, 讲师, 硕士, 主要研究方向为短距离无线通信、检测技术与自动化装置。
陈志雄( 1980-) , 男, 广东梅州人, 实验师, 硕士, 主要研究方向为嵌入式系统、数据挖掘。
文章编号: 1004- 2474( 2011) 02-0315- 05带温度补偿的360b超声波测距测速系统设计朱向庆, 陈志雄( 嘉应学院电子信息工程学院, 广东梅州514015)摘要: 采用ST C12C5A60S2 单片机控制超声波测距模块和减速步进电机, 利用超声波的反射特性进行360b范围的距离测量, 结合温度补偿算法计算系统到被测物体的距离和相对速度。
系统使用nRF24L01 无线通信芯片将测得的数据传输给计算机, 在计算机中用Visual Basic 编写的终端监控程序进行数据处理和图像显示, 并控制系统的旋转角度、测量频率和测量范围。
关键词: 超声波测距; 超声波测速; STC12C5A60S2; nRF24L01中图分类号: T N914; T P274 文献标识码: ADesign of 360b Ultrasonic Ranging and VelocityDetecting System with Temperature CompensationZHU Xiangqing, CHEN Zhixiong( S chool of Elect ronic and Inf ormat ion E ngineering, Jiaying U niver sit y, Meizhou 514015, China)Abstract: Single chip micr ocomput er ST C12C5A60S2 was used to contro l ultr aso nic distance measurementmodule and gear stepping mo tor in this paper. The reflection char act er istics of ultrasonic w ave w as used to measur edistance in the range of 360b; the distance and relative velo city between the system and measur ed object was calculatedwith tem per at ur e compensatio n method. At the same time, w ireless communication chip nRF24L01 w as used totransfer measur ed data to com puter. Visual Basic w as used to process data and display image in term ina l monito ringpr og ram, so as t o contro l the r otatio n ang le, measuring frequency and measuring range o f sy stem.Key words: ultrasonic r ang ing; ultr aso nic velo city detecting; STC12C5A60S2; nRF24L010 引言超声波是频率高于20 kHz 的声波, 其波长短,方向性好, 穿透能力强, 易于获得较集中的声能, 在水中传播距离远。
基于超声波测距系统的温度补偿电路设计
基于超声波测距系统的温度补偿电路设计田胜军1 秦宣云2 何永强3 (1吉首大学物理科学与信息工程学院 湖南吉首 416000.2中南大学数学科学与计算技术学院 湖南长沙 4100833中南大学机电工程学院 湖南长沙 410083)摘要:针对单片机 AT89C52 的超声波微地形测距系统的精度及系统的稳定性,本文着重对该系统的校正电路进行了系统研究,设计了该系统的温度补偿电路。
一方面该电路中的基于集成温度传感器DS18B20的温度检测及补偿电路,提高了数据采集的精度及灵敏度;另一方面该电路中的基于MAX813L 芯片的硬件看门狗电路。
提高了系统的稳定性。
该校正电路的设计使测距系统具有抗干扰能力强、信噪比和测距精度高等优点。
关键词:超声波;测距;单片机;温度补偿[中图分类号] TP274+.2 [文献标识码] A0 引言在超声波测距系统中,影 响 测 量 精度 的 因 素 很 多 , 包 括 现 场 环 境 干扰 、时 基 脉 冲 频率 等;但环境温度对声速的影响最大,从超声波声速经验公式331.450.607c T =+可以看出,在0-40℃时,声速变化范围为331.4m/s~354.85m/s 。
以超声波在20℃的室温条件下的声速343.32m/s 为基准,其变化率为6.83%。
所以温度的影响不能忽略不计。
而且在外界上作条件下,比如在夏天的室外,温度往往不止40℃,所以在基于单片机 AT89C52 的超声波测距系统中,如图0-1所示,必须要对温度进行测量和补偿,以避免温度对测量精度的影响。
1 系统校正电路设计系统校正电路包括温度检测电路和硬件看门狗电路。
温度检测电路用来实时测量周围环境的温度,补偿传播速度的变化对传播距离的影响;硬件看门狗电路用来提高单片机系统的稳定性和抗干扰能力,防止程序“跑飞”或者进入死循环。
在本系统中,需要DS18B20初始化程序及温度检测程序,单片机主程序流程图如图1-1所示。
基于单片机带温度补偿的超声波测距设计报告
基于单片机的超声波测距设计报告摘要: 超声波具有指向性强,能量消耗缓慢,传播距离较远等优点,所以,在利用传感器技术和自动控制技术相结合的测距方案中,超声波测距是目前应用最普遍的一种,他广泛应用于防盗、倒车雷达、水位测量、建筑施工工地以及一些工业现场。
本课题详细介绍了超声波传感器的原理和特性,以及STC公司的STC89C52的单片机的性能和特点,并在分析了超声波测距的原理的基础上,指出了设计测距系统的不足并加以改进,将温度引起的误差考虑在内并且加以修正,给出了以STC89C52单片机为核心的低成本、高精度、液晶显示超声波测距系统的硬件电路和软件设计方法。
该系统电路设计合理、工作稳定、性能良好、检测速度快、计算简单并且做到了可设计报警范围的功能,在测量精度方面能达到工业使用的要求。
关键词:单片机;液晶显示;报警;测距Ultrasonic distance measurement based on single chipAbstract:Ultrasound has a strong point, the energy consumption of the slow spread of the advantages of distance, so the use of sensor technology and automatic control technology, the program combines distance, ultrasonic distance measurement is the most common one, and he widely used in security, parking sensor, water level measurement, construction sites and some industrial sites.This subject introduces the principles and characteristics of ultrasonic sensors, and microcontroller STC89C52 STC's performance and characteristics, and the analysis of the ultrasonic distance measurement based on the principle that the lack of design ranging system and make improvements, will into account the error due to temperature and should be amended to STC89C52 given low-cost microcontroller as the core, high-accuracy, liquid crystal display ultrasonic ranging system of hardware and software design methods. The system circuit design is reasonable, stable, good performance, fast detection of simple calculation and can be designed to achieve the alarm range of functions to achieve precision in the measurement requirements for industrial use. Keywords:microcontroller; LCD display; alarm; ranging目录1 绪论 (5)1.1 研究的背景 (5)1.2研究的主要内容 (5)1.3应解决的关键问题 (5)2 电路方案论证 (5)2.1方案比较 (5)2.1.1 激光测距 (5)2.1.2 超声波测距 (6)2.2电路总体方案 (6)3单片机概述 (7)3.1 STC89C52主要性能 (7)3.2 STC89C52外部结构及特性 (7)3.3 STC89C52内部组成 (8)4 超声波测距模块 (10)4.1 超声波传感器介绍 (10)4.2 HC-SR04超声波测距模块的性能特点 (11)4.3 HC-SR04的管脚排列和电气参数 (12)4.3.1 管脚简介 (12)4.3.2 HC-SR04的电气参数 (12)4.4超声波时序图 (12)5系统硬件电路设计 (14)5.1单片机最小系统 (14)5.1.1 STC89C52芯片 (14)5.1.2 复位电路 (14)5.1.3 晶振电路 (15)5.2 驱动显示电路及报警电路 (16)5.2.1 1602LCD液晶显示屏 (16)5.2.2 蜂鸣器报警 (17)5.3 HC-RS04超声波测距原理 (18)5.4 5V稳压电路 (19)5.5温度检测电路 (19)5.5.1 温度检测方案的分析 (19)5.5.2 数字温度传感器DS18B20简介 (20)5.5.3 DS18B20的结构及电路 (20)6系统程序的设计 (21)6.1主程序 (21)6.2显示数据子程序 (22)6.3报警子程序 (22)6.4按键子程序 (23)结论 (25)参考文献 (26)附录(A) (27)附录(B) (28)致谢 (46)1 绪论1.1 研究的背景单片机技术的迅速兴起与蓬勃发展,其稳定、安全、高效、经济等优点十分突出,所以其应用也十分广泛。
超声波测距系统毕业设计
超声波测距系统毕业设计超声波测距系统毕业设计随着科技的不断发展,超声波测距系统在工业控制、安防监控、智能交通等领域得到了广泛应用。
本文将介绍一个基于超声波原理的测距系统的毕业设计。
一、引言超声波测距系统是一种利用超声波传感器测量距离的技术。
它通过发射超声波信号并接收回波,根据声波的传播时间来计算出目标物体与传感器的距离。
超声波测距系统具有测量精度高、反应速度快、适用范围广等优点,因此在许多领域得到了广泛应用。
二、设计目标本毕业设计的目标是设计一个超声波测距系统,能够准确测量目标物体与传感器之间的距离,并能够实时显示测量结果。
三、系统硬件设计1. 超声波传感器选择在设计中,我们选择了一款性能稳定、测量范围广的超声波传感器。
该传感器具有高频率、高精度的特点,能够满足我们的测量需求。
2. 控制电路设计为了实现测距系统的功能,我们设计了一个控制电路。
该电路能够控制超声波传感器的发射和接收,并将接收到的信号进行处理。
通过微控制器的控制,我们能够实现对测距系统的操作和参数调节。
四、系统软件设计1. 数据处理算法在接收到超声波传感器的回波信号后,我们需要对信号进行处理,以得到准确的距离测量结果。
我们采用了一种基于时间差的测量方法,通过计算声波传播时间和声速,可以得到目标物体与传感器之间的距离。
2. 显示界面设计为了方便用户使用和观察测量结果,我们设计了一个显示界面。
该界面能够实时显示测量结果,并提供一些操作选项,如单位切换、历史数据查看等功能。
五、系统测试与优化在完成硬件和软件设计后,我们对系统进行了测试。
通过与实际测量结果进行对比,我们发现系统的测量精度较高,能够满足设计要求。
然而,在实际使用中,我们还发现了一些问题,如测量范围受限、环境干扰等。
为了解决这些问题,我们对系统进行了优化,如增加滤波器、改进算法等。
六、总结与展望通过本次毕业设计,我们成功设计并实现了一个基于超声波原理的测距系统。
该系统具有测量精度高、反应速度快等优点,能够满足实际应用需求。
基于温度补偿的超声波测距设计
·1 4 ·
计量技术 20071No 7
由于芯片采用 1 - wire 总线方式 ,不需要外围 调理电路 ,可以和单片机直接相连 ,控制简单易行 。 单片机可以实时读取温度的数值 ,从而计算出该温 度下的超声波速度 ,完成对超声波速度温度的补偿 。
4 控制部分
该部分以 A T 89C51 单片机为核心 ,是本系统 的重点 ,要实现各部分电路的控制和响应 。实现环 境温度的采集 ,控制超声波的发射 ,液晶屏的显示 。 A T 89C51 的 P1 口与液晶显示屏连接 ,电压比较器 的输出端和外部中断 IN T0 相连 ,P010 与 CMOS 多 谐振荡器的控制端相连 。A T89C51 首先通过数字 温度传感器 DS1820 读取环境温度的值 ,通过软件 使 P010 口输出高或低电平 ,从而控制超声波的发 射 。P011 通过一个开关二极管 IN4148 与比较器的 基准电压产生电路连接 ,发射超声波时置 P011 为 “1”,输出的电平可以抑制比较器的翻转 ,从而能有 效地抑制发射器发射的超声波直接辐射到接收器而 导致错误的检测 。同时 ,它使系统在发出超声波时 T0 开始计数 ,在收到反射波时停止计数 ,得到回波 时间 ,并结合环境温度值计算测得的距离 ,控制液晶 屏显示当前结果 ;另外 ,还可设置报警临界值 ,当实 测距离小于临界值时就发出报警信号 。
5 结束语
本系统利用超声波传感器实现无接触式空气 测距 ,并充分考虑到测量环境温度对超声波传递 速度的影响 ,通过温度补偿的方法对传递速度予 以校正 ,因此具有测量准确度高 、抗干扰能力强 、 反应速度快等特点 。通过与不同的标准距离进行 反复的对照测试 ,其误差约为 2~3mm ,最大测距 可达 10m ,适用于各种水文液位测量 、障碍物的识 别以及车辆自动导航等领域 ,因此具有广阔的应 用前景 。
基于温度补偿的超声波测距设计.
目录1绪论 (2)1.1设计目的 (2)1.2设计意义 (2)1.3系统功能 (3)2设计方案 (4)2.1方案设计 (4)2.2方案论证 (4)3硬件设计 (5)3.1设计方案 (5)3.2 STC89C52外围电路设计 (6)3.2.1单片机 (6)3.2.2复位电路与震荡电路 (7)3.3 LCD显示模块的设计 (8)3.3.1字符型液晶显示模块 (8)3.3.2 字符型液晶显示模块引脚 (9)3.3.3 字符型液晶显示模块内部结构 (9)3.4温度传感器DS18B20电路设计 (10)3.4.1 温度传感器DS18B20简介 (10)3.4.2 DS18B20的主要特性 (11)3.5数据采集模块 (12)3.6 HC-SR04超声波测距模块 (13)3.7报警电路设计 (16)4 软件设计 (17)4.1系统软件设计说明 (17)4.2主程序的设计 (17)4.3超声波发射子程序和超声波接收中断子程序设计 (18)4.4温度测量子程序设计 (19)5 结果与结论 (21)5.1结果 (21)5.2结论 (22)致谢 (22)参考文献 (23)附录 (24)1绪论1.1设计目的随着国民经济的迅速发展,超声波在机械制造、石油化工、航空航天等领域发挥着越来越重要的作用。
超声波测距作为一种非接触式距离测量方法,具有不受外界光及电磁场等因素影响的优点,实现电路简单、成本低;同时,还具有易于定向发射、方向性好、对人体伤害小等特点。
上述优势使得与超声波测距领域相关的仪器设备在数据处理、检测性能和工程设计系统化等方面有了更大的发展空间。
利用超声波定位技术是蝙蝠等一些无目视能力的生物作为防御天敌及捕获猎物的生存手段, 这些生物体可发射人们听不到的超声波 ( 20KH 以上的机械波) ,借助空气介质传播, 根据猎物或障碍物反射回来的回波的时间间隔及强弱,判断猎物的性质或障碍物的位置。
在影响超声波测距误差的因素中,温度的影响是比较大的,超声波的传播速度在不同的温度下是不同的,那就要得出其传播速度与环境温度t的关系式。
具有温度补偿功能的超声波测距系统设计
D y n a mi c Me a s u r e m e n t M i n i s t r y o f E d u c a t i o n ,N o r t h U n i v e r s i t y o f C h i n a , T a i y u a n 0 3 0 0 5 1 , C h i n a )
De s i g n o f Ul t r a s o n i c Di s t a n c e Me a s u r e me n t S y s t e m wi t h Te mp e r a t u r e Co mp e n s a t i o n W ANG Z h a n x u a n ,Z HAO Do n g ’ e,DAN G Ha o h u a i ,Z HAN G X i a o me i ,L I Y i n g
【 K e y w o r d s 】 u l t r a s o n i c d i s t a n c e m e a s u r e m e n t ; t e m p e r a t u r e c o m p e n s a t i o n ; S T C 8 9 C 5 2 ; t e m p e r a t u r e s e n s o r ; u l t r a s o n i c s e n s o r
me t h o d o f t e mp e r a t u r e c o mp e n s a t i o n i s i n t r o d u c e d t o r e a l i z e t h e a c c u r a t e me a s u r e me n t o f d i s t a n c e f r o m 5 c e n t i me t e r s t o 4 me t e r s . T h e s y s t e m c o n s i s t s o f S T C8 9 C 5 2 s i n g l e c h i p ,DS 1 8 B2 0 t e mp e r a t u r e s e n s o r ,HC —S R0 4 u l t r a s o n i c s e n s o r a n d d i g i t — l a d i s p l a y c i r c u i t . T e s t r e s u l t s s h o w t h a t t h e me a s u r e me n t e r r o r o f t h e s y s t e m i s l e s s t h a n 3 c e n t i me t e r s . B e c a u s e o f i t s s i mp l e s t r u c t u r e o f h a r d wa r e, l o w c o s t a n d r e l i a b l e p e r f o r ma n c e,t h e s y s t e m h a s c e r t a i n p r a c t i c a l v lu a e.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
带温度补偿的超声波测距系统设计
南通大学
传感器与检测课程设计(预习)报告
项目:带温度补偿的超声波测距系统设计
班级:
姓名:
学号:
联系方式:
学期: - -2
前言 .................................................................... 错误!未定义书签。
一.课题调研 ..................................................... 错误!未定义书签。
1.1传感器选型 ................................................ 错误!未定义书签。
1.1.1可选温度传感器 DS18B20 .................... 错误!未定义书签。
1.1.2可选用AD590温度传感器................... 错误!未定义书签。
1.2超声波传感器............................................. 错误!未定义书签。
1.2.2选用MAX232芯片做发射电路 ........... 错误!未定义书签。
1.2.3超声波发射电路 ................................... 错误!未定义书签。
1.2.4超声波接收电路 ................................... 错误!未定义书签。
1.2.5选用TL074芯片作为接受电路............. 错误!未定义书签。
1.3多种实现方法。
......................................... 错误!未定义书签。
1.3.1方法一:系统结构框图........................ 错误!未定义书签。
1.3.2工作原理 .............................................. 错误!未定义书签。
1.3.3方案二:系统结构图如下。
................ 错误!未定义书签。
二.总体设计 ..................................................... 错误!未定义书签。
2.1电路图 ........................................................ 错误!未定义书签。
2.1.1超声波模块电路 ................................... 错误!未定义书签。
2.2.1主程序设计。
....................................... 错误!未定义书签。
前言
以AT89S51单片机为核心,设计了一种带温度补偿的超声波测距系统。
系统包括单片机、超声波发射及接收模块、温度补偿模块、信息显示模块。
温度补偿模块采用温度传感器DS18B20 采集环境温度,根据超声波速度与温度值的对应关系及时修正波速,以纠正温度的变化引起超声波测距系统产生的误差。
一.课题调研
1.1传感器选型
集成传感器是采用硅半导体集成工艺而制成的,因此亦称硅传感器或单片集成温度传感器,它是将温度传感器集成在一个芯片上、可完成温度测量及模拟信号输出功能的专用IC。
模拟集成温度传感器的主要特点是功能单一(仅测量温度)、测温误差小、价格低、响应速度快、传输距离远、体积小、微功耗等,适合远距离测温、控温,不需要进行非线性校准,外围电路简单。
1.1.1可选温度传感器 DS18B20
由于声音的速度在不同的温度下有所不同,因此为提高精度,应经过温度补偿对超声波的传播速度进行校正。
系统采用DS18B20传感器测量温度,DS18B20 温度传感器具有不受外界干扰、精度高、测温范围宽等优点。
单片机口接DS18B20 数据总线,控制DS18B20 进行温度转换和传输数据,数据总线接10 kΩ的上拉电阻,作用是使总线控制器在温度转换期间无需一直保持高电平。
1.1.2可选用AD590温度传感器
AD590测量热力学温度、摄氏温度、两点温度差、多点最低温度、多点平均温度的具体电路,广泛应用于不同的温度控制场合。
由于AD590精度高、价格低、不需辅助电源、线性好,常见于测温和热电偶的冷端补偿。
AD590用于测量热力学温度的基本应用电路。
因为流过AD590的电流与热力学温度成正比,当电阻R1和电位器R2的电阻之和为1kΩ时,输出电压O V随温度的变化为1mV/K。
但由于AD590的增益有偏差,电阻也有误差,因此应对电路进行调整。
调整的方法为:把AD590放于冰水混合物中,调整电位器R2,使0V=273.2mV。
或在室温下(25℃)条件下调整电位器,使0V=273.2+25=298.2(mV)。
但这样调整只可保证在0℃或25℃附近有较高精度。
AD590把被测温度转换为电流再经过放大器和A/D转换器,输出数字量送给单片机进行温度控制。