基于FPGA的多路温度采集系统设计
2015-12-12郑丽娟
郑丽娟,王 梅,王 宁
(河北科技大学 信息科学与工程学院,河北 石家庄 050018)
基于FPGA的多路温度采集系统设计
郑丽娟,王梅,王宁
(河北科技大学 信息科学与工程学院,河北 石家庄 050018)
摘要:在现代生活中,温度是非常重要的测控参数,为了有效采集并监测室内温度,文中结合FPGA的特点,采用智能温度传感器DS18B20作为温度采集的器件,通过对四路温度进行采集、存储、显示和串口传输,做了系统的硬件、软件和界面设计,完成了整套温度采集系统。最后在上位机上显示各路温度,并对超出设定温度做报警提示。实验证明,该系统稳定可靠,具有一定的应用价值。
关键词:数字温度传感器;温度采集;串口;VB6.0
0 引 言
在现代工业生产和生活中,温度是实时接触的物理量,温度的监测就显得尤为重要。传统的温度采集大多采用单片机作主控芯片,但随着采集系统对速度性能要求越来越高,相比传统的温度采集系统,FPGA 的优势就凸显出来了。FPGA的内部程序是并行运行的,在同一时钟周期内可以进行多个操作[1],体积小,管脚多。系统采用DALLAS半导体公司生产的一线总线智能温度传感器,用独特的单线通讯方式,实现微处理器与DS1820的双向通讯。为提高温度采集的速度,本设计不在一根数据线连接多个DS18B20采集多点温度,而是采用多端口并行驱动的方法,使每一个DS18B20 的数据线分别连接到FPGA的不同I/O 端口。与其他系统相比,该系统测温更加简单、精度高、抗干扰能力强、工作稳定可靠,在现实应用中有很好的测温效果,可以应用在诸多领域。
1 数字温度传感器
1.1 DS18B20的特点[2]
DS18B20的特点如下:
(1)测温范围是-55 ℃~+125 ℃。
(2)符合TTL电平,不需任何的外围元器件,可直接和微处理器的I/O口相连。
(3)每个传感器都有唯一产品序列号,可实现单线多挂接。
(4)温度转换分辨率为9~12 bit。在12位温度转换分辨率的情况下,转换时间为750 ms。
1.2 DS18B20的内部结构和表示方法
DS18B20的内部功能模块主要有64位ROM、高速暂存寄存器、温度传感器和非易失性报警触发器和配置寄存器构成。
传感器收到温度转换命令后,便开始启动转换。转换完成后的温度值是以带符号扩展的16位二进制的形式存储在高速暂存存储器的byte0和byte1两个字节中。FPGA可通过单总线接口读到该数据。若测温结果为正,则高5位S均为0,只要将数据输出结果乘以0.0625就可得到实际温度。若测温结果为负,则高5位S均为1,数据输出值需取反加1,再乘0.0625便可得到实际温度。
1.3 DS18B20的操作时序
由于DS18B20采用1—Wire总线协议,因此,对读写的数据位有着严格的时序要求。其工作步骤分三步:首先要初始化;然后执行其ROM操作命令;最后执行DS18B20的功能操作命令。
DS18B20的ROM操作命令[3]有:搜索ROM命令(F0H)、读ROM命令(33H)、匹配ROM命令(55H)、跳过ROM命令(CCH)、报警搜索命令(ECH)。功能操作命令有:温度数据转换命令(44H)、读暂存器命令(BEH)、写寄存器命令(4EH)、复制寄存器命令(48H)、调回寄存器(B8H)、读取供电方式命令(B4H)。
该协议定义信号的时序:初始化时序,读、写时序。这些时序都是把FPGA作主设备,DS18B20作从设备。
2 温度采集系统组成
温度采集系统由以下几个部分组成:温度采集、存储、显示、传输和上位机显示等。系统总体结构框图如图1所示。
图1 系统整体结构
利用DS18B20数据接口的特点和FPGA的高速并行处理来对室内温度进行采集。FPGA发送各种指令,在时钟的驱动下,不断向温度传感器发初始化、温度转换等指令,严格地控制各传感器工作。用 QuartusⅡ软件自带的参数化模块库定制四个FIFO,存储测量的温度数据,再把这些数据进行处理,并将其中一路温度在数码管上显示,用来检测此路温度和上位机显示的是否一致,最后通过RS232串口将采集到的数据传送给上位机。系统采用多端口并行驱动的方法来采集四路温度[4],实现对这四个DS18B20 进行同步操作。 每一路都可以独立完成各自功能,这样省去了查询总线器件序列号的操作,使软件编程简单化,节省了存储空间。
3 硬件设计
选用Altera公司的Cyclone系列芯片,芯片型号为EPlC3T144C8,采用TQFP封装形式。
此系统的硬件设计是在Altium Desiger10的平台上完成的。它是由FPGA最小系统电路及传感器连接电路、显示电路、串口电路这些外围电路组成。
时钟采用50 MHz片外晶振,电源是5 V供电,经稳压后得到3.3 V和1.5 V电压。温度传感器供电采用DS18B20外部电源供电方式。设计采用4位八段式的共阳LED数码管,由于所需驱动电流较大,用9012 PNP三极管进行驱动,利用三极管的开关特性,当在三极管的基极输入低电平时,开关闭合,位选端输入1,数码管亮。在串口电路设计中,RS232接口的信号电平值在5~15 V之间。该信号电平采用负逻辑,即:逻辑“l”,-5 V~-15 V;逻辑“0”,+5 V~+15 V。因为RS232的电平与电路板之间表示的逻辑状态不同,须使用电平转换电路才能与TTL电路连接。本设计选用美信公司的MAX3232芯片,具有价格低、功耗低等优点,外接0.1 μF的电容来实现TTL电平和RS232电平转换。
在原理图和器件封装完成之后就可以生成相应的PCB,按照规则对这些元器件进行合理的布局、布线,最后敷铜并检查。
4 软件设计
软件设计平台是Altera公司的Quartus II,其设计输入有硬件描述语言和原理图输入两种方法。采用两种方法相结合设计,在利用Quartus II自带的宏功能模块基础上再设计其他模块。
4.1 温度采集模块
由于系统采用50 M晶振,而温度传感器却是以μs来计数的,所以先对系统50 M的基准时钟分频来产生DS18B20所需的1 M时钟信号,仿真如图2所示。
图2 分频仿真
由于每个IO口上只接有一个温度传感器,不需要读取其序列号,只需严格按照DS18B20的时序用Verilog HDL语言进行编程[5],在端口定义时,DQ的端口类型为inout。流程图如图3[6]所示。
图3 DS18B20的工作流程图
4.2 温度存储模块[7]
本文调用宏模块来设计四个同步FIFO,设置数据宽度为32 bits,深度为32words,作为四个通道的缓存器分别对四路温度进行缓存,如图4所示。
图4 FIFO模块
4.3 温度显示模块
并行采集的四路温度每路输出16位二进制数据,并把结果分别存储到各自的FIFO中,从FIFO出来的数据送到此模块,并取低10位数据分离为SM1、SM2、SM3、SM4这四个字符,分别为温度值的十位、个位、十分位、百分位。设计采用动态扫描的方式,把要显示的数字译成段码的形式在数码管上显示。此模块用来测试其中一路温度与串口调试出的结果是否一致,在实际中可以根据实际情况来确定是否使用数码管[8]。
4.4 串行发送模块
目前串行数据的传输大都采用异步通讯的方式,数据传输通常以字符为单位组成帧进行传送,设计采用1位起始位、8位数据位和2位停止位来传输。
串行发送包括波特率发生和串口数据发送两个模块。波特率发生模块负责用50 MHz的晶振来产生9 600 bit/s的时钟信号,而串口数据发送模块负责发送数据。数据传送时先发起始位,其逻辑为0,再由低到高依次发送8个数据位,最后发停止位,其逻辑为1。串行发送电路的仿真图如图5所示。
图5 串口仿真
4.5 上位机软件设计
设计采用Visual Basic 6.0开发环境[9],VB提供了许多可视化控件,给用户提供极大方便。由于VB可以自动生成程序结构框架,用户只要自己在框架中添加代码便可设计出想要的界面,操作简单。
VB 6.0提供了通信控件MSComm[10],可实现串行数据的发送、接收,每一路的温度都设置了不同的报警温度,当采集的温度超过报警温度,显示异常;当低于报警温度,显示正常。设计此界面的步骤如下:(1)新建一个工程;(2)创建窗体;(3)放置所需控件;(4)设置控件的属性;(5)添加代码程序;(6)保存文件,调试并运行。
5 系统实现
经过QuartusⅡ编译、仿真、调试之后,进行投板制作,焊接各个元器件及芯片,用万用表和示波器进行测试,最后将程序下载到板子上。系统上电后,在FPGA的控制下DS18B20不断地进行温度采集、存储、传输,最后在上位机编程界面上显示四个通道的结果和整个系统的实物,如图6所示。数码管上的温度显示的是第一通道的温度,与上位机上的第一通道温度一致。
图6 系统实现
6 结束语
本文利用FPGA和DS18B20设计并实现了一种用于检测室温的多路数字温度采集的设备,并行采集的方法节约了时间。基于QuartusII开发平台,用Verilog语言和原理图相结合模块化的完成软件程序设计,最后下载验证。实现的系统简单可靠,抗干扰能力强。系统可以应用在一些粮仓、蔬菜大棚、生产车间、煤矿、路面等一些需要实时监测温度的场合,在一些生产条件恶劣的环境中也可以发挥此系统的优势。
参考文献:
[1]胡建革,宋海声,陶中幸.基于FPGA 的数据采集与显示系统的设计[J].仪表技术与传感器,2012,(3):53-55.
[2]杜建华,张认成.基于低压电力载波通信的温度采集系统[J].仪表技术与传感器,2007,(5):31-34.
[3]沈莉丽, 陈钟荣.基于CPLD和DS18B20的多路温度检测系统设计[J].电子器件,2008,31(4):1252-1255.
[4]张俊生.基于DS18B20 多点测温系统的改进[J].科技资讯,2008,(34):5-6.
[5]袁宝红,付奎,张德祥.基于 FPGA 和 LabVIEW 的 USB 数据采集与传输系统[J].仪表技术与传感器,2013,(9):24-27.
[6]冀勇钢,杨赫天. 基于单总线温度传感器的多点测温系统设计[J]. 现代电子技术,2010,(12):23-25.
[7]刘华.多通道数据采集系统设计[J].电子科技,2012,25(6):24-26.
[8]陈敏.基于 FPGA 的蔬菜大棚无线温度测控系统设计[D].太原:中北大学,2011.
[9]冉伟刚.温室大棚数据采集系统[D].兰州:兰州大学,2010.
[10]黄天强. 基于VB6.0的RS232串口通信研究与实现[J]. 科技信息,2010,(31):67.
冯晓培(1989-),女,河南郑州人,硕士研究生,研究方向为电力电子与电力传动。
李秋如(1991-),女,广东佛山人,硕士研究生,研究方向为电力电子与电力传动。
郭思远(1989-),男,河南信阳人,硕士研究生,研究方向为电力电子与电力传动。
设计应用
Design of Multi-Channel Temperature Acquisition System Based on FPGA
ZHENG Li-juan, WANG Mei, WANG Ning
(College of information science and engineering, Hebei University Of Science and Technology,
Shijiazhuang,Hebei 050018,China)
Abstract:In modern life, temperature is a very important control parameter. In order to effectively collect and monitor the indoor temperature, a whole set of multi-channel temperature acquisition system based on FPGA and smart temperature sensor DS18B20 is presented in this article. The system collects, stores and displays information of four temperatures, which is then transmitted to the PC via serial port. The whole design includes hardware, software and interface design. The system finally displays the temperature in the computer, and will alarm if temperature exceed the set value. Experimental results show that the system is reliable and has a certain value.
Key words:digital temperature sensor; temperature acquisition; serial; VB6.0
中图分类号:TP212
文献标识码:A
文章编号:1009-3664(2015)02-0047-03
作者简介:郑丽娟(1988-),女,硕士研究生,研究方向为数字交换与传输。 陈小琴(1989-),女,山西朔州人,硕士研究生,研究方向为电力电子与电力传动。
收稿日期:2014-12-5 2014-12-20