news 2026/5/1 7:12:56

ADC的采样频率对于信号检测的影响

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ADC的采样频率对于信号检测的影响

简 介:本文探讨了ADC采样频率对150kHz信号幅度测量的影响。实验使用STC32G微控制器,通过改变ADC时钟分频系数(0-7)获得不同采样频率下的数据。研究发现:1)ADC采样频率较高时,输入阻抗较低导致信号幅度减小;2)分频系数为7时(最低采样频率)信号估计方差最小(0.2032);3)分频系数为6时出现异常,方差最大(1.4083)。实验采用三角窗函数处理256点采样数据,通过FFT分析获得信号归一化频率和幅度。结果表明ADC采样频率的选择会显著影响信号测量精度,最佳采样频率需根据具体应用场景确定。

关键词ADC采样频率估计方差

不同ADC频率对于测量结果的影响

  • 通过采样256数据计算单个频率交流信号有效值
  • STC32G12 使用外部晶振
  • STC32G 采集150kHz 信号并测量幅度

01ADC采样频率对于信号检测影响


一、背景介绍

昨天,使用带有外部晶体的STC32G电路板, 采集了 150kHz 信号的多组ADC数据。 分别对应 ADC 不同的时钟频率下采集到的数据。 有的数据是在欠采样频率下获得的。 下面通过数据进行交流频率幅度检测, 查看一下哪一种 ADC 采样频率所获得的信号幅度更为精确。 刚才通过实验发现, 选择对采集数据进行三角加窗, 采用正确的数据长度, 便可以获得非常好的信号检测数值。

▲ 图1.1.1 ADC分频系数为0对应的采样数据
fromheadmimport*ddim=tspload('sample0','ddim')forid,dinenumerate(ddim):plt.clf()plt.plot(d,lw=3)plt.xlabel("N",color="steelblue",fontsize=24)plt.ylabel("ADC",color="steelblue",fontsize=24)plt.grid(True,which='both',linestyle='--',alpha=0.7)plt.tight_layout()plt.draw()plt.pause(0.001)pltgif.append(plt)ifid>=11:breakpltgif.save()

▲ 图1.1.2 ADC分频系数1对应的采集数据

▲ 图1.1.3 ADC分频系数2对应的采集数据

▲ 图1.1.4 ADC分频系数3对应的采样数据

▲ 图1.1.5 ADC 分频系数5对应的采样数据

▲ 图1.1.6 ADC分频系数为6 对应的采集数据

▲ 图1.1.7 ADC分频系数为7对应的采样数据

二、分频系数0

针对 ADC 分频系数为0, 对应的时钟信号最高, 计算它内部交流信号的系数。 使用三角窗口对数据进行加窗。 首先对数据通过补零, 或者长度为 128倍的数据, 选择频谱最高点, 最终可以获得数据归一化频率为 2.41276 。


计算不同数据长度对应的最小方差, 在长度最长的时候, 最小信号幅度方差为 0.5842。

  • 信号幅度平均值:323.098。
  • 归一化频率:2.41276
  • 最小方差:0.5842(N=256)

三、分频系数1

采用同样的方式处理 ADC 分频系数为1 , 它对应的归一化频率为 2.06033。 在这个归一化频率下, 计算信号中的幅度以及对应的方差。 幅度的平均值为 324.1, 最小方差为 0.3204。

  • 信号幅度平均值:323.098。
  • 归一化频率:2.06034
  • 最小方差:0.3204(N=256)

四、其它分频系数

下面, 分别对于分频系数从2 变化到7, 计算各自的信号的幅度, 幅度对应的方差, 希望方差越小越好。 这些不同ADC分频系数, 对应不同的采样频率。 将八种不同的采样频率所获得的数据对照一下。 可以看到所得到的信号幅度大都在 400以上。 但是对于采样频率比较高的时候, 计算所得到的信号幅度减小了。 对此,所做的解释是, 在ADC频率比较高的时候, ADC 通道输入阻抗比较小。 影响了 前面 LC 信号接收谐振回路的 Q 值, 使得输入信号降低了。 后面随着ADC采样频率降低。 ADC 输入通道的电阻增加了, 对应的 信号幅度也增加了。 当分频系数达到7 的时候, 也就是ADC采样频率最低, 所得到的 信号估计方差达到了最小。 其次是分频系数为 5 。 很奇怪, 对于分频系数为 6 的时候所造成的信号估计方差最大。 对此现象现在还无法进行解释。

ADC分频系数信号幅度最小方差归一化频率
0323.0980.58422.4128
1353.880.32042.0603
2406.30.27260.17564
3421.10.277141.5589
4425.780.289492.7636
5409.280.21710.8030
6406.131.40830.8065
7419.510.20322.51496
fromheadmimport*ddim=tspload('sample7','ddim')d=ddim[0]-mean(ddim[0])d0=[0]*len(d)d=list(d)for_inrange(127):d.extend(d0)dfft=abs(fft.fft(d))dfft2=dfft[:len(dfft)//2]maxid=where(dfft2==max(dfft2))[0][0]omiga=maxid/128*2*pi/256printf(omiga)''' plt.plot(dfft, lw=3) plt.xlabel("N", color="steelblue", fontsize=24) plt.ylabel("FFT", color="steelblue", fontsize=24) plt.grid(True, which='both', linestyle='--', alpha=0.7) plt.tight_layout() plt.show() '''N=len(ddim[0])deftriangleW(n):n2=n//2nn1=list(range(n2))nn1r=nn1[::-1]na=[n2-1]*(n-len(nn1)-len(nn1r))returnarray(nn1+na+nn1r)/(n2-1)defcosineW(n):o=2*pi/(n-1)w=(1-cos(o*array(range(n))))/2returnw''' d1 = ddim[0]-mean(ddim[0]) w = triangleW(len(d1)) d1w = d1*w plt.plot(d1, lw=1, label='Origin') plt.plot(d1w, lw=3, label='Windowed Data') plt.xlabel("N", color="steelblue", fontsize=24) plt.ylabel("ADC", color="steelblue", fontsize=24) plt.grid(True, which='both', linestyle='--', alpha=0.7) plt.tight_layout() plt.show() '''Adim=[]cdim=array([cos(omiga*n)forninrange(N)])sdim=array([sin(omiga*n)forninrange(N)])defAmplitudeN(n):globalddim,N Adim=[]stddim=[]fordinddim:ddd=d-mean(d)dd=ddd[N-n-1:]ddn=len(dd)w=triangleW(ddn)dd=dd*w a=sum(dd*sdim[:n+1])b=sum(dd*cdim[:n+1])c=sqrt(a**2+b**2)/(ddn)Adim.append(c)v=std(Adim),mean(Adim)returnv nn=list(range(128,256))printf(nn)vdim=[]adim=[]forninrange(128,256):v,a=AmplitudeN(n)vdim.append(v)adim.append(a)printf(min(vdim))printf(mean(adim))plt.plot(nn,vdim,lw=3)plt.xlabel("NN",color="steelblue",fontsize=24)plt.ylabel("std(N)",color="steelblue",fontsize=24)plt.grid(True,which='both',linestyle='--',alpha=0.7)plt.tight_layout()plt.show()

结 ※


文对于不同的ADC采样频率下, 所得到的信号幅度估计进行测评估。 发现,当采样频率降低之后, 所得到的信号的幅度最为精确。 不过对于这个方面的分析, 应该是降低ADC频率下, 对应的输入阻抗提升, 降低了对于前面信号放大电路的影响造成的。 总的来说, 所有频率下, 除了分频系数为 6的时候, 所产生的信号幅度估计方差较大之外, 其它对应的信号幅度估计方差都相差不太多。


■ 相关文献链接:

  • 通过采样256数据计算单个频率交流信号有效值-CSDN博客
  • STC32G12 使用外部晶振-CSDN博客
  • STC32G 采集150kHz 信号并测量幅度-CSDN博客

● 相关图表链接:

  • 图1.1.1 ADC分频系数为0对应的采样数据
  • 图1.1.2 ADC分频系数1对应的采集数据
  • 图1.1.3 ADC分频系数2对应的采集数据
  • 图1.1.4 ADC分频系数3对应的采样数据
  • 图1.1.5 ADC 分频系数5对应的采样数据
  • 图1.1.6 ADC分频系数为6 对应的采集数据
  • 图1.1.7 ADC分频系数为7对应的采样数据
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 2:18:08

吉时利2636B 数字源表keithley 2636B

吉时利2636B数字源表keithley 2636B吉时利2636B数字源表是 Keithley 的 60 瓦源表。源表仪器是一种电子测试设备,可测量和记录精确的电压和电流数据。源仪表以高精度收集信息,非常适合电流电压 (IV) 表征、半导体测试以及具有正电流源值和负电流源值的测…

作者头像 李华
网站建设 2026/4/28 4:46:01

如何通过水质监测结果判断排水管网是否存在混接、错接问题?

市政排水管网作为城市水环境治理的“血管系统”,其规范运行直接影响污水处理效率和受纳水体质量。然而,管网混接、错接问题存在——生活污水接入雨水管、工业废水混入雨水管网、雨水管与污水管直接连通等情况,不仅导致污水处理厂进水负荷波动…

作者头像 李华
网站建设 2026/4/28 6:42:57

自建GitLab与CI/CD实战:团队协作完整方案

本文详解如何自建GitLab代码仓库,配置CI/CD自动化流水线,打造完整的团队协作开发环境。前言 代码托管平台的选择: GitHub:开源首选,但私有仓库有限制Gitee:国内快,但有审查自建GitLab&#xff1…

作者头像 李华
网站建设 2026/4/26 4:39:17

2025AI一键生成Mermaid流程图:让代码变图表的智能工具

在日常工作中,你是不是经常需要绘制流程图,但又觉得手写Mermaid代码太麻烦?或者对Mermaid语法不熟悉,不知道如何开始?其实,现在有了AI的帮助,这一切都变得简单了。你只需要用文字描述你的流程&a…

作者头像 李华
网站建设 2026/4/30 15:48:24

6、利用Ansible Container构建并部署NGINX容器

利用Ansible Container构建并部署NGINX容器 在容器化技术盛行的今天,Ansible Container为我们提供了一种高效、便捷的方式来构建和管理容器化应用。本文将详细介绍如何使用Ansible Container来安装、运行、修改和推送NGINX角色,帮助你快速搭建一个功能完善的NGINX服务器容器…

作者头像 李华
网站建设 2026/4/29 15:37:10

8、使用Ansible Container构建MariaDB容器详细指南

使用Ansible Container构建MariaDB容器详细指南 1. 初始化MariaDB项目和角色 在对支持容器的角色结构有了一定了解后,我们可以通过初始化一个新的Ansible Container项目来启动MariaDB容器。以下是具体步骤: 1. 在Vagrant主机的新目录中,使用 ansible-container init 命…

作者头像 李华