在同时需要D/A和A/D转换功能的仪表中,可以用一片A/D转换器和一片D/A转换器来分别实现A/D和D/A转换功能,但由于A/D和D/A转换器芯片的价格都较高,仪表的成本也将较高。笔者在某工业仪表设计中采用可编程双通道D/A转换器TLC5618的一个通道实现D/A转换的同时,用它的另一个通道通过软件编程以逐次比较方式来实现A/D功能。实际应用效果较好,该应用方法具有以下特点:①节省一片A/D转换器,降低了仪表成本。②TLC5618体积小(8引脚的小型D封装),便于小型化设计,减少了印刷线路板面积。③TLC5618采用3线串行数据输入方式,占用CPU的I/O口线少,硬件搭接简单,外围器件少,软件编程方便。④对于标准信号1~5V信号TLC5618的分辨率至少可达到1.3mV,完全可满足工业过程控制精度要求。⑤通过软件编程以逐次比较方式来实现A/D转换建立时间约为400μs。
TLC5618应用实例
下面具体介绍采用一片可编程双通道D/A转换器TLC5618的一个通道实现D/A转换的同时,用它的另一个通道通过软件编程以逐次比较方式来实现A/D转换功能的实际应用方法。其硬件设计如图1所示
TLC5618是带有缓冲基准输入(高阻抗)的双路12位电压输出数字模拟转换器(DAC),8引脚的小型D封装,需+5V 单电源工作,其输出电压范围为基准电压的两倍,因此,电路设计采用了1.2V基准电压(如LM385)。
通过CMOS兼容的3线串行总线单片机可以对TLC5618实现数字控制,器件接收用于编程的16位输入字产生模拟输出。16位输入字的高4位为编程控制位,通过对编程控制位的设定,可以有三种不同的输出方式,低12 位为被转换的数字量。数据从串行数据输入端DIN按从高位到低位的顺序依次输入,单片机串行通讯可工作在操作模式0下,串行口作同步移位寄存器用或采用其它I/O口模拟串行口方式实现数字控制。这里值得注意的是单片机工作在操作模式0下时,串行口发送或接收的是8位数据,且低位在前,与TLC5618的数据接收时序相反。因此单片机应先将数据进行高低位交换后再进行数据发送。
1.D/A功能的实现
该功能只占用TLC5618的OUTB输出通道,若指定建立时间为3μs,则前4位编程控制位应为00xx。前4位编程控制位和被转换的12位数字量组成高8位+低8位=16位的输入字,从串行数据输入端DIN按从高位到低位的顺序依次输入,转换结果电压从TLC5618 的OUTB输出。
2.A/D功能的实现
在本电路中没有单独使用A/D转换器,A/D转换功能是通过双路D/A转换器TLC5618的另一个输出通道OUTA,通过一级放大电路和比较电路,并通过软件编程采用逐次比较法来实现的。即在双通道D/A转换器TLC5618的串行数据输入端DIN逐次输入按位依次指定的12位数字量(如x800h),并将每次输入数字量的D/A转换结果同实际输入的模拟电压进行比较,根据比较结果来决定每次指定的位应为"0"或"1",当最后一位确定后,这个按位被指定的数字量就是最终A/D转换结果。具体原理如下:
每次A/D转换过程中,前4位编程位一直为10xx。前4位编程位和后面12位转换数字量构成高8位+低8位=16位的输入字。
每次A/D转换前先指定12位输入数字量(不包括4位编程位)的最高位为 "1"输入TLC5618进行D/A转换,D/A转换的结果从OUTA输出后,经过一级放大电路,通过比较电路与实际输入的模拟电压比较。若转换结果电压大于输入的模拟电压,则三极管T1基极为高电平,T1导通,P0.2被下拉为低电平;否则转换结果电压小于输入的模拟电压,则三极管T1基极为低电平,T1截止,P0.2被上拉为高电平。单片机通过检测P0.2的状态,如果P0.2为高电平,则保留本位的"1";否则P0.2为低电平,则将本位的"1"变为"0"。这样12位数字量中的一位就被确定下来,然后再指定下一位为"1",再经过D/A转换、放大、比较,并检测P0.2的状态,该位又被确定下来。依次类推,直到12位数字量全被确定下来,这个12位的数字量的D/A转换结果将最接近输入的模拟电压,它实际就是A/D转换的结果。注意单片机在检测I/O比较结果状态时,应加入约为10μs的时间延时。
另外,本电路仅具有一个模拟量输入信号,如需有多个模拟量输入信号,可不必加模拟开关,只需增加比较电路即可,多个模拟量输入信号均可与D/A转换器经一级放大电路的输出信号比较,并通过相应的A/D转换子程序实现A/D转换。
结语
在工业仪表日益向多功能化、智能化、小型化发展的今天,双通道D/A转换器TLC5618以其优势的性能越来越受青睐。该电路应用充分发挥了TLC5618性能特点,大大降低了硬件成本,提高了产品的性能价格比。笔者认为可编程双通道D/A转换器TLC5618是一种值得广泛推广应用的产品。