矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 2231|回复: 26

基于AD7175的Voltgen自校准电压源_更新V2.1

[复制链接]
     
发表于 2024-4-16 22:24:04 | 显示全部楼层 |阅读模式
本更新篇是之前的工作的延续和更新(原贴:Voltgen自校准电压源ADC芯片升级):

http://www.crystalradio.cn/forum ... p;highlight=voltgen

虽说是ADC的升级,很多的工作并不只是围绕AD7175展开,其实还包含另一项重要的内容,就是所有的功能模块在STM32的移植和实现。刚开始想主要靠移植,但后来发现程序框架已经面目全非,所以基本上是乾坤大挪移,这也是后期进展越来越慢的原因。

在上边帖子的最后,谈到了当时没完成的几项内容,我就先从这几项内容讲起。

1. AGND的电压采集。据说之前V1.0的设计中LTC2400可以正确读出一定范围内的负电压,所以没遇到什么问题。但是当AD7175设置为单端输入模式的时候是不能读任何小于0的电压的(负电压一律读为0,并且ADC报错),这样就带来了一个问题,AD7175有可能读不到正确的AGND电压。那就有可能通过这个算法:Vx'=(Vx-Vgnd)/(Vref-Vgnd) * Vref 得不到正确的被测电压Vx’。解决办法有多个,其中最简单的就是在U27位置放置一颗正电压offset的运放,但是选一个正offset运放也并不是很方便,所以实际的办法是选用一颗可调offset的运放作为U27,通过微调电位器使offset落在合适的数值上。一个不利的地方是可调offset的运放选型受到一定程度的制约。目前选用的型号是AD711,这是一颗有些年代的运放型号,如果坛友有更适合的型号可以推荐过来。

附上最新的电路图:

schematic_V2.1c.rar (123.91 KB, 下载次数: 49)

2. 关于键盘,沿用了之前Washu版本的键盘硬件和与主机的通讯协议。唯一修改的是将键盘PCB上的晶振由11.0592MHz改为8MHz以使得其能正常工作在3.3V的电压上,其余硬件没做任何改动。甚至键盘板的MCU固件也没有因为晶振的改变而重新编译,但实测工作效果没有发现任何问题。

3. 关于上位机,继续沿用washu的VoltgenROM.exe 上位机, 通讯波特率是19.2Kbps。在上一篇的帖子中有使用示范截图。

附上与上边原理图硬件匹配的固件hex文件(基于STM32F103RCT6)
FW_V21_c1.rar (36.56 KB, 下载次数: 20)

本版固件的使用:

推荐使用STM32 ST-LINK Utility 将hex固件烧录至MCU中。校准信息存放在0x3D000开始的flash中,多次烧写需注意保护0x3D000至0x40000范围的Flash内容不被擦除,否则只能重新做校准。

关于元器件的选择。除了AD569之外,建议尽可能从正规渠道购买全新的IC。2277,4277,177这些运放和模拟开关DG412在立创商城都有大量现货供应并且价格还是可以接受的。如果自认为是高手有足够的排错和填坑能力,当然可以使用一些二手拆机件。LCD要选驱动IC是UC1701X(有人说与ST7565R兼容,但我没试过)的,假货宝上有很多的,切记必须是3.3V和SPI总线的。(未完,待续)

评分

5

查看全部评分

     
发表于 2024-4-16 23:27:33 | 显示全部楼层
我最近弄个AD7799的测试板,5V参考,差分输入,同一个电压源,正反接会有30~50uV的回差,这个回差会随PGA的放大倍数一起放大,还没弄清楚是哪里的问题
请问AD7175是否有这种问题?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2024-4-17 11:01:31 | 显示全部楼层
简单讲一下组装调试。对于硬件,如果从画板子开始到打板焊接元器件,这绝对是一个需要耐心的大工程。建议采用4层板结构,内一层是GND,内二层是power,这样走线会比较从容些,当然高手用2层版结构肯定也是能布出来的。如果内外层都采用1oz铜箔,制版成本还要更高一些。

不管是外发SMT贴片还是手工焊接元件,强烈建议首次上电时要先隔离检查验证电源部分。所谓隔离检查就是把板上所有电源对外的供电通道都先断开,依次验证+-15V,+-5V,+-9V,+3.3V电源的工作状况,并且通电保持一段时间并且没有异常后,再连通所有线路作进一步的测试。这样做的目的是防止IC等元器件因为电源问题造成损坏,如果电源有问题的话+-15V的破坏力还是很显著的。

如果硬件组装完毕并且成功刷入固件后,开机画面后能大约5秒钟内显示Lock在10.000000V,证明整个系统已经正常运行了:



如果不能的话,需要逐一排查硬件。

上一步OK后,接下来是U27运放的offset微调,操作方法是按住板子上的KEY2按键不放开,然后按一下Reset键,此时系统会重新启动,进入如下画面:

offset_LCD.jpg

这个界面,显示AGND的读数是0x0000,用钟表旋具微调R56会发现显示的读数开始变化,选择一个介于0x000800至0x000FFF的数值停下即可,稳定后这个数值会在+-1个字之间跳动,调整完成,按Reset重新启动即可。



我手上的板子还是V2.1b版本的PCB,R56只能通过搭棚焊在U27之上了,看起来是这个样子的:
R56_tune.jpg

上边步骤都完成后,就是校准了,这需要至少一块6.5位的台表来辅助完成了,当然最好是7.5位及以上了,这个后边接着再讲。

回复 支持 反对

使用道具 举报

     
发表于 2024-4-18 09:52:27 | 显示全部楼层
高大上的金属箔不见了,可以统一贴片,出套件更方便
有合适的DAC换了现有的569
回复 支持 反对

使用道具 举报

     
发表于 2024-4-18 10:01:38 | 显示全部楼层
但是当AD7175设置为单端输入模式的时候是不能读任何小于0的电压的(负电压一律读为0,并且ADC报错)

+++++++++++
那设置为差分模式是否可以?


如果也不可以,是否可考虑偏置 ADC 本身?AD711 这个运放性能不太好(噪声大,其它指标不太重要),我当时纯粹就是手头上有这个运放



回复 支持 反对

使用道具 举报

     
发表于 2024-4-18 10:02:58 | 显示全部楼层
slsdz 发表于 2024-4-18 09:52
高大上的金属箔不见了,可以统一贴片,出套件更方便
有合适的DAC换了现有的569

用 AD569 纯粹是因为它有大量二手货源且便宜,其实你舍得的话一个 AD5791 就搞定了
回复 支持 反对

使用道具 举报

发表于 2024-4-18 17:11:02 | 显示全部楼层
可以改为差分输入,成本也不太高。增加OP1177、ORNA1001(4×1K配对电阻)、ADA4940各一片。

single-ended-to-different-signal-conversion_cn.pdf

430.79 KB, 下载次数: 30

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2024-4-18 17:34:59 | 显示全部楼层
Rafier 发表于 2024-4-18 17:11
可以改为差分输入,成本也不太高。增加OP1177、ORNA1001(4×1K配对电阻)、ADA4940各一片。

多谢资料。

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2024-4-18 17:41:40 | 显示全部楼层
washu 发表于 2024-4-18 10:01
但是当AD7175设置为单端输入模式的时候是不能读任何小于0的电压的(负电压一律读为0,并且ADC报错)

+++ ...

改差分是可以的。

电路中预留了R35,目前是空位,如果贴上一颗0R电阻,AIN2/AIN3就构成一个差分输入组合。虽然看起来更像一个伪差分,但是一定是可以读负电压的。

Vref为5V,差分输入范围为+-5V,但是Voltgen实际使用0-5V的范围,浪费掉了50%的分辨率(变为23bit)。换来的好处是,可以使用ADA4522/4523这些噪声低的新一代运放。

明天试一下实际效果!
回复 支持 反对

使用道具 举报

     
发表于 2024-4-18 17:48:58 | 显示全部楼层
zhengrob 发表于 2024-4-18 17:41
改差分是可以的。

电路中预留了R35,目前是空位,如果贴上一颗0R电阻,AIN2/AIN3就构成一个差分输入组 ...

由于历史原因,发行的 Voltgen 是一个验证版 + 适合玩鸡肫的版本,所以只有正压,但其实本身设计上是正负的源表 也就是说,2400 是最初为了方便用的,其实计划上是 2440(差分),DAC 这边,也是故意把 AD569 接成正压,但 569 本身也是正负的(其实第二颗 569 就是正负的,因此调零时第二个 569 可以输出 -10V)

对 2440 我设计的输入调理是这样的
屏幕截图 2024-04-18 174605.png
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2024-4-19 10:10:04 | 显示全部楼层
本帖最后由 zhengrob 于 2024-4-19 10:34 编辑
washu 发表于 2024-4-18 17:48
由于历史原因,发行的 Voltgen 是一个验证版 + 适合玩鸡肫的版本,所以只有正压,但其实本身设计上是正负 ...


对于24bit ADC的典型差分应用,Vref是很少用5V的,这是有原因的。因为ADC芯片供电电压(Vcc-Vss)大多都是5.0V,这种情况下Vref选用2.5V是最合理的。如果供电电压(Vcc-Vss)是5V-0V,一般以+2.5V作为AGND电位,差分测量范围是0-5V(以+2.5V为中点+-2.5V);如果供电电压(Vcc-Vss)是正2.5V- 负2.5V,就可以以0V作为AGND电位,差分测量范围是-2.5V到+2.5V。选择Vref为2.5V的另一个好处是,在+-Vref范围内,绝对电压分辨率得以保持。

目前V2.1c的电路中如果将R35焊接0R,AIN2/AIN3组成伪差分测量输入,仍然保持Vref是5.0V,ADC程序也改成差分读取后是可以正常工作的。ADC可以准确读出ADC的微小负电压:

伪差分.jpg

就是说,以牺牲1bit分辨率为代价(0.3uV vs 0.6uV)是可以处理这个细节的。但是实测当前这个伪差分电路ADC最多只能处理-0.2V左右的负电压,再低了测量不了,这是当前电路的局限性了。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2024-4-19 14:29:40 | 显示全部楼层
washu 发表于 2024-4-18 10:01
但是当AD7175设置为单端输入模式的时候是不能读任何小于0的电压的(负电压一律读为0,并且ADC报错)

+++ ...

关于AD711,其实它没那么差。实测与ADA4522-1对比能看出些许差异,但相差不是很大,在白天我们的楼内电梯随机启动停止的情况下,这2颗芯片在34401设为100PLN读100个点的情况下,峰峰值差1-2个uV。

这是把程序改为差分ADC采样,U27换成ADA4522的100个点测试情况:

ADA4522.jpg

回复 支持 反对

使用道具 举报

发表于 2024-4-20 14:47:10 | 显示全部楼层
用伪差分的方案挺好,麻烦大佬共享下伪差分的固件。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2024-4-20 16:41:19 | 显示全部楼层
本帖最后由 zhengrob 于 2024-4-20 16:42 编辑
Rafier 发表于 2024-4-20 14:47
用伪差分的方案挺好,麻烦大佬共享下伪差分的固件。


伪差分工作模式固件(需要R35放置0R电阻):

Voltgen_diffetertial_V2.1c_R01.rar (36.59 KB, 下载次数: 11)

不需要调U27的offset了,U27选择更宽了。仍然保留按KEY2开机进入ADC监控模式,是这样的:





回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2024-4-20 16:46:52 | 显示全部楼层
以上发布的2版固件,都没有激活DS18B20,因为长时间运行发现温度会不定时的显示0.00°C的情况,等debug完再加上。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-5-5 06:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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