田野
摘 要:本文提出了一种基于FPGA的单总线多点测温的应用设计方案,只需3根线就能完成几十个甚至上百个温度点的测量,与通常单线单点测温相比,具有线路简单、占用资源少、扩展维护方便等特点。通过实验样机验证:基于FPGA的1-wire多点测温设计方案是可行的,已成功实现单总线8个温度点的实时测量,并试验样机工作稳定可靠,此设计方案可应用在工业生产、民用生产、军工设备等设施的多点温度检测与控制等领域。
关键词:单总线 DS18B2 0FPGA 单点测温 多点测温
中图分类号:TP271.5 文献标识码:A 文章编号:1672-3791(2018)04(b)-0006-02
1-wire单总线技术,即一根线既传输时钟又传输数据,而且数据传输是双向的,在微功耗的运用下还能做寄生供电的电源使用,是目前结构最简单、成本低廉且便于扩展维护的一种数据传输方式。这种技术具有线路简单、硬件开销少等显著优点,广泛用于工业生产、民用生产、军工设备等设施的温度检测与控制[1]。
单总线技术是MAXIM全资子公司DALLAS的一项专有技术,与目前多种串行数据通讯方式(SPI/IIC)不同,它采用单根信号线。目前常用的单总线器件很多,涉及到温度传感器、EEPROM、实时时钟等很多种类,市场上运用最为广泛的芯片之一就温度传感器DS18B20。
1 单总线温度测量原理
在日常生活及工农业生产中经常要用到温度的检测及控制,传统的测温元器件有热电偶、热电阻、而它们测出的信号一般都是电压信号,需要外部硬件电路支持,把模拟量信号转换成数字量信号便于显示和控制。本文为了低成本和工程化设计,采用温度传感器DS18B20通过FPGA的IO口直接获取温度数字量信号,这种单总线数字信号传输技术,具有抗干扰性高、可靠度高、传输距离远等优势。
DS18B20是美国DALLAS公司生产的单总线数字温度传感器芯片,采用3引脚TO-92小体积封装和8脚SOIC封装,测量温度范围-55℃~125℃,具有9~12位AD转换精度,最小温度分辨率可达0.0625℃,以16位补码方式串行输出所测量的温度值。
2 方案设计
DS18B20供电方式分為:内部寄生电源和外部电源两种形式,在连接方式上分为单片连接和多片连接,前者形成单点测温系统,后者构成多点测温系统[2]。
2.1 单点测温硬件设计
DS18B20工作在寄生电源模式下时,从信号线DQ上汲取能量,DQ高电平时DS18B20吸收能量至内部电容,DQ低电平时利用内部电容的能量工作,从而实现在不需要本地电源的情况下远程测温;其电路连接如图1所示。
2.2 多点测温硬件设计
DS18B20工作在外供电源模式下,多个DS18B20可以并联到3根线上,此时FPGA只需一根端口线就可以实现与多个DS18B20传感器的通讯,这样只占用微处理器的一个IO端口,就可实现多点测温系统[3]。
DS18B20有一个存储于ROM中激光刻制的64位序列号,是该DS18B20地址序列码,每个DS18B20序列码均不相同。64位长的唯一ROM码中,开始8位(28H)是产品类型
标识号,作为单总线器件识别码,接下来48位是器件唯一序列号,最后八位是前56位的CRC校验码。ROM中序列码的作用是使每一个DS18B20都各不相同,这样就可实现一根总线上挂接多个DS18B20。当有许多单总线器件连接在同一总线上时,系统可通过序列号将需要访问的器件挑出来,一旦知道每个器件的地址,就可以利用该地址选择相应器件进行通讯。三线制电路连接如图2所示。
2.3 软件设计
软件基于FPGA采用Verilog编写,主要完成DS18B20初始化、写时序操作、读时序操作、数据发送等功能。
2.3.1 复位时序
DS18B20工作时,首先FPGA控制总线DQ将DS18B20复位,然后才能执行其他命令。复位时,FPGA将总线拉为低电平并保持616μs,然后释放总线;DS18B20检测到复位低电平后,立即响应复位命令,控制总线并拉高75μs;至此,完成复位操作。
2.3.2 写时序
FPGA控制DS18B20总线,执行写数据时序时,先将总线DQ置为低电平,保持时间5μs;DS18B20在数据线变成低电平后15~60μs内对数据线进行采样。因此,FPGA根据写数据的内容“1”或者“0”将总线DQ相应拉低5μs或拉低75μs,然后释放总线,完成一个比特位写时序的操作;依次类似完成其他比特位写时序的操作。
2.3.3 读时序
FPGA读取DS18B20温度数据时,先将数据总线DQ置为低电平,保持时间8μs,然后释放数据总线;DS18B20控制总线,在数据线从高电平变为低电平的22μs内将一个比特位数据送到总线DQ上;因此,FPGA根据时序在释放总线4μs后读取总线数据,完成第一个比特位的采样;
2.3.4 温度数据格式
DS18B20中有两个高速暂存器,存放16位二进制温度数据,高5位是符号位,其余11位是数据位;如果温度大于0℃,符号位为0,取得暂存器里面数值乘以0.0625,即实际温度值;如果温度小于0℃,符号位为1,取得暂存器里面数值取反加1,再乘以0.0625即实际温度值,如表1所示。
2.3.5 程序流程
FPGA对DS18B20的操作流程:先对DS18B20初始化,然后发操作指令,最后对高速暂存器操作。单总线模式下DS18B20每一步操作都需遵循严格的时序和通讯协议。程序流程如图3所示。
3 结语
通过样机验证:基于FPGA的1-wire多点测温设计,实现8个温度点的实时测量,样机工作稳定可靠,测量分辨率达0.062℃,并在所内多个惯导及导航型号产品中得到验证。
整个系统设计采用3根并联在一起,占用资源少,扩展维护方便,支持多达上百个多点温度测量,具有抗干扰性高、可靠度高、传输距离远等优势,适用于工业生产、民用生产、军工设备等设施的多点温度测量。
参考文献
[1] 余瑾,姚燕.基于DS18B20测温的单片机温度控制系统[J].微计算机信息,2009(8):105-106.
[2] 陈勇,许亮,许海阔,等.基于单片机的温度控制系统的设计[J].计算机测量与控制,2016,24(2):77-79.
[3] 王剑飞,程耀瑜,王鹏,等.基于FPGA和DSP的多路信号采集系统的设计[J].电视技术,2013,37(23):57-60.