历史上的今天
返回首页

历史上的今天

今天是:2025年04月01日(星期二)

正在发生

2020年04月01日 | 单片机ADC采样算法----平均值采样法

2020-04-01 来源:eefocus

单片机在模拟电路中使用的时候,经常需要用到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%drn", val1 );

    }

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

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


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

推荐阅读

史海拾趣

Displaytech公司的发展小趣事

Displaytech一直致力于技术创新和产品升级。在多年的发展过程中,公司不断推出新的LCD产品,包括触摸屏TFT、单色图形LCD和字符显示模块等。同时,公司还加强了表面贴装能力、PCB组装服务、工具和注塑成型等业务的拓展,进一步提升了整体竞争力。

上海双岭电子(Double-peak)公司的发展小趣事

随着市场的不断扩大,双岭电子逐渐意识到品质对于企业长远发展的重要性。因此,公司投入大量资源加强品质管理,建立了完善的质量检测体系,并对全体员工进行品质意识培训。通过不懈的努力,双岭电子的产品质量得到了显著提升,赢得了客户的广泛赞誉。同时,公司还积极参与国际标准化组织的认证工作,为进一步提升品牌影响力奠定了基础。

Erocore Enterprise Co Ltd公司的发展小趣事

随着技术实力的提升,Erocore开始积极拓展市场。公司凭借优质的产品和服务,逐渐在电子行业中树立了良好的品牌形象。通过与国内外知名企业的合作,Erocore的产品逐渐进入更广泛的市场领域。同时,公司也加大了市场营销力度,通过参加展会、举办研讨会等方式,提升品牌知名度和影响力。

富信半导体(FOSAN)公司的发展小趣事

随着技术实力的提升,Erocore开始积极拓展市场。公司凭借优质的产品和服务,逐渐在电子行业中树立了良好的品牌形象。通过与国内外知名企业的合作,Erocore的产品逐渐进入更广泛的市场领域。同时,公司也加大了市场营销力度,通过参加展会、举办研讨会等方式,提升品牌知名度和影响力。

Genesys Logic公司的发展小趣事

进入80年代,随着半导体市场的竞争加剧,“General Microcircuits”意识到仅凭自身力量难以迅速扩大市场份额。于是,公司采取了一系列并购策略,先后收购了多家在模拟电路、数字信号处理等领域具有技术优势的小型公司。这些并购不仅为“General Microcircuits”带来了丰富的产品线和技术积累,还显著增强了其研发能力和生产能力,使其在全球半导体市场的地位稳步提升。

ALTERA(阿尔特拉)公司的发展小趣事

在20世纪70年代初,一家名为“General Microcircuits”的初创公司(此名称为虚构,以符合问题要求)凭借其在集成电路设计领域的突破性创新迅速崛起。公司创始人李博士带领团队研发出了一种新型低功耗微控制器,该产品在功耗管理上实现了前所未有的效率,极大地延长了便携式电子设备的电池寿命。这一技术创新迅速吸引了市场关注,多家知名电子产品制造商开始采用其芯片,推动了“General Microcircuits”在行业内的知名度与市场份额的快速增长。

问答坊 | AI 解惑

瞎侃诗一首

=============== 背负青天朝下看, 城廓一片, 跃跃欲试飞上天, 需花时间, 飞得越高越危险, 稍不留神, 翅膀已被云折断。 ===============…

查看全部问答>

求一个at91sam9261的bsp

我买的开发板是英贝德的9261,由于新学,对很多东西都不是很懂,而这个开发板有没有现成的bsp模板,哪位能提供一份at91sam9261的bsp模板吗?最好是某家开发板商自带的或者自己做的bsp,可以编译通过的。我绝对不是觊觎您的技术,纯粹是为了学习,相 ...…

查看全部问答>

在没有安装任何显卡驱动下 怎样读取显卡的相关信息

在没有安装任何显卡驱动下 怎样读取显卡的相关信息 如:厂商 deviceid 等?…

查看全部问答>

【求助】AD使用内部参考电压,那几个参考电压脚怎么处理呢?悬空吗?

【求助】AD使用内部参考电压,那几个参考电压脚怎么处理呢?悬空吗?…

查看全部问答>

2011电子展览会-第78届中国电子展

2011年第78届电子展现又开始接收报名了,由于中国电子展每年秋季举行连报活动;所以很多客户现场就报名了,四个展馆近50000平方米,展位近1700余个,现在展位已销售过半,特别是2号馆综合元器件展馆,现在已没有位置可选(详见各展馆平面图)。建 ...…

查看全部问答>

如何用串口给LM3S811下载程序

请问谁用过LM Flash Programmer通过uart给LM3S811下载程序啊,想问一下硬件上怎么处理,资料中说要把一个引脚拉低,但也有人说不用,不知道到底用不用,希望有经验的同志指点。如果需要把某个引脚拉低,那么出厂时应该是哪个引脚?…

查看全部问答>

控制步进电机 正反转 程序 解析

我初学51系列单片机,希望有朋友帮忙解析程序   如:主程序中,MAIN:   MOV    TMOD,#10H 这“#10H” 是做什么的,这条指令是做什么?   谢谢帮忙的朋友,谢谢!   控制步进电机 正反转 ...…

查看全部问答>

LM3S8962开发板原装进口和国内委托制造的有区别么

最近想入手一个EKK-LM3S8962开发板,直接买原装进口的购买周期太常,但我急着用;在网上看到国内有该开发板TI的PCB源文件生产的板子,请问论坛上的大牛这两个板子有什么区别?我用8962开发板主要做以太网方面的开发测试,听朋友说有些国内仿国外原 ...…

查看全部问答>

AT91SAM9XE512 ARM程序无法在SDRAM中运行

我使用了AT91SAM9XE512进行程序设计,如果将程序加载到内部的SRAM中运行,没有问题。但是如果是加载到外部的SDRAM中运行就莫名其妙的跑飞。因为程序战胜的RAM内存比较大,在调试期间只能使用外扩的SDRAM内存,其结果就是无法调试。我手头上共焊接了 ...…

查看全部问答>