【NI-DAQmx入门】计数器

1.计数器的作用

        NI产品的计数器一般来说兼容TTL信号,定义如下:0-0.8V为逻辑低电平,2~5V为高电平,0.8-2V为高阻态,最大上升下降时间为50ns。

        计数器可以感测上升沿(从逻辑低到逻辑高的转变)和下降沿(逻辑高到逻辑低)。 与感测上升沿和下降沿相关的两个重要参数是上升/下降时间和最小脉冲宽度。 上升/下降时间衡量信号从低电平转变为高电平或从高电平转变为低电平的速度。 为了使计数器能够感测边沿,转换必须发生在 50ns 或更短的时间内(如 TTL 兼容信号规范所定义)。 除了信号转换速度的时间限制之外,从计数器感测到上升沿或下降沿的时间到它可以感测到另一个上升沿或下降沿的时间之间还需要最小延迟。 该延迟称为最小脉冲宽度。 最小脉冲宽度取决于所使用的计数器芯片。

2.计数器的组成

        GATE输入端控制计数发生的时机。GATE输入类似于触发,用来开始或停止计数。

        SOURCE (CLK)输入端时测量或信号计数的时基。

        计数器的寄存器对要计数的边沿进行计数。当计数器寄存器往下计数时,计数到0停止。计数器寄存器的大小时计数器中包含的位数,寄存器计数值=2位数。

        OUT接线端输出一个脉冲或脉冲序列。


        

3. 计数器的功能

两个基本功能
  • 基于输入信号(门和源)的比较,进行计数
  • 基于输入和寄存器值,生成脉冲
其他衍生功能
  • 边沿计数,例如简单边沿计数和时间测量
  • 脉冲宽度、半周期和周期测量
  • 频率测量
  • 单脉冲和脉冲序列生成
  • 位置和速度测量

 3.1边沿计数

        边沿计数是指设备通过计数器通道计算上升或下降沿。边沿计数可选择单点或缓冲采样时钟方式。

简单边沿计数

  • 在源的指定边沿,计数增加
  • 有效边沿可改为下降沿
  • 计数器达到最终计数时将归零
  • 最终计数= 2(分辨率) – 1

边沿计数-暂停触发

  • 非缓冲
  • 门可暂停计数寄存器的增加/减小
  • 只有当门生效时,源的有效边沿将增加寄存器值

        当门信号为高或低(软件设定参数)时,计数器将增加或减小,在非有效状态时,计数器将暂停计数。

 

 

 边沿计数-带缓冲区的连续

         门上的活动边沿将当前计数器寄存器值锁存到 PC 内存中。 使用中断或 DMA(软件可配置),计数寄存器值通过 PCI 总线单独传输到软件缓冲区。 对于连续操作,软件缓冲区可以是有限的或循环的。 一旦进入软件缓冲区,这些值就会通过缓冲区读取被读入 LabVIEW

边沿计数-带缓冲区有限点

 

3.2脉冲生成 

        脉冲是指信号的幅值在短时间内从闲时值变为活动值。脉冲分为高闲时状态和低闲时状态。低闲时状态的脉冲从低值开始(通常为零),然后到脉冲高值,最后恢复低值。高闲时状态的脉冲从高值开始,然后到脉冲低值,最后恢复高值。

脉冲或脉冲序列由以下三部分组成:

  • 高电平时间-脉冲处于高电平的时间。
  • 低电平时间-脉冲处于低电平的时间。
  • 初始延迟-输出信号在未生成脉冲前处于空闲状态的时间。闲时状态通常在第一次生成脉冲时替换高值时间或低值时间,取决于闲时状态的类别。

单个脉冲生成

 脉冲序列生成

连续脉冲序列流程图
修改占空比

        使用NI-DAQmx的通道属性节点的两个输入(CO.Pulse.DutyCyc CO.Pulse.Freq)。给属性节点输入新的占空比和频率(即使它没有改变)。因为LabVIEW从上到下来执行属性节点,所以占空比必须先于频率改变(参考下面的截图)。

        当DAQmx写入VI是Counter Freq 1Chan 1Samp 设置时,同样可以使用DAQmx写入VI来改变占空比(参考下面的截图)。

下面附件中的范例使用上面两种方法实现了占空比的改变。

有限脉冲序列流程图
 
可重触发的有限点脉冲序列 

不带缓冲的脉冲序列(隐式定时) 

        

带缓冲的脉冲序列(隐式定时)

带缓冲的脉冲序列(采样时钟定时) 

 3.3脉冲测量

 脉冲宽度测量

在源的每个上升边沿,计数增加
在上升或下降沿开始计数
门宽 = (计数) × 1/ 源频率)

 

单脉冲宽度测量 

周期测量

        周期测量是指对脉冲的连续上升沿和下降沿的时间间隔进行测量。半周期测量是对两个连续边沿的时间间隔进行测量。脉冲宽度测量是对从上升沿到下降沿,或下降沿到上升沿的时间间隔进行测量。两边沿间隔测量是对一个数字信号上升沿(或下降沿)到另一个数字信号上升沿(或下降沿)的时间间隔进行测量。

在源的每个上升边沿,计数增加
在上升或下降沿开始(停止)计数
门周期 = (计数) × 1/ 源频率)

 

 单周期测量

 半周期测量

 

3.4频率测量

 计数器频率测量方法

带 1 个计数器的低频

        使用已知时基测量输入信号的一个周期。信号的频率是其周期的倒数。对于许多应用来说,具有 1 个计数器的低频是一种很好的方法。它的测量时间最短,但精度也最低,并且随着信号频率的增加,精度进一步降低。

带 2 个计数器的高频

        对于双计数器、高频方法,第二个计数器提供已知的测量时间。计数器对测量时间内出现的输入信号周期数进行计数,对结果进行平均,并在读取函数/VI中返回平均值。该方法对于高频信号来说是准确的。然而,精度随着待测量信号频率的降低而降低。

带 2 个计数器的大频率范围

        两个计数器的较大范围测量与一个计数器测量相同,但现在用户对信号进行整数除法。第二个计数器使用输入信号来创建使用已知时基测量的脉冲。结果是 VI 中设置的除数的平均值。该方法可以准确测量高频和低频信号。然而,它需要两个计数器,并且具有取决于输入信号的可变采样时间和可变误差%。

注意事项

        如果您的应用程序有足够的计数器,则只需考虑测量时间(如果适用),计算每个可用选项的预期频率的误差。最好的方法是在给定频率和测量时间(如果适用)下误差最低的方法。 

        如果您想找到每种方法中误差的数值,   NI-DAQmx帮助中的量化误差主题显示了不同输入频率下的误差,包括1个计数器的低频、2个计数器的高频、带有2个计数器的大频率范围。 2 种计数器和动态平均方法用于快速比较。您可以使用帮助主题中包含的公式或参阅设备上的用户手册以获取更多信息。 

        如果您的卡包含多个计数器,也可以使用多个计数器任务。这可以让您满足不同频率下的响应时间和精度的需求。 

        注意: 采样时钟方法不包含在量化误差主题中,因为它不依赖于输入频率。如果您需要将采样时钟计数器频率测量与任何其他方法进行比较,请参阅设备的用户手册以计算采样时钟方法误差。

3.5位置测量

        使用编码器可以测量位置,编码器的测量原理如下:

编码器的原理

        编码器是一种可以测量运动或位置的机电设备。大多数编码器使用光学传感器以脉冲序列的形式提供电信号,然后可以将其转换为运动,方向或位置。

        编码器每转通常有100到6,000个段。这意味着这些编码器可以为100段的编码器提供3.6度的分辨率,为6,000段的编码器提供0.06度的分辨率。

        线性编码器的工作原理与旋转编码器相同,不同之处在于,线性编码器不是旋转盘,而是固定不透明带,其表面上有透明缝,并且LED检测器组件固定在移动体上。


 

具有一组脉冲的编码器将无法使用,因为它无法指示旋转方向。使用两个扇区的相位相差90度的代码(图2),正交编码器的两个输出通道可同时指示旋转的位置和方向。例如,如果A引导B,则磁盘沿顺时针方向旋转。如果B领先于A,则磁盘将沿逆时针方向旋转。因此,通过同时监视脉冲数和信号A和B的相对相位,可以跟踪旋转的位置和方向。


 

此外,某些正交编码器还包括第三输出通道-称为零或参考信号-每转提供一个脉冲。您可以使用该单个脉冲来精确确定参考位置。在大多数编码器中,此信号称为Z端子或索引。

如何进行编码器测量 

要进行编码器测量,您需要一个称为计数器的基本电子组件。基于其几个输入,基本计数器会发出一个值,该值表示所计数的边沿数量(波形中从低到高的跳变)。大多数计数器具有三个相关输入-门,源和上/下。计数器对在源输入中注册的事件进行计数,并根据上/下线的状态,增加或减少计数。例如,如果上/下线为“高”,则计数器递增计数;如果为“低”,则计数器递减计数。图3显示了计数器的简化版本。


 

编码器通常需要连接到仪器的五根电线,并且根据编码器的不同,这些电线的颜色也会有所不同。您可以使用这些电线为编码器供电并读取A,B和Z信号。图4显示了增量编码器的典型引脚分配表。

下一步是确定应在何处连接这些导线。考虑到上述计数器,信号A连接到源极端子,使之成为从中计数脉冲的信号。信号B连接到上/下端子,您可以将+5 VDC和接地信号连接到任何电源-在大多数情况下,数据采集设备卡中的数字线就足够了。

计算完边缘后,您需要考虑的下一个概念是如何将这些值转换为位置。边沿计数转换为位置的过程取决于所使用的编码类型。共有三种基本的编码类型:X1,X2和X4。

X1编码

图5显示了一个正交周期以及X1编码的结果增量和减量。当通道A领先于通道B时,增量发生在通道A的上升沿。当通道B领先于通道A时,减量发生在通道A的下降沿。

X2编码

对于X2编码,行为相同,只是计数器在通道A的每个边缘上递增或递减,这取决于哪个通道领先于另一个通道。每个周期导致两个增量或减量,如图6所示。


 

X4编码

对于X4编码,计数器在通道A和B的每个边缘上类似地递增或递减。计数器是递增还是递减取决于哪个通道领先于另一个通道。每个周期导致四个增量或减量,如图7所示。


 

一旦设置了编码类型并计算了脉冲数,就可以使用以下公式之一转换为位置:



旋转位置

旋转量为

其中N =编码器每转一圈产生的脉冲数

x =编码类型

对于线性位置

排量为

其中PPI =每英寸脉冲数(每个编码器特定的参数)

将编码器连到数据采集设备

        NI 9401具有一个DSUB连接器,可为八个数字通道提供连接。每个通道都有一个数字I / O引脚,您可以将数字输入或输出设备连接到该引脚。在机箱的任何插槽中均可访问CompactDAQ机箱的四个计数器。如果使用的是cDAQ-9172,则只能通过插槽5和6来访问其两个计数器,因此请将9401插入插槽5。。


根据这些规范,导线A连接到引脚14,导线B连接到引脚17,“ 5 VDC电源”连接到设置为“高”的任何未使用的数字线路,“接地”连接到任何COM端子。

3.6缓冲事件计数

        事件计数是所有计数器操作中最基本的操作,其重点是测量源信号。它基本上通过使用软件命令轮询计数寄存器来计算到达计数器源的活动边沿的数量。因此,缓冲事件计数是事件计数的一种形式,其中门充当控制信号,将当前寄存器计数值锁存到 PC 内存中。这种测量有时被称为时间戳,因为它允许人们测量门上发生的连续事件之间的经过时间。显示了用于缓冲​​事件计数的基本计数器芯片组件。

        它使用计数器的源和门来进行操作。计数器门上的有效边沿用于将当前计数寄存器值锁存在硬件寄存器中,然后通过直接内存访问 (DMA) 或中断将其传输到预分配的 PC 内存或软件缓冲区。对于连续操作,软件缓冲区可以是有限的或循环的。一旦进入软件缓冲区,就可以在 LabVIEW 中读取这些值。门信号的作用很像采样时钟,对计数寄存器的当前值进行采样。


 

        对缓冲事件进行编程的控制流需要配置缓冲区。可以使用位于 NI 测量 → DAQmx 下功能选项板上的 DAQmx 定时功能在 DAQmx 中配置缓冲区。

        由于该函数是多态的,因此需要注意的是要修改的属性是“Sample Clock”。通过 DAQmx 定时功能,可以设置缓冲区大小、缓冲区模式、采样时钟源(栅极引脚)和采样时钟极性(栅极极性),如下图所示。

        可以将缓冲配置为有限或连续采集。在有限缓冲区事件计数中,采样模式设置为“有限采样”,将数据从预分配的 PC 内存复制到应用程序开发环境 (ADE) 内存。显示了执行有限缓冲区事件计数的 LabVIEW 程序示例。

        连续缓冲区事件计数与有限缓冲事件计数类似,不同之处在于缓冲区是在循环中读取的。同样,采样模式配置为“连续采样”。连续缓冲输入也称为循环或双缓冲输入。

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

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

相关文章

无公网IP,如何使用公网SSH远程访问家中的树莓派?

文章目录 前言如何通过 SSH 连接到树莓派步骤1. 在 Raspberry Pi 上启用 SSH步骤2. 查找树莓派的 IP 地址步骤3. SSH 到你的树莓派步骤 4. 在任何地点访问家中的树莓派4.1 安装 Cpolar内网穿透4.2 cpolar进行token认证4.3 配置cpolar服务开机自启动4.4 查看映射到公网的隧道地址…

RISC-V IDE MRS无感远程协助模块详解

RISC-V IDE MRS无感远程协助模块详解 一、说明 1.1 概述 针对RISC-V/ARM等内核MCU的嵌入式集成开发环境MRS(MounRiver Studio)从V1.90版本开始内置无感远程协助模块(Sensorless Remote Assistant Module,以下简称SRA模块)。SRA模块是一款支…

如何创建 Spring Boot 项目

如果有pom.xml有插件异常,可以先删除。 maven配置要配置好 然后yaml,再启动就行 server:port: 9991 spring:application:name: demo3参考 如何创建 Spring Boot 项目_创建springboot项目_良月初十♧的博客-CSDN博客

DBA笔记(1)

目录 1、rpm yum 命令的使用,参数的含义 rpm命令: yum命令: 2、上传镜像至虚拟机搭建本地yum源 3、chown chomd 命令每一个参数的含义 chown命令: chmod命令: 4、fdisk partd 硬盘分区命令用法 fdisk命令&am…

C++ 写一个Data类的注意问题

Data类 声明和定义分离的一些问题 声明里面我们不带缺省参数&#xff0c;定义我们给缺省参数&#xff0c;如下面两段代码&#xff1a; Data.h#pragma once #include<iostream> using namespace std; class Data { public:Data(int year,int month,int day);private:in…

【错误解决方案】ModuleNotFoundError: No module named ‘xgboost‘

1. 错误提示 在尝试导入名为xgboost的模块时出现了ModuleNotFoundError。 错误提示&#xff1a;ModuleNotFoundError: No module named xgboost 这个错误通常意味着Python环境中没有安装你试图导入的模块。 2. 解决方案 安装xgboost模块即可解决上述问题。 可以通过Python…

Web3公链之Cosmos生态的项目Celestia

文章目录 Web3公链之Cosmos生态的项目&#xff1a;模块化区块链Celestia什么是CelestiaCelestia网络架构数据可用性问题有哪些可用的解决方案&#xff1f; 发展历史运行节点参考 Web3公链之Cosmos生态的项目&#xff1a;模块化区块链Celestia 什么是Celestia 官网&#xff1a…

项目部署之OpenResty

项目部署之OpenResty 1. OpenResty介绍 OpenResty 是一个基于Nginx的高性能Web平台&#xff0c;用于方便地搭建能够处理超高并发、扩展性极高的动态Web应用、Web服务和动态网关。具备下列特点&#xff1a; 具备Nginx的完整功能基于Lua语言进行扩展&#xff0c;集成了大量精良…

hdlbits系列verilog解答(加减法器)-28

文章目录 一、问题描述二、verilog源码三、仿真结果一、问题描述 可以通过将其中一个输入变为负来从加法器构建加法器-减法器,这相当于将其输入反相然后加 1。最终结果是一个可以执行两个操作的电路:(a + b + 0) 和 (a + ~b + 1)。如果您想更详细地解释该电路的工作原理…

怎么理解电流超前电压、电压超前电流?

电容和电感&#xff0c;电压超前电流&#xff0c;电流超前电压都是我们经常听到的。作为非专业人士&#xff0c;这些听起来确实有点摸不着头脑&#xff0c;今天特别查了下电容、电感、电压电流相关资料&#xff0c;总算是弄明白了&#xff0c;在此特地记录下&#xff01; 1. 电…

【LeetCode:150. 逆波兰表达式求值 | 栈】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

一篇文章入门KNN算法

文章目录 KNNKNN算法KNN in practice推荐系统我们想回答什么问题&#xff1f;探索、清理和准备数据使用算法 Summary 参考文献 KNN 监督学习是一种依赖输入数据来学习函数的算法&#xff0c;该函数在给定新的未标记数据时可以产生适当的输出。 监督学习用于解决分类或回归问题…

LLM - 训练与推理过程中的 GPU 算力评估

目录 一.引言 二.FLOPs 和 TFLOPs ◆ FLOPs [Floating point Opearation Per Second] ◆ TFLOPs [Tera Floating point Opearation Per Second] 三.训练阶段的 GPU 消耗 ◆ 影响训练的因素 ◆ GPT-3 训练统计 ◆ 自定义训练 GPU 评估 四.推理阶段的 GPU 消耗 ◆ 影响…

Pap.er for Mac:高清壁纸应用打造你的专属视觉盛宴

在浩瀚的互联网海洋中&#xff0c;你是否曾为寻找一张心仪的高清壁纸而烦恼&#xff1f;或者是在大量的壁纸应用中感到困扰&#xff0c;不知道哪一个能满足你的需求&#xff1f;今天&#xff0c;我要向你介绍的&#xff0c;是一款独特的5K高清壁纸应用——Pap.er for Mac。 Pa…

leetcode:374. 猜数字大小(二分查找)

一、题目 函数原型&#xff1a;int guessNumber(int n) 二、思路 本题其实就是从 1 - n 中找出所要的答案。利用guess函数来判断数字是否符合答案。 答案小于当前数字&#xff0c;guess函数返回-1 答案等于当前数字&#xff0c;guess函数返回0 答案大于当前数字&#xff0c;gue…

Android NDK开发详解之ndk-build 脚本

Android NDK开发详解之ndk-build 脚本 内部原理从命令行调用选项可调试 build 与发布 build要求 ndk-build 脚本使用 NDK 的基于 Make 的构建系统构建项目。我们针对 ndk-build 使用的 Android.mk 和 Application.mk 配置提供了更具体的文档。 内部原理 运行 ndk-build 脚本相…

JVM 分代垃圾回收过程

堆空间划分了代&#xff1a; 年轻代&#xff08;Young Generation&#xff09;分为 eden 和 Survivor 两个区&#xff0c;Survivor 又分为2个均等的区&#xff0c;S0 和 S1。 首先&#xff0c;新对象都分配到年轻代的 eden 空间&#xff0c;Survivor 刚开始是空的。 当 eden …

招生报名缴费小程序开发笔记(上)

前期调研 1.数字化趋势&#xff1a; 随着社会的数字化转型&#xff0c;越来越多的教育机构倾向于采用数字工具来简化和优化他们的招生和报名过程。招生报名缴费小程序是应对这一趋势的一种解决方案&#xff0c;可以提供高效、方便、快速的在线招生渠道。2.用户需求&#xff1a…

Jtti:Apache服务的反向代理及负载均衡怎么配置

配置Apache服务的反向代理和负载均衡可以帮助您分散负载并提高应用程序的可用性和性能。下面是一些通用的步骤&#xff0c;以配置Apache反向代理和负载均衡。 1. 安装和配置Apache&#xff1a; 确保您已经安装了Apache HTTP服务器。通常&#xff0c;Apache的配置文件位于/etc…

VSCode-C/C++环境配置

0.下载VSCode VSCode官网 Visual Studio Code - Code Editing. Redefined 1.安装VSCode 2.编译器下载与配置 2.1下载编译器安装包 编译器的安装包分为两种一种是在线的一种是离线的,其区别的特点如下 在线安装&#xff08;只是个下载器&#xff0c;打开后还要下载各种东西…