单片机在模拟电路中使用的时候,经常需要用到AD功能,而通过单片机ADC采集回来的数据往往不能直接使用,在不同场合下需要对采集到的数据要通过不同的算法对数据进行处理,先来看看最简单的平均值采样法。

平均值采样法就是在一定时间内对采样的数据直接进行累加,然后用累加和除以采样的次数。将计算出来的平均值做为有效数据使用。

直接看C代码的实现

//累加100次求平均值
u16 get_ave1( void )
{static  u8  cnt = 0;static u32 sum = 0;static u16 ave = 0;if( cnt < 100 ){sum += ReadVol_CH4();           //读取ADC数据cnt++;}if( cnt >= 100 ){ave = sum / 100;cnt = 0;sum = 0;}return ave;
}

代码很简单,每采样一次数据就累加一次,采样到100次数据后计算平均值就行。

下来测试一下采样效果,首先通过函数发生器产生一个100HZ的正弦波,最小值0V,最大值4V。

在主函数中读取采样到的平均值,并通过串口打印出来,然后用串口波形显示软件将采样到的数据显示出来。

while( 1 ){val1 = get_ave1();printf( "A%d\r\n", val1 );}

串口波形软件显示的波形如下:

可以看到采样回来的数据还算比较稳定,平均值为418,由于单片机自带的是10位AD,所以ADC采样值最大为2^10 =1024,单片机是5V供电,可以计算出采样的平均电压为 418/1024*5=2.04V,通过上面示波器测的波形可以看到,示波器测的正弦波平均值为2.02V,说明平均值采样的方法还是比较准确的。串口波形软件上显示的波形有点波动,那是因为采样回来的平均值在 418 和 422 之间波动,可以计算出波动电压范围是(422-418)/1024*5=0.01953125V,如果要求不高的话,这个波动还是可以接受的。

在采样数据比较规律时,采样数据如果能采样到整个周期的数据时,平均值采样法还是比较简单的。如果采样的结果波动较大,可以通过增加采样次数来调整采样结果的稳定性。

单片机ADC采样算法----平均值采样法相关推荐

  1. 单片机ADC采样算法----有效值采样法

    在使用单片机ADC功能采样数据时,通常情况下用平均值计算就够了,但是在计算功率时就需要用有效值来计算真正做功的情况.如果是标准的正弦波的话,正弦波的峰值是有效值得1.414倍,可以通过峰值来计算有效值 ...

  2. 单片机ADC采样算法----中位值滤波法

    中位值滤波法就是通过连续采样奇数个数据,然后对数据从小到大排序,取中间的值做为本次采样值. 下面看C代码的实现 #define M 11unsigned int filter2( void ) {un ...

  3. 单片机ADC采样算法----限幅滤波法

    限幅滤波法就是通过软件来限制本次采样值的上次采样值的偏差,若本次采样值和上次采样值的偏差超过了设定的最大偏差值,则丢弃本次的采样值. 下面看C代码的实现 //返回两个整数差 unsigned int ...

  4. 单片机ADC采样算法----递推平均值采样法

    在上一篇文章单片机ADC采样算法---平均值采样法中分析了平均值采样法的使用,上篇文章中的平均值采样法是连续采样100个数据,然后求平均值,这种方法存在一个问题,就是采集100个值之后,下一次又重新采 ...

  5. c语言adc采集取平均值,单片机ADC采样算法----递推平均值采样法

    在上一篇文章单片机ADC采样算法---平均值采样法中分析了平均值采样法的使用,上篇文章中的平均值采样法是连续采样100个数据,然后求平均值,这种方法存在一个问题,就是采集100个值之后,下一次又重新采 ...

  6. 采样算法哪家强?一个针对主流采样算法的比较

    论文标题: A Systematic Characterization of Sampling Algorithms for Open-ended Language Generation 论文作者: ...

  7. 路径规划之空间采样算法研究现状简述

    关注同名微信公众号"混沌无形",有趣好文! 原文链接:机器人空间采样算法研究现状简述(包含原文PDF百度云下载链接) 摘要:运动规划是移动机器人自主导航系统中的重要模块之一,相关算 ...

  8. python学习——介绍若干采样算法

    在做一个事情,因为时序数据的频率经常不一样,比如说股票跳动里的高波动部分,但是我们比如说想拿到模型中训练,这个时候经常就需要上采样和下采样来操作 第一个算法:论文Downsampling Time S ...

  9. 机器人空间采样算法研究现状简述

    ‍ [文末提供原文PDF免费下载(期刊论文版式)]‍ ‍ 摘要:运动规划是移动机器人自主导航系统中的重要模块之一,相关算法研究成果层出不穷,本文将空间采样算法拆解为四个子类算法:PRM类算法.RRT类 ...

最新文章

  1. 定义一个数组返回最大子数组的值(1)
  2. Flex与.NET互操作(九):FluorineFx.NET的认证(Authentication )与授权(Authorization)
  3. java 调用r语言包传参数_Java与R语言的配置,调用
  4. 设计模式--策略模式--Java实现
  5. .h文件包含后显示类型_C语言中#include只能包含.h文件吗?
  6. 《Python入门到精通》Python基础语法
  7. java中扫描类_java类扫描
  8. javascript在数组的开头推送元素[重复]
  9. Python实战系列-爬取网页内容
  10. ap6212linux驱动下载,AP6212各个版本固件
  11. 电脑Tab键有什么用
  12. cad完全卸载教程_卸载后 如何彻底删除CAD2010?
  13. 怎样检测和应对数据集的Outliers
  14. 地牢大师--(BFS+三维数组)
  15. linux uts 全称
  16. 法国敏捷开发与敏捷测试模式
  17. 玲珑oj 1032A-B(组合数学)
  18. 台达伺服位置控制的应用和调试
  19. 【舒适区如何影响着我的生活】
  20. bids格式数据中config文件的编写

热门文章

  1. socket编程,简单查看
  2. ubunto中常出现的问题
  3. wordpress中文教程
  4. 灾难,让我们靠的更近!
  5. myeclipse 10.7 for linux激活
  6. SecureCRT 基本设置
  7. oracle高压水位线,Oracle 高水位线详解(HWM)
  8. 数据库-MySQL中间的注释
  9. python写spark_python开发sparkSQL应用
  10. dll放在unity哪个文件夹下_程序丨如何将你的Unity代码整理到一个DLL中?