超声波测距系统中的温度补偿

合集下载

温度补偿超声波测距仪

温度补偿超声波测距仪

摘要本文给出了系统总体框架、硬件电路、软件设计和程序流程图,并在硬件平台上实现了所设计的功能。

超声测距是一种非接触式的检测方式。

与其它方法相比,如电磁的或光学的方法,它不受光线、被测对象颜色等影响。

对于被测物处于黑暗、有灰尘烟雾、电磁干扰、有毒等恶劣的环境下有一定的适应能力。

而本文介绍的基于单片机STC90C516RD+的超声波测距系统的设计方案与软硬件实现。

采用温度传感器DS18B20 采集温度数据,液晶显示屏LCD1602C 显示温度数据及来回波的时间,当环境温度变化较大时,提取测得的温度,根据不同的温度对超声波测距系统的声速进行修正。

测距时接收到回波,点亮绿色发光二极管;当没有回波时,定时器溢出,点亮红色发光二极管。

关键词:红色发光二极管;超声波测距;温度补偿;温度传感器;电磁干扰目录摘要 (Ⅰ)第1章绪论 (1)1.1 概述 (1)1.2 系统软硬件的调试 (1)第2章系统设计原理 (2)2.1 系统主要硬件结构 (2)2.2 单片机主机系统介绍 (2)2.2.1 单片机控制模块 (2)2.2.2 温度数据采集模块 (2)2.2.3 主件LCD1602C的结构 (3)2.3 超声波测距的设备 (4)2.3.1 超声波测距系统的硬件电路设计 (4)2.3.2 超声波发射电路 (4)2.3.3 超声波检测接收电路 (5)第3章系统的软件设计 (6)3.1 语言的选用 (6)3.2 系统控制流程 (7)3.3 程序设计流程图 (10)3.4 超声波测距仪的算法设计 (12)3.5 超声波发生子程序和接收中断程序 (12)3.6 电路仿真 (12)第4章安装调试 (13)第5章电路特点和误差分析 (14)结论 (15)参考文献 (16)附录 (17)致谢 (24)第1章绪论1.1 概述制作超声波测距系统,并外加温度补偿使测距更精确。

前期制作超声波发送与接收电路,经过调试正常可用后,编写相应的超声波程序,完成对于整个测距系统的控制。

51单片机超声波测距离(带温度补偿)

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控制器忙。

带温度补偿超声波测距系统设计

带温度补偿超声波测距系统设计

南通大学传感器与检测课程设计(预习)报告项目:带温度补偿的超声波测距系统设计班级:姓名:学号:联系方式:学期: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Ω的上拉电阻,作用是使总线控制器在温度转换期间无需一直保持高电平。

超声波测距系统中的温度补偿

超声波测距系统中的温度补偿
21ds18b20的测温原理ds18b20的测温原理如图2所示图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给计数器1高温度系数晶振随温度变化其振荡频率明显改变所产生的信号作为计数器2的脉冲输入图中还隐含着计数门当计数门打开时ds18b20就对低温度系数振荡器产生的时钟脉冲后进行计数进而完成温度测量
机在通过单总线接口访问 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) ;

温度对超声测距的影响及补偿方法

温度对超声测距的影响及补偿方法

温度对超声测距的影响及补偿方法超声波指向性强,在介质中传播的距离较远,因而超声波经常用于距离的测量,被广泛应用于建筑施工、车距测量、管道测量等场合。

根据超声测距的原理,探讨温度对测量精度的影响。

说明了温度补偿的必要性,并给出采用热敏电阻与DS18B20的补偿方法。

标签:热敏电阻DS18B20 温度补偿超声测距引言超声波是一种频率超过20kHz的机械波。

它沿直线传播,方向性好,传播距离较远。

由于超声波具有以上特点,可被应用于测量物体的距离,被广泛应用于建筑施工、车距测量、管道测量等场合。

利用超声波进行距离的测量是一种有效的非接触式测距方法。

超声测距的基本原理是,超声传感器发射超声波,在空气中传播至被测物,经反射后由超声传感器接收反射回来的超声波,测量出发射波与回波之间的时间间隔ΔT,并根据公式,(V为超声波传播速度),计算得出距离S。

在空气中,常温下超声波的传播速度是334m/s,但其传播速度受空气中温度、湿度等因素的影响,其中受温度影响较大,必须要对温度进行测量和补偿,以避免温度对测量精度的影响。

在对测量结果要求不高,或温度变化不大的一般场合,可以认为超声波在空气中的速度近似不变。

但超声波在空气中的传播速度与温度、压力等因数有关,其中温度的影响最大。

超声波在空气中的传播速度V,随温度变化的关系式如下,(T为摄氏温度);当温度为20℃时,V约为334m/s,当温度为30℃时,V约为349m/s,在温度相差10℃时声速变化了6m。

假设测量0.5m外的物体,此时超声波将传播1m。

如不考虑温度对传播速度的影响,两次测量结果相差3cm。

可见,温度对波速的影响在精确度要求比较高的测量场合是必须被考虑的。

这时就要对温度进行补偿,一般可通过测温元件或一线式数字温度传感器来进行补偿,以提高测量精度。

一、采用热敏电阻补偿1.热敏电阻测温原理热敏电阻是一种半导体测温元件,具有灵敏度高、体积小、寿命长的优点。

热敏电阻可分为正温度系数和负温度系数两种类型。

具有温度补偿功能的超声波测距系统设计

具有温度补偿功能的超声波测距系统设计

具有温度补偿功能的超声波测距系统设计超声波测距系统运行过程中,环境温度会对测距系统的测量精度造成较大影响,为了降低环境温度波动对超声波测距系统精确度的影响,需要在测距系统中增加温度补偿系统。

在具有温度补偿功能的超声波测距系统设计中,本文以单片机为控制核心,并使用温度传感器进行环境温度测量,从而实现在不同环境温度下的超声波波速确定,提高测量精度。

标签:温度补偿;超声波测距系统;单片机0 引言相较于其他测距方式,超声波测距具有更高的电磁抗干扰能力,并且对空气质量和环境光照强度要求更低,另外由于超声波测距属于非接触测距技术,用途更加广泛,同时超声波测距系统可靠性更高,制造运行所需的成本更低,当前已经取得广泛使用。

但是超声波对温度较为敏感,通过研究发现,当环境温度升高1℃时,声速下降0.607m/s。

1 超声波测距系统工作原理超声波测距系统工作过程中,由超声波发射系统发出超声波,由接收系统接收反射回的超声波,当超声波发出后,测距系统中的计数器开始同步工作,当接收器接收到第一个反射信号后,计时停止,通过当前环境温度下的声速与计时时间的相乘计算即可实现距离测量。

而要确定不同环境温度下的声速,可以通过以下公式确定声速:在超声波测距系统设计中,可以将声速公式代入到距离计算公式中,则可通过环境温度和计时时间确定距离。

在具有温度补偿功能的超声波测距系统设计中,在超声波测距系统中加入温度传感器,并将测得的环境温度传入单片机,由单片机中的程序进行距离计算,通过显示屏进行距离显示,在系统运行中,由于充分考虑了环境温度因素,所以可以极大提升超声波测距系统的精确度[1]。

2 具有温度补偿功能的超声波测距系统设计2.1 温度补偿系统设计温度补偿系统中最重要的就是温度传感器选取和与系统的连接,需要保证温度传感器有较高的灵敏度和较强的抗干扰能力,在完成温度测量后,将测量值输入单片机中,由相关程序进行距离计算。

本文选取了DS18B20温度传感器,传感器结构为两条数据总线,这两条总线能够实现温度转换和数据传输功能,在温度传感器运行过程中,可以将数据总线直接与单片机进行连接,将测量到的数据输入单片机中,在该过程中不需进行A/D转换,并且另一条数据线用于传输温度转换指令和读写指令。

基于温湿度补偿的超声波测距系统的研究

基于温湿度补偿的超声波测距系统的研究

在进行基于温湿度补偿的超声波测距系统研究时,需要全面评估温湿度对超声波传播的影响。

我们来探讨温湿度对超声波传播的影响。

温度和湿度会改变空气中声速的大小,进而影响超声波在空气中的传播速度和路径。

研究中需考虑温湿度变化对超声波测距系统的测量精度和稳定性的影响。

在撰写研究的文章时,我们将采用从简到繁、由浅入深的方式来探讨主题。

简要介绍超声波测距系统的基本原理和应用领域,然后深入探讨温湿度对超声波传播的影响,以及温湿度补偿的原理和方法。

我们将详细分析基于温湿度补偿的超声波测距系统的研究现状和发展趋势,最后总结回顾相关内容,共享个人观点和理解。

超声波测距系统是一种利用超声波在空气中传播的时间来实现距离测量的技术。

温湿度对超声波传播的影响主要体现在两个方面:一是温湿度会改变空气中声速的大小,影响超声波传播的速度;二是温湿度变化会引起超声波在空气中的散射和衰减,影响超声波传播的路径和稳定性。

针对温湿度对超声波传播的影响,研究人员提出了基于温湿度补偿的超声波测距系统。

这种系统可以通过对温湿度进行实时监测和测量,利用补偿算法来实现对超声波测距误差的校正,从而提高测量精度和稳定性。

常用的温湿度补偿方法包括基于实时监测数据的修正算法和基于模型预测的补偿算法。

当前,基于温湿度补偿的超声波测距系统的研究主要集中在以下方面:一是温湿度对超声波传播影响机理的深入研究;二是温湿度补偿算法的改进和优化;三是基于温湿度补偿的超声波测距系统在工业、军事和民用领域的应用探索。

基于温湿度补偿的超声波测距系统的研究具有重要的理论意义和实际应用价值。

但目前仍存在一些挑战和难点,如温湿度变化导致的超声波传播不确定性问题、温湿度补偿算法的精度和实时性等方面需要进一步研究和解决。

个人观点上,我认为基于温湿度补偿的超声波测距系统是一个具有潜力和前景的研究领域。

随着传感器技术和智能算法的不断发展,相信这一领域将迎来更多的创新和突破,为超声波测距技术的应用提供更多可能性。

超声波测距系统中的温度补偿

超声波测距系统中的温度补偿

摘要 : 声波 测距 系统 具有使 用方便 , 靠性强 等特 点 , 广泛 用 于建 筑施 工、 车 雷达 、 距 测量 、 超 可 被 倒 车 管道
测量 等场 合 。文章 首先 介绍 了采 用 A 8 s 2控 制 的超 声 波 测距 系统 原理 , 虑 到 温度 对 超 声 波测 量 的 T9 5 考 影响 , 重 阐述 了 D 1 B 0在 测距 时的 测温 原理及 温度 补偿 方 法 。实验表 明 , 用温度 补偿 后 的 超 声波 着 s8 2 采与自动化加工技术
文 章 编 号 :0 l 2 6 ( 0 8 l 0 6 O 1 0 一 2 5 2 0 ) 2— 0 2一 3
超声波测距 系统中的温 度补偿 木
赵 小 强 . 连 玉 赵
( 天津理 工 大学 机械 工 程学 院 , 津 天 308 ) 004
测距 系统 明 显提 高 了测 量精 度和稳 定性 。
关键 词 : 声波 ; 声 波测距 ; s 8 2 超 超 D 1 B0
中 图 分 类 号 :G 5 T 6 文 献标 识码 : A
Th m p ns to fTe p r t e i Ulr s ni ng ng S s e e Co e a i n O m e a ur n t a 0 c Ra i y t m ZHA0 a — i n Xio q a g,ZH AO Lin-u a y

生 物作 为 防御 天 敌及 捕 获 猎 物 的生 存 手 段 , 这些 生 物 体 可 发 射 人 们 听 不 到 的 超 声 波 ( 0 H 以 上 的 机 械 2K 波 ) 借 助空 气介 质 传 播 , 据 猎 物 或 障 碍 物反 射 回来 , 根 的 回波的 时间 间 隔及 强 弱 , 断猎 物 的性 质 或 障碍 物 判 的位置 。人 们根 据 仿 生 学 原 理 , 开发 了超 声 波 测 距 和

超声波温度补偿

超声波温度补偿

超声波温度补偿
超声波在空气中的传播速度与温度密切相关。

为了确保超声波测量的准确性,需要采取温度补偿措施。

以下是一些关于超声波温度补偿的详细信息:
温度对超声波传播速度的影响:
在空气中,超声波的传播速度随着温度的变化而变化。

这种变化对超声波测距和定位等应用的准确性产生直接影响。

因此,在进行超声波测量时,必须考虑温度因素。

温度补偿的原理:
温度补偿是通过实时测量环境温度,并根据温度与声速之间的关系计算出实际声速,从而对超声波测量结果进行校正。

这可以消除温度对超声波传播速度的影响,提高测量的准确性。

温度补偿的实现方式:
在超声波测距系统设计中,可以将声速公式代入到距离计算公式中,通过环境温度和计时时间确定距离。

具体实现时,可以在超声波测距系统中加入温度传感器,测量环境的温度变化,并将测得的环境温度传入单片机。

单片机中的程序可以根据温度和声速之间的关系计算出实际声速,进而根据距离公式计算出修正后的距离。

请注意,在进行超声波温度补偿时,需要选择合适的温度传感器,并确保其具有较高的灵敏度和抗干扰能力。

此外,还需要
对单片机进行编程,以实现温度测量、声速计算和距离修正等功能。

总之,超声波温度补偿是提高超声波测量准确性的重要手段。

通过实时测量环境温度并计算出实际声速,可以对超声波测量结果进行校正,从而消除温度对测量结果的影响。

超声波测距温度补偿计算公式

超声波测距温度补偿计算公式

超声波测距温度补偿计算公式一、超声波测距原理。

超声波测距是通过测量超声波从发射到接收所经历的时间来计算距离的。

其基本公式为:d = (v× t)/(2),其中d表示距离,v表示超声波在介质中的传播速度,t表示超声波从发射到接收的时间间隔。

二、温度对超声波传播速度的影响。

超声波在空气中的传播速度v与温度T(单位:^∘C)有关,近似的经验公式为:v = 331.4 + 0.6T。

三、温度补偿计算公式推导。

1. 在没有温度补偿时,根据d = (v× t)/(2),这里的v是在某一默认温度下的速度。

2. 当考虑温度影响时,我们先根据实际温度T计算出此时超声波的传播速度v = 331.4+ 0.6T。

3. 假设在没有温度补偿时计算出的距离为d_0(使用默认速度v_0),即d_0=frac{v_0× t}{2};在考虑温度补偿后的距离为d,d=((331.4 + 0.6T)× t)/(2)。

4. 我们可以从d_0推导出温度补偿后的距离d的表达式。

- 由d_0=frac{v_0× t}{2}可得t=frac{2d_0}{v_0}。

- 将t=frac{2d_0}{v_0}代入d=((331.4 + 0.6T)× t)/(2)中,得到d=frac{(331.4 + 0.6T)×frac{2d_0}{v_0}}{2},化简后d = d_0×(331.4 + 0.6T)/(v_0)。

所以,温度补偿计算公式为d = d_0×(331.4 + 0.6T)/(v_0),其中d_0是未进行温度补偿时计算出的距离,v_0是未考虑温度影响时默认的超声波传播速度,T是实际温度(^∘C)。

超声波测距温度补偿模块原理

超声波测距温度补偿模块原理

超声波测距温度补偿模块原理
嘿,朋友们!今天咱们要来聊聊超声波测距温度补偿模块原理,这可真是个超级有趣的东西啊!
你想想看,就好像你要去测量一个房间的大小,但是温度一会儿高一会儿低,那测量结果不就不准确了嘛!超声波测距也是一样的道理呀。

比如说你在大夏天测量一个物体的距离,和在大冬天测,能一样吗?当然不一样啦!
超声波测距温度补偿模块呢,就是专门来解决这个问题的!它就像是个聪明的小助手,会根据温度的变化来调整测量的结果,让结果更精准。

比如说在温度高的时候,它会自动调整一下算法,让测量值更靠谱;温度低的时候呢,也有相应的办法来保证准确性。

就好像你跑步的时候,不同的路况你得用不同的速度和姿势跑,不然就容易摔倒或者跑不快。

这个模块也是这样,根据不同的温度情况来调整自己的“工作方式”,是不是超级厉害?
你可能会问,这东西到底是怎么做到温度补偿的呢?嘿嘿,这可就涉及到一些复杂但又超酷的技术啦!它里面有各种传感器和算法,能精确地感知
温度的变化,然后快速地做出反应,调整测量的数据。

就好像你玩游戏的时候,根据不同的场景瞬间做出反应,打败敌人一样!
我觉得呀,这个超声波测距温度补偿模块原理真的太神奇了!它让我们的测量变得更加准确可靠,就像给我们的生活加了一道保险。

真希望以后能有更多这样厉害的技术出现,让我们的生活变得更加美好和便捷!这就是我的观点啦,朋友们,你们觉得呢?。

超声波测距温度补偿原理

超声波测距温度补偿原理

超声波测距温度补偿原理
嘿,朋友们!今天咱来聊聊超神奇的超声波测距温度补偿原理!这可真是个有意思的东西呢!
你想想看啊,就像咱走路的时候,如果地面一会儿高一会儿低,那咱走起来是不是就费劲啊?超声波测距也是一样的道理呀!温度的变化就会像那高低不平的地面一样影响它呢!比如说,大夏天的时候特别热,空气都热腾腾的,这时候超声波传播的速度是不是就不一样啦?就好比原本可以一路小跑的路,突然变得有点磕磕绊绊啦!
再打个比方,你要去测量一个距离,就像你要去抓一只调皮的小猫。

如果环境温度在捣乱,就好像小猫突然变得更加调皮了,让你抓起来更困难呢!这时候温度补偿就出马啦!它就像一双温柔的手,把那捣乱的小猫安抚好,让你能顺利抓住它,也就是准确测量出距离。

“哎呀,这温度补偿到底是怎么做到的呀?”你可能会这样问。

嘿嘿,其实它就是通过一些巧妙的方法来调整和修正超声波的传播特性,让它在不同温度下也能保持准确。

这就像是一个聪明的棋手,不管局面怎么变化,都能想出应对的妙招!
我曾经就遇到过一次,因为没考虑温度补偿,测量结果那叫一个离谱哟!还好后来我知道了这个神奇的原理,才避免了更多的错误呢!
总之啊,超声波测距温度补偿原理真的是超级重要!它让我们的测量更加准确可靠,就像给我们的测量之旅加上了一双稳稳的翅膀!让我们能在科技的天空中自由翱翔!所以呀,可千万别小看了它哟!。

超声流量计零点漂移的温度补偿方法与实践

超声流量计零点漂移的温度补偿方法与实践

超声流量计零点漂移的温度补偿方法与实践超声流量计是一种广泛应用于工业领域的流量测量装置,它通过测量超声波在流体中传播的时间来计算流体的流速。

然而,超声流量计在实际使用中常常会出现零点漂移的问题,即输出的零流量信号与实际零流量值存在偏差。

这种零点漂移问题一般是由于流量计传感器受到温度变化的影响造成的。

为了解决超声流量计零点漂移问题,人们提出了各种温度补偿方法,并进行了实践验证。

一、温度补偿方法1. 温度传感器校正法:这种方法是最常见的一种温度补偿方法,它通过在超声流量计中增加温度传感器,监测流量计传感器的温度变化,并根据已知的温度特性曲线进行修正,以消除温度变化对零点漂移的影响。

2. 软件算法校正法:利用计算机软件,对测量到的温度信号和流量信号进行处理,通过建立温度与零点漂移之间的数学模型,实现对零点漂移的在线校正,从而提高流量计的准确性和稳定性。

3. 外加绝缘层保温法:在流量计传感器的外部增加一层绝缘材料,减缓传感器与外界温度变化的变化速度,从而减小温度变化对零点漂移的影响。

二、实践验证为了验证不同的温度补偿方法的有效性,我们进行了一系列实验。

首先,我们利用了温度传感器校正法,即在超声流量计中增加了温度传感器,监测到传感器的温度变化并根据已知的温度特性曲线进行修正。

通过实验数据的对比分析,我们发现采用温度传感器校正法后,零点漂移明显减小,流量计的准确性得到了显著提高。

接着,我们尝试了软件算法校正法,建立了温度与零点漂移之间的数学模型,并实现了在线校正。

实验结果显示,软件算法校正法也能有效减小零点漂移,使流量计的测量误差降低。

最后,我们采用了外加绝缘层保温法,即在流量计传感器的外部增加一层绝缘材料。

经过实验验证,外加绝缘层保温法可以减缓传感器与外界温度变化速度,从而减小温度变化对零点漂移的影响,提高了流量计的稳定性。

综合上述实践结果可以看出,不同的温度补偿方法在解决超声流量计零点漂移问题方面各有优劣。

超声波流量计温压补偿依据

超声波流量计温压补偿依据

超声波流量计的温压补偿依据主要是为了确保在不同温度和压力条件下流量测量的准确性。

以下是几个关键点,解释了为什么以及如何进行温压补偿:1. 介质密度变化:气体的密度会随着温度和压力的变化而变化,这直接影响了通过管道的气体实际流量。

由于流量是体积流量与介质密度的函数,所以在不同温度压力下测得的体积流量需要根据介质的实际密度进行校正。

2. 声道长度变化:在时差法超声波流量计中,流体温度和压力的变化会导致管道发生应变,这不仅改变了管道截面积,还会影响超声波传播的声道长度,从而影响流量测量结果。

因此,必须对这些因素进行补偿以确保高精度测量。

3. 流量计算前提:只有当流量已经被计算出来后,温压补偿才有意义。

换句话说,温压补偿的前提是已经通过某种方式得到了流量值。

没有这个初始流量值,就无法进行有效的补偿。

4. 温度补偿方法:对于超声波水表,水温的变化会影响超声波在水中的传播速度,进而影响流量测量精度。

实验数据显示,如果在某个温度下校准后的水表在其他温度下使用而不进行补偿,每3度的温度变化可能导致1%的流量误差。

因此,利用高分辨率的温度传感器(如GP22)对流量测量进行温度补偿是提高精度的重要手段。

5. 实时补偿重要性:为了保证测量精度,在实际应用中应采用简化实用的实时补偿方法,以适应不断变化的工作条件。

6. 硬件和程序设计:为了实现温压补偿,流量计的设计包括了关键芯片元器件选型、硬件电路原理图以及相关功能程序的开发。

这些设计考虑了流场变化和温度变化对检测精度的影响,并提出了相应的补偿方案。

综上所述,超声波流量计的温压补偿是为了确保在各种工作环境下都能提供准确的流量读数。

补偿过程涉及对介质密度、声道长度等因素的调整,以及对温度和压力变化的实时监测和数据处理。

超声波测距温度补偿公式

超声波测距温度补偿公式

超声波测距温度补偿公式好嘞,以下是为您生成的关于“超声波测距温度补偿公式”的文章:咱们都知道,这世界上很多东西都会受到温度的影响,超声波测距也不例外。

今天就来好好聊聊这超声波测距温度补偿公式。

话说前几天,我带着孩子去公园玩儿。

孩子看到一个小池塘,好奇地问我:“爸爸,这池塘有多宽呀?” 我灵机一动,跟他说:“儿子,咱们可以用超声波来测测。

”回到家,我就开始研究起这个超声波测距的原理。

超声波在空气中传播的速度可不是固定不变的,它会随着温度的变化而改变。

这就好比跑步,天气热的时候,跑起来可能就轻松点,速度快些;天气冷的时候,就好像穿着厚棉袄跑,速度就慢了。

这温度补偿公式啊,其实就是为了让我们测量的距离更准确。

比如说,在很冷的冬天,温度很低,超声波传播得就慢了,如果不考虑温度进行计算,那测出来的距离可就偏差大了。

那这温度补偿公式到底是啥样呢?其实也不复杂,就是通过测量当时的环境温度,然后根据一定的数学关系来修正超声波的传播速度。

假设我们在常温 20 摄氏度的时候,超声波的传播速度是 340 米每秒。

但如果温度变成了 10 摄氏度,那传播速度就会降低一些。

这时候就需要用到温度补偿公式啦。

咱们就拿一个具体的例子来说。

假设我们测量到的超声波往返时间是 t 毫秒,当时的温度是 T 摄氏度。

首先,我们要根据温度计算出修正后的传播速度 v。

这计算传播速度 v 的公式大概是这样:v = 331.4 + 0.6×T 。

这里面331.4 是 0 摄氏度时的声速,0.6 是个系数。

然后,根据这个修正后的速度 v ,我们就能算出实际的距离 d 啦,公式就是 d = v×t/2 。

您看,通过这么一修正,测出来的距离就更靠谱了。

再回到那天在公园,虽然我当时没法马上给孩子一个准确的答案,但回来研究明白了这温度补偿公式后,我又带着孩子去了一次公园,给他好好演示了一番怎么用这个公式来测量距离。

孩子那好奇又兴奋的眼神,让我觉得这研究真是太值了!总之啊,这超声波测距温度补偿公式虽然看起来有点复杂,但只要咱弄明白了其中的道理,就能让超声波测距更准确,给我们的生活带来更多方便。

基于温度补偿的超声波测距设计讲解

基于温度补偿的超声波测距设计讲解

目录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的关系式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

由此可见温度对于超声波测距系统的影响是不可 忽略的 。为了得到较为精确的测量结果 , 必须对波速 进行温度补偿 。通过实验可获得波速与温度之间的经 验模型 : V = 33115 + 01607 T, T 为现场温度 , V 为实际波 速 。从式中可看出 , 要获得准确的波速值 , 必须首先获 取现场温度 T 的大小 。本文采用 DS18B20 检测现场 温度 ,用以实现实际波速的校准 。
[1]
1 超声波测距系统的构成及工作原理
超声波测距的方法有声波幅值检测法 、 相位检测 法和渡越时间法等 。相位检测法虽精度高 , 但检测范 围有限 ; 声波幅值检测法易受发射波影响 。本系统采 用超声波渡越时间检测法 : 检测从超声波发射器发射 的超声波 ,经过气体介质传播回接收器的时间 ,即渡越 时间 。渡越时间与波速相乘即为声波传输的距离 。 超声波测距系统可采用单片机作为控制器 ,如图 1
晶振的振荡频率受温度的影响很小 ,用于产生固定频率 的脉冲信号送给计数器 1,高温度系数晶振随温度变化 其振荡频率明显改变 ,所产生的信号作为计数器 2 的脉 冲输 入 , 图 中 还 隐 含 着 计 数 门 , 当 计 数 门 打 开 时 , DS18B20 就对低温度系数振荡器产生的时钟脉冲后进
图 1 系统组成
在常温下 ,超声波的传播速度为 340m / s,但其传播 速度 V 易受到空气中温度、 湿度、 压强等因素的影响 ,其 中温度的影响最大 。一般温度每升高 1 ℃,声速增加约 为 016m / s。表 1为超声波在不同温度下的波速值。
表 1 波速与温度关系表
温度 ( ℃) 波速 (米 /秒 )
图 3 硬件结构
・6 3 ・
・ 控制与检测 ・
312 软件设计 DS18B20 对时序和电性参数要求很高 , 所以单片
tmpw ritebyte ( 0xcc) ; tmpw ritebyte (0x44) ;
} uint gett mp ( ) {
组合机床与自动化加工技术
/ /跳过 ROM 命令 / /发送温度转换命令 / /获取温度
… dsreset( ) ; delay (1) ; tmpw ritebyte ( 0xcc) ; tmpw ritebyte ( 0xbe ) ; tem l = tmp read ( ) ; temh = tmp read ( ) ; …
} / /跳过 ROM 命令 / /发送读取命令 / /读出温度低八位 / /读出温度高八位
4 结束语
采用高精度的温度传感器 DS18B20 可实现对超声 波测距系统的温度测量和补偿 ,即根据经验公式 ,对波 速进行校正 。通过引入 DS18B20, 使超声波测距系统 的测量精度有了很大的提高 , 使得应用领域也有所扩 展 ,其不仅可用于倒车雷达 、 物位测量等一般场合 , 且 [ 8, 9 ] 在移动机器人 领域将会有广泛的应用前景 。
通过以上程序 , 超声波测距系统上电启动后即可 获得现场温度 ,在进行测距工作时单片机会把温度值 通过公式 V = 33115 + 01607 T 补偿到超声波的波速中 , 使得现场的实际波速得到校正 , 从而降低温度对测距 结果的影响 ,提高超声波测距系统的精度 。
图 4 D S18B20 总体操作流程
需要遵守严格的操作时序 , 如果顺序中任意一步缺少 [ 6, 7 ] 或顺序错乱 , DS18B20 将不会响应 。DS18B20 的操 作顺序是 : 第一步 : 对 DS18B20 初始化 ; 第二步 : 发送 ROM 命令 ; 第三步 : 发送功能命令 。超声波测距系统 上电后 ,单片机开始初始化 DS18B20, 检测现场温度 , 软件控制 DS18B20 的具体流程如图 4 所示 。
所示 。单片机控制超声波传感器发出 40kHz 的超声 波信号 ,同时开始同步计时 ,超声波在空气传播过程中 遇到障碍物时会发生反射现象 , 超声波接收器接收到 反射波时立即停止计时 。根据计时器记录的时间间隔 t, 可以 计算 出发射 点距 障碍 物的 距离 ( S ) , 即 : S = V t / 2, 式中 V 为超声波的波速 。
・62・
2008 年第 12 期
・ 控制与检测 ・
行计数 ,进而完成温度测量。计数门的开启时间由高温 度系数振荡器来决定 ,每次测量前 ,首先将 - 55 ℃ 所对 应的基数分别置入计数器 1 和温度寄存器中 ,计数器 1 和温度寄存器被预置在 - 55 ℃所对应的一个基数值。 计数器 1 对低温度系数晶振产生的脉冲信号进行 减法计数 ,当计数器 1 的预置值减到 0 时温度寄存器 的值将加 1,计数器 1 的预置将重新被装入 , 重新开始 对低温度系数晶振产生的脉冲信号进行计数 。如此循 环直到计数器 2 计数到 0 时 , 停止温度寄存器值的累 加 ,此时温度寄存器中的数值即为所测温度 。图 2 中 的斜率累加器用于补偿和修正测温过程中振荡器温度 特性的非线性 , 以产生高分辨率的温度测量 。其输出 用于修正计数器的预置值 , 只要计数门仍未关闭就重 复上述过程 ,直至温度寄存器值达到被测温度值 ,这就 是 DS18B20 的测温原理 。
3 基于 D S18B20 的测温系统
311 DS18B20 与单片机的接口电路
超声波测距系统采用 AT89S52 作为控制核心 , 其 测温系统通过 P0 口将现场温度及测量结果显示在液 晶屏上 。 P210 接数据总线 ,控制 DS18B20 进行温度转 换和传输数据 ,同时数据总线上还要接 417K左右的上 拉电阻 。本系统对 DS18B20 采用外部供电 ,从 VDD 引 [5] 脚接入一个外部电源 。其优点在于 I/O 线不需要强 上拉 ,而且总线控制器无需在温度转换期间一直保持 高电平 。这样在转换期间可以允许在单线总线上进行 其他数据传输 ,硬件结构如图 3 所示 。
The Com pen sa tion of Tem pera ture in Ultra son ic Rang in g System ZHAO Xiao 2qiang, ZHAO L ian 2yu ( Shool of M echanical Engineering, Tianjin University of Technology, Tianjin 300084, China ) Abstract: U ltrasonic Ranging is characterized by easy operation and high reliability, so that it has being w idely used to construction, measure the distance betw een cars, conduit m easuring etc. This paper p resents a method of using AT89S52 to control the ultrasonic, ow ing to the effect of temperature to the ultrasonic, so expounding the DS18B20 ’ s temperature m easure and temperature compensation in U ltrasonic Ranging to im p rove the data ’ s p recision and stability . Key words: ultrasonic; ultrasonic ranging; DS18B20
2 数字温度传感器 D S18B20
[2 ]
目前 ,大多数温度测控系统在进行温度测量时 ,通 常采用模拟式温度敏感元件 , 如热电阻 、 热电偶 、 红外 测温仪等 ,将温度转化为电信号 ,经过信号放大电路放 大到合适的范围 , 再由 A /D 转换器转换为数字量 。此 种形式的温度测量结构复杂 ,调试繁锁 ,测量精度易受 元器件参数影响 。 DS18B20 是 Dallas公司开发的 1 2 W ire (单总线 ) 高 精度数字式半导体温度传感器 ,它具有节省系统 I/O口 线资源 ,结构简单 ,成本低廉 ,精确度高 ,便于总线扩展 和维护等诸多优点 。 1 2 W ire (单总线 ) 是 Dallas半导体 公司近年推出的新技术 。他将数据线 、 控制线 、 地址线 合为 1 根信号线 。单总线适用于单个主机系统 , 能够 控制一个或多个从机设备 。 DS18B20 抗干扰能力强 ,转换精度高 , 使用时无需 标定或调试 ,与微处理器的接口电路简单 ,可方便地实 现多点组网测温 ,给硬件设计工作带来了极大的方便 。 另外采用 DS18B20 能缩短开发周期 ,有效地降低成本 , 简化系统设计 , 扩展方便 、 占用系统 I/O 资源少 , 在多 [3] 点温度检测中具有极为广泛的应用前景 。 DS18B20提供 9~12 位精度的温度测量 ,温度测量 范围为 - 55 ~ + 125 ℃,在 - 10 ~85 ℃ 范围内 ,测量分辨 率为 ± 015 ℃,增量值最小可为 010625 ℃,电源供电范围 310 ~515V。将测量温度转换为 12 位的数字量最大需 要 750m s,而且 DS18B20 有 2种供电方式 :外部供电方式 和寄生电源方式 。采用信号线寄生供电 ,不需额外的外 部供电 ,在需要远程温度探测和空间受限的场合特别有 用。每个 DS18B20 有唯一的 64 位序列号 ,这使得可以 有多个 DS18B20 同时在一条单总线上工作 。
・ 控制与检测 ・
文章编号 : 1001 - 2265 ( 2008 ) 12 - 0062 - 03
组合机床与自动化加工技术
超声波测距系统中的温度补偿
赵小强 ,赵连玉
(天津理工大学 机械工程学院 ,天津 300084 )
3
摘要 : 超声波测距系统具有使用方便 ,可靠性强等特点 ,被广泛用于建筑施工 、 倒车雷达 、 车距测量 、 管道 测量等场合 。文章首先介绍了采用 AT89S52 控制的超声波测距系统原理 ,考虑到温度对超声波测量的 影响 ,着重阐述了 DS18B20 在测距时的测温原理及温度补偿方法 。实验表明 ,采用温度补偿后的超声波 测距系统明显提高了测量精度和稳定性 。 关键词 : 超声波 ; 超声波测距 ; DS18B20 中图分类号 : TG65 文献标识码 : A
相关文档
最新文档