本文从本人的163博客搬迁至此。

为了展示连续信号采集的方法,以其外部触发采集功能。我用运算放大器实现了一个最简单的低频压控振荡器(VCO),作为USB-6009采集的信号源。在LabVIEW下编写的应用软件的控制下,USB-6009同时采集VCO产生的两路模拟信号。在波形图控件中可以比较、观测两路信号的幅度和相位关系。另外,本例还将涉及USB-6009的外部触发采集功能的编程方法。

一、压控振荡器电路

压控振荡器是指输出频率是输入电压函数的振荡器。我用运算放大器实现的低频压控振荡器如下图所示:

图1 用运放实现的压控振荡器(VCO)

第一眼初看图1所示的电路,初学者一般觉得比较复杂,难以下手分析。分析这样的复杂电路,一种可行的方法是从其中简单的部分入手:

1、运算放大器OPS1A是一个电压跟随器,其作用是降低左侧可变电压生成电路(由RS10、RS11、R_CTL和CS1构成)的输出阻抗,从而提供控制频率的电压VCO。

2、运算放大器OPS2B用于构成只会比较器。当其输出高电平时,同相端的比较电压在HALF_VCC(大小为VCC/2)到输出高电平的1/3处;当其输出低电平时,同相端的比较电压在HALF_VCC到输出低电平的1/3处。假设运放的输出高低电平分别为VL和VH,其滞回区间在VL到VH的1/3到2/3之间。

3、OPS2B的输出还控制了NPN晶体管VN的开关状态。当VN被打开时,由于运放OPS2A的同相端和反相端的虚短,两端的电压都必须为VCO/2(RS1和RS2均分了VCO的电压)。所以必然有恒定的电流(VCO/RS4 - VCO/RS3)经过反馈电容CS2流入电阻RS4,才能保证反相端的电压恒定为VCO/2。在恒定电流的作用下,CS2右侧的电压将均匀上升到OPS2B构成的滞回比较器区间的上限——2/3高电平,此后滞回比较器将立即翻转输出低电平,并关闭晶体管VN。此时同样为使OPS2A的同相端和反相端“虚短”,必然有恒定的电流(VCO/2RS3)流入反馈电容CS2。在此恒定电流的作用下,CS2右侧的电压将均匀下降到OPS2B构成的滞回比较器区间的下限——1/3高电平,此后滞回比较器将再次翻转输出高电平,并打开晶体管VN回到初始状态。

上述过程周而复始重复的结果是:

1、从AI6得到幅度为1/3~2/3*(VH-VL)的三角波,上升时间为:

t1 =C*U/I=CS2*(VH-VL)/3*(VCO/RS4 - VCO/RS3)

下降时间为:

t2 =C*U/I=CS2*(VH-VL)/3*( VCO/2RS3)

由以上两式可知,三角波频率与VCO电压大小呈负线性关系。

2、从AI2得到的是幅度为VL至VH的方波,其频率和相位与AI6输出的三角波完全对应。

二、外部触发电路

为演示USB-6009的外部触发功能,使用滞回比较器输出的AI2信号作为外部触发信号源。但为防止USB-6009的触发输入引脚PFI0对压控振荡电路的影响(造成VN无法关闭),我在AI6后增加了一级由三极管构成的缓冲,如图2所示。

图2 数据采集的外部触发缓冲电路

编程时应注意这级缓冲具有反相的作用。

三、测试程序

测试程序的编写思路是:

1、以同样的采样率连续采集一段数据;

2、读取这段数据,并将它们显示在波形图控件上;

3、延时一段固定时间,以便用户看清波形,返回第一步并重复。

程序框图如图3所示:

图3 采集并显示压控振荡器的程序框图

对于外部触发的采集,程序框图如图4所示:

图4 使用外部触发的采集程序框图

图4中增加了DAQmax开始触发(数字边沿)函数来实现外部触发输入功能。

四、程序运行结果

打开图3所示的测试程序,得到图5所示的测试波形图。

图5 测试压控振荡器的结果

可以看到测试得到的三角波和方波的幅度、相位等参数,与上面理论分析得到的结果完全一致。 还可以改变电位器R_CTL的阻值,观测电压控制频率的现象。

未完待续……

用NI的数据采集卡实现简单电子测试之5——压控振荡器的测试的更多相关文章

  1. 用NI的数据采集卡实现简单电子测试之6——数字I/O及测试平台

    本文从本人的163博客搬迁至此. 前面几个例子介绍了NI数据采集卡的模拟输入和输出功能,本例则集中介绍USB-6009的数字输入输出功能.本例包括基本数字IO电路及在LabVIEW中控制USB-600 ...

  2. 用NI的数据采集卡实现简单电子测试之1——USB-6009简介

    本文从本人的163博客搬迁至此. 几年以来,一直担任学校“虚拟仪器”课程教师.以前上课都以介绍LabVIEW编程为主,硬件实验一直没有开展.这次借“西部高校实力提升工程”的机会,学院采购了一批NI的数 ...

  3. 用NI的数据采集卡实现简单电子测试之2——绘制三极管输出特性曲线(面)图

    本文从本人的163博客搬迁至此. 想设计几个实验,既能展示NI的LabVIEW和数据采集卡的功能特点,又能够让普通电类专业本科学生可以理解,自然首先想到了<电子技术基础>课程的内容.第一个 ...

  4. 用NI的数据采集卡实现简单电子测试之4——半导体温度传感器

    本文从本人的163博客搬迁至此. 为了展示NImax(Measurement & Automation explorer)的强大配置功能,做了一个半导体温度传感器测试的示例. 一.半导体温度传 ...

  5. 用NI的数据采集卡实现简单电子测试之3——绘制二极管V-I特性曲线图

    本文从本人的163博客搬迁至此. 接下来用USB-6009和LabVIEW实现对二极管最重要的特性曲线“V-I特性曲线”的测试和绘制. 一.什么是二极管V-I特性曲线    康华光版的<电子技术 ...

  6. 【JMeter】JMeter进行简单的数据库(mysql)压力测试

    JMeter进行简单的数据库(mysql)压力测试 1.点击测试计划,再点击“浏览”,把JDBC驱动添加进来: 注:JDBC驱动一般的位置在java的安装地址下,路径类似于:    \java\jre ...

  7. 《maven实战》笔记(2)----一个简单maven项目的搭建,测试和打包

    参照<maven实战>在本地创建对应的基本项目helloworld,在本地完成后项目结构如下: 可以看到maven项目的骨架:src/main/java(javaz主代码)src/test ...

  8. ensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试

    http://www.cnblogs.com/denny402/p/5852983.html ensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试   刚开始学习tf时,我们从 ...

  9. 简单易用的leetcode开发测试工具(npm)

    描述 最近在用es6解leetcode,当问题比较复杂时,有可能修正了新的错误,却影响了前面的流程.要用通用的测试工具,却又有杀鸡用牛刀的感觉,所以就写了个简单易用的leetcode开发测试工具,分享 ...

随机推荐

  1. 读书笔记week1——涂涵越

    这次读书笔记主要是就<程序员修炼之道>这本书的前半部分做一些总结以及发表一些自己的看法. 本书前面的一部分主要是一些程序员应该在工作中时刻注意的事情,一些关键的信息如下: 1.处理问题的态 ...

  2. JVM知识(三):内存模型和可见性

    这篇文章我们将根据JVM的内存模型探索java当中变量的可见性以及不同的java指令在并发时可能发生的指令重排序的情况.来聊聊java线程对一个变量的更新怎么通知另一个线程,及volatile的作用和 ...

  3. CentOS随笔 - 5.CentOS7安装Sql Server 2017

    前言 转帖请注明出处: http://www.cnblogs.com/Troy-Lv5/ 开发环境嘛, 作为.Net系Sql Server那是必备的. 听过Sql server可以安装在Linux上了 ...

  4. 官方推荐的MySQL参数设置值

    这oracle官方推荐的在OLTP环境下,MySQL参数设置的最佳实践. 下面的参数设置,对系统的性能会很有帮助.但是建议大家还是结合实际情况使用. APPLIES TO: MySQL Server ...

  5. 深入浅出TFS——创建WorkItem

    使用场景:在项目交付流程当中,我们在准备部署项目的时候,比如需要依次部署到DEV.QA和PROD共3个不同的环境.我们需要由专门负责部署的部门Integration Team的人员来操作.这个时候我们 ...

  6. [2018HN省队集训D8T1] 杀毒软件

    [2018HN省队集训D8T1] 杀毒软件 题意 给定一个 \(m\) 个01串的字典以及一个长度为 \(n\) 的 01? 序列. 对这个序列进行 \(q\) 次操作, 修改某个位置的字符情况以及查 ...

  7. java枚举学习入门

    一.前言  在java编程过程中,我们通常需要定义一些固定数量的常量,在jdk1.5以前,通常的做法是定义一个静态常量类,但自jdk1.5后,java引入了枚举(关键字enum,全称为 enumera ...

  8. angular 生命周期钩子 ngOnInit() 和 ngAfterViewInit() 的区别

    angular 生命周期钩子的详细介绍在 https://angular.cn/guide/lifecycle-hooks  文档中做了介绍. ngOnInit() 在 Angular 第一次显示数据 ...

  9. SGU---101 无向图的欧拉回路

    题目链接: https://cn.vjudge.net/problem/SGU-101 题目大意: 给定你n张骨牌,每张牌左右两端有一个数字,每张牌的左右两端数字可以颠倒,找出一种摆放骨牌的顺序,使得 ...

  10. virtualbox+vagrant学习-4-Vagrantfile-6-SSH Settings

    SSH Settings 配置命名空间:config.ssh config.ssh的设置涉及到将如何配置vagrant使其通过ssh访问你的计算机.与大多数vagrant设置一样,默认设置通常都很好, ...