打印

两个低精度DA生成高精度DAC,控制字如何衔接?

[复制链接]
8199|33
手机看帖
扫描二维码
随时随地手机跟帖
沙发
risingsun|  楼主 | 2007-8-30 15:38 | 只看该作者

说明怎么没贴上,补上

在一个信号源中要用到高精度(最少18位)高速的DAC,参考了附图所示的电路(参数如图所标注),在写软件时总是无法较好的衔接高位DA与低位DA的控制字,导致在低位DAC满度加1后,输出控制与期望的值差异很大,请高手指点,谢谢了。

使用特权

评论回复
板凳
risingsun|  楼主 | 2007-8-30 15:54 | 只看该作者

顶,请高手指点一下

使用特权

评论回复
地板
gjg191| | 2007-8-30 15:57 | 只看该作者

dd

你是希望2个da同时输出吗?

使用特权

评论回复
5
risingsun|  楼主 | 2007-8-30 16:38 | 只看该作者

是的,是想提高精度

两个DAC同时配合工作控制输出的电压值

使用特权

评论回复
6
gjg191| | 2007-8-30 16:41 | 只看该作者

dd

不可能同步的,至少有一个指令周期的差异。如果你选用高速单片机这个差异会很小

使用特权

评论回复
7
risingsun|  楼主 | 2007-8-30 17:22 | 只看该作者

谢谢gjg191,可能我没说清楚。

谢谢gjg191。可能我没说清楚,我是想用两个低精度(分别为12位和8位)DAC通过后级的反相加法器,组成一个高精度的高速DAC,因为速度快,且运放没有泻放通道,一个指令周期的差异不会有影响的。主要是按图上面公式如何衔接两个DA的控制字呢?电路没错,有一个高级信号源中DAC部分就是这样用来扩展精度的。

使用特权

评论回复
8
pheavecn| | 2007-8-30 20:39 | 只看该作者

外围电阻的精度达不到的,还不如用20bitDAC.

使用特权

评论回复
9
gjg191| | 2007-8-31 09:34 | 只看该作者

dd

先来分析电路吧,如果是5v参考电压,这个时候Ui2放大倍数为1,输出就是1:1的,Ui1放大倍数为2.7/5100=0.0005294倍那么12da一个字放大输出为0.0012207,8位da放大输出一个字为-0.00001033,那么12位da可以满量程输出0~5v 8位的只能输出0~-0.00264 ,那么如果现在要得到18位da输出的一个字(18位da的一个字为5/262144=0.00001907)那么这个时候可以看出8位da经过0.0005294倍放大后比18位da输出的一个字要小,大概在2倍左右。所以就可以看出da输出是以12位da为基础。也就是在得到设定电压以后先计算12位da所能达到的最接近设定电压的值,差的部分由8位da来补,就是这个过程。

使用特权

评论回复
10
risingsun|  楼主 | 2007-8-31 10:39 | 只看该作者

就是gjg191说的这个过程,我再消化一下。

使用特权

评论回复
11
risingsun|  楼主 | 2007-8-31 15:24 | 只看该作者

谢谢gjg191大虾指点,你的思路我理解了,这个想法很实用

谢谢gjg191大虾指点,你的思路我理解了,这个想法很实用。看来你在这方面很有经验。我再请教一下:因为电子器件的离散性,参考电压基准有5%的偏差(但稳定性及温度系数很好),另处外围电阻的精度不是太高(1%),所以在批量生产中12位DAC的输出值要一边调整,一边读ADC值两相比较,多次调整DAC值以找出最接近设定电压的值,之后差的部分由再8位DAC来补,再多次调整后到达动态平衡(DAC控制的信号源输出的ADC值等于设定值,若输出有变,则再次自动调整以达到平衡)。

问题是:如果是5V的参考电压(我的是5.8到6.2),那么12位DAC一个字运放输出为5V/4095 =0.001221V,8位DAC的一个字运放输出为5V*2.7/5100/255 = 0.00001038V,而8位DAC最大输出为5V*2.7/5100 = 0.002647V,如果8位DAC在满度时再加1,高12位DAC低8位DAC的控制字如何衔接?多谢:)

使用特权

评论回复
12
gjg191| | 2007-8-31 15:52 | 只看该作者

dd

这么说吧,如果想要得到4.000000v电压 而12位da可以调节到4.000500或是3.999600,这种情况下你就得让12位da输出4.0005,因为根据电路输出电压是12位输出为+8位的为-所以不能取3.9996,也就是在判断的时候必须取12位da大于设定电压,这样才能调节。如果说8位da已经满刻度输出了还不能满足要求那么就要降低 12位一个字电压再去比较(前提是12位电压输出要大于设定电压)。在这里12位da输出电压是不能低于设定电压的否则得不到想要得结果。

使用特权

评论回复
13
risingsun|  楼主 | 2007-8-31 16:15 | 只看该作者

你可能看错了图中公式上的负号

你可能看错了图中公式上的负号,这是一个反相的加法器,不论12DAC还是8位DAC经过加法器之后都是负值,所以在高位12位DAC输出(此时低位8位DAC输出为0x00)应比最合适DAC值偏小,才能再加上低8位的DAC值。

如果是5V的参考电压,那么12位DAC一个字运放输出为5V/4095 =0.001221V,8位DAC的一个字运放输出为5V*2.7/5100/255 = 0.00001038V,也就是说高12位DAC的一个字输出约为低8位DAC的118(0.001221V/0.00001038V)个字,也就是说在低8位DAC的118个字输出,仅相当于高12位DAC的1个字输出的,那么是否低8位始终不用118个字以上的输出呢?再就是在降低DAC输出时,是否从高12位DAC借1等于低8位的118呢?

使用特权

评论回复
14
gjg191| | 2007-8-31 16:23 | 只看该作者

dd

不好意思是我看错了 ,低8位不用考虑118字以上,如果12位da输出以定,在调节8位da如果大于118字时给12位da加一个字的话就涉及到精度问题也就是误差(因为12位da动一个字电压变化大很多),我觉得在8位da没达到满刻度时不用动12位da。

使用特权

评论回复
15
risingsun|  楼主 | 2007-8-31 16:46 | 只看该作者

升位借位再请教gjg191

我用的高12位DAC误差为0.5LSB,误差相当于低8位DAC的59个字了,你说“我觉得在8位da没达到满刻度时不用动12位da”,那么你的意思是否是“在低8位达到满度时将高12位加2个字(255 / 118),并将低8位的DAC置19(255 % 118)?在低8位为0x00时一次从高借两个字,填入低8位DAC为236(118*2)?



使用特权

评论回复
16
gjg191| | 2007-8-31 16:58 | 只看该作者

dd

你都可以试一试,因为误差的影响还是很大的。实践才能得出结论阿,只要大的方向不错就行

使用特权

评论回复
17
risingsun|  楼主 | 2007-8-31 17:02 | 只看该作者

谢谢

好的,我试试,多谢你了,哈哈,我也要下班了,明天修改程序,之后再与你讨论了,谢谢了!!!

使用特权

评论回复
18
gjg191| | 2007-8-31 17:06 | 只看该作者

dd

明天休息拉呵呵,俺在家与你讨论

使用特权

评论回复
19
risingsun|  楼主 | 2007-9-7 10:58 | 只看该作者

谢谢gjg191的热心帮忙,问题已圆满解决

可能是有ADC能时时反馈的原因,我程序中不论是“在低8位达到满度时将高12位加2个字(255 / 118),并将低8位的DAC置19(255 % 118)”,还是“低8位最高只117,在到118时,将高12位DAC加1,并将低8位DAC清0”,效果一样,5位半时基本不跳字。
谢谢gjg191的热心帮忙,问题已圆满解决。谢谢!!!

使用特权

评论回复
20
taoest| | 2007-9-7 14:23 | 只看该作者

这样就能提高精度?

这样就能提高精度?
除非你的12位DAC能达到18位的线性度,否则你做出来的电路不可能达到18位。
好像没有12位DAC线性度超过12位的吧,别说18位了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

14

帖子

1

粉丝