基于RS485通信接口的智能型温度计的设计.docx

上传人:b****4 文档编号:27038114 上传时间:2023-06-26 格式:DOCX 页数:23 大小:464.45KB
下载 相关 举报
基于RS485通信接口的智能型温度计的设计.docx_第1页
第1页 / 共23页
基于RS485通信接口的智能型温度计的设计.docx_第2页
第2页 / 共23页
基于RS485通信接口的智能型温度计的设计.docx_第3页
第3页 / 共23页
基于RS485通信接口的智能型温度计的设计.docx_第4页
第4页 / 共23页
基于RS485通信接口的智能型温度计的设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

基于RS485通信接口的智能型温度计的设计.docx

《基于RS485通信接口的智能型温度计的设计.docx》由会员分享,可在线阅读,更多相关《基于RS485通信接口的智能型温度计的设计.docx(23页珍藏版)》请在冰豆网上搜索。

基于RS485通信接口的智能型温度计的设计.docx

基于RS485通信接口的智能型温度计的设计

引言

由于现代自动化技术的快速进展,使得智能操纵已经在很多地址取得了采纳,如生产线上的机械手、海底深水作业的机械人和医院里的自动送药的机械人等。

最近几年来机械人的智能水平不断提高,而且迅速改变着人们的生活方式。

人们在不断探讨、改造、熟悉自然的进程中,制造能替代人劳动的机械人一真是人类的妄图。

随着现代社会的蓬勃进展,科学技术水平的不断提高,医疗机构的现代化和信息化建设也是大势所趋。

在医院传统体温测量中,水银温度计操作不便、利用费时,而且不能实现数据的自动检测、数据通信等。

随着电子科学的迅猛进展,新型温度传感器的显现和新型高性能单片机的不断推出,使得温度测量的自动检测和数据通信的实现成了可能。

 

传感技术是现代信息技术的三大支柱之一,它是信息获取、处置及传输的源头,是自动化技术的基础;它是运算机、信息处置等综合性高技术密集型技术之一。

各国都在踊跃开发新型的传感器,伴随着传感技术的进展,每一个领域都将呈现出种类繁多,型号各异的传感器,温度传感器确实是一种众所周知的传感器。

单片机在电子产品中的应用已经愈来愈普遍,而且在很多电子产品中也将其用到温度检测和温度操纵。

为此在本文中作者设计了基于atmel公司的AT89S52的温度测量系统。

这是一种低本钱的利用单片机多余I/O话柄现的温度检测电路, 该电路超级简单, 易于实现, 而且适用于几乎所有类型的单片机。

1系统实现的功能

1.1温度检测功能

本设计采纳DS18B20温度传感器,温度传感器DS18B20搜集被控对象的实时温度, 提供给AT89C2051的口作为数据输入。

在本次设计中咱们所控的对象为所处室温。

固然作为改良咱们能够把传感器与电路板分离,由数据线相连进行通信,便于测量多种对象。

一、2温度显示功能

本设计在测量温度进程中,能自主通过单片机搜集传感器送来的信息字形码,将当前的温度正确显示在七段数码管上。

一、3单片机操纵

本设计中单片机的只要功能确实是,从测温电路搜集被测对象的实时温度、再发送字形码到温度显示电路将当前的温度显示出来、同时也发送数据到串行通信接口。

一、4串行通信

本设计最大的特色确实是能跟运算机通信,单片机搜集到的温度数据通过串行通信接口发送到运算机上,运算机也能监控当前的温度,并记录下来,作为以后分析的资料。

2各功能的实现方式

二、1温度检测部份

2.1.1DS18B20的要紧特性

1)适应电压范围更宽,电压范围:

~,在寄生电源方式下可由数据线供电

2)独特的单线接口方式,DS18B20在与微处置器连接时仅需要一条口线即可实现微处置器与DS18B20的双向通信

3)DS18B20支持多点组网功能,多个DS18B20能够并联在唯一的三线上,实现组网多点测温

4)DS18B20在利用中不需要任何外围元件,全数传感元件及转换电路集成在形如一只三极管的集成电路内

5)温范围-55℃~+125℃,在-10~+85℃时精度为±℃

6)可编程的分辨率为9~12位,对应的可分辨温度别离为℃、℃、℃和℃,可实现高精度测温

7)在9位分辨率时最多在内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快

8)测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力芯片

9)负压特性:

电源极性接反时,芯片可不能因发烧而烧毁,但不能正常工作。

2.1.2DS18B20内部结构图

图2-1DS18B20内部结构图

2.1.3DS18B20测温操作

核心功能的DS18B20的是其直接面向数字温度传感器。

解决了温度传感器是用户可配置,以第9,第10,第11,或12位,相应递增℃,℃,℃,

℃。

默许是12位。

低温度系数晶振的振荡频率受温度阻碍很小,用于产生固定频率的脉冲信号送给计数器1。

高温度系数晶振随温度转变其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。

计数器1和温度寄放器被预置在-55℃所对应的一个基数值。

计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄放器的值将加1,计数器1的预置将从头被装入,计数器1从头开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄放器值的累加,现在温度寄放器中的数值即为所测温度。

图3中的斜率累加器用于补偿和修正测温进程中的非线性,其输出用于修正计数器1的预置值。

2.1.4温度检测部份电路图

图2-2温度检测电路图

 

2.1.5DS18B20的精准延时问题

尽管DS18B20有诸多优势,但利用起来并非易事,由于采纳单总线数据传输方式,DS18B20的数据I/O均由同一条线完成。

因此,对读写的操作时序要求严格。

为保证DS18B20的严格I/O时序,需要做较精准的延时。

在DS18B20操作中,用到的延时有15μs,90μs,270μs,540μs等。

因此这些延时均为15μs的整数倍,因此可编写一个DELAY15(n)函数,只要用该函数进行大约15μs×N的延时即可。

有了比较精准的延时保证,就能够够对DS18B20进行读写操作、温度转换及显示等操作。

2.2温度显示部份

2.2.1数码管的驱动方式

数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出咱们要的数字,因此依照数码管的驱动方式的不同,能够分为静态式和动态式两类。

1)静态显示驱动:

静态驱动也称直流驱动。

静态驱动是指每一个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或利用如BCD码二-十进制译码器译码进行驱动。

静态驱动的优势是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示那么需要5×8=40根I/O端口来驱动,要明白一个89S51单片机可用的I/O端口才32个呢:

),实际应历时必需增加译码驱动器进行驱动,增加了硬件电路的复杂性。

2)动态显示驱动:

数码管动态显示接口是单片机中应用最为普遍的一种显示方式之一,动态驱动是将所有数码管的8个显示笔画"a,b,c,d,e,f,g,dp"的同名端连在一路,另外为每一个数码管的公共极COM增加位选通操纵电路,位选通由各自独立的I/O线操纵,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的操纵,因此咱们只要将需要显示的数码管的选通操纵打开,该位就显示出字形,没有选通的数码管就可不能亮。

通过度时连番操纵各个数码管的的COM端,就使各个数码管连番受控显示,这确实是动态驱动。

在连番显示进程中,每位数码管的点亮时刻为1~2ms,由于人的视觉暂留现象及发光二极管的余晖效应,尽管事实上列位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象确实是一组稳固的显示数据,可不能有闪烁感,动态显示的成效和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

2.2.4恒流驱动与非恒流驱动对数码管的阻碍

1)显示成效:

由于发光二极管大体上属于电流灵敏器件,其正向压降的分散性专门大,而且还与温度有关,为了保证数码管具有良好的亮度均匀度,就需要使其具有恒定的工作电流,且不能受温度及其它因素的阻碍。

另外,当温度转变时驱动芯片还要能够自动调剂输出电流的大小以实现色差平稳温度补偿。

2)平安性:

即便是短时刻的电流过载也可能对发光管造成永久性的损坏,采纳恒流驱动电路后可避免由于电流故障所引发的数码管的大面积损坏。

另外,咱们所采纳的超大规模集成电路还具有级联延时开关特性,可避免反向尖峰电压对发光二极管的损害。

超大规模集成电路还具有酷爱惜功能,当任何一片的温度超过必然值时可自动关断,而且可在操纵室内看到故障显示。

2.2.2温度显示部份电路图

图2-3温度显示电路图

2.3单片机操纵部份

2.3.1AT89S52功能特性描述

AT89S52是一种低功耗、高性能CMOS8位微操纵器,具有8K在系统可编程Flash存储器。

利用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash许诺程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式操纵应用系统提供高灵活、超有效的解决方案。

AT89S52具有以下标准功能:

8k字节Flash,256字节RAM,32位I/O口线,看门狗按时器,2个数据指针,三个16位按时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,许诺RAM、按时器/计数器、串口、中断继续工作。

掉电爱惜方式下,RAM内容被保留,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

8位微操纵器8K字节在系统可编程FlashAT89S52。

2.3.2AT89S52管脚图

图2-4单片机引脚图

2.4串行通信部份

2.4.1RS-232接口

RS232接口是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及运算机终端生产厂家一起制定的用于串行通信的标准。

目前RS-232是PC机与通信工业中应用最普遍的一种串行接口。

RS-232被概念为一种在低速度串行通信中增加通信距离的单端标准。

RS-232采取不平稳传输方式,即所谓单端通信。

收、发端的数据信号是相关于信号地。

典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在+5~+15V,负电平在-5~-15V电平。

当无数据传输时,线上为TTL,从开始传送数据到终止,线上电平从TTL电平到RS-232电平再返回TTL电平。

接收器典型的工作电平在+3~+12V与-3~-12V。

由于发送电平与接收电平的差仅为2V至3V左右,因此其共模抑制能力差,再加上双绞线上的散布电容,其传送距离最大为约15米,最高速度为20Kbps。

RS-232是为点对点(即只用一对收、发设备)通信而设计的,其驱动器负载为3kΩ~7kΩ。

因此RS-232适合本地设备之间的通由于RS232接口标准显现较早,不免有不足的地方,要紧有以下四点:

1)接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容故需利用电平转换电路方能与TTL电路连接。

2)传输速度较低,在异步传输时,波特率为20Kbps。

3)接口利用一根信号线和一根信号返回线而组成共地的传输形式,这种共地传输容易产生共模干扰,因此抗噪声干扰性弱。

4)传输距离有限,最大传输距离标准值为50英尺,事实上也只能用在50米左右。

2.4.2RS-485接口

RS485采纳差分信号负逻辑,+2V~+6V表示“0”,-6V~-2V表示“1”。

RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采纳,此刻多采纳的是两线制接线方式,这种接线方式为总线式拓朴结构在同一总线上最多能够挂接32个结点。

在RS485通信网络中一样采纳的是主从通信方式,即一个主机带多个从机。

很多情形下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来。

而忽略了信号地的连接,这种连接方式在许多场合是能正常工作的,但却埋下了专门大的隐患,这有二个缘故:

(1)共模干扰问题:

RS-485接口采纳差分方式传输信号方式,并非需要相关于某个参照点来检测信号,系统只需检测两线之间的电位差就能够够了。

但人们往往轻忽了收发器有必然的共模电压范围,RS-485收发器共模电压范围为-7~+12V,只有知足上述条件,整个网络才能正常工作。

当网络线路中共模电压超出此范围时就会阻碍通信的稳固靠得住,乃至损坏接口。

(2)EMI问题:

发送驱动器输出信号中的共模部份需要一个返回通路,如没有一个低阻的返回通道(信号地),就会以辐射的形式返回源端,整个总线就会像一个庞大的天线向外辐射电磁波。

2.4.3RS485转RS232工作原理

RS485通信时用+2V~+6V的电压表示逻辑“0”,用-6V~-2V表示逻辑“1”,而RS232的电平是+10V~-10V,因此电脑要通过RS485总线与温度传感器通信时就必需进行电平的转换,采纳MAX232芯片先将RS232电平转换成TTL电平(0~5V),然后采纳SN65LBC184芯片将TTL电平转换成RS485电平。

芯片SN65LBC184的DE端和/RE端是接收发送数据的使能端,当DE端为高电平常,就向RS485总线发送数据;当/RE端为低电平常,就接收RS485总线上的数据,发送和接收的数据通过MAX232芯片与电脑通信。

2.4.4RS485布网

网络拓扑一样采纳终端匹配的总线型结构,不支持环形或星形网络。

在构建网络时,应注意如下几点:

1)采纳一条双绞线电缆作总线,将各个节点串接起来,从总线到每一个节点的引出线长度应尽可能短,以便使引出线中的反射信号对总线信号的阻碍最低。

有些网络连接尽管不正确,在短距离、低速度仍可能正常工作,但随着通信距离的延长或通信速度的提高,其不良阻碍会愈来愈严峻,要紧缘故是信号在各支路结尾反射后与原信号叠加,会造成信号质量下降。

2)应注意总线特性阻抗的持续性,在阻抗不持续点就会发生信号的反射。

以下几种情形易产生这种不持续性:

总线的不同区段采纳了不同电缆,或某一段总线上有过量收发器紧靠在一路安装,再者是太长的分支线引出到总线。

总之,应该提供一条单一、持续的信号通道作为总线。

在RS485组网进程中另一个需要主意的问题是终端负载电阻问题,在设备少距离短的情形下不加终端负载电阻整个网络能专门好的工作但随着距离的增加性能将降低。

理论上,在每一个接收数据信号的中点进行采样时,只要反射信号在开始采样时衰减到足够低就能够够不考虑匹配。

但这在事实上难以把握,美国MAXIM公司有篇文章提到一条体会性的原那么能够用来判定在什么样的数据速度和电缆长度时需要进行匹配:

当信号的转换时刻(上升或下降时刻)超过电信号沿总线单向传输所需时刻的3倍以上时就能够够不加匹配。

一样终端匹配采纳终端电阻方式,RS-485应在总线电缆的开始和结尾都并接终端电阻。

终接电阻在RS-485网络中取120Ω。

相当于电缆特性阻抗的电阻,因为大多数双绞线电缆特性阻抗大约在100~120Ω。

这种匹配方式简单有效,但有一个缺点,匹配电阻要消耗较大功率,关于功耗限制比较严格的系统不太适合。

另外一种比较省电的匹配方式是RC匹配。

利用一只电容C隔间直流成份能够节省大部份功率。

但电容C的取值是个难点,需要在功耗和匹配质量间进行折衷。

还有一种采纳二极管的匹配方式,这种方案虽未实现真正的“匹配”,但它利用二极管的钳位作用能迅速减弱反射信号,达到改善信号质量的目的,节能成效显著。

2.4.5RS485/RS232转换电路图

图2-5无源RS485转RS232原理图

3软件设计

DS18B20的一线工作协议流程是:

初始化→ROM操作指令→存储器操作指令→数据传输。

其工作时序包括初始化时序、写时序和读时序。

故主机操纵DS18B20完成温度转换必需通过三个步骤:

每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,如此才能对DS18B20进行预定的操作。

复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。

单片机程序流程图如下:

 

图3-1整个程序流程图

4系统方框图、电路原理图

4.1系统方框图

 

 

图4-1基于RS485通信接口的智能型温度计整体方框图

4.2主电路图

见附录1

5整机调试和结果

5.1整机调试

1)把硬件电路和PC机用RS232串口数据传输线连接起来。

2)把单片机需要的程序“单片机温度数据传输程序.hex”用烧录软件烧录进单片机,接上电源。

3)双击打开用VB程序编写的应用软件””,就能够够显示出温度数据。

4)在室温下,软件显示温度如下:

图5-1室温数据

5)在用手捏住一段时刻后,温度转变显示如下:

图5-2用手捏住一段时刻后温度数据

图5-3用手捏住一段时刻后温度数据

图5-4用手捏住一段时刻后温度数据

温度数据会慢慢发生转变,并显示在文本框上。

放开手,温度会慢慢恢复到的室温。

6).测量上限温度:

图5-5用电烙铁加热一段时刻后达到上限温度数据

7).测量的最低温度:

图5-6用雪糕冷却一段时刻后达到的最低温度数据

这是在现有的物理条件下所能测量到的最低温度,但还不是温度计的下限温度,温度计的下限温度是0℃。

5.2通信距离测试

1)把硬件电路和PC机用RS232串口数据传输线连接起来。

2)把单片机需要的程序“单片机温度数据传输程序.hex”用烧录软件烧录进单片机,接上电源。

3)双击打开用VB程序编写的应用软件””,就能够够显示出温度数据。

4)通信距离,整个电路工作正常,温度准确显示。

5)通信距离,整个电路工作正常,温度准确显示。

6)通信距离1米,整个电路工作正常,温度准确显示。

7)通信距离2米,整个电路工作正常,温度准确显示。

8)通信距离3米,整个电路工作正常,温度准确显示。

由于缺少实验线材,测量的距离有限,不能正确测量出本设计最远的通信距离。

 

6结束语

AT89S52单片机体积小、重量轻、抗干扰能力强、对环境要求不高、价钱低廉、靠得住性高、灵活性好。

即便是非电子运算机专业人员,通过学习一些专业基础知识以后也能依托自己的技术力量来开发所希望的单片机应用系统。

本文的温度操纵系统只是单片机普遍应用于各行各业中的一例,相信读者会依托自己的伶俐才干使单片机的应用加倍普遍化。

另外对本例子能够作一些扩展,单片机的应用愈来愈普遍,由于单片机的运算功能较差,往往需要借助运算机系统,因此单片机和PC机进行远程通信更具有实际意义。

目前此设计已成功应用于钻井模拟器实验室室温操纵。

本文作者创新观点:

采纳的单片机AT89C2051性价比高,而且温度传感器DS18B20转化温度的方式超级简练且精度

高、测试范围较广。

咱们已成功地将DS18B20应用于所开发的“基于RS485通信接口的智能型温度计”的操纵系统中,其测温系统简单,测温精度高,连接方便,占用口线少,转换速度快,与微处置器的接口简单,给硬件设计工作带来了极大的方便,能有效地降低本钱,缩短开发周期。

 

致谢

谢谢电子系教师的大力支持和关切,给予我设计中的资金和技术指导,专门是我的指导教师,廖天发教师,在百忙中还抽出时刻帮忙我,给我指明了设计的方向,帮我解决了很多在设计中的显现的问题,我的设计才能顺利地通过系里的论文答辩。

另外还有很多同窗和教师的关切和帮忙,在此向他们致以深深的谢意。

感激电子系领导和教师们在本时期对我的关切和帮忙,感激在百忙当中评阅论文和参加答辩的教师、评委。

最后,向学习和设计其间所有关切和帮忙过我的教师和同窗们表示真诚的谢意。

 

参考文献

[1]李群芳,张士军,黄建.单片微型运算机与接口技术(第二版).电子工业出版社,2005.

[2]徐科军,马修水,李晓林.传感器与检测技术.电子工业出版社,2004.

[3]谭浩强.C程序设计(第二版).清华大学出版社,1999.

[4]黄祯祥.基于MCS-51单片机的温度操纵系统.现代电子技术,2005.

[5]程安宇.基于DS18B20的单片机测量操纵系统.兵工自动化,2007.

[6]黄惠媛,李润国.单片机原理与接口技术.海洋出版社,2006.

[7]陈小忠,黄宁,赵小侠.单片机接口技术有效子程序.人民邮电出版社.2005.

[8]王鹏飞.单片机温度数据搜集与处置.四川师范大学学报.1998年3月第21卷第2期.

[9]黄祯祥.基于MCS-51单片机的温度操纵系统现代电子技术.2005年第6期总第197期.

[10]仲崇权.基于RS485总线的温度搜集模块.工业操纵运算机,1999年第12卷第5期.

[11]刘洪恩.利用热电偶转换器的单片机温度检测系统.仪表技术,2005年第2期.

 

附录1

附录2

单片机源程序:

#include<>

codeunsignedcharseg7code[11]={0xc0,0xf9,0xa4,0xb0,0x99,

0x92,0x82,0xf8,0x80,0x90,0xbf};//显示段码

voidDelay(unsignedinttc)//显示延时程序

{while(tc!

=0)

{unsignedinti;

for(i=0;i<100;i++);

tc--;}

}

sbitTMDAT=P3^3;//DS18B20的数据输入/输出脚DQ,依照情形设定

unsignedintsdata;//测量到的温度的整数部份

unsignedcharxiaoshu1;//小数第一名

unsignedcharxiaoshu2;//小数第二位

unsignedcharxiaoshu;//两位小数

bitfg=1;//温度正负标志

#defineCOUNT10

unsignedcharbuffer[COUNT];//定义接收缓冲区

unsignedcharpoint;//概念接收数据个数指示变量

voidUART_init();//串口初始化函数

voidCOM_send(void);//串口接收函数

unsignedcharCLU_checkdata(void);//计算校验位函数

voiddmsec(unsignedintcount)//延时部份

{

unsignedchari;

while(count--)

{for(i=0;i<115;i++);}

}

voidtmreset(void)//发送复位

{

unsignedchari;

TMDAT=0;for(i=0;i<103;i++);

TMDAT=1;for(i=0;i<4;i++);

}

bittmrbit(void)//读一名//

{

unsignedinti;

bitdat;

TMDAT=0;

i++;

TMDAT=1;

i++;i++;//微量延时//

dat=TMDAT;

for(i=0;i<8;i++);

return(dat);

}

unsignedchartmrbyte(void)//读一个字节

{

unsignedchari,j,dat;

dat=0;

for(i=1;i<=8;i++)

{j=tmrbit();dat=(j<<7)|(dat>>1);}

return(dat);

}

voidtmwbyte(unsignedchardat)//写一个字节

{

unsignedcharj,i;

bittestb;

for(j=1;j<=8;j++)

{testb=dat&0x01;

dat=dat>>1;

if(testb)

{TMDAT=0;//写0

i++;i++;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1