矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 10468|回复: 69

数字闭环自校准的 6 位半电压源 Voltgen V1 版终结贴

[复制链接]
     
发表于 2023-12-1 18:44:57 | 显示全部楼层 |阅读模式
本帖最后由 washu 于 2023-12-1 19:51 编辑

由于家庭原因(要照顾小孩),我的 数字闭环自校准电压源 新版始终难产,不少坛友还希望玩一下这个电压源,所以再开一贴,汇总一些资料并在有空的时候答复坛友们的相关问题。
微信图片_20231201195052.jpg


使用说明:
上电后,电压源将检查硬件(ADC、基准电压、DAC),然后读取 EEPROM 中的校准数据,并将输出设置为 10.00000V

若需更改输出电压,按 Set 键,用数字键输入电压值和小数点,然后按 V/mV/uV 按钮设置电压,提供三个倍率选项是为了方便,比如要设置输出 40uV 不需要输入 0.00004,而只需要输入 40 然后按 uV 即可。
cr11201.jpg

更改设置电压后,程序会在数秒钟时间里将输出值逼近设置值到数百 uV 误差级别,然后需要多个周期将其尽可能校准到 10~20uV 误差级别。可接受的设置和灰度值是 7 位半(以 10V 计),范围是 0~11.999999V,但设计的指标是 6 位半,多出来的位数属于内部设计。


关于电压源的指标、测试和相关电路、原理的讨论可看以前的帖子:
http://www.crystalradio.cn/forum ... d=367703&extra=

不再赘述,本贴主要汇总最终版的有关资料,包括硬件(电路、PCB)、软件(单片机固件、上位机、校准程序)等。


本设计尤其是单片机部分是十几年前开始的项目,当时我还在用一个很老的编译器,如今这个编译器已不合时宜(主要是显示器问题),用流行的编译器比如 GCC 重写又显得多余,所以我不会再更新这个设计。V2 版至少也要等小孩大了有空才有下一步的计划,也就不要问了

评分

8

查看全部评分

     
发表于 2023-12-13 09:28:42 | 显示全部楼层
5free 发表于 2023-12-12 22:12
我请教一下:为啥采用 二次三项式非线性校准 方式? 是不是 四次 五次也行? 这个怎么考虑的?



理论上非线性方程通过泰勒级数展开后,多项式的项可以达到无穷个之多,但是大多数项的系数很小,所以近似的情况下只取几个主项就可以了,否则无法进行工程计算,具体取几次,取决于曲线的形态,如果曲线具有两个单调区间(即U型曲线),那么其展开多项式中,以二次和一次为主,其他更高次的系数都比较小,适合用二次多项式近似,如果曲线具有三个单调区间(即S型曲线),则三次系数也会比较大,适合三次多项式近似,至于更复杂的曲线,会用到更高次,但更高次一来计算复杂度,二来做修正算法运算量会几何倍增长,所以一般会把它进行分段,然后使每段符合U型或S型,实际上S型也可以分段成几个U型,因此曲线拟合方程大多使用二次多项式,少数会使用三次多项式。

LT2400的INL曲线,基本上是一个U型曲线,所以用二次多项式即可,个别器件差异导致U型不理想时,可以加入三次项,再多就没必要了,因为INL曲线本身也是温度相关的,手册给出的曲线,是25度时的样子,温度变化后曲线会不同,甚至变化很大(可以参考其他24位ADC的手册,基本都会给出不同温度下的INL曲线),所以这个非线性校准的目的只是把非线性误差尽可能降低(在校准温度下降低最多,能超过一个数量级),而不是完全消除,所以没必要搞得太复杂。

评分

1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

     
 楼主| 发表于 2023-12-1 18:54:02 | 显示全部楼层
本帖最后由 washu 于 2023-12-1 19:32 编辑

2、主板固件(含源代码)
vg_cd2400fb3.zip (87.66 KB, 下载次数: 102)

其中,
vg_cd2400fb3 是液晶显示屏的固件和源代码
vg_cd24fb3_oled 是 OLED 屏的固件和源代码



前面板固件(含源代码)
Frontboard.zip (2.47 KB, 下载次数: 83)



程序是用 FastAVR(一个 Basic 语言的编译器)写的,该编译器早已停止支持,只能用于 XP 环境,现提供该编译器,若坛友有自己的想法和察觉有错误以及不足之处,可自行修改,无须经过我同意。
fastavr430.part1.rar (745 KB, 下载次数: 78)

fastavr430.part2.rar (745 KB, 下载次数: 79)

fastavr430.part3.rar (745 KB, 下载次数: 68)

fastavr430.part4.rar (737.27 KB, 下载次数: 74)

河蟹器,不解释
FastAVRkeygen.rar (22.51 KB, 下载次数: 90)

评分

1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

     
 楼主| 发表于 2023-12-1 18:55:37 | 显示全部楼层
3、有关说明


3.1、主板和前面板连接参考
MB                                FB
1 GND                                1 GND
2 PB5 | MOSI        >to3>                2 PD2 | INT0
3 PD2 | INT0        >to2>                3 PB3 | MOSI
4 PB7 | SCK        >to5>                4 PB4 | MISO
5 PB6 | MISO        >to4>                5 PB5 | SCK
6 VCC                                6 VCC

MB        FB
PD2        PD2
PB5        PB3
PB6        PB4
PB7        PB5

$Def IO_KEY_INT = PORTD.2
$Def IO_KEY_CST = PINB.3
$Def IO_KEY_CLK = PINB.5
$Def IO_KEY_DAT = PORTB.4
$Def DR_KEY_DAT = DDRB.4
now 2020-04-12



3.2 EEPROM 说明
地址                功能

Address(byte)
0        3        主校准值(7V)
4        7        主电压(10V)
8        11        DAC 增益(输出放大器。通常,主电压 10V 时该放大器增益 1.25,使得满度电压能达到 12.5V,校准后能达到 12V 设计值)
12        15        主和成电阻值(默认 249 欧姆)
16        19        副合成电阻值(默认 1 兆欧姆)
20        23        二次三项式非线性校准的二次项
24        27        二次三项式非线性校准的一次项
28        31        二次三项式非线性校准的常数项
32        35        默认输出电压值
36        37        36:滤波器长度(0~64);37:调整设置,最高二位调整方式(00),其余位调整阈值(0~63)
38        39        保留
40        60        多点校准数据


3.3 上位机指令
STV 设置输出的电压值
STV;10,000,000;0
10 表示电压值的伏特位,最大值为 10
000 毫伏位,当伏特位 <10 时为 000-999,当伏特位 =10 时为 000-009
000 微伏位,000-999




STS 设置状态 Setting Status

STS;0,00,00,00,0;0
最后一个 n 表示(ADC)运行状态,0 停止,1 运行(默认)

第一个 n=环路状态,1 闭环(默认),0 开环



++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
history
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CAL068807650 <--废弃?
CAL068807310
    7033075
STV100000000
STV065432190

STS100000000

STR00,000000



CAL 设置校准值 <--废弃?
CAL;06,880,765;2
最后一个 n 表示校准值类型,0=ADC失调,1=DAC失调,2=内部参考(ADC 满度校准),3=DAC 增益,4-6=非线性校准值的三个项系数(y=ax^2+bx+c)


STV 设置输出的电压值
STV;10,000,000;0
10 表示电压值的伏特位,最大值为 10
000 毫伏位,当伏特位 <10 时为 000-999,当伏特位 =10 时为 000-009
000 微伏位,000-999
0 状态位,暂定为量程(10mV-10KV?)


STS 设置状态 Setting Status

STS;0,00,00,00,0;0
最后一个 n 表示(ADC)运行状态,0 停止,1 运行(默认)

第一个 n=环路状态,1 闭环(默认),0 开环
第二三个 n=输入滤波设置,最小为 08 最大为 64
第四五个 n=输出滤波设置,最小为 00(无滤波直接输出)最大 64

第六七个 n=调整阈值,单位为 uV,最小 0 即不对比即调整,最大 99uV
回复 支持 1 反对 0

使用道具 举报

     
 楼主| 发表于 2023-12-1 18:47:22 | 显示全部楼层
本帖最后由 washu 于 2023-12-1 19:55 编辑

1、硬件电路

这是主机电路,有关信息可参考以前的帖子,这里只是作为汇总资料
DSC02599.jpg


DSC02677.jpg


电路图
180210clmfzs377zlmuuml.png



前面板
DSC04459.jpg



前面板电路图
183909wz1wjfnay50ndnq5.png

补充内容 (2023-12-1 21:16):
主电路图部分器件和最终版有所差异,稍后就此问题在“器件选择”章节说明并给出电路图

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2023-12-1 19:04:37 | 显示全部楼层
本帖最后由 老郑小烧 于 2023-12-1 19:06 编辑

总结得好!与人方便,于己方便
回复 支持 反对

使用道具 举报

     
发表于 2023-12-1 19:12:25 来自手机 | 显示全部楼层
谢谢!         希望能有朋友主持套件,可以多人协作,有力的出力,有时间的作分选,有钱的做些前期采购资金垫付
回复 支持 反对

使用道具 举报

     
发表于 2023-12-1 19:17:30 | 显示全部楼层
有些原件不好找,价格也高。学习下思路还是很好的。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2023-12-1 19:24:58 | 显示全部楼层
4、上位机



上位机程序包括

4.1 操纵程序,设置电压值、滤波器长度、数字闭环状态等
无标题vg1.png


源代码,使用 Visual Studio 2010(VB)编写
Voltgen.zip (285.06 KB, 下载次数: 75)


若不需要源代码,可单独下载程序
Voltgen_exe.zip (15.88 KB, 下载次数: 80)


说明:

将 Voltgen 连接到电脑,安装好驱动(如果需要)后,看设备管理器里新增的串口号,连接到该串口。

连接后,可用 “设置”按钮将电压设置到 Voltgen 的输出
setting 按钮可设置滤波器长度(更短的滤波器可加快闭环时间但会相对不稳定)或者自校准状态:开环时将不校准输出电压
Stop 按钮可关闭数字电路

2、EEPROM 管理器
无标题vg2.png


源代码,使用 Visual Studio 2013(VB)编写
VoltgenROM.zip (615.27 KB, 下载次数: 68)


若不需要源代码,可单独下载程序
VoltgenROM_exe.zip (27.85 KB, 下载次数: 77)


前略,可用“Read from EEPROM” 从 Voltgen 中读取 EEPROM 里存储的校准值,用 Save to EEPROM 保存到单片机中,如果没有自动校准的条件,可用此程序实现手动校准。

校准值包括主鸡肫电压值(可用校准助手通过观察外接标准表写入此校准值),DAC 基准电压(可不用,但正确写入该值可增加开环时的准确性和加快闭环速度)、DAC 缓冲增益等几个硬件配置(如果改动有关硬件设计,需要填写正确的数值)。

非线性校准如果用二次拟合可填写二次项、一次项和常数三个参数;或者使用多点拟合,需要填写 0 到 11V 的 12 个校准点。

主校准值和多点校准值是分开读写到单片机的。但如果需要保存到电脑,可用 Save as file 或 Load form file,全部保存。


3、全自动校准程序

Voltgen 的校准过程比较复杂,手动校准一次耗时耗精力,所以我编写了全自动校准程序
无标题vg3.png


可实现电压源的一键全自动校准,支持常见的 8 位半万用表 惠普(安捷伦、是德)3458A 和 Advantest 6581,支持安捷伦标准 VISA 库(其它 VISA 库未测试)。
VGCalibration.zip (20.49 KB, 下载次数: 77)



评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2023-12-1 20:41:54 | 显示全部楼层
本帖最后由 zhengrob 于 2023-12-1 22:04 编辑


很好的总结,多谢washu!更重要的是,这么一个庞大的项目(硬件,固件,上位机)能够以开源的形式发出来,令人尤其赞叹!

感谢腿软(TalenChow)提供PCB设计,目前10组PCB在制备中,预计下周会生产完成。可以分给有兴趣并且有信心完成组装的坛友。

就像有网友讲的,攒齐PCB板上的元件不是一件容易的事情,首当其冲的就是LTC2400的拆机件基本上已经找不到货源,目录商报价的新片是一百多元一片。再加上多颗高精度低温度系数的金属箔电阻等,完成这个项目的成本是不会太低的。除此之外,一定水准的焊接和测试能力也是必要的,这个我就不必多讲了。

回复 支持 反对

使用道具 举报

     
发表于 2023-12-1 21:18:43 | 显示全部楼层
本帖最后由 chenchg 于 2023-12-1 22:01 编辑

我想要一套PCB。
我有一块最初的版本,LTC2400+AD5541+MAX515+6N137的版本。
找了找,竟然还有一片当初屯的2400。
1.jpg
微信图片_20231201215924.png
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2023-12-1 21:27:20 | 显示全部楼层
润吉地 发表于 2023-12-1 19:12
谢谢!         希望能有朋友主持套件,可以多人协作,有力的出力,有时间的作分选,有钱的做些前期采购资 ...

套件很难,我 2014 年做过一次,消耗了非常多的时间精力(和部分器件特殊性有关,稍后在器件选择章节会说明)

后来的数次发行都只发行 PCB,实在是没时间精力去弄这个

开这个贴也是因为有坛友愿意主持一次 PCB 发行,套件就别想了,器件是大问题
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2023-12-1 21:43:33 | 显示全部楼层
本帖最后由 washu 于 2023-12-1 21:47 编辑
zhengrob 发表于 2023-12-1 20:41
...攒齐PCB板上的元件不是一件容易的事情,首当其冲的就是LTC2400的拆机件基本上已经找不到货源,目录商报价的新片是一百多元一片。再加上多颗高精度低温度系数的金属箔电阻等,完成这个项目的成本是不会太低的。


PCB 发行(预定坛友征集)最好不要在本区而是去交易区,这个以前有斑竹提醒过,所以之前发行我都是在隔壁弄的

器件先简单说下,等下要照顾小孩睡觉

ADC 是个大难题,我发行套件之前苦于没有(廉价)货源,于是另外开了个用 ADS1232 的 Costdown 工程,不过固件没有更新到目前的最终版,源代码可以给你(其实以前也在隔壁发过但隔壁论坛挂了),你有空可以整合一下(如果有这个计划)。

ADS1232 有非常廉价的货源,当时的设计是用一片 PCB 通过预留的插针焊在主板上
DSC02601.jpg



不过这是不得已的办法,ADS1232 远远不能满足本设计需求,只是“凑合能用”而已。ADS1232 固件没有 7 位半,就只给 6 位半(实际上 6 位半也是勉强)



金属箔电阻不是必须,但如果有可以更好,没有也无伤大雅,本身这个设计就是“自校准”的,但替换的电阻宜低温度系数为好,建议考虑 10ppm 贴片电阻,我看目录商上价格较低(几毛钱)。上面的荔枝 PCB,电阻是 RNC55 金属膜电阻,50ppm 的温度系数(因当时 10ppm 电阻还不是很容易买到),效果也不错,10ppm 显然会更好。










回复 支持 反对

使用道具 举报

     
发表于 2023-12-1 22:10:43 | 显示全部楼层
washu 发表于 2023-12-1 21:43
PCB 发行(预定坛友征集)最好不要在本区而是去交易区,这个以前有斑竹提醒过,所以之前发行我都是在隔 ...

多谢washu提醒,上边帖子做了修改。

ADS1232可能稍微要差些,但肯定比搞不到2400强啊。

关于电阻选取,是不是LM399电路的几颗分压电阻至少要10ppm?
回复 支持 反对

使用道具 举报

     
发表于 2023-12-1 22:20:23 | 显示全部楼层
如果这样的电阻可以,采购就很方便了:
123.png
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2023-12-1 23:20:06 | 显示全部楼层
zhengrob 发表于 2023-12-1 22:10
多谢washu提醒,上边帖子做了修改。

ADS1232可能稍微要差些,但肯定比搞不到2400强啊。

10ppm 已经很好,我发行的套件是 50ppm 的
回复 支持 反对

使用道具 举报

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

本版积分规则

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

蒙公网安备 15040402000005号

GMT+8, 2024-5-4 09:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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