找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4768|回复: 53
打印 上一主题 下一主题
收起左侧

单片机实现16位电阻分压快速DAC电路 Multisim仿真原理图

  [复制链接]
跳转到指定楼层
楼主
单片机实现16位快速DAC,速度<1us。使用R-2R电阻分压法实现,16位DAC需要16个IO口,如果只需要8位就需要8个IO口。DAC精度与VCC电压和电阻精度有关,VCC必须使用线性稳压电源,电阻使用1%电阻。运算放大器起到电压跟随的作用,也可以不要。

仿真原理图如下(Multisim仿真工程文件可到本帖附件中下载)



R-2R电阻分压DAC
速度快,1us,使用IO多
16位DAC,使用单片机16个IO口数模转换
S1~S16就是16位2进制数。比如1000000000000000就得到2.5000V
0000000000000111就得到457.739UV
Vout=二进制数/65536*VCC

Multisim仿真电路: R-2R电阻分压DAC16位.zip (295.95 KB, 下载次数: 33)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:401564 发表于 2022-6-15 16:04 | 只看该作者
DAC要是能这么简单的想当然的去设计,人家DAC芯片就没有有要了
回复

使用道具 举报

板凳
ID:883242 发表于 2022-6-15 17:13 | 只看该作者
16位是65536,相对精度0.0015%,你那些0.1%的电阻只能用来%%。
回复

使用道具 举报

地板
ID:491577 发表于 2022-6-15 19:36 | 只看该作者
Y_G_G 发表于 2022-6-15 16:04
DAC要是能这么简单的想当然的去设计,人家DAC芯片就没有有要了

会就简单,R-2R电阻分压法实现DAC是成熟的方案,我只是整理出来而已,有仿真可以自己验证。
回复

使用道具 举报

5#
ID:491577 发表于 2022-6-16 00:17 | 只看该作者
Hephaestus 发表于 2022-6-15 17:13
16位是65536,相对精度0.0015%,你那些0.1%的电阻只能用来笑掉大牙。

16位DA,5V参考电压,理论精度为5V/65536=76.29uV,使用1%电阻误差是76.29UV*1%=0.7629uV。已经足够小,不是需要0.00115%误差的电阻,市场上没有怎么高精度的电阻,有也买不下起。
回复

使用道具 举报

6#
ID:213173 发表于 2022-6-16 07:15 | 只看该作者
理想很丰满,现实很骨感。仿真结果只能代表基本原理没有问题。实际电路的效果未必优于简单的PWM DAC。
回复

使用道具 举报

7#
ID:491577 发表于 2022-6-16 12:31 | 只看该作者
R-2R电阻分压法实现DAC与PWM DAC的区别,电阻分压法特点是快,IO口输入数字量直接出模拟量,速度<1us,缺点是需要IO口多,PWM DAC就是把方波通过n级低通滤波得到直流电压,通过时间换取精度,如果对时间要求低,使用比较大的电容电阻也可以得到纹波很小的直流电,优点是只需要1个IO口。下面谈谈精度,  为了提高输出能力一般都需要用运放做电压跟随或放大,加入运放会带来额外的误差,误差在几微伏到几毫伏。这么大的误差还能用吗?为了减少误差,下面谈谈校准。IO口输出1000得到一个电压用6位半万用表测量电压为77.5899mv(理论电压=5000mv*1000/65536=76.2939)误差=1.296mv的确太大。再用IO口输出5000得到一个电压用6位半万用表测量电压为382.769mv(理论电压=5000mv*5000/65536=381.470)误差=1.299mv。这就得到两组准确的数据:数字1000对应77.5899mv,数字5000对应382.769mv,1000到5000用插值法得到,V=77.5899+(382.769-77.5899)/(5000-1000)*n=77.5899+0.076294775*n。数字2000对应电压=77.5899+0.076294775*2000=230.179mv,这个电压误差就很小了。再测量几组数据,10000、20000、30000、40000、50000、60000。数据越多误差就越小。
回复

使用道具 举报

8#
ID:883242 发表于 2022-6-16 16:47 | 只看该作者
hhh402 发表于 2022-6-16 00:17
16位DA,5V参考电压,理论精度为5V/65536=76.29uV,使用1%电阻误差是76.29UV*1%=0.7629uV。已经足够小, ...

R1、R2误差1%能造成多大精度损失?你这计算完全是小学妹毕业的水平。
回复

使用道具 举报

9#
ID:401564 发表于 2022-6-16 20:55 | 只看该作者
hhh402 发表于 2022-6-15 19:36
会就简单,R-2R电阻分压法实现DAC是成熟的方案,我只是整理出来而已,有仿真可以自己验证。

你用仿真来说话?
一,电阻精度直接影响最终输出结果,计算方法并不是你说的那样,自己改变一下仿真电路的电阻值进行仿真就知道了,精度是不可能达到0.7629uV的,不知道你的老师以前是不是教体育的
二,想要精度高,就得用贵的电阻,1%精度是肯定不行,最终的结果就是电阻的钱能买好多个DAC,这种电阻至少是3块一个起步......
三,你有焊过实际的电路进行过实际测量和理论对比吗?如果没有,那就是扯
回复

使用道具 举报

10#
ID:824490 发表于 2022-6-16 21:01 | 只看该作者
p你这仿真的是典型的“逐次逼近”型DAC,最极端的时侯,需要对比32768次才能出结果,每一次都要设电压、待稳定,再读取比较值、再获取电压值,你算一下,要多长时间?
回复

使用道具 举报

11#
ID:491577 发表于 2022-6-17 00:10 | 只看该作者
楼上不懂不要乱说虚心一点,R-2R电阻分压法实现DAC就是实现DAC的方法之一,不懂可以百度。这个方法不是我想出来的,我只是把它仿真出来给大家研究一下。网上介绍的就是使用1%电阻,精度足够一般使用,其实运算放大带来的误差更大,如果使用通用运算放大器(比如LM358)误差更大,用万用表校准才可以减少误差。10楼还是百度一下再说,R-2R电阻分压法实现DAC特点就是速度快。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

12#
ID:624769 发表于 2022-6-17 01:12 | 只看该作者
你说,仿真出来,大家研究一下,我就和你一起,纸上谈兵的 “研究” 一下。
说到快,我好奇问一下,撇开其他所有的不谈,假定,你的仿真理论都能搬到现实中,并且成真,你打算用什么单片机来驱动?
假定,一个总线8个IO,  那么16个IO,就是两条总线。 那么,在驱动的时候,就是两条指令。两条指令就有时间差,换句话说,你会先输出一个不是你想要的电压,也不是原本电压的,中间电压,之后再次给出正确值之后也是需要时间来稳定的。而,你又寄希望于它的速度,真按你认为的“速度<1us”来设计, 那么,你这个“速度<1us” 所得到的结果,只是最快的速度得到一个错误的电压而已。

最后,你觉得如果,真的到实现你的预想目的,和直接弄个DAC芯片,究竟哪个更好?
回复

使用道具 举报

13#
ID:824490 发表于 2022-6-17 09:04 | 只看该作者
hhh402 发表于 2022-6-17 00:10
楼上不懂不要乱说虚心一点,R-2R电阻分压法实现DAC就是实现DAC的方法之一,不懂可以百度。这个方法不是我想 ...

我把DAC和ADC搞 混了
我这段是对于ADC来的
回复

使用道具 举报

14#
ID:491577 发表于 2022-6-17 09:06 | 只看该作者
的确有时间差,但是对输出影响很小,想要快肯定要1T单片机,常用24MHz主频,刷新一次1/24us,正常的应用输出电压都是连续变化的,也就是说大部分时候高8位是相同的,刷新时先刷低8位,再刷高8位。实在是担心会输出错误电压可以在输出端到地加一个小电容,比如102电容,这个电容越大输出电压越稳定但是速度越慢,就看大家取舍,R-2R电阻分压法实现DAC速度快是因为只用到开关和电阻,理想情况下是不需要时间的,但实际电路会有寄生电容所以需要一点时间才能稳定,这个时间与电阻大小有关,10K,20K电阻可以做到速度<1us,相关资料网上有,STC8H系列单片机手册也有相关介绍,我也是看到了R-2R电阻分压法实现DAC这个方法通过仿真觉得可行,所以发出来与大家讨论一下,这个“R-2R电阻分压法实现DAC”真不是我设计的,仿真才是我自己画的。想研究更细一些可以百度,也可以看看STC8H系列单片机手册。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

15#
ID:491577 发表于 2022-6-17 09:20 | 只看该作者
名字不是重点 发表于 2022-6-17 09:04
我把DAC和ADC搞 混了
我这段是对于ADC来的

ADC的话16位只需要16次比较就出结果,不管什么电压都是需要16次比较,12位ADC就需要12次比较,不存在极限情况,具体百度一下有详细介绍。
回复

使用道具 举报

16#
ID:491577 发表于 2022-6-17 09:32 | 只看该作者
关于电阻精度问题,1%足够大多数应用,3位半万用表只用到1%电阻,4位半万用表大部分只用到1%电阻,但是都实现了小于1%的误差,0.1%电阻很少用,0.01%只是传说,校准才是减少误差的捷径。
回复

使用道具 举报

17#
ID:401564 发表于 2022-6-17 13:24 | 只看该作者
hhh402 发表于 2022-6-17 09:32
关于电阻精度问题,1%足够大多数应用,3位半万用表只用到1%电阻,4位半万用表大部分只用到1%电阻,但是都实 ...

那您就做去吧
反正这电路现实中不会有人用,就算有,也是DIY玩玩的,一个16位的工业级DAC才几块钱,两个IO就能控制
有谁用16个IO来控制?
回复

使用道具 举报

18#
ID:491577 发表于 2022-6-17 13:47 | 只看该作者
查了一个16位DAC,也是用R-2R电阻分压法实现的。网站介绍如下:
TM8211是两路16位数模转换集成 电路 ,可广泛应用于数字音频、多媒体系统。
芯片采用CMOS工艺设计,内部电路结构基于R-2R电阻网络结构设计,并在全 电源
电压范围内实现16bit的动态范围。 TM8211可通过采用数字串行总线数据输入,采
用快速R-2R网络结构来支持8X的过采样音频信号处理。
回复

使用道具 举报

19#
ID:824490 发表于 2022-6-17 14:09 | 只看该作者
hhh402 发表于 2022-6-17 09:20
ADC的话16位只需要16次比较就出结果,不管什么电压都是需要16次比较,12位ADC就需要12次比较,不存在极限 ...

谢谢!我知道我的思路错在哪了
回复

使用道具 举报

20#
ID:106977 发表于 2022-6-17 16:04 | 只看该作者
仿真没有问题只能说明理论上是正确的。你实际搭个电路试试,看看能否达到目的?会不会出现多种问题?
回复

使用道具 举报

21#
ID:824490 发表于 2022-6-17 16:35 | 只看该作者
lgwd 发表于 2022-6-17 16:04
仿真没有问题只能说明理论上是正确的。你实际搭个电路试试,看看能否达到目的?会不会出现多种问题?

我百度了一下,一般产品是不会采用这种电路的,只会在土豪版的产品上用它,
比如音响类的。那上边不止16BIT,24BIT的都有。玩HIFI音响的都是不缺钱的主。
要不然单那几十个电阻就可以买到一颗不错的DAC的IC了。
回复

使用道具 举报

22#
ID:824490 发表于 2022-6-17 16:43 | 只看该作者

这个产品图看一下,标价RMB12K,仅仅是一个DAC
High End Discrete R-2R Sign Magnitude DAC / HeadAmp
旗舰!
全平衡!
27 bit!
DSD256/PCM384

售價: RMB 11,980

dac1541 internals        dac1541 retail packaging
Specifications:
THD @ -1 dB         <0.005%
THD @ -60 dB        <0.02%
Resistor Precision        27 bit, 0.01% – 0.02% Resistors
Clock Jitter RMS        0.3 pS typical
S/N 20 Khz Bandwith        >123 dB unweighted
Frequency Range +0.1 -1.0 dB        20hz – 20Khz
USB Input        Type B, Isolated, Full/High Speed
USB Input Mode Selectable        Audio Class 1.0 or Audio Class 2.0
SPDIF / AES / Toslink Inputs         Up to 24 bit / 192 Khz
USB Input PCM        Up to 24 Bit / 384 Ksps
USB Input DSD        Up to DoP-128 and DSD-256
Digital volume control        -80 dB to +10 dB
Output Line        RCA, 2.0V RMS, Zout 50 ohm
Output Line Balanced        3 pins XLR, 4.0V RMS, Zout 100 ohm
Output Headphones        6.3 mm Jack, 6.5V RMS, Zout 1.5 ohm
1300mW @ 32Ω
Output Headphones Balanced        4 pins XLR, 13V RMS., Zout 3.0 ohm
4400mW @ 32Ω
Power Consumptation        90-265V AC, max 35W
Size        250 x 205 x 40 mm
Weight        1.5 Kg
Warranty        3 Years
回复

使用道具 举报

23#
ID:491577 发表于 2022-6-17 17:12 | 只看该作者
有不少使用这种电路的DAC芯片,比如MCP4726A0T-E、TM8211,也不贵。估计用的电阻精度比较低吧。
也有用0.1%电阻的,很贵。下面有个介绍R-2R的视频:
https://www.bilibili.com/video/B ... 4108bde1b8b3565f372
回复

使用道具 举报

24#
ID:491577 发表于 2022-6-17 23:15 | 只看该作者
22#是数字功放吧,只能看看
回复

使用道具 举报

25#
ID:824490 发表于 2022-6-18 08:58 | 只看该作者
本帖最后由 名字不是重点 于 2022-6-18 09:04 编辑
hhh402 发表于 2022-6-17 23:15
22#是数字功放吧,只能看看

不是数字功放,只是单纯的DAC解码器+耳放
回复

使用道具 举报

26#
ID:824490 发表于 2022-6-18 09:13 | 只看该作者
这是某人设计的图,阵容豪华:
24bit全平衡双声道DAC.pdf (125.52 KB, 下载次数: 21)
FPGA.pdf (68.77 KB, 下载次数: 12)

回复

使用道具 举报

27#
ID:401564 发表于 2022-6-18 21:27 | 只看该作者
hhh402 发表于 2022-6-17 17:12
有不少使用这种电路的DAC芯片,比如MCP4726A0T-E、TM8211,也不贵。估计用的电阻精度比较低吧。
也有用0.1 ...

还在折腾这玩意?
怪不得你觉得这电路好
DAC里面怎么可能用一堆电阻呢?
芯片里面的电阻在绝大多数的情况下只有两种:一种是三极管代替电阻,一种是场效应管代替电阻
而你说的这个MCP4726用的就是场效应管做成的数字电位器,不是电阻
框图是这么个样子而已,里面用的是数字电位器,原理是这个原理,但实用性几乎等于0
你要真这个电路出来,你看一下能不能达到0.7929uV,能有1mV的精度你就笑了
参考电压,温度漂移,电阻误差,这三个加一块,没有做过实际电路,你是不会知道这其中的影响有多大的
回复

使用道具 举报

28#
ID:624769 发表于 2022-6-19 10:42 | 只看该作者
hhh402 发表于 2022-6-17 09:06
的确有时间差,但是对输出影响很小,想要快肯定要1T单片机,常用24MHz主频,刷新一次1/24us,正常的应用输 ...

知道为什么带DAC的单片机那么贵么?
知道为什么STC不出带DAC的单片机,只出带PWM的单片机么?
知道为什么STC宁可不声不响,给每个IO加上4.7K上拉电阻,也不搞个R-2R的DAC出来抬高身价么?

这就不是几个电阻的问题。你搭个真实电路出来,试一下就明白了。与其仿真千遍,不如实干一次。
回复

使用道具 举报

29#
ID:491577 发表于 2022-6-19 22:44 | 只看该作者
TM8211就是R-2R原理做的16位DAC芯片,还有不少DAC芯片是使用R-2R原理的,便宜的也有,非常贵的也有。这么多芯片在用至少说明这种R-2R电阻分压DAC电路是有实用价值的。STC8H单片机手册已经提到R-2R电阻分压DAC电路,以后是不是加入DAC就不知道了,不过16位的应该不会,10位或12位就难说了。
回复

使用道具 举报

30#
ID:491577 发表于 2022-6-19 22:57 | 只看该作者
Y_G_G 发表于 2022-6-18 21:27
还在折腾这玩意?
怪不得你觉得这电路好
DAC里面怎么可能用一堆电阻呢?

你是说MCP4726A0T-E、TM8211这种DAC是做来玩的没有实用价值吗?芯片都做出来销售了,你还说没有做过实际电路,至于误差还是看看芯片的资料吧
回复

使用道具 举报

31#
ID:401564 发表于 2022-6-21 22:29 | 只看该作者
hhh402 发表于 2022-6-19 22:57
你是说MCP4726A0T-E、TM8211这种DAC是做来玩的没有实用价值吗?芯片都做出来销售了,你还说没有做过实际 ...

好的,就此打住了
你就好好的做你的DAC去吧,做好了别忘了发个帖子庆祝一下
回复

使用道具 举报

32#
ID:1046556 发表于 2022-10-4 17:04 | 只看该作者
Y_G_G 发表于 2022-6-17 13:24
那您就做去吧
反正这电路现实中不会有人用,就算有,也是DIY玩玩的,一个16位的工业级DAC才几块钱,两个IO就 ...

主要是老师非要求我这么做,我才问楼主的,抱歉啊
回复

使用道具 举报

33#
ID:1046556 发表于 2022-10-4 17:10 | 只看该作者
楼主您好,我想问一下咱这个电路怎么通过单片机控制,直接输出与单片机IO口相连吗?Vref又要接多少的稳压电源呢?
回复

使用道具 举报

34#
ID:491577 发表于 2022-10-5 14:33 | 只看该作者
左边20K电阻接IO口,8位就接8个IO,16位就接16个IO,Vcc=需要输出最大电压。以16位为例:设Vcc=5V,16个IO分别为0000 0000 1111 1111,将这个二进制数转化为10进制等于255,这是输出电压V=255/65536*5V=19.45mV。如果16个IO分别为0000 1111 0000 1111,将这个二进制数转化为10进制等于3855,这是输出电压V=3855/65536*5V=294.11mV。当然这是理论计算值,实际因为单片机IO有内阻所以输出电压会偏低,实际电路中运放不是电压跟随而是放大倍数可调的放大器,先将所以IO置1,再调节运放可变电阻使输出电压等于5V,这时DA输出为0-5V(16位分辨率),如果调节运放可变电阻使输出电压等于10V,这时DA输出为0-10V(16位分辨率)。
回复

使用道具 举报

35#
ID:332444 发表于 2022-10-5 16:02 | 只看该作者
因该用ISIS 仿真直接单片机控制并监测输出有数据
回复

使用道具 举报

36#
ID:883242 发表于 2022-10-8 00:10 | 只看该作者
hhh402 发表于 2022-6-17 17:12
有不少使用这种电路的DAC芯片,比如MCP4726A0T-E、TM8211,也不贵。估计用的电阻精度比较低吧。
也有用0.1 ...

MCP4726, 12bit
你自己看看这片子误差有多大!


回复

使用道具 举报

37#
ID:491875 发表于 2022-10-8 07:09 | 只看该作者
hhh402 发表于 2022-6-17 13:47
查了一个16位DAC,也是用R-2R电阻分压法实现的。网站介绍如下:
TM8211是两路16位数模转换集成 电路 ,可 ...

通常商品DAC内部的网络电阻都是经过激光修正的,比我们平时购买的电阻的精度要高的多。没有可比性
回复

使用道具 举报

38#
ID:491875 发表于 2022-10-8 07:15 | 只看该作者
hhh402 发表于 2022-6-16 00:17
16位DA,5V参考电压,理论精度为5V/65536=76.29uV,使用1%电阻误差是76.29UV*1%=0.7629uV。已经足够小, ...

验证DAC原理可以,但实际应用肯定不现实。不要说1%精度的电阻,就是给你0.1%电阻也不一定能够达到仿真效果。毕竟,仿真是按理想状态给出的可能结果。
回复

使用道具 举报

39#
ID:491577 发表于 2022-10-8 08:48 | 只看该作者
既然已经做成了芯片并且还在销售至少说明R-2R分压做DAC芯片是可行的,精度低是相对的,毕竟是12位DAC,精度再低也强过8位,10位的吧。其实有人做有人买已经证明方案可行。
回复

使用道具 举报

40#
ID:401564 发表于 2022-10-8 09:13 | 只看该作者
hhh402 发表于 2022-10-8 08:48
既然已经做成了芯片并且还在销售至少说明R-2R分压做DAC芯片是可行的,精度低是相对的,毕竟是12位DAC,精度 ...

快4个月了,有什么进展没有?不会只停留在仿真阶段吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表