矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: 闻太师

熟悉ADC的朋友帮看一下

[复制链接]
     
发表于 2018-6-11 19:19:16 | 显示全部楼层
bg1trk 发表于 2018-6-11 15:56
在用的ADC分段矫正函数:

这是程序固定点的,我的 Voltgen 是不限点、非固定的

不过代码不是常见的 C,所以仅供参考了


Function GetMultinlerr(fVoltage As Float) As Float
Local iSetvt As Integer
Local x0Point As Byte
Local x1Point As Byte
Local wReadPoint0 As Word
Local wReadPoint1 As Word
Local y0Point As Integer
Local y1Point As Integer

fVtrn = fVoltage
iSetvt = fVtrn
x0Point = iSetvt
If x0Point < 1 Then
        x0Point = 0
        x1Point = 1
ElseIf x0Point > 9 Then
        x0Point = 9
        x1Point = 10
Else
        x1Point = x0Point + 1
End If
'**************这里是多点校正值,校正值来自 EEPROM 中存储的测量结果**************
wReadPoint0 = iMultinlError(x0Point)
y0Point = wReadPoint0 - 10000
wReadPoint1 = iMultinlError(x1Point)
y1Point = wReadPoint1 - 10000
‘**************根据多点校正值计算出分段拟合参数**************
fLinear = (y1Point - y0Point) / (x1Point - x0Point)
fConstant = (x1Point * y0Point - x0Point * y1Point) / (x1Point - x0Point)

fTrn = fLinear * fVoltage + fConstant
Return fTrn
End Function


评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2018-6-11 21:48:09 | 显示全部楼层
washu 发表于 2018-6-11 19:19
这是程序固定点的,我的 Voltgen 是不限点、非固定的  

不过代码不是常见的 C,所以仅供参考了

收下了,有机会尝试用用,没版权吧?
回复 支持 反对

使用道具 举报

     
发表于 2018-6-11 22:00:20 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2018-6-11 22:14:58 | 显示全部楼层
书到用时 发表于 2018-6-11 22:00
把VB代码转成C的,是不是就可以绕开版权了?

再把变量名也改改

后面计算的思路都差不多,前面的思路还没捋顺,这意思是校正过程一路跟着输入值走,X0、X1只要差1就引发校正?

还要研究研究,琢磨通了改成C,传到板子上试试。
回复 支持 反对

使用道具 举报

     
发表于 2018-6-14 14:13:55 | 显示全部楼层
bg1trk 发表于 2018-6-11 21:48
收下了,有机会尝试用用,没版权吧?
后面计算的思路都差不多,前面的思路还没捋顺,这意思是校正过程一路跟着输入值走,X0、X1只要差1就引发校正?


版权所有 by myself

矫正过程跟着输入值走没错,但 x0、x1 永远差 1(因为只分了 10 段,但可以轻易扩展),第一步就是根据输入值得到合适的 x0、x1,使得第二部有入口参数。

第二部就是根据 x0、x1,从 EEPROM 中查找 y0,y1,求得系数 y=ax+b 的 a 和 b

那么,根据输入值,就可以得到不同分段下的 a 和 b 了

那么,用测试程序测试出 1~10 的不同分段点,

vg_c02.png
写入 EEPROM
vg_c05.png

这样,我的 Voltgen 的非线性校准就完成了,校准后可达 1ppm,整个过程是全程控的,无须人工介入。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2021-5-19 02:56:27 | 显示全部楼层
长知识了,很感谢回答。  不过我不太关心这些
这些可以用软件来弥补。我担心的是硬件
一直不理解ADC的一个。采样率的问题。
比如一个1m8bit的adc我给他的时钟频率是1m吗
回复 支持 反对

使用道具 举报

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

本版积分规则

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

蒙公网安备 15040402000005号

GMT+8, 2024-5-13 01:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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