技术文档

单片机adc采集 单片机如何通过ADC模块采集模拟信号

小编 2024-11-24 技术文档 23 0

单片机如何通过ADC模块采集模拟信号

单片机的ADC接口属于模数转换接口,将外部的模拟量信号转化为数字信号,单片机属于数字器件,需将模拟信号转化为数字信号才能够为单片机处理。目前市场的很多单片机都自带ADC转换接口,若无ADC转换接口,可以使用ADC数模转换芯片外扩。

ADC模块是将模拟信号转化位数字信号,数字信号用0和1表示,ADC模块有参考电压,假设给的参考电压是5V,ADC是12位的(几位表示用二进制几位数存储模拟量转化后的数字量,12位的ADC则可储存数字量范围为:(二进制)000000000000~111111111111,转换为十进制数字范围为0~2^12即0~4095。

也就是说把参考电压分为2^12份即4096份,最小分辨率为VREF/4096。

也就是说二进制的000000000000代表输入模拟量0V,而111111111111代表最大值VREF。

下面以上图C8051单片机为例子,如原理图所示,该单片机工作电源为3.3V,参考电压为2.048V,所以模拟量的输入范围为0~2.048V。若所需采集的电压范围大于参考电压值时,可以使用电阻分压进行降压或者使用运放进行缩小等。

该单片机ADC为12位的。也就是说输入电压为0时,单片机转换后的数字量结果为000000000000(二进制),当输入电压为2.048V时,单片机转换后的数字量结果为111111111111(二进制),十进制为4095。

也就是说,输入电压的值V=2.048×ADC采集到的数字量÷4095。

比如我们要采集一个0~10V范围的模拟量电压进行显示,那么,可以先将0~10V的电压缩小5倍,可以使用电阻分压,也可以采用运放缩小等方式,然后接入单片机的ADC采样口,可以接入上图的P2.2口。

最后换算公式为:V = result * 2.048/ 4095 * 5;其中 result为单片机采集到的数字量。

单片机如何处理ADC采样数据?

单片机工程师在面试的过程中,经常会碰到一些相同的问题,笔者总结了十个提问率较高的问题,供大家参考。现在我们来分析单片机工程师常遇面试问题之五:单片机如何处理ADC采样数据?

前面作者有文章介绍了单片机是如何采样电压和电流的,如有不了解单片机ADC采样原理的小伙伴可以点击我的头像进入我的主页查看文章"单片机是如何采样电流?"。

首先一定有小伙伴有疑问,为什么还要对采样的数据进行处理呢?直接拿来用不行吗?对于这个问题,我的回答是不建议这样做,因为任何系统都会存在干扰,不进行处理就会有数据存在一定的误差。那么我进行数据处理就是要尽量避免因外界干扰引起的误差。

在这里作者推荐两种方法,第一种方法是多次采样加权取平均,我相信很多朋友都可以想到这种方法,但在写程序的时候可以运用一些技巧,作者分享给你。首先我们ADC采集8次数据并且对这8次数据累加(可以每1ms调用该函数),累加完成后将累加结果右移3位得到最后的采样结果。当然这个方法还可以进一步改善,比如取样10次,然后去掉最大值和最小值,再对剩下的8次进行取平均。下面贴出参考程序供小伙伴参考。

图(1)参考程序

当然,第一种取平均的方法能够有效抑制干扰,但因为需要多次采样,更新数据的时间会很长,比如取样8次,每1ms取样一次,那么更新数据就需要8ms时间,所以对采样的数据实时性要求不是很高的系统才可以用这种方法。所以我们第二种方法就是用在实时性比较高的系统。作者推荐的是中值滤波的方法,实现思想就是取5个数据,每次采样的新数据替换掉最老的数据,然后把中间的那个数据当做是采样数据,这样不仅可以有效抑制干扰,而且响应速度快。

如文章存在问题,麻烦大家指正,如文章对你有帮助,欢迎关注作者,后面作者将为你推送更有价值的文章!如大家如有疑问,请把问题发到评论区,我们一起讨论。如各位路过的大佬有更好的方法,欢迎发到评论区分享给大家,谢谢~~

相关问答

单片机 如何处理 ADC 采样数据?

通过AD转换单片机可以把模拟信号转换为数字信号单片机通过AD输入口可以采集到外界的电压值。根据I=U/R的关系,可以用于测量电流;使用NTC和固定电阻进行分压,...

单片机 ADC 是如何进行 采集 的?

摘要:本文设计并实现了基于2.4GHzISM频段射频收发芯片nRF2401的计算机短距离无线数据采集系统。该系统采用PC作为系统控制中心,以C8051F021单片机...

请问600V的直流电压用什么方式 采集 ,然后 采集 ADC 再到 单片机 ,谢谢?

直接使用电阻分压,分出的电压值大小取决于ADC的参考电压,正常应该是参考电压的一半。采用直接分压,单片机与这个600V电压是不隔离的,若要隔离的话就要麻烦一...

单片机 adc 之间如何连接?

单片机与ADC之间可以通过多种方式进行连接,包括并行接口、串行接口、SPI接口等。其中,最常用的方式是通过SPI接口进行连接,通过SPI接口可以实现快速、稳定的数...

单片机 用一个IO口 采集 多个按键信号,如何实现?

在设计中如果用到IO口不够用,我们肯定第一时间想到的就是通过电阻分压,根据按下不同按键,来让不同阻值的电阻接到分压电路中,然后ADC模块做电压数据读取分析...

如何用 单片机 测量电压,要用到什么材料?

1、先将输入的电压衰减一定的倍数,即衰减到0-5V范围内。衰减电路采用RC衰减器,即RC并联后再串联。选择合适的R、C参数。2、设置电压跟随电路。这个电路只要是...

esp32的 adc 参考电压?

ESP32芯片内置了两个12位ADC模块(ADC1和ADC2),可以通过GPIO引脚进行采样。ESP32的ADC参考电压可以通过两种方式来设置:内部参考电压和外部参考电压。内部参...

单片机 中8路10位 ADC 是什么意思?尤其为什么要强调时10位?

采集信号为8路输入的模数转换芯片10位说明其转换的数字信号为2进制10位,用10个输出电平表示输出位数表明了其采样精度采集信号为8路输入的模数转换芯片10位说...

英语翻译基于电涡流传感器的微小位移测量摘要本文提出了一种...

[回答]下面的都是上google网上在线翻译的,不准确,你需要对下面的答案修改一下!

采用 ADC 0809设计一个多通道模拟电压 采集 接口电路?

ADC0809只能采集电压信号,对于电流信号需要转化为电压信号后采集。即不能直接用ADC0809采集电流信号。ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐...

猜你喜欢