・数字技术・ 基于FPGA的温度数据实时采集系统① 肖顺文 周永宏 唐正明 (西华师范大学物理与电子信息学院 四JII南充 637002) 【摘要】运用传感器技术,实时地对一定环境中的温度数据进行采集,并通过FPGA进行实时处理并 显示。系统采用模块化设计,通过固化在模块内部的程序,自动对外界温度进行采集和控制,并通 过数码管实时显示。经测试,系统运行稳定,维护简便,参数误差为0.2%,非常适用于多路及多点 温度实时采集。 【关键词]FPGA 温度 数据采集 【中图分类号]TP [文献标识码】A 【文章编号]1007-94l6(2010)01-0007-02 1前言 现使得数字电路的设计周期和难度都大大减 温度采集电路、温度数据接收模块、温度数 温度是现代生活及生产中常见的参数, 小,在数字电路的设计中得到广泛的应用。 据处理模块、温度显示模块、LED电路组成。 在工业生产、科研及医疗等需要严格进行温 本设计采用能适应恶劣环境的数字化温 温度采集电路中温度传感器为数字温度传感 度控制的行业中,需要对温度进行实时监控 度传感器DS18B20,采用FPGA芯片作数据 器DS18B20,通过传感器实现对外界环境温 和处理,就需要精度和自动化水平高、应用 处理,实现环境温度实时采集及显示。 度的采集,FPGA将在60个计数周期内将控 范围广的温度采集系统。FPGA器件高速度、 2系统工作原理 制信号传送至温度传感器中,使温度传感器 高集成、低功耗、体积小,FPGA器件的出 系统工作原理框图如图l所示,主要由 将温度信号送出。通过FPGA编程实现实时 采集温度传感器的温度数据,并实时处理采 集到的数据,并将其转换为BCD码通过数码 温度数据接收模块 管显示出当前的温度。 上 3温度数据接收模块 温度数据处理模块 温度数据接收模块与DSl8B20温度传感 器直接相连,用来控制DSl8B20的操作,并 获取数字温度值。本设计只用于测量正常环 温度显示模块 境温度,因此知道l00 ̄C以下的温度即呵。在 读取数据时,只用取DSI8B20传感器的低l2 图1 系统原理框图 位数据。模块电路原理图如图2所示,其中 CLK输入为系统时钟信号20MHz分频得到 的1MHz同步信号;DS1 8B20为与传感器相 — 。 a ̄d…q……。 一叶 卜 一 连接的双向端口,temp[11..0]为12位数字温 一.0度值输出。TemperatureO模块的功能是向 DS1 8B20输出控制命令,并将DS18B20测得 图2温度数据接收模块 的数字温度信号输出。其中,d端口向 滤波隔离后可大大减弱,增强了系统的可靠 拟量输入信号,由于噪声、干扰、开关的误 响,保证系统的可靠运行。PLC控制系统中 性。如图1。 动作、模拟信号误差等因素的影响,不可避 的干扰是一个十分复杂的问题,因此在抗干 PLC供电系统可采用如下方式,控制器 免会形成输入信号的错误,引起程序判断失 扰设计中应综合考虑各方面的因素,合理有 和I/O系统分别由各自的隔离变压器供电, 误,造成事故。当按钮、开关作为输入信号 效地抑制抗干扰,对有些干扰情况还需做具 并与主电路电源分开。当某一部分电源出了 时,则不可避免产生抖动。 体分析,采取对症下药的方法,才能够使PLC 故障时,而不会影响其他部分,如输入、输 ②软件滤波:对于模拟信号,可采用多 控制系统正常工作。 出供电中断时,控制器仍能继续供电,提高 种软件滤波方法来提高数据的可靠性。连续 参考文献 了系统的可靠性。 采样多次,采样间隔根据A/D转换时间和信 [1】陈宇.可编程序控制器基础及编程技 (2)从软件设计方面提高系统抗干扰能 号的频率而定。采样数据先后存放在不同的 巧.广州:华南理工大学出版社,l999. 力PLC内部具有丰富的软元件,如定时器、 数据寄存器中,经比较后取中间值或平均值 【2】陈在平,赵相宾.可编程序控制器技 计数器、辅助继电器等,利用它们设计一些 作为当前输入值。 术与应用系统设计.北京:机械工业出版社, 程序,可以屏蔽输入元件的误信号,防止输 4结语 2002. 出元件的误动作,提高系统的抗干扰能力。 以上的措施,经若干PLC控制系统现场 ①延时控制:控制器的外部开关量和模 实际运行表明,能够消除现场干扰信号的影 数字技术与应用 7 ・——数字技术・ DSI8B20输出控制信号;cont为三态门的使 when”l 100 =>tout(3 downto 0)<=” 0l1l”: 即为0,且小数点不亮;当片选为“101l”时, 能信号,当d向dq端口输出控制命令时, cont-1,而当dq向FPGA返回信号时,cont=O,= 为高阻态,而dq端口全程记录DS18B20的状 态,向FPGA返回测量温度值时,temperatureO 对应输出led为“10000010”,在数码管上显示 为6,且小数点不亮;当片选为“l101”时, when 1 1O1 =>tout(3 downto 0)<= 1000 ; end case; 对应输出led为“10010000”,在数码管上显示 即为9,且小数点不亮;当片选为“1110”时, 通过此端口将数字值存储输出。 这部分代码的作用将低4位二进制数小 数部分代码转换为4位BCD码。如代码所示, 输入二进制码为“1101”,代表十进制数小数 为“0.8125”,若只取一位小数位,则取“8”, 其BCD码即“1000”。 对应输出led为“00000000”,在数码管上显示 即为8,且小数点点亮。在动态扫描下,4个 4温度数据处理模块 温度数据处理模块如图3所示,为将12 位二进制温度信号数值转换为3个用BCD码 数码管上显示内容即为 069.8”,与实际输 入的数字相同。 表示的十进制数。通过十位(shi[3..O】)、个 6结语 经测试,系统运行稳定,维护简便,参 位(gel3..0】)和小数位(fen[3..0】)三个端口输 对数据处理模块tempture1进行仿真测 出。该模块的作用是将输入的12位二进制温 试。预设置输入温度二进制代码为 度数据,转换成3组二进制BCD码,每一组 “0001 l0101 1 10”,其对应十进制数应为“26. BCD码分别对应代表十位,个位,十分位十 8”。 进制数。 5温度显示模块 预先将0.0至99.9之间的所有温度值以 本设计中采用LED数码管动态显示温度 0.1摄氏度为步进都在程序CASE语句中列 的百位、十位、个位、十分位。温度显示模 出,相当于预先在程序中设置一个查找表, 块如图4所示,tempture2模块其内部由片选 这样对于输入的1O0摄氏度以内的任意温度 模块、译码转换模块和计数器模块组成,其 值都能找到与之对应的BCD码。由于设计中 中片选模块由一个二进制计数器和一个四选 所需要的温度范围不大,并且在程序设计上 一电路组成。系统工作时,cout4计数器在时 相对简单,且程序在运行过程中稳定可靠, 钟脉冲控制下依次循环产生4个两位二进制 易于人工对照和查询 数组,用于控制digit_sel模块选择输出shi[3.. 温度数据处理模块tempture1的部分 O】,gel3..0],fen[3..0Lbali3..0]四路输入信号中 VHDL代码片段如下: 的任意一路。位译码模块则依靠二进制计数 case tin(1 1 downto 4)is 器产生的循环二进制数组,控制seg—dec模块 when 000101 1 l”=>t0ut(1 ldownto4)<= 依次循环输出4位二进制数组用于各个LED O0100011 ; 数码管的点亮。译码转换模块仍然嵌入在 when 0001 100l =>tout(1 ldownto4)<= seg—dec模块中,其作用是将digit_sel模块输 ”0o1O0101 z 出的4位二进制BCD码转换为8位用于点亮 end case; LED数码管的二进制段显码。 这部分代码的作用将输入的I2位温度信 设置输入shi[3..0】,fen[3..0],gel3..0】分 号中的高8位二进制整数部分代码转换为2 别是“0110”,“1001”,“1000”,则其对应 组4位BCD码。如代码中所示,输入二进制 十进制数应为“69.8”,随着片选信号的循环 码为“00011001”,代表十进制数为“25”,输 变化,对应输出led也循环依次输出S|li、fen、 出BCD码为“0010010l”对应的十进制数为 ge、bai四输入数据,并且输出的为8位二进 “2”和…5’。 制LED数码管显示码。当片选为“0l11”时, case tin(3 downto 0)is 对应输出led为“11000000”,在数码管上显示 TEHPETURE 1 clk 0 口31.k tot.itshi【3-・0】 11..0 七i nr 1 1・・口】 tout日I【3--0 1 ge..[.3.....0..... toutf邑n【a--0】 fehi3..( 土 图3温度数据处理模块 TEHpETgRIg"己 clk 01 k ai[3..01 .tb-i【3・・口】 1-d【7-・0】 0】 hi[3..0l t¥hi C a一一0】 口¥r 3・・0】 O1 el3—0l tal【3・-口】 m[3—01 tf■nC 3-一o】 i 图4温度显示模块 8 数字技术与应用 数误差为0.2%,设计目的已经达到。本设计 采用FPGA芯片做为数据处理控制芯片,虽 然从成本上增加,但FPGA的VHDL语言在 硬件模块化构建方面具有很大的优势,可以 利用其内部的门电路最大限度地将硬件电路 模块化处理,极大降低了后期故障查检的工 作量。另外,FPGA器件的处理速度可达几 百MHz,以及有丰富的可用I/O端口,在实 现多路多点及高速温度实时采集时,优势就 凸显出来了。 参考文献 [1】单慧琳,陈钟荣,张银胜.基于CPLD 的温度采集系统的设计【J].微计算机信息, 2008,24(35):2l0~2l1,220. [2】宋亚伟,李恒宗.基于DS18B20的温度 采集控制系统【J】.机电工程技术,2008,37(O9): 89~91. 『3穆振海.基于FPGA的智能温度采集 3]控制器….微计算机信息,2008,24(2O):225~ 226,243. [4】肖金球,刘传洋,仲嘉霖.基于FPGA 的高速实时数据采集系统[J].电路与系统学 报,2005,1O(O6):128~131. [5】杨林楠,李红刚,张丽莲.基于FPGA 的高速多路数据采集系统的设计【J】.计算机 工程,2007,33(O7):246~248. [6】李健,李正平,徐超.基于FPGA—VHD L的温度控制系统设计【J】.电子技术,2008,09: 2O~21. [7】王成,乔晓军,焦春岩.分布式温室环 境信息监测系统[J】.自动化技术与应用,2005, 24(01):54~56. 基金项目 四川省教育厅科研基金重点项目 (07ZA l27) 作者简介 肖顺文(1970一),男,副教授,硕士,主 要从事FPGA教学及研究工作。