设计与开发

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

小编 2024-11-25 设计与开发 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为单片机采集到的数字量。

单片机采集多路模拟信号,如何筛选出里面的最强信号?

使用单片机采集多路模拟信号时,我们通常比较关注信号的动态范围、强度、周期、频率成分等参数,在一些产品应用中,信号强度的判断尤为重要。

最近我给客户做了一个小的检测设备,这个设备的主要功能是从8路模拟信号中选取一路最强信号,然后把这个信号筛选出来,转换成音频信号播放。

采集要求比较简单,但是需要判断的信号是随机波动的,强度的计算显然不能用判断直流信号幅值那样的方式来解决,我们似乎需要对信号做一些“积分”,也就是采集一小段时间内的信号,然后算出这段时间内信号的“强度总和”,然后得出信号所蕴含的能量,也就自然而然的获取了信号的强度。

具体是这样操作的,首先通过单片机设定采样周期为1KHz,也就是每秒采样1000个数据,8个通道轮询,共8KBYTE数据,将这些数据去掉电路上设置的偏置电压,然后同一通道的数据相加求和(这些数据之中有正数也有负数),得到的结果再除以采样点数1000,就得到了平均数据强度,接下来的工作就是判断8个通道中的数据大小,这就很容易获取最大信号强度的数据通道了。

似乎整个过程比较舒适,但是有一些细节还需要特别注意,首先是干扰,比如如何去掉尖峰脉冲,毕竟如果一个通道中混入了大量信号幅度很大,周期较短的尖峰脉冲也会对最终的信号强度判断产生影响。

我采用的方法是硬件RC串联电路做初步滤除,然后ADC采集数据做相邻数据幅度差分判断,如果发现跳变异常数据,当前采样点数据用前一采样电数据覆盖,实际检测效果很好。

还有一个问题就是工频的影响,对于弱信号来说,工频信号的叠加会导致最终听到的音频信号出现比较大的背景噪声,这个需要从两个方面来解决,一个是信号通路,利用高通滤波器滤除50Hz工频,二是电源的选择,尽量选用电池供电的方式,或者在电源输出部分增加磁珠或电感,个人感觉磁珠的效果比较可靠。

当然筛选信号强度的办法还有很多,这里只是用了最简单的方案,其实也可以使用纯软件的方式将采集到的信号做fft,剔除不需要的信号,然后IFFT在做判断,这样的处理更精准一些,还原出的信号也更加干净,有兴趣的同行也可以尝试一下,也欢迎大家一起探讨交流。

相关问答

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

朋友们好,我是电子及工控技术,我来回答这个问题。众所周知单片机是一种超大规模的集成电路,它只能“读懂”并处理数字信号,对于连续量的模拟信号则无能为力。...

单片机 怎么 采集 电感 信号 ?

要采集电感信号,可以使用单片机的模拟输入引脚。首先,将电感与一个合适的电阻串联,形成一个电感电阻串联电路。然后,将电感电阻串联电路的连接点与单片机的...

STC 单片机 如何 采集 音频 信号 ?

STC单片机可以通过外接音频模块或者内置的ADC(模数转换器)来实现音频信号的采集。外接音频模块可以将音频信号转换为数字信号输入到单片机中,而内置ADC则可以...

单片机 电路 采集 380V交流电路电流信息的办法?

采集端用电流互感器,然后互感器末端的输出信号通过一些限流措施加到ADC0809(模拟到数字)转换芯片的某个通道上,最后芯片的数据输出端接到单片机的I/O上就可以...

单片机 如何 采集 电流互感器出来的 信号 ?

电流互感器副线圈的信号是交流电流信号,先通过一个电阻,变成电压,再整流滤波,并测出最大电压值,确保不能超过A/D转换器允许输入的最大电压,要经A/D转换后,...

51 单片机 可以接收 模拟信号 吗?

回答是:可以。51系列单片机品种非常多,主要的厂家有Intel、philips、Atmel、silicon等等,除了少数型号,绝大多数型号都带有A/D(模拟/数字转换器)引脚,可...

单片机 的I/O接口能输入或输出 模拟信号 吗? - 鬼皇一号 的回答...

单片机的I/O接口,如果该I/O口有AD功能就可以,以模拟量信号输入,如果该I/O口有PWM功能就可以,以PWM调制信号输出,或者通过滤波以模拟量信号输出,现在...

单片机 如何实现模拟输出,内部的adc模块能不能直接输出 模拟信号 ?

可以用dac芯片或者pac芯片扩展。pac芯片gp8101可以实现pwn转电压信号,dac芯片gp8201可以实现i2c转电压信号,sop8封装,非常方便。可以用dac芯片或者pac芯片扩展...

51 单片机 如何 采集 24v电流 信号 ?

1.通过使用电阻分压器将24V电流信号转换为0-5V电压信号,再通过51单片机的模拟输入口进行采集。2.由于51单片机的模拟输入口只能接受0-5V的电压信号,而24V电...

请问在51 单片机 控制系统中,如何实现对多路 模拟信号 的同时测量?

普通单片机实现多路模拟量的数据采集、显示需要:外部连接一个多通道输入的ADC芯片,单片机按照一定的周期驱动模拟开关切换到不同的模拟通道,设计模数转换控制...

猜你喜欢