新闻  |   论坛  |   博客  |   在线研讨会
单片机如何对采样的数据进行积分运算
Linux嵌入式 | 2022-12-30 10:14:13    阅读:650   发布文章

在单片机进行数据采样时,有一些干扰我们是捕捉不到了,为了观察方便我们经常会把采集到的数据保存进行绘图处理,绘图我们可以将数据通过串口发送给PC端的上位机处理也可以通过单片机直接将数据显示出来,下面是将AD采样的数据保存然后使用Segger公司针对嵌入式平台开发的稳定、高效的图形软件库emwin在LCD上显示的图像:

为了减小干扰对数据采集的影响,通道要对采集的数据进行数字滤波处理

常见的滤波方法及优缺点如下表所示:



对采集的数据进行滤波处理后,再对滤波后的数据进行计算会是结果更加的准确。对上图的曲线如果我们要求峰的面积就可以进行积分运算


如上图所示:确定峰宽之后,峰的面积=梯形的面积(图中红色区域)-小梯形的面积(图中蓝色区域),根据微积分可将蓝色区域的面积分割为(X2-X1)即峰宽个高为1小梯形的面积之和,而大梯形的面积=(Y1+Y2)*(X2-X1)/2;

在实际应用中确定了峰的位置和峰宽之后,我们就可以在采集的数组中找到对应的Y1,Y2,具体算法如下:

adc_data :ADC采样数据数组

Curve_Area 小梯形面积

Ladder_Are 大梯形面积

All_Area: 曲线面积

for(i=x1;i<x2;i++)

{

Curve_Area=Curve_Area+(adc_data[i]+adc_data[i+1])/2;

}

Ladder_Area=(adc_data[x1]+adc_data[x2]) *(x2-x1)/2

All_Area=Ladder_Area-Curve_Area;


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
工科男,多年嵌入式工作者,每日分享工作中常遇到的一些“坑”
推荐文章
最近访客