叶 欣 李婷兰 徐晶晶 刘军宁
(1.光电油气测井与检测教育部重点实验室 西安石油大学 710065;2.大庆钻探工程公司地质录井一公司 大庆 163411)
工业上普遍需要测量各类非电物理量,如温度、压力和振动等,将采集得到的数字信号进行现场处理。若需要将信号长距离传输至控制柜或者显示设备,此时要把数字信号转化为电流信号。电流信号由于其极强的抗干扰能力和低功耗,在工业测量和控制过程中得到了广泛应用。本文结合电潜泵测试仪,提出基于TLV5637 的毫安级电流信号发生器设计方法。TLV5637 是TI 公司的一款双通道10 位电压输出D/A 转换器件,具有操作简单,成本低等优势。本文设计的电流信号发生器结构简单、成本低,适用领域广,有很好的通用性。
基于TLV5637 的数字信号转电流信号发生器,硬件结构简单,易于调试。本系统硬件部分主要由微控制器、D/A转换芯片,以及电流环电路组成。总体框图如图1 所示。系统分为2 个模块部分,包括MCU 与TLV5637 接口电路和模拟电流环电路。D/A 转换芯片将原始数字信号转换为模拟电压信号,电流环电路部分实现电压信号转电流信号功能。结合工程实际,本文采用AT89C51 控制I/O 口模拟SPI 总线通信控制TLV5637,系统软件实行模块化编写,易于移植和调用。
图1 系统整体框图
图2 为系统DA 转换模块的硬件接口连接示意图。结合系统实际,为了隔离工频干扰以及提高数字信号传输的可靠性,系统采用TLP521 光电耦合器件将微控制器和D/A 转换芯片进行有效的电气隔离,增强系统的可靠性。
图2 TLV5637 和AT89C51 接口连接图
图中DIN、SCLK 和CS 等3 个信号线通过TLP521 分别与单片机的P1.5、P1.6、P1.7 相连,OUTA、OUTB 为模拟电压输出端。电阻R5 分压为芯片提供参考电压,参考电压的大小决定满量程模拟输出电压的大小。输出电压的幅度由下式决定:
CODE 为所写入的电压数据值,REF 为所设定的参考电压。此外,在写入电压数据时,12 位的数据只保持高10位有效,低2 位被忽略。
TLV5637 只支持16 位的数据格式,16 位的数据包含两个部分:编程位和数据位。高4 位分别为R1、SPD、PWR 和R0 编程控制位。SPD 为速度控制位,1 表示快速,0 表示慢速;PWR 为工作模式控制位,1 表示掉电模式,0 表示工作模式;R1 和R0 为寄存器选择位,其写入选择表如表1所示[1]。
表1 TLV5637 的寄存器写入选择
10 位数据位确定一个新的DAC 值。12 位数据位中,D1 和D0 组合位决定芯片参考电压的来源,其中“00”或“11”均表示参考电压取自外部REF 引脚,“01”表示采用内部参考电压1.024 V,“10”表示采用内部参考电压2.048 V。图3 为TLV5637 编程时序图,数据采样均在SCLK时钟的下降沿发生。
图3 TLV5637 编程时序图
在大多数应用场合,尤其是工业应用环境,电流信号通常是优先考虑的信号传输方式。由于这种信号方式传输的距离长,且不需考虑噪声、线长、压降和线路阻抗等的影响,从而使电路传输性能大大提高。电流环电路原理图如图4所示。电路采用LM324 和LM358 级联后接一个复合型PNP 管搭成。A1,A2 为LM324 的两个运算放大器,A3 为LM358 运算放大器。LM324 是带有差动输入的通用放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式。差分输入具有很强的抑制共模信号的能力,可以有效克服温度漂移问题。LM358 内部包含两个独立的、高增益、内部频率补偿的双运算放大器。A1 运算放大器的输出端反馈到反相输入端,构成一个电压跟随器,实现阻抗变换。A2 的同相输入端偏置为2.5 V,利用连个相等的电阻R3、R4 实现一个求差电路。电流环电路尾部由一个PNP 与NPN 型组成一个PNP 复合管,复合管的共射级电流放大倍数为两个BJT 管子共射级电流放大倍数之积。复合管基极与运算放大器A3 的输出端相连,可输出和输入电压成线性比例关系的电流信号,并具有相当高的精确度。
图4 电流环电路原理图
本系统软件主要是由C 语言编程实现,采用GPIO 口模拟SPI 通信的方式,实现微控制器对TLV5637 的访问。根据实际工程,主控器采用AT89C51 单片机,该芯片是一个带有4 K 字节Flash 存储器的低电压、高性能的CMOS 微控制器。AT89C51 为很多微控制器提供了一种灵活而且廉价的方案。图5 为单片机GPIO 口模拟SPI 通信向TLV5637 写入一个16 位数据的程序流程图。单片机首先拉低CS 引脚选定片选信号,置高SCLK 信号后向DIN 发送一位数据信号,再置低SCLK 信号,数据在SCLK 下降沿保持有效即可。按时间顺序,依次由高到低串行输入16 位数据。
图5 写入一个数据的程序流程图
根据整形数据发送流程图,发送数据的实现代码如下:
DA 转换子程序代码如下:
上述的发送数据代码,只需稍加修改,可有效移植到51 单片机对各种SPI 串行通信器件控制或者其他微控制器对TLV5637 控制程序中。但是修改过程中需要注意不同器件的延时要求,保证器件的信号建立和保持的时间满足时序要求。
根据上述方法,本实验选用外部1.25 V 参考电压,运放LM324 和LM358,2SC2655 和2N5401 组成PNP 复合管来构成电流信号发生器。经过实验测试,可以产生高线性度,长期工作稳定的毫安级电流信号,其精度在误差范围内,符合潜油电泵测试仪对输出电流信号的要求。实验的输入数字信号和测得的输出电流信号结果如表2 所示。
表2 基于TLV5637 的电流信号发生器实验结果
本文提出了基于TLV5637 的电流信号发生器设计,利用AT89C51 的GPIO 口模拟SPI 通信,实现串行对D/A 转换芯片TLV5637 的控制访问。将数字信号转换为模拟电压信号后,电流环电路模块将模拟电压信号再转换为电流信号。该方法具有一定的普遍意义,稍加改动即可应用于各类测试系统。其中微控制器模拟SPI 通信也有较高的通用性,可以移植到各类微控制器中。多次实验证明,该设计可靠可行,并具有较高的精确度。
[1]Texas Instruments.TLV5637 Datasheet[R].Texas Instruments,2000.
[2]郭天祥.51 单片机C 语言教程[M].北京:电子工业出版社,2011.
[3]康华光,陈大钦,张林.电子技术基础[M].北京:高等教育出版社,2006.
[4]赵磊,赵英明,赵曙光.ARM 与TLV5637 的模拟SPI接口设计[J].单片机与嵌入式系统,2009(9):79-81.
[5]华成英,童诗白.模拟电子技术基础[M].北京:高等教育出版社,2006.
[6]蒙丽娜.潜油电泵井下测试系统研究[D].西安:西安石油大学,2010:8-11.
[7]谭浩强.C 程序设计[M].北京:清华大学出版社,2005.
[8]张经爱,许凯华,刘玉华.基于MSP430 的模拟SPI 串口通信的实现[J].计算机工程与设计,2008,29(5):1169-1171.