《毕业设计(论文)数字温度传感器的温度巡回测量系统设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)数字温度传感器的温度巡回测量系统设计.doc(29页珍藏版)》请在三一办公上搜索。
1、 扬 州 大 学本 科 生 毕 业 论 文 (物理科学与技术学院) 课 题:数字温度传感器的温度巡回测量系统作 者: 学 号: 专 业: 电子信息科学与技术 指导教师: 二零零四年五月二十日数字温度传感器的温度巡回测量系统摘要:本论文采用美国DALLAS公司最新推出的DS18B20单线程数字温度传感器,应用单片机控制D S 1 8 B 2 0巡回检测温度,将温度数据传给PC机处理。DS18B20能够直接读出被测量温度并且可根据实际要求通过简单的编程实现9门位的数字值读数方式,可以分别在93.75ms 和750 ms内将温度值转化9位和12位的数字量,使用DS18B20比传统的以热敏电阻等为敏感
2、元件的温度传感器的系统结构更加简单,可靠性更高。该系统具有实用性强、可靠性高的特点。本文不仅仅是一篇介绍新型温度传感器的文章,而且介绍了一种新的温度测量方法,利用单片机AT89C52和DS18B20组成的测温系统,具体介绍了数字温度传感器的温度巡回测量系统。关键词:DS18B20温度检测,温度巡回检测、 Measuring Temperature With New Type Of Data Temperature SensorABSTRACT:This thesis adopts DS18B20 form thread digital temperature sensor that U.S.A
3、. DALLAS Company introduced newly, use the one-chip computer to control D S 18 B 2 0 and measure temperature touringly, pass the temperature data to the PC to deal with. DS18B20 can is it measure temperature and can according to is it pass simple programming 9 realization - digital value reading way
4、 , door of location to demand actually to read directly, can transform the figure amount of 9 and 12 of temperature value on 93.75ms and 750 ms separately , it is simpler to use the systematic structure of DS18B20 sensor of temperature taking thermal resistor ,etc. as sensitive more element than the
5、 traditional one, dependability is higher. This system has the characteristics that practicability is strong, dependability is high.Accomplishment of Measuring Temperature With New Type Of Temperature Sensor Not only is a new type of temperature sensor DS18B20 introduced ,but also a new method both
6、using a circuit with AT89C52 and covering frame work of software is propose in this paperKEYWORD: digital temperature sensor DS18B20 Measuring Temperature With New Type Of Data Temperature Sensor目 录一、引言 4二、设计原理5三、硬件设计8四、软件设计14五、结束语21六、参考文献21七、附录22(一) 引 言随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测和显示系统已经应用
7、于诸多领域。传统的温度检测以热敏电阻为温度敏感元件,热敏电阻成本低但需要后续信号处理电路,需要很好的解决引线补偿问题、多点切换误差问题和放大电路零点漂移问题。在接口上需要A/D转换,因此结构复杂,调试烦琐。而且热敏电阻的可靠性相对较差,测量温度的准确度低,检测系统的精度差。数字化技术推动了信息化的革命,数字化的传感器使信息的采集变的更加方便,例如,对于温度信号采集系统,传统的模拟温度传感器多为铜电阻或铂等其他电阻,每一个传感器的传输线至少有两根导线,带补偿接法需要三根导线。如果对多路信号进行检测,就需要几十根甚至上百根导线连接到采集端口,然后还要经过电桥电路、信号放大、通道选择、 A/D转换等
8、,才能将温度信号变成数字信号供计算机处理。单线芯片是美国Dallas Semiconductor 公司于20世纪90年代推出的系列新产品,包括数字温度计、数字电位器、 A/D转换器、定时器、RAM与EEPROM类存储器、寻址开关、线路驱动器、ESD保护二极管、ID数码序列等全系列配套技术与器件。它们通过一对普通双绞线传送数据、地址、控制信号与电源、最适合应用于多点数据采集与监控的现场应用。这类器件一般具有以下几个突出特点(1) 开漏输出。为了使每个设备在合适的时候都能被驱动,它们与总线匹配的端口必须具有开漏输出和三态输出的功能,也就是说从设备的输出端口都是开漏结构。主设备 I/O端口也为类似的
9、结构。(2)微功耗。由于各节点由主设备集中供电,等效于各芯片内部有一个约5ua的恒流充电源。(3)特殊的复位功能。线路空闲时为高电平,如果由于某种原因必须将当前传输挂起的话,那么就要将总线拉到空闲状态。(4)ROM ID。由于众多节点芯片都挂在总线上,器件内部除控制部件外,至少还要有用于标识本节点地址ID码的只读存储器ROM,多数器件还有EEPROM与RAM,于是单线芯片协议中就有相应的ROM功能命令、存储器功能命令、读时隙与写时隙等操作。(5)引脚少。多数单线芯片都是3引脚封装,外型如三极管。(二)、 设 计 原 理前端利用A T 8 9 C 5 2单片机制作最小系统,用来控制单片芯片D S
10、 1 8 B 2 0的复位,读、写时序,将D S 1 8 B 2 0采集的数字温度值存储、转发给P C机,后端用V B接收数字温度,实现温度的显示、存储、报警等功能。各部分的工作原理如下: D S 1 8 B 2 0的测温原理如图所示图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其振荡频率已明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时。D S1 8 B 2 0就对低温度系数振荡器产生的时序脉剂后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器频率来决定,每次测量前,首先将
11、55 摄氏度所对应的基数分别放入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在 55 摄氏度所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将被重新装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图中的斜率累加器用于补偿和修正测温过程中的非线件,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直到温度寄存器值达到被测温度值,这就是D S 1 8 B 2
12、0的测温原理. 单片机工作过程单线芯片的传输过程是单线应用技术的关键,每个单线芯片拥有唯一的地址,主机一选中某个芯片,就会保持通信连接直至复位,其它的器件则全部脱离总线,在下次复位前不参与任何通信。因而单片机用来严格的保证D S 1 8 B 2 0的工作协议,保障数据传输的准确性,单片机要控制总线上的多种信号,如:复位脉冲、在线脉冲、写0、写1、读0、读1等。(1)初始化 总线上的全部传输操作都是以初始化开始的,初始化包括主设备发送一个复位脉冲和从设备返回一个应答信号脉冲。系统的初始化过程如下图: 注意:这里的复位是针对挂在该总线上的全部的从设备而言的 主设备Tx端发送的复位脉冲是一个4 8
13、09 6 0 u s的低电平,然后释放总线而进入接收状态,此时系统总线经4.7k上拉电阻拉到高电平,时间约1 56 0 u s,接着Rx端就检测I / O引脚上的下降沿以监视在线脉冲的到来,主设备处在这种接受状态下的时间至少为480us。 作为从设备的器件D S 1 8 B 2 0在接收到主设备发出的复位脉冲之后,向总线发出一个在线脉冲(P r e s e n c e P u l s e),表示从设备已准备好,可根据各类命令发送或接收数据。通常情况下,器件等待1 56 0 u s即可发送在线脉冲(该脉冲是一个6 02 4 0 u s的低电平信号,它是由从设备D S 1 8 B 2 0强拉下来的
14、) 图中时序是多个器件分时贡献的结果,主要是主机激发低电平,电阻上拉,从设备激发低电平,复位脉冲是主设备以广播方式发出的,因而总线上全部的D S 1 8 B 2 0都同时发出在线脉冲。一旦检测到在线脉冲后,主设备就认为总线上已经连接有从设备了,接着将会发出有关的ROM功能命令,否则,主设备判断总线上没有挂接从设备,用软件继续复位。(2)读 / 写时隙 在单线总线上传输的数据信号类似与脉冲调制波形,逻辑0用较长的低电平持续期表示,逻辑1用较长的高电平持续期表示。这里对单总线系统中的数据传输还引入了读/写时隙(Read / Write Time Slots)的概念,主机向总线上输出数据时产生写时隙
15、,从总线上输入数据时形成读时隙。无论是读时隙还是写时隙,它们都是以主设备驱动数据线为低电平开始的,数据线下降沿使从设备触发其内部的延迟电路,使之与主设备同步。在写时隙中该延迟电路决定了从设备采样数据的时间窗口,对于读时隙,如果传送的数据位是0,延迟电路就决定了从设备保持数据线为低电平状态的时间,如果传送的数据位是1,延迟电路释放总线,主设备一侧的上拉电阻就会立即将数据线拉到高电平。 无论是逻辑1,还是逻辑0,所有的读/写时隙都必须至少占6 0 u s,且在两个相邻的读/写周期间至少应有1us的恢复时间。写时隙时序图: 当主设备向D S 1 8 B 2 0输出数据位时立即产生写时隙。为了生成写1
16、的时隙,必须先将单线总线从恢复期的高电平下拉至低电平,向从设备表示启动写时隙操作。此后在1 5 u s之内必须将总线上拉至高电平,表示当前操作为写1操作。D S 1 8 B 2 0则在I / O线拉至低电平后的1 56 0 u s的时间窗口内采样I / O线,该线保持高电平表示写1。为了生成写0的时隙,同样必须使单线总线从恢复期的高电平下拉至低电平,且维持6 0 u s。D S 1 8 B 2 0则在I / O线拉低后1 56 0 u s 的时间窗口内采样I / O线,该线保持低电平表示写0。读时隙时序图:当主设备接收D S 1 8 B 2 0输出的数据位时即生成读时隙。主设备先将单线总线从高
17、电平拉至低电平,输出一个窄脉冲表示启动读时隙操作,此脉冲的低电平维持时间至少应有1 u s。D S 1 8 B 2 0返回的数据在该启动脉冲下降沿后1 5 u s内都是有效的,返回0时在此期间强制总线保持低电平,返回1时从设备对脉冲不起作用,1 u s后由主设备将总线迅速上拉至高电平。主设备接收器在这1 5 u s快结束前采样单线总线,从而获取从设备传送的数据。读时隙操作结束后,总线将由主设备上拉电阻拉至高电平。 (3)ROM功能命令ROM功能命令主要是管理单线芯片ROM ID 的一系列通信协议,主要用于识别单线芯片的产品序列号码,实现传统的“片选“功能。33H : 读ROM 允许总线设备主设
18、备读从设备的8位分类码、48位二进制序列号和8位CRC码。该命令只用于总线上只有一个从设备的单接点场合。如果总线上有多个从设备,他们将同时发送ID而出现数据冲突,因为开漏输出会产生线与的结果。55H : 匹配ROM 该命令后应跟随一个欲寻址的64位ROM ID,允许主设备寻址多节点总线上指定的从设备。从设备接收到ROM序列号后将与各自的64位ROM编码进行比较,仅当两者完全匹配时才选中,该器件才会响应后面的存储器功能命令;与之不匹配的其他从设备则都处于等待状态,直至接收到一个新的复位脉冲为止,该命令适用于单节点和多节点两种场合。CCH : 直访ROM 该命令用于在单节点总线系统中可以节省时间,
19、这时主设备不发送64位ROM ID 就能直接进入芯片的RAM存储器访问。对于多节点系统,如果该命令之后紧接着一个读命令,那么就会出现多个从设备同时发送数据的现象。F0H :收索ROM 当系统进入初始化后,主设备并不知道总线上挂了多少个从设备以及它们各自的64位ROM ID,因而,收索ROM命令允许主设备使用逐个淘汰的方法来识别总线上所有设备的64位ROM编码。44H :温度转换命令 仅启动一次温度转换,无实质性数据传输。如果主设备在该命令之后输出读间隙,温度传感器DS18B20就会输出0表示正忙于转换操作,转换结束后即返回1。如果使用寄生电源,主设备就必须在输出温度转换命令之后500ms内维持
20、强上拉。4Eh :写存储器 对温度传感器DS18B20的存储器进行写操作,写入的数据是温度报警上限值和下限值,写入各自对应的存储器TH和TL中。输出复位命令回停止当前的写操作。 BEH :读存储器 从0字节开始读操作,如果不需要读全部9个字节,则主设备可输出复位信号而中止当前的读操作。48H : 复制存储器命令 将存储器TH / TL中的值复制到SRAM中,如果主设备在该命令之后输出读间隙,那么温度传感器DS18B20就会输出0表示正忙于复制操作,复制结束后即返回1。如果使用寄生电源,主设备就必须在输出该命令之后至少10ms内维持强上拉。B8H :将存储在SRAM中的温度报警触发值回读到存储器
21、中,上电时温度传感器DS18B20会自动执行一次回读操作,以保证器件上电后存储器中的数据是可用的,该命令发出之后的回读间隙内,器件将输出温度转换标志0,表示正忙。B4H :主设备在发出该命令之后再输出读间隙,器件即会送出它所使用的电源信息:0 为寄生电源 ,1为外接电源。 PC机的主要工作单片机通过串行口RS-232与计算机通信,利用V B高级语言编程,完成对ds18b20的调用,中断管理,测量温度值的计算与处理,以及温度值的显示输出,显示程序完成对各路温度值的巡检和显示。最终,只需打开电源就可以看到关心的温度数据。(三)硬件设计一、各部分器件简介1、单线芯片D S 1 8 B 2 0简介 目
22、前,常用的温度传感器有热电偶、RTD、热敏电阻和IC传感器等几种,其中IC传感器具有半导体材料的阻性变化优点。在低温条件下,它们也能提供线性电压或电流输出,这种方式的传感器还能提供一个直接的数字形式的温度读数,从而减少了AD转换电路。推出的基于1-Wire the的温度传感器芯片DS18B20因具有数字量输出、响应速度快、测量精度高可实现多点检侧等特点被广泛地使用。传统的温度检测以热敏电阻为温度敏感元件,热敏电阻成本低,但需要后续信号处理电路,而且热敏电阻的可靠性相对较差,测量温度的准确度低,检测系统的精度差,因此,选择了美国DALLAS公司最新推出的DS18B20数字式温度传感器,DS18B
23、20是DS1820的更新产品,它与传统的热敏电阻温度传感器不同,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现9门位的数字值读数方式,可以分别在93.75ms和750ms内将温度值转化9位和12位的数宇量。因而使用ds18b20可使系统结构更加简单,可靠性更高1.1、DS18B20温度传感器的特点单线接口,只有一根信号线与CPU连接 传送串行数据,不需要外部元件 不需要备份电源、可用数据线供电 温度测量范围从50摄氏度125摄氏度,-10摄氏度85摄氏度时,测量精度为上 0.5摄氏度 通过编程可实现912位的数字值读数方式,在93.75ms和750ms内将温度值转化9位和12位的数
24、字量用户可自设定非易失性的报警上下限值报警搜索命令可以识别哪片DS18B20温度超限1.2、DS18B20的内部结构Ds18b20采用3脚PR35封装和8脚SOIC封装,其内部结构如下:1.3、DS18B20温度传感器的存储器(1) 开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前56位的CRC校验码,这也是多个 ds18b20可以采用一线通信的原因。(2) 非易失性温度报警触发器TH和TL,可通过软件写入用户报警上下限。(3) 高速暂存存储器DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EPRAM。后者用于存储TH,TL值。
25、数据先写入RAM,经校验后冉传给 EPRAM。而配置寄存器为高速暂存器中的第 5个字节,它的内容用于确定温度值的数字转换分辨率,DS18B20工作时按此寄存器中的分辨率将温度转换为相应的精度,该字节各位的定义如下: 低5位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出产时该位被设置为0用户不用去改动,R1和R0次定温度转换的精度位数,即是来设置分辨率,如表由表1可见,设定的分辨率越高需要的温度数据转换时问就越长。因此,在实际应用中要在分辨率和转换时间考虑高速暂存存储器除了配置寄存器外,还有其他8个字节组成,其分配如下所示。其中温度信息(第l,2
26、字节)、TH和TL值第3, 4字节、第6 8字节未用表现为个全逻辑1;第9字节读出的是前面所有8个字节的CRC码,用来保证通信正确当 DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速存储器的第1,2字节2、单片机简介随着大规模集成电路技术的发展,可以将CPU、RAM、ROM、定时器/计数器以及输入/输出(I/O)接口电路等主要计算机部件,集成在一块芯片上。这样组成的芯片级的微型计算机称为单片机。二、硬件的总体设计2.1、设计目标本系统使用AT89C52作为控制芯片,对单线温度传感器DS18B20采集的温度信号进行接收,并把接收到
27、的数据存放在数据存储器中。系统可以工作在定点定时和巡回检测两种工作状态下,定点定时是为工作人员可以随时测量某点的温度,巡回检测可以实现对各点进行自动检测,单片机通过串口实现与PC机的通信,PC机中利用VB对传感器进行宏控,选择工作方式,设定通信的波特率,通信方式,提供友好的工作界面。2.2、硬件的系统组成 方案一: (1)最小系统其中包括单片机AT89C52、工作状态指示单元、复位电路及晶振等。为了配合DS18B20严格的时序和便于通信波特率的技术,晶振选定为12MHZ如上图,多个传感器件DS18B20并联通过一个4.7K的上拉电阻与单片机连接,通过P1.0口把数据送给单片机,在单片机与PC机
28、之间,是一个电平转换器件MAX232,它的作用是电平转换,因为RS232的逻辑0电平规定在+3-+25V之间,逻辑1电平规定在-3 -25V之间,因而不仅要使用正负逻辑的双电源,而且与传统的TTL等数字电路的逻辑电平不兼容,两者之间必须使用电平转换,MAX 232就是一个很好的电平转换器件。 (2)RS232串行接口RS232是异步串行通信中应用最早,也是目前应用最为广泛的标准串行总线接口之一,它有多个版本,其中应用最广的是修订版C,即RS232C,从外观上看一个完整的RS232串行接口可以说就是一个25针或9针的D型插座。这里只介绍一下简化的9针RS232串行接口。 引脚 信号 输入/输出
29、功能3 TXD O 发送功能2 RXD I 接收数据7 RTS O 请求发送 8 CTS I 清除发送 6 DSR I 数据通信装置(DCE)准备就绪 5 SG 信号公共参考地 1 DCD I 数据裁波检测 4 DTR O 数据终端设备(DTE)准备就绪 9 RI I 振铃指示 (3)MAX232 MAX232是一种双组驱动器/接收器,片内含有一个电容性电压发生器以便在单5V电源供电时提供EIA/TIA-232-E电平。每个接收器将EIA/TIA-232-E电平输入转换为5V TTL/CMOS电平。这些接收器具有1.3V的典型门限值及0.5V的典型迟滞,而且可以接收30V的输入。每个驱动器将T
30、TL/CMOS输入电平转换为EIA/TIA-232-E电平。所有的驱动器、接收器及电压发生器都可以在德州仪器公司的LinASICTM元件库中得到标准单元。MAX232的工作温度范围为0至70,MAX232I的工作温度范围为-40至85。 基本特点: 单5V电源工作 LinBiCMOSTM工艺技术 两个驱动器及两个接收器 30V输入电平 低电源电流:典型值是8mA 符合甚至优于ANSI标准EIA/TIA-232-E及ITU推荐标准V.28 可与Maxim公司的MAX232互换 ESD保护大于MIL-STD-883(方法3015)标准的2000V引脚排列:应用范围: EIA/TIA-232-E 电
31、池供电系统 终端 调制解调器 计算机具体特性:工作温度(自然通风)范围内的极限参数输入电源电压范围, Vcc -0.3V 至 6V正输出电源电压范围, VS+ Vcc-0.3V 至 15V负输出电源电压范围, VS - 0.3V至-15V输入电压范围, VI:驱动器 - 0.3V至Vcc+0.3V 接收器 30V输出电压范围, VO:T1OUT,T2OUT VS0.3V至VS+0.3V R1OUT,R2OUT -0.3V至Vcc+0.3V短路持续时间: T1OUT,T2OUT 未限制工作温度(自然通风)范围, TA:MAX232 0至70 MAX232I -40至85存储温度范围, Tstg
32、-65至150引线温度,离外壳1.6mm(1/16英寸), 10秒 260 注:以上为极限参数,超出极限参数有可能会导致器件的永久性损坏。工作条件:最小典型最大单位电源电压,VCC4.555.5V高电平输入电压VIH(T1IN,T2IN)2V低电平输入电压VIL(T1IN,T2IN)0.8V工作温度(自然通风),TA070V(4)与计算机的连接通过RS-232串口与上图所示的PC机系统相连,由于PC机系统配有一个RS-232的插口,所以连接时只要将单片机的p3.0口与RS232串行接口的第3脚相连,P3.1与RS232串行接口的第2脚连接, 将其插在计算机的串行接口上系统就可以工作了。计算机通
33、过串口读取单片机采集并存放与数据存储器中的数据,并且通过VB处理程序对接收到的数据进行处理,然后进行显示、报警等工作。VB提供了可视化的编程界面,有现成的串口通信控件可以使用,只需对串口的一些参数进行简单设定,VB就可以将数据接收过来,而且可以设定接收多少数据产生事件,用来将温度数据存储,显示,比较处理等,并且可以编出一个非常漂亮的程序界面,使程序的执行情况,完全呈现在用户面前,可以清晰的给出程序的运行结果。比用C语言实现更为简便,因为C语言编程比较复杂,需要熟悉掌握针对串口操作的某些特殊函数,而且没有可视化的界面,而要编写友好的工作界面,又要花费大量的工作,实现对工业现场的控制,方便、快捷、
34、直观。 方案二:直接将单线温度传感器与PC机相连接,后端通过VB直接控制传感器的工作,这样一来硬件电路基本上就没有了。比较上述两中方案,第一种方案需要的硬件电路比较多一点,需要单片机,最小系统等额外的电路,单片机的应用,首先就是它的控制功能,即在于实现计算机控制。而在线控制应用方面,由于计算机身处系统之中,因此对计算机有体积小,功耗小以及控制能力强等要求,这些要求真可谓是非单片机莫属了,而温度传感器DS18B20对时序有严格的要求,一般都用在工业现场,这些要求单片机都可以适用,第二种方案,用VB直接对温度传感器DS18B20进行控制,对时序的准确性不能把握,而且实时性比较差,而且通信过程中的通
35、信方式等都要有特定的条件,因而选择了第一种方案。使用DS18B20应注意:DS1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题: (1)较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。 (2)在DS1820的有关资料中均未提及单总线上所挂DS1820数量问题,容易使人误认为可以挂任意多个DS1820,在实际应用中并非如此
36、。当单总线上所挂DS1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。 (3)连接DS1820的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS1820进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。 (4)在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS
37、18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。这一点在进行DS18B20硬件连接和软件设计时也要给予一定的重视。(5) DS18B20三线制应用时,应将GND、VDD,VQ三线焊接牢固,两线应用时,应将其的VDD与GND接在起,焊接牢固。若VDD脱开未接,传感器只送+ 85摄氏度的温度值。测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另组接VCC和地线,屏蔽层在源端单点接入。(四)软件设计 软件编程总体结构描述本系统实现了温度采集,存储,显示等功能,主要是对温度传感器DS18B20的控制,和串行通信两大块。根
38、据系统的主要性能要求可以将软件设计分为如下几块 对温度传感器DS18B20的软件设计 对串行口的软件设计对温度传感器DS18B20的软件设计分为几个模块,初始化模块,写模块,读模块,CRC模块,由于要对挂在总线上的多个温度传感器DS18B20进行识别,还要专门设计一个读温度传感器DS18B20序列号的程序,将传感器的64位序列号读出来,供后面编程需要。初始化模块:单片机通过P1.0口向数据线写入0,调用延时程序,延迟480960us,再通过P1.0向数据线写入1,调用延时程序,延迟1560us,通过P1.0口向数据线写入0,调用延时程序,延迟60240us,单片机等待温度传感器的应答信号。 写
39、模块: 单片机向温度传感器DS18B20发送低电平,调用延时程序,延迟480960us,上拉电阻将电平拉高,延迟1560us,等待15us后向温度传感器DS18B20写入数据。读模块: 单片机向温度传感器DS18B2发送低电平,等待15us后,向总线送高电平,此时,温度传感器DS18B2的数据也将送到总线上,两者是线与结构,线与的结果送入单片机,在进行下一次读任务,在两次读之间应不小于1个us。读ROM ID 模块 由于众多节点芯片都挂在总线上,器件内部除控制部件外,至少还要有用于标识本节点地址ID码的只读存储器ROM,每个单片芯片都有各自唯一的64位地址,或称电子序列号、ROM标识代码、RO
40、M ID码等,产家生产芯片时就已经用激光刻制写入。ROM数据的第一个8位表示单线产品的分类码,一共可以有256种不同类型的芯片接下来的48位就是本模块关心的可寻址的标识器件的序列号,可见每种器件要生产281 474 967 710 656片后才会出现重码,简而言之,这个数字相当于全球人均5万片,因而是不可能相同的,这也使得一根总线上挂多个温度传感器DS18B20成为可能。 具体的软件编写过程 : 将单个的温度传感器DS18B20复位,再向总线上写入33H(读存储器操作命令字),接着读出数据存储,显示出来,将64位的序列号记好,这样逐个的将所用的每个温度传感器DS18B20的序列号都读出来,以备
41、随后编程所需。 CRC模块 在进行多点测量时,敏感元件与数据采集系统一般要有一定的距离,不可避免的要遇到电磁干扰、信号衰减等问题,使数据发生错误,如果在数据的传送过程中具有一定的容错能力,在纠错范围内,就可以对错误的数据进行纠正,提高抗干扰能力和加大传输距离;当错误超出纠错范围时,也可以识别出错误的数据就进行重新采集,从而提高了所采集的数据的可信度,检验与纠错可以用硬件或软件进行处理。温度传感器DS18B20在设计时已经为用户提供了用于检验与纠错的循环冗余检验码(cyclic redundancy code ,CRC)。 由温度存储器的低位字节、高位字节,低温报警触发器TL,高温报警触发器TH
42、,配置寄存器和CRC字节组成了温度传感器DS18B20的数据存储器,共九个字节,结构如上图。其中温度存储器的低字节和高字节是以补码形式存放的,两个字节所对应的16位二进制数中最低四位是温度值的小数部分,最高五位是符号扩展,0表示正数值,1表示负数值,其余为整数部分,图中CRC是通过CRC发生器产生的,CRC发生器产生的逻辑电路是由移位积存器和异或门组成,也称位除法逻辑电路,CRC发生器产生的逻辑电路对应的表达式是+ + +1(对应的二进制数为100110001),称为生成多项式,记为g(x),实际应用中就是通过其中除法逻辑电路对一组数据进行检验和纠错,如果速度允许,也常使生成多项式g(x)通过
43、软件方法进行检验与纠错,用CRC码进行的检验和纠错,CRC检验的算法与编码的算法是相同的,检验时要将CRC作为数据同时进行计算,一般有直接算法,改进算法和查表法。 直接算法 :用生成多项式g(x)直接进行检验的方法是将数据低字节放在前,然后用g(x)去做异或除法,得到的余数若为0,则表示数据正确,余数不为0,则表示数据有错,通过余数便可以知道结果是否正确。温度传感器DS18B20的CRC 码是可以纠正一位错误的。 改进算法 :直接算法在实际应用中由于要求必须将数据低字节低位在前,并且要将几个字节做连续的整体处理,所以处理起来显得很不方便,由于循环次数较多而需要的时间也长。改进算法可以更为方便的处理。该算法是对数据进行逐个字节处理,处理顺序由低字节到高字节。这里首先将CRC单元赋0,取一个字节数据,做异或运算并将结果存入暂存单元AY,然后字节左循环移,如果AY的最低位是1,则CRC与十六进制数18H做异或运算且左移;否则CRC只左移在将AY的最低位移入CRC的最高位,做完一个字节之后,将CRC的结果与下一字节作同样处理直至最后一个字节处理完。 查表法 : 从改进算法中看到这种方法是一个字节一个字节进行处理的,由于一个字节的值从0255只有256个整数,这样利用改进算法的核心算法将256个值的结果先计算出来,然后查表计算行 0
链接地址:https://www.31ppt.com/p-3982688.html