【NI-DAQmx入门】频率测量

news2024/9/23 13:29:11

1.频率概述

       时域表示给出了信号在采样时刻的幅度。 频率是指循环或周期事件的复现率,对于模拟或数字波形,信号周期的倒数就是频率。快速傅立叶变换 (FFT) 提供了一种检查频域关系的方法。傅里叶定理指出,时域中的任何波形都可以用正弦和余弦的加权和来表示。然后,相同的波形可以在频域中表示为每个分量频率处的一对幅度和相位值。

        实际应用中的周期性模拟信号很复杂,很难用简单的正弦曲线来表示。傅里叶分析可将任何复杂波形分解为简单的正弦、余弦或复指数函数之和。信号所包含的频率分量往往是我们所感兴趣的,这种分析称为频域或频谱分析。

        另一方面,数字信号频率的获取相对容易。对于简单的数字信号,如图2所示的信号,周期就是两个上升沿或者下降沿之间的时间间隔。

        如果上升沿或下降沿之间的时间间隔略有不同,则可以通过大量采样后取平均值来确定频率。

2.如何进行频率测量

2.1数字信号

        数字频率采集的过程相当简单。如果是低频信号,只需要使用一个计数器或时基就足够了。输入信号的上升沿触发要计数的时基时钟滴答数。由于时基频率已知,就能简单地计算出输入信号的频率。

         当数字信号的频率很高或不断变化时,最好使用下面介绍的双计数器方法。需要注意的是,两种方法种具有相同的硬件局限性,即所要测量的频率不能超过计数器支持的最大输入频率,但可以超过内部时基频率。 

高频双计数器测量方法
        高频信号测量需要使用两个计数器。    一对(两个)计数器会产生用户指定周期的脉冲序列,“测量时间”远大于待测信号,但又要尽量小,以避免计数器翻转。

        内部信号的测量时间为内部时基的整数倍,换句话说,两者之间可以整除。 然后,在已知的时间间隔内测量输入信号的时钟滴答数,该时间间隔由内部信号提供。 将时钟滴答数除以已知的测量时间就能够得到输入信号的频率。

 大范围双计数器测量方法

        对于频率会变化的信号,这种双计数器方法可在整个信号范围内提供更高的精度。在这种情况下,输入信号为被除数,已知值为除数。内部时基的时钟滴答数在分频信号处于逻辑高电平时记录下来。 这时就可以算出逻辑高电平的时间,也就是时钟滴答数乘以内置时基的周期时间。这个值再乘以2,就可以获得分频信号的周期(高电平和低电平时间),它是输入信号周期的整数倍。然后对输入信号周期求倒数即可得到频率值。

        这一方法相当于在大范围测量后求平均值来得到信号的变化频率,但这种方法还能测量比时基频率更高的输入信号。 

注意:

  1. 搜索计数器部分(有时称为“通用计数器”),您将在其中找到以下信息:
    1. 内部基本时钟:计数器的内部基本时钟是导致计数器的值根据门端子的状态递增/递减的信号。
    2. 外部基准时钟频率:如果需要特定的基准时钟频率,大多数 NI 设备都允许使用外部基准时钟。该时钟的用途与内部基本时钟相同,但由用户从外部提供。由于带宽限制,外部基本时钟的最大速率取决于设备的总线。
    3. 基本时钟精度:内部基本时钟的精度直接影响通用计数器的任何测量或频率生成的精度。该精度也继承自整个设备时基精度,这意味着如果外部提供更高精度的主时基,则可以提高该时钟的精度。
  2. 您可以使用奈奎斯特定理知道最大频率,该定理告诉我们,如果连续带宽受限信号不包含高于采样频率一半的频率分量,则原始信号可以可以无失真地恢复。因此,您的最大频率将是您正在使用的基本时钟频率的一半。例如,如果您的基本时钟运行在 100 MHz,则最大频率将为 50 MHz。

2.2模拟信号

        某些设备可通过频率-电压电路直接测量模拟频率。然而,某些设备只能测量电压,必须通过软件算法将测量值转换为频率。

        某些用于测量模拟频率的设备(例如,DSA设备和SCXI-1126),通过电路可产生与测量信号具有相同频率的触发。每当信号从“阈值电平-滞后”传递到阈值电平时,将产生触发。脉冲发生器将通过这些触发在每个频率周期生成一个脉冲。输入频率范围用于设置脉冲的宽度。输入频率范围增加时,脉冲宽度将减小。脉冲序列将被转换为直流信号,其电平与脉冲序列的占空比成正比。脉冲发生时,占空比是脉冲序列周期的分数。直流信号的电压与输入频率成正比,因此可换算为该频率值。

        对于无法直接测量频率的设备,需要使用快速傅立叶变换(FFT)等软件算法,将电压转换为频率,采样速率必须大于采样信号最高频率2倍。

计算方波频率的方法​​​​​​​

​​​​​​​        在软件中实现边沿计数以确定信号的频率。

        请注意,此示例将计算带有噪声数据的额外转换。如果存在噪声,可能需要进行过滤或其他修改以确保准确计数

3.在LabVIEW中使用快速傅里叶变换和功率谱 

什么是傅里叶变换?

        傅立叶变换是一种将信号从时域转换到频域(或反之亦然)的数学运算。在现实世界中,时域是常用的。在时域中,信号以时间为基础显示。在频域中,信号是基于频率显示的。

DFT 和 FFT 有什么区别?

        应用于数字(离散)信号而不是模拟(连续)信号的傅里叶变换称为 DFT(离散傅里叶变换)。FFT(快速傅里叶变换)是一种更快的 DFT,如果信号中的样本数量是 2 的幂,则可以应用它。FFT 所需的运算次数约为 N * log 2 (N),DFT 所需的运算次数约为 N ^ 2,并且 FFT 明显更快。

“交叉功率”VI、“交叉功率谱”VI、“自动功率谱”VI、“功率谱”VI 有什么区别?

        “交叉功率谱”VI 和“自动功率谱”VI 是放置在测量子选板上的高级 VI。其他VI都是低级的。我们通常建议使用高级 VI。“(自动)功率谱”计算信号功率,但相位信息丢失。“交叉功率(频谱)”计算两个信号的功率,并返回频谱之间的相位差。

什么是零填充?

        就是在时域序列的开头和/或末尾添加零。即使添加,也不会对信号的频谱产生影响。当时域序列的长度不是2的幂时,补零是合适的。通过添加零以使序列为 2 的幂,可以更快地完成 FFT 计算。补零还可以提高 FFT 的频率分辨率(参见上面的问题)。

使用FFT VI时,“负频率”存储在哪里?

        FFT VI 位于两侧。这意味着作为傅里叶变换的数学属性出现的负频率包含在VI的输出中。FFT 输出阵列的前半部分包含从 DC (0 Hz) 到奈奎斯特频率的升序频率。阵列的另一半是前半部分的镜像(围绕阵列的中间元件)并且包含负频率。

我应该将什么连接到 dt 输入?

        dt 是时域输入信号中样本之间的时间。如果获取信号的采样率 (fs) 已知,则可以根据 dt = 1 / fs 进行计算。

理论知识可参考此链接:Using Fast Fourier Transforms and Power Spectra in LabVIEW - NI

 4.频率测量的三种方法

Making Accurate Frequency Measurements - NI

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1228622.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Flink】窗口(Window)

窗口理解 窗口(Window)是处理无界流的关键所在。窗口可以将数据流装入大小有限的“桶”中,再对每个“桶”加以处理。 本文的重心将放在 Flink 如何进行窗口操作以及开发者如何尽可能地利用 Flink 所提供的功能。 对窗口的正确理解&#xff…

【Django-DRF用法】多年积累md笔记,第3篇:Django-DRF的序列化和反序列化详解

本文从分析现在流行的前后端分离Web应用模式说起,然后介绍如何设计REST API,通过使用Django来实现一个REST API为例,明确后端开发REST API要做的最核心工作,然后介绍Django REST framework能帮助我们简化开发REST API的工作。 全…

Ps:变换

可以向选区、整个图层、多个图层或图层蒙版应用变换 Transform,还可以向路径、矢量形状、矢量蒙版、选区边界或 Alpha 通道应用变换。 若要变换栅格(像素)图像,建议先将其转换为智能对象,以便进行非破坏性的变换。 Ps菜…

【Flink】核心概念:并行度与算子链

并行度(Parallelism) 当要处理的数据量非常大时,我们可以把一个算子操作,“复制”多份到多个节点,数据来了之后就可以到其中任意一个执行。这样一来,一个算子任务就被拆分成了多个并行的“子任务”&#x…

计算机毕业设计 基于SpringBoot的健身房管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解目录

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

3-docker安装centos7

CentOS7.9下安装完成docker后,后续我们可以在其上安装centos7系统。具体操作如下: 1.以root用户登录CentOS7.9服务器,拉取centos7 images 命令: docker pull centos:centos7 2.加载centos7 images并登录验证 命令:…

Linux调试器---gdb的使用

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C/C》 键盘敲烂,年薪百万! 一、gdb的背景 gdb,全称为GNU调试器(GNU Debugger),是一个功能强大的源代码级调试工具,主要…

【C++】【Opencv】霍夫直线检测即cv::HoughLinesP()函数详解和示例

cv::HoughLinesP()(函数霍夫直线)功能分析是一种用于检测图像中直线的算法,它基于霍夫变换的原理。通过该算法,我们可以从图像中提取出直线信息,从而对图像进行分析和处理。主要经理边缘检测和霍夫直线处理两个步骤。本…

【LeetCode刷题-树】--100.相同的树

100.相同的树 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

C/C++统计数 2021年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C统计数 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C统计数 2021年12月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 给定一个数的序列S,以及一个区间[L, R], 求序列…

Codeforces Round 910 (Div. 2)(D~F)

1898D - Absolute Beauty 题意:给定长度为n的数组a和b,定义b数组的价值为,现可以交换一次b数组中的任意两个元素,求b数组的价值最大值。 思路:绝对值问题可以放在数轴上去解决。绝对值即为区间长度 观察上述三种情况&…

认识.NET Aspire:高效构建云原生应用的利器

简介 在几天前的.NET 8发布会上,来自微软的Glenn Condron和David Fowler为我们演示了.NET Aspire,在Visual Studio的帮助下,它展现出了惊人的开发效率。 短短的十分钟内,David现场演示了如何轻松创建了一个具有服务发现&#xf…

汽车标定技术--A2L格式分析

目录 1.A2L由来 2.A2L格式 2.1 PROJECT 2.2 MODULE中包含的内容 3. INCA和CANape兼容吗? 最近有朋友用Vector ASAP2Editor编译的A2L文件在INCA7.4中无法识别,我记得以前做的时候是可以识别的,难不成最近有什么变动吗?出于好…

JavaScript的学习,就这一篇就OK了!(超详细)

目录 Day27 JavaScript(1) 1、JS的引入方式 2、ECMAScript基本语法 3、ECMAScript 基本数据类型​编辑 3.1 数字类型 3.2 字符串 3.3 布尔值 3.4 空值(Undefined和Null) 3.5 类型转换 3.6 原始值和引用值 4、运算符 5、流程控制语句 5.1 分…

云原生微服务-理论篇

文章目录 分布式应用的需求分布式架构治理模式演进ESB 是什么?微服务架构 MSA微服务实践细节微服务治理框架sidercar 什么是service mesh?康威定律微服务的扩展性什么是MSA 架构?中台战略和微服务微服务总体架构组件微服务网关服务发现与路由…

ps找不到msvcp140.dll怎么办?亲测5个有效的修复方法分享

运行Photoshop时提示找不到MSVCP140.dll,这是因为计算机MSVCP140.dll文件丢失或者损坏。msvcp140.dll是微软Visual C 2015运行库的一部分,它包含了许多用于支持C运行的函数和类。当我们在使用某些程序时,如果这个程序依赖于msvcp140.dll&…

【c++随笔13】多态

【c随笔13】多态 多态性(Polymorphism)在面向对象编程中是一个重要概念,它允许以统一的方式处理不同类型的对象,并在运行时动态确定实际执行的方法或函数。一、什么是多态性?1、关键概念:C的多态性2、多态定…

构造函数,原型对象,实例对象

1.构造函数、原型对象、实例对象三者分别是什么? 构造函数:用来创建对象的函数,创建实例对象的模板 。构造函数的函数名尽量首字母大写(为了区分普通函数和构造函数)原型对象:每一个函数在创建的时候,系统都会给分配一…

【Android Jetpack】DataStore的介绍

DataStore Jetpack DataStore是一种数据存储解决方案,允许您使用协议缓冲区存储键值对或类型化对象。DataStore使用Kotlin协程和Flow以异步、一致的事务方式存储数据。 注意:如果您需要支持大型或复杂数据集、部分更新或参照完整性,请考虑使…

【算法挨揍日记】day28——413. 等差数列划分、978. 最长湍流子数组

413. 等差数列划分 413. 等差数列划分 题目描述: 如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。 例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。 给你一个整数数组 nums…