您的位置 首页 FPGA

通用的ADC数据处理子程序 —线性插值

通用的ADC数据处理子程序 —线性插值-由MCU的ADC读到的“真实世界”的数据,0~1023对应10bit的ADC,0~4095对应12bit,0~65535对应16bit。

尽管这个论题是程序员的基本功,可是,每一次实际运用时都要“从头编程+除错”折腾一番。
所以,萌发了搞一个“通用的”,意图是,下次用届时,拿过来就用。
我们看看我的办法是不是最佳的,欢迎提出改善计划。

MCUADC读到的“实在国际”的数据,0~1023对应10bit的ADC,0~4095对应12bit,0~65535对应16bit。一般,这些数据都要经过简略的数据处理,变换成电压/电流/温度/压力/等等含义清晰的数值,用于传输或许显现。

线性插值,便是最最常用的数据处理办法。 直线函数公式:

 

运用实例,某电池的“电压—容量”丈量预算成果,大致如下图所示:

 

由曲线上面能够看出,尽管已经有了10组实测数据,可是只需取其中黄色的4组数据,也便是用3段直线进行线性插值,就能够得到很好的“近似成果”。
下图,便是用我的“通用线性插值程序”得到的计算成果,看图形,基本上相同的。
(留意,ADC数据所对应的电池电压值,仅仅丈量ADC数据时用可调电源替代电池的外加电压,它们并不参加运算。 直接由ADC数据插值出电池的剩下电量。)

正弦曲线测验实例,运用37个X轴等距离的数据(每10度一个),线性插值出0-360度的规模一段正弦曲线的成果:
(为了进步转化精度,合理的做法是在曲线改变剧烈的部分,密布取点;线性好的部分,少数取点。而不是选用等距离的方法取点。)

 

最终,给出子程序:
需求阐明的是,笔者对有符号的整数(int)和浮点数(float)有“原始的冲突”,喜爱运用无符号整数类型(uint)。所以只做出了整数类型的。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/343175.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部