内蒙古科技大学 信息工程学院,内蒙古包头 014010
在工业领域极端恶劣的工作环境下,温度的测量常伴有巨大的撞击力或高温气体的高速流动,其共同特点是温度高且瞬态变化。工业生产中要求对温度的测量能够面向多目标且及时、精确,因此对于温度巡检仪性能的提升方法亟待研究。目前市面上常见的温度巡检仪通常以单片机为核心,有着一定的局限性,例如在面对多路同时测温时需要接入多路A/D转换器,单片机要进行仔细的资源分配与总线隔离,且运行速度很低。
FPGA有着丰富的I/O资源并能够将外部时钟倍频。基于FPGA的热电偶温度巡检仪相比于传统的温度巡检仪,具有运行速度更快、精度更高、能够处理更复杂功能、方便进行二次开发等优势。
本文基于FPGA设计了一种热电偶温度巡检仪,采用K型热电偶作为测温传感器,用高集成芯片MAX6675实现冷端温度补偿、放大和数模转换,通过FPGA对前端电路进行控制,经译码之后送LED进行显示,能够实现8路温度的测量,测温范围可达0~1000℃,在实验中每个测试点的测量温度与实际温度误差均小于10℃,整个巡检仪在测温范围内的测温误差小于1%。同时FPGA有着丰富的I/O资源并能够将外部时钟倍频,在之后的研究中有着很大的二次开发空间,在未来的高温作业中不仅可以做到更快更准,还可以更加的智能。
系统主要包括FPGA芯片、K型热电偶温度传感器、集成片MAX6675、键盘电路及显示输出。系统结构图如图1所示。
热电偶输出信号直接通过集成芯片MAX6675处理,再经FPGA芯片后在LED上显示,在显示电路之前加入了键盘,使得用户可以手动查看所需通道的测量数据,便于记录。
此设计是对八路温度进行巡回检测,主要运用了MAX6675集成芯片的强大功能,K型热电偶所测数据经CD4051多通道选择后,采用专用集成芯片MAX6675对K热电偶进行冷端温度补偿及线性化处理,通过FPGA芯片对处理后的数据进行串并转换,经译码之后送LED进行显示[1]。
CD4051是单8通道数字控制模拟电子开关,有A、B和C三个二进制控制输入端及INH共4个输入,具有低导通阻抗和很低的截止漏电流。当INH输入端=“1”时,所有的通道截止。只有当INH=0,三位二进制信号可以通过在8信道的信道选择,连接输入输出。其中VEE可以接负电压,也可以接地。其硬件电路如图2所示。
MAX6675采用8引脚SO贴片封装,主要引脚包括:
MAX6675的内部结构如图3所示,主要由热电偶模拟信号放大电路、冷端温度补偿电路、A/D转换电路及数字控制电路等组成[2]。
根据热电偶的原理,其产生的热电势满足下列关系:
式中:t—热端温度;t0—冷端温度;
0—0℃。
MAX6675采用标准的SPI串行外设总线与MCU接口,且MAX6675只能作为从设备[3]。MAX6675从SPI串行接口输出数据的过程如下:MCU使变低并提供时钟信号给SCK,由SO读取测量结果。变低将停止任何转换过程,变高将启动一个新的转换过程。一个完整串行接口读操作需16个时钟周期,在时钟的下降沿读16个输出位,第1位和第15位是一伪标志位,并总为0[4];第14位到第3位为以MSB到LSB顺序排列的转换温度值;第2位平时为低,当热电偶输入开放时为高。
此方案采用共阳极接法的七段LED数码管显示。七段数码管一般由8个发光二极管组成,其中由7个细长的发光二极管组成数字显示,另外一个圆形的发光二极管显示小数点[5]。
七段数码管每段的驱动电流和其他单个LED发光二极管一样,一般为5~10mA;由于发光材料不同,其正向电压通常为为1.8~2.5V不等。当发光二极管导通时,相应的一个点或一个笔画发光。其硬件电路如图4所示。
FPGA选型主要基于以下几点:
(1)软件开发环境:包含QuartusII软件、SOPC片上集成系统、NIOSII处理器。
(2)储量的大小:一定量的内存资源(包括RAM、ROM、FLASH、SDRAM等)、PLL 资源、逻辑块资源和 I/O 接口资源等,以减少片外资源的扩展、降低硬件开发难度。
(3)第三方开发工具: Modelsim仿真工具,VHDL 与VerilogHDL仿真器[6]。
(4)使用广泛,且包含大量的相关FPGA资料。
因为Altera 公司的产品在亚太地区使用多一些,与它相关方面的学习资料和教程相对来说比较多,基于上述几点,我们所采用的FPGA芯片为CycloneⅡ系列型号为EP2C5Q208C8N。Cyclone II能够在更低的成本下制造出更大容量的器件。这种新的器件比第一代Cyclone产品具有两倍多的I/O引脚,且对可编程逻辑,存储块和其它特性进行了最优的组合,具有许多新的增强特性[7]。板上提供了大容量的SDRAM和Flash ROM等存储单元,有2个高性能PLL与142个用户自定义I/O口可以充分满足设计需求,标准的2.54mm间距的扩展插座供用户方便使用,电源管理模块只需要外接5VDC电源即可。
通道选择部分是一个二进制模8的计数器,计数器的时钟是MAX6675数字信号的锁存信号,每次锁存数据后,计数器就会一次进行加一操作,CD4051选择下一个通道的温度信号进行采集。在QuartusⅡ中用VHDL语言设计图形如图5所示。
在状态机的采样控制部分中加入了输出数据的编码,因为要循环采集8路模拟信号,而输出为一路输出,这样就需要对输出信号进行标志,方法就是把12位数据转换为16位数据,第1位是0,第2位到第4位是标志位,标志是哪一通道数字信号,串行输出的时候可以让接受方知道是第几通道的数据。此外,由于数字信号数据锁存信号是比信道选择信号更早的一个周期,增加了延迟模块,使得每个信道可以被锁定,并且可以存储采样数据[8]。通过程序来实现对通道选择信号的延时。VHDL语言设计图形如图6所示。
在QuartusⅡ9.0环境下用VHDL程序实现MAX6675控制模块。对外部集成芯片MAX6675的控制由以下模块来实现。SCK表示串行时钟输入;当为低电平时,启动串行输入接口;SO为串行数据输出,如图7所示。
集成模块MAX6675输出数据为串行数据,为了使其通过数码管显示需要制作一个内部12位串并转换模块,将其输出的串行数据转换为并行数据。
在QuartusⅡ9.0环 境 下 由VerilogHDL程序实现串并转换模块。如图8所示。
(1)该设计读取如下的输入符号:
data_in:串行输入数据;
rst_n:复位信号。当它为高电平时,则转换复位。所有输出置零,并且准备读取下一个串行数据;
clk:时钟信号。在clk的正边沿,读入输入信号值data_in,转换输出也只在clk的正边沿有效。
(2)该设计产生如下的输出:
data_out:串行数据转换后的12位输出值;
dout_en:输出位。在clk的正边沿时,该信号为‘1’,表示data_out被读取;
在数字系统中,常常将译码输出显示为十进制数字或其他符号。因此,能直接驱动数字显示器,或者能与显示器配合起来使用。七段数码管有共阴极和共阳极接地两种接法[9]。共阴极地需要解码器输出一个高电平来驱动数字管,而公共阳极地需要解码器输出低驱动数字管发光。
本设计中采用的是共阳极接法,用到的数码管共有5个,第一个用38译码器将CD4051选通的通道号进行译码显示,后面四个对所测温度读数显示,可以直观的看到测量的通道号及其对应的温度。
其模块如图9所示,定义Y为8位的输出,及设置的ls138有8个输出端口,定义A为3位的输入,由高位到低位分别为A2端口,A1端口,A0端口。
七段译码器的外部接口如图10所示,cnt为四比特的BCD码输入,led为输出,宽度为七位,即要送到LED管显示用的七段码,即a、b、c、d、e、f、g。
通过CNT[0]到CNT[2]来选择相应的通道,CD4051的输出就是最后要进行ADC采样的温度信号。例如:若CNT[0]CNT[1]CNT[2]=“000”,则选择第一通道温度信号进行A/D采样,随后每隔25ms,CNT[0]CNT[1]CNT[2]的值就会加一,ADC便会选择下一通道进行采样,当CNT[0]CNT[1]CNT[2]=“111”对第八通道采样完毕后,则会恢复至“000”,重新开始对第一通道进行采样,以此循环。这个部分实现的重点是对数字锁存信号记数,计数器的输出作为CD4051的通道选择地址,通道选择模块的仿真图如图11所示。
第一个数码管用来显示所测温度的通道号,设计要求显示数值与CD4051所选通通道一致,例如:当CD4051选通4号通道时,温度巡检仪会对4号通道温度进行测量显示,此时数码管显示输出4。设置时钟信号为100ns,及每隔100ns会从1通道变为2通道,依此类推,直到8通道后重新显示为1通道,无限循环,可以实现巡检仪通道号的显示功能。仿真结果如图12所示。
多通道采样系统的实现,为一些特殊领域的实时测控提供了新的思路与方法。研究中将其运用到测温领域制作了基于FPGA的热电偶温度巡检仪,整体系统在调试中性能稳定,能够循环显示8路温度,达到了预期目标。将FPGA与集成度较高的MAX6675芯片结合使用并通过LED及时显示,不仅使温度巡检仪运行速度更快、稳定性更好、精度更高,而且节省了开发所需空间、减少了资源消耗,在高要求的工业场合中具有很大的参考和利用价值。