在做一个电化学的仪器,实现功能是测量葡萄糖和双氧水的浓度。辅助电极需要提供一个负0.2V到正0.6V以50mV为步长的交变的电压。控制采用ATmega128单片机,DA模块采用DAC902芯片。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
DAC902是一款高速的数模转换芯片,提供了12位的转换精度,完全满足项目的需求。
故下面分享一些调试心得yle="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt">
DAC902满比例输出电流(the full-scale output current)Iref由(Internall reference voltage )内部参考电压为Vref=1.24V和外部电阻Rset共同决定,Iref=Vref/Rset,最终输出全摆幅电流Ioutfs由Iref与乘积因素32相乘得到,Ioutfs=Iref*32(即:Ioutfs=32*Vref/Rset),其有效区间必须在2~20mA之间。
这里我们选择内部参考电压Vref=1.24v,Rset选择为2k,这样输出的全摆幅电流Ioutfs为20mA。
总电流输出Ioutfs由两部分组成:Ioutfs=Iout+I~out。且两输出电流Iout和I~out由12位数据输入的数据大小Code决定:Iout=Ioutfs*(Code/2^12); I~out=Ioutfs*(4095—Code)/2^12。
电流输出通过负载电阻(Rload)转化为电压输出,Vout=Iout*Rload,V~out=I~out*Rload。
Rload选择为50k,Vout+V~out=2V。
上述两输出电压Vout和V~out能够算出差分输出摆动电压,公式如下:
Voutdiff=Vout-V~out=(2*Code-4095)/4096*Ioutfs*Rload
(V1-Vn)/R1=(Vn-Vout)/R2 (1)
(V2-Vp)/R3=(Vn-0)/R4 (2)
Vp=Vn (3)
……
联立上述公式的Vout=2*(V2-V1)
由于Ioutfs=20mV,Rload=50Ω,所以Vout=2*(2*Code-4095)/4096V,Vout的范围为负2V到正2V。符合项目要求的电压范围。
DAC902芯片管脚图:
DAC902典型电路如下:
时序分析:
程序如下:
void DAC902_write_dat(uint16 data)
{
DDRB |= 0xf0;
DDRC = 0xff;
DDRE = 0xff;
PORTC |= 0x40; //PC6 = 1
PORTE = data % 256; //将低8位写入PE口
PORTB = data >> 4; //将高4位写入PB口
PORTC &= ~0x40; //PC6 = 0
nop(1);
PORTC |= 0x40; //PC6 = 1
nop(1);
}
系统时钟为16M。
文章评论(0条评论)
登录后参与讨论