我也做个Voltgen,阶段性验证
本帖最后由 MF35_ 于 2024-7-24 00:13 编辑电路基本构架和washu的Voltgen一样,区别是替换大部分部件(尽量用我手头有的),模拟电路参数有修改,我的设计是20V输出的,所以DAC放大和ADC衰减都是4倍,得到0~5V左右的电压后转换到-5V~5V给差分ADC
ADC部分,原计划使用AD7175-2
但发现手头有ADS127L21,于是实际插的是这个转接板,这个ADC的好处是INL更好,但噪声比7175稍高,这玩意儿特喵的居然不能直接用晶振,无奈外部挂了个振荡器
DAC电路就没啥区别了,原计划两个AD5541
但同样因为手头有DAC82002,这玩意儿直接两路输出,指标和AD5541相当,于是就它了,那个4094是用来选择模拟开关的
调试中,没做控制板,先用一个Discovery的开发板调着,单片机内部做了个shell通过串口终端访问
初步调试结果,主要验证ADC采样性能,ADC设置为时钟16M,fmod=8M,OSR=160k,也就是20mS输出一个数据(这个参数可以抑制工频),Sinc3滤波,按照手册给出的标准,噪声在200nV/rms,但实际上我初步测试时,测量接地电压和7V基准电压时完全不跳字,不管怎么测都不跳,即便测基准属于自己测自己,基准的噪声抵消了,但ADC自身也有噪声吧,TI的ADC啥时候这么牛逼了。
要不是测DAC输出电压有跳动(因为我的DAC和ADC是共用SPI的,初版我忘了隔离DAC的数字口,所以ADC采样时SPI信号会通过DAC泄露,如果不是泄露,DAC输出不会突然出现300uV的跳水),我都开始怀疑是不是程序有问题了。
基本就只能到这里了,DAC有问题,得等新的带隔离的转接板做回来再试 本帖最后由 MF35_ 于 2024-7-24 23:54 编辑
晚上继续测试,发现昨天乌龙了,读了三个字节共24位数据,data,data,data
然后粗心把代码写成了value = (data << 16) | (data << 8) | data;P
于是低8位就不变了(因为测量同一个电压时最高8位是不可能变的),改了后电压测试就看着很正常了,昨天那个一字不跳感觉就很假。
今天实际测了一下,发现读取低电压的时候,跳字很少,随着电压增大,跳字的幅度等比例增加,可以看到测量了四个电压,每个电压100次,其标准差的变化倍数,刚好基本等于电压的变化倍数
所以我觉得这不是ADC引入的噪声,否则噪声在不同电压下应该是相同的,为了验证这个结论,我试了下ADC自带的噪声测试模式,即ADC的差分输入内部短路并接到1/2VCC,结果不管怎么测,都只跳1个字,这已经优于手册给出的指标了,说明ADC没问题,但并不能说明基准没问题,因为这个测试的输入值实际是差分电压0(我的显示是经过了偏移计算的),基准的影响处于最低比例,是看不出来的
但由于测试低电压时噪声是正常的,而我的最低电压其实对应ADC的负极值,如果基准有问题,低电压(负极值)时波动应该和高电压(接近20V)的波动一样,波动最小应该出现在10V电压处(此时ADC差分输入值为0),但实际上并非如此,DAC输出10V时波动也是呈比例的,所以基准也应该没问题
但奇怪的是直接测7V基准,波动居然和DAC电压一样是呈比例的,考虑到输入接地的时候(此时ADC实际上测量的是-5V加上一个几十mV的偏移,这是为了避免ADC共模电压超出范围)噪声是正常的,所以ADC的输入放大转换电路应该也没问题,因为它此时并非接地的,而是有一个几十mV的输入,此时唯一接地的只有模拟开关和输入端缓冲放大器了,目前暂时没有什么头绪,回头再思考一下,明天不行把模拟开关和输入缓冲绕过去再试试
washu 发表于 2024-7-27 11:18
我第一次发行套件时有标准版,也就是最初设计的 AD5541 DAC,以及 Costdown 版 AD569 DAC 两个选择
后 ...
接地问题有点儿复杂,如果一个芯片有分开的模拟地和数字地引脚,那它们在外部必须连在一起,否则内部电路将因为不同参考点而无法工作,除非这个芯片内部模拟和数字部分是电气隔离,但ADC和DAC器件一般不会这么做,所以其AGND和DGND引脚必须在外部共地。
AD5541有两个GND,AGND专门用于给REF和VOUT提供参考点,DGND用于数字信号回流,在芯片内部,数字部分的电源回流从AGND走,模拟部分从DGND走,但因为电源引脚只有一个,所以电源回流路径必然合并为一条,如果人为的分割AGND和DGND使之回路路径不同,则必然会使其中一路回流路径不能闭合,而形成天线环。
AD5541这种设计这虽然比ADC芯片那种电源引脚也分开的模式要差一点(数字电源和模拟电源的回流路径可以人为分开避免模拟电源被干扰),但考虑到R2R-DAC芯片的数字部分是异步电路,也就是说你不给信号的时候其实它是没有任何干扰的,因此它可以和模拟部分共用电源,而模拟部分负责电压输出的电路,只是基准电压通过一个电阻网络分压而已(没有缓冲器),也就是说负责电压输出的部分,实际上是由REF供电的和芯片电源关系不大。基于这些原因,R2R-DAC芯片的模拟、数字电源回流合并不会影响DAC的输出。但因为除了输出部分,内部还有一些模拟电路也是需要供电的,所以DAC的手册都会注明,VDD要是用模拟电源。而DAC数字接口的信号回流,完全可以通过走线使其与电源回流分开来避免对电源产生干扰。
基于上述原因,R2R-DAC使用两个分开的GND,或者只有一个GND,本质是没区别的,除非它把VCC也分成两个。
AD569其实并不是两个GND的芯片,它的供电使用的是双电源,基准也是正负基准,但GND引脚同样只有一个,并部分模拟和数字,V+和V-、REF+和REF-实际上都是参考于GND的,所以我认为AD569、AD5541、DAC82002在这方面并没有本质区别。
这是我的电路板布局和供电走向,我用的是4层板,电源是在单独的层做分割,不同的部分供电线路不重叠,接地采用完整平面。我没有做地分割,因为地分割后,需要模数混合芯片(ADC和DAC)底部将数字地和模拟地桥接(在供电输入端桥接是错误的,会造成数字信号绕行),对于整个电路只有一个ADC或DAC的场合这很好搞,但这个电路有一个ADC和一个DAC,如果做地分割,就会有两个桥接处(DAC如果有两个GND,也必须在芯片底部桥接,如果只有一个GND,等于天然的在这个引脚桥接了),从而形成多点接地,多点接地是不推荐的,会产生一些奇奇怪怪的问题。
地分割的目的无非是把不同类型信号的回流分开,使之不能互相干扰,所以地分割只是手段不是目的,因此不做地分割地同样可以达到目的,因为信号回流总是沿着最低阻抗进行(即如果可能,回去的路径会尽可能紧挨着来时的路径),所以只要不同类型信号在布局和走向上合理划分,就可以做到回流分开。
我后来仔细分析了PCB设计,最后得出一个不论哪方面都与异常现象吻合度极高的结论:那就是干扰是由转接板导致的。
我最初的设计是使用AD7175和AD5541,基板上也是按这个电路布线的,只是预留了插座,调试的时候为了换ADC和DAC,只好用了转接板。转接板的接插件是存在接触阻抗的,因此转接板的地平面和基板的地平面之间就阻抗不为0了,当有数字信号从基板到达转接板时,回流信号就会在转接板地平面和基板地平面之间产生干扰电位差。
我画了个示意图,数字信号传递到转接板后,因为接插件的接触阻抗,会使转接板地平面相对基板地平面出现干扰电压。
由于DAC芯片REF和GND引脚之间有低ESR的大电容,所以干扰不会影响到REF和GND之间的电压(即DAC芯片得到的基准值)。但DAC芯片REF引脚相对于基板地平面的电压却可以受到干扰,由于为了尽可能降低基准噪声,基准缓冲器的带宽控制的非常低(不到10Hz),所以缓冲器对这个数字信号导致的干扰是无力调节的,所以DAC的输出电压对基板的地平面来说,也就同样带了干扰,而输出只是基准的分压,所以输出电压越大,干扰看上去就越大,这就完全说的通了。
这个干扰是以基板的地平面为参考来看的,而ADC同样使用了转接板,ADC转接板的地平面同样受到了干扰,为什么ADC本身没有问题呢?
因为被测电压在给到ADC之前,已经在基板地平面上转换为差分信号了,此时转接板的地平面无论怎么扰动,都不会对差分信号造成影响。同样因为ADC的REF和GND引脚之间也有低ESR的大电容,所以这个干扰同样不会影响ADC得到的基准值。所以ADC不论是短路自测,还是测量外部基准,还是测量外部输入的低噪声电压,都没有问题,因为这些被测信号本身都是参考于基板地平面的,到了ADC转接板前已经转为差分信号了,不受转接板地平面的干扰。同时基板地平面是一个整体平面,接地阻抗非常低,所以数字信号难以对地平面的局部电位产生影响,这也是大平面接地的优势。
本帖最后由 MF35_ 于 2024-7-28 19:06 编辑
washu 发表于 2024-7-27 11:18
我第一次发行套件时有标准版,也就是最初设计的 AD5541 DAC,以及 Costdown 版 AD569 DAC 两个选择
后 ...
果然,我分析的没错,问题的根源找到了,就是DAC用了转接板的问题,我的基板上已经是布好的AD5541布局,我把转接板拔掉,AD5541焊在基板上,噪声变得正常了,测量DAC输出时,噪声的ppm值和直接测量基准是一样的了。由于ADC依然用的转接板,从而引入了一些微小的干扰(差一点到1uVpp的样子),但既然原因找到,这些都不是问题。
这是测试三次基准,每次读512个数
然后切换到DAC通道,测量不同DAC输出,可以看到不同输出电压下噪声的ppm值基本一致,而且与测量7V基准也基本一致,说明噪声基本源自LM399,不过依然达到6位半水准
俺要纠正你一个非常严重的错误,那个开发板不叫 Discovery,它叫 Nucleo :lol 严重期待 ADS127L21 的测试结果,这玩意儿好像比 AD7175-2 还略微便宜那么一丢丢 ~ 这ADC这么强吗?居然能50HZ七位连续1000个采样不跳字。还是测量的7V,七位半表都达不到这水准啊。 ADS127L21 INL 指标比较好. TYPE 0.4ppm MAX 1.4ppm可以直接做6位半了, 温漂也很小.INL/温漂基本是不能靠软件提高的.
国内不好买, 价格100+
采样率也可以做的很高. 也就是可以做4位半高速输出, 也可以做6位半低速输出,比较适合做表.
SPI影响问题, 可以延时一段时间再ADCC
scoopydoo 发表于 2024-7-24 06:24
严重期待 ADS127L21 的测试结果,这玩意儿好像比 AD7175-2 还略微便宜那么一丢丢 ~
我刚在立创商城查了一下这个ADC比7175贵一二十,立创还没现货。只能代订。 lg676041036 发表于 2024-7-24 08:28
我刚在立创商城查了一下这个ADC比7175贵一二十,立创还没现货。只能代订。
俺看的是得捷的价格,ADS127L21 单价 156.73,AD7175-2 单价 171.13 本帖最后由 MF35_ 于 2024-7-24 09:14 编辑
jforu 发表于 2024-7-24 08:17
ADS127L21 INL 指标比较好. TYPE 0.4ppm MAX 1.4ppm可以直接做6位半了, 温漂也很小.INL/温漂基本是不能 ...
SPI的影响是这样的,因为目前ADC用的是连续转换模式,每完成一次转换,MCU会从ADC读取数据,此时ADC内部已经在进行下一次转换了,而同时读取数据的SPI信号也会通到DAC去(没有隔离),DAC存在数字馈通,所以读取数据的时候SPI信号就会干扰ADC正在进行的转换的输入信号,所以这个加延迟其实没有用。
确实是有办法解决的,即使用单次转换模式,单次模式下ADC转换完成后不再进行下一次转换,需要再次启动ADC转换,即便启动过程是使用SPI命令,但ADC开始转换前,SPI通信已经完成了,所以不会干扰到DAC。用单次转换模式的问题是,sinc3滤波器输出一个完全数据需要3个转换周期(连续转换则只是第一个数据需要3个转换周期),如果是sinc4滤波器则需要4个,这意味着同样转换1000次,连续转换模式只需要1002个周期,单次模式则需要3000个周期。
当然,这也不是什么问题,如果单次转换后的噪声满足需要,就没区别,如果不满足,我需要每次读取数据时都进行多次转换然后软件再做一次滤波抽取,比如现在的数据速率是50(相当于1PLC),我可能会进行10次转换来把速率降到5(相当于10PLC)来降低噪声(因为这个ADC在16M时钟下最低输出速率就是50,要降低只能用软件,相当于自己加sinc1滤波),如果采用这种方案,那么每次转换都使用单次模式就会浪费大量时间,严重降低输出端的调整速度。
我先用隔离SPI的方式(即ADC通信时关断DAC的SPI)试试,如果不行就只能用单次模式了 本帖最后由 MF35_ 于 2024-7-24 09:15 编辑
scoopydoo 发表于 2024-7-24 08:45
俺看的是得捷的价格,ADS127L21 单价 156.73,AD7175-2 单价 171.13
我前两天调板子的时候脑袋抽了,断电上电的时候嫌麻烦,没有通过总开关,而是直接拔插了模拟板上的插头,因为电源是分体的,输出端电容在电源板上,模拟板上没有大电容,所以一插电把ADC烧了:L ,没办法又换了一片,心疼啊,手里总共就3片儿 scoopydoo 发表于 2024-7-24 06:16
俺要纠正你一个非常严重的错误,那个开发板不叫 Discovery,它叫 Nucleo
好吧,我和我另一个开发板搞混了,还真是Nucleo;P lg676041036 发表于 2024-7-24 08:15
这ADC这么强吗?居然能50HZ七位连续1000个采样不跳字。还是测量的7V,七位半表都达不到这水准啊。
所以我也纳闷儿啊,但确实哪里都正常,我通入一个1Hz正弦波,把采样值读出来用Excel看,确实是正弦波,所以数据读取的没问题 scoopydoo 发表于 2024-7-24 08:45
俺看的是得捷的价格,ADS127L21 单价 156.73,AD7175-2 单价 171.13
AD7175-2 国内立创是69元能买到. 本帖最后由 MF35_ 于 2024-7-24 09:18 编辑
scoopydoo 发表于 2024-7-24 08:45
俺看的是得捷的价格,ADS127L21 单价 156.73,AD7175-2 单价 171.13
7175-2立创卖70左右一片,我买了2片放着在,也做了7175的转换板,回头板子到了换上去也试试
ADS127L21官方价格确实要更便宜,只是这个片子比较新,国内代理商可能铺货不多,所以国内看上去贵一些,如果你只能在德姐买,哪这个挺合适 jforu 发表于 2024-7-24 08:17
ADS127L21 INL 指标比较好. TYPE 0.4ppm MAX 1.4ppm可以直接做6位半了, 温漂也很小.INL/温漂基本是不能 ...
我之所以认为是DAC被数据口干扰了,是通过第三组数据分析,那个最大值(打印信息max和min写反了,min对应的其实是最大值)和平均值之间差距很大,而最小值和平均值差距很小,这说明绝大部分数据都在平均值上,那个突然偏差很大的数据是突发的,所以它不可能是噪声的影响,唯一可能就是DAC的数字馈通带来的 MF35_ 发表于 2024-7-24 09:16
7175-2立创卖70左右一片,我买了2片放着在,也做了7175的转换板,回头板子到了换上去也试试
ADS12 ...
AD7175-2 俺也烧过一片,现在手里还剩下几片,ADS127L21 还没玩过,如果你这边测试结果好的话,俺也必须整两片体验一下啊! :lol