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脉冲测量
脉冲宽度测量
单脉冲宽度测量
周期测量
周期测量是指对脉冲的连续上升沿和下降沿的时间间隔进行测量。半周期测量是对两个连续边沿的时间间隔进行测量。脉冲宽度测量是对从上升沿到下降沿,或下降沿到上升沿的时间间隔进行测量。两边沿间隔测量是对一个数字信号上升沿(或下降沿)到另一个数字信号上升沿(或下降沿)的时间间隔进行测量。
单周期测量
半周期测量
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 程序示例。
连续缓冲区事件计数与有限缓冲事件计数类似,不同之处在于缓冲区是在循环中读取的。同样,采样模式配置为“连续采样”。连续缓冲输入也称为循环或双缓冲输入。