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

想设计几个实验,既能展示NI的LabVIEW和数据采集卡的功能特点,又能够让普通电类专业本科学生可以理解,自然首先想到了《电子技术基础》课程的内容。第一个例子采用了“绘制晶体三极管输出特性曲线”的例子,原因有三:其一,作为《模拟电子技术》课程的基本内容,基本上所有电类专业的学生都学过三极管输出特性曲线;其二,这个例子既要控制基极电流和集电极电压,又要测量集电极电流,特别适合既有A/D又有D/A转换功能的数据采集卡来完成;其三,LabVIEW强大的绘图功能可以完美的展现输出特性曲线。

 一、什么是三极管输出特性曲线   

康华光版的《电子技术基础——模拟部分》这样介绍输出特性曲线:输出特性是在基极电流IB一定的情况下,集电极与发射极之间的电压VCE与集电极电流IC之间的关系曲线,用函数表示为:

                                                             (1)

以下是我从小功率高频三极管9018的数据手册中截取的输出特性曲线图:

图1 标准输出特性曲线

继续摘录经典教材的解释:输出特性的其实部分很陡,VCE略有增加时,IC增加很快,这是由于在VCE很小时,集电结的反向电压很小,对到达基区的电子吸引力不够,这时IC受VCE的影响很大。VCE稍有增加,从基区到集电区的电子也增加。故IC随VCE的增加而增加。但VCE超过某一数值后,特性曲线变得比较平坦。这是由于VCE大于这一数值后,集电结的电厂已经足够强,能使发射区扩散到基区的电子绝大部分都到达集电区,故VCE再增加,IC就增加不多了。改变IB的值,即可得到一组输出特性曲线。由于三极管是一种电流控制器件满足:  ( 其中 为电流增益)。在VCE大于零点一定数值以后,输出特性是一组间隔基本均匀,比较平坦的平行直线。

据我理解,所谓“输出特性”应该是由集电极电压VCE和基极电流iB共同决定集电极电流的一种特性,这种特性图应该是一张三维曲面图,其水平面上的两个自由度为VCE和IB,垂直方向上的大小应为集电极电流IC。但由于早期计算机绘制三维图形的能力有限,输出特性曲线图只选取了其中IB为10uA、20uA……100uA等几个整数时的几根曲线,全部绘制在一张平面图上,从而得到了图1所示的 标准的“输出特性曲线图”。

 二、测试电路   

为了绘制类似图1的输出特性曲线,需要数据采集卡分别控制被试三极管的基极电流IB和集电极电压VCE,同时测量流入集电极的电流IC。

其中,控制基极上的电流IB较容易:由于发射结压降基本固定,只需要在基极上串联一个固定电阻,同时控制电阻另一端的电压即可。但是,要想在控制集电极电压VCE的同时测量流入集电极的电压并不简单。利用反馈原理设计了如下图所示的测试电路。

图2 三极管特性图测试电路

图2中I_CTL和V_CTL是由数据采集卡上的DAC输出的控制电压,AI4和AI5则连接到数据采集卡的ADC输入端。其中,I_CTL用于控制基极电流IC,其控制的电流等于(VI_CTL - VBE)/R_tb,VBE是发射结压降,基本固定为在0.7V左右。运放OP_tB接成跟随器,它在使输入电压和输出电压相等的同时降低输出阻抗,其目的是为了降低USB-6009输出电阻对I_CTL的影响。运放OP_tA和电阻R_tc则构成了一个用于测量电流的负反馈系统,根据负反馈系统的分析方法来分析这个电路:

1、根据运放“虚短”的原则,运放的同相端电压应该相等。而被试晶体管V_test的集电极被连接到了运放的反相输入端,应该和连接到同相输入端的V_CTL相等。也就是说只要数据采集卡控制了V_CTL,也就控制了V_test的集电极电压。

2、运放的输出端在连接到V_test的集电极之前,通过了电阻R_tc。为了使集电极电压等于V_CTL,运放输出端电压势必高于V_CTL。根据“虚断”的原则,没有电流流入运放的反相输入端,也就是从运放输出端流出的电流全部经过R_tc流入了集电极。这样可以推断:运放输出端的电压等于集电极电压V_CTL加上集电极电流IC在电阻R_tc上的压降。这样只要通过数据采集卡测量出运放的输出电压,就可以通过V_CTL和R_tc的阻值计算出IC。

                                                             (2)

3、当然上述分析“虚短”和“虚断”结论的前提是,系统必须是一个稳定的负反馈系统。而上述电路的负反馈属性是显然的。

当然,是用图1电路的限制也是明显的:

1、电压限制,由USB-6009的DAC输出的控制电压可达0-5V,也就是V_CTL(VCE)可达5V,也就要求此时运放输出端电压VAI4也必将达到5V以上。而要使LM358的输出电压达到5V,其电源电压必须在6.5V以上。而为了方便学生使用,我将本测试电路设计为采用USB口供电,显然无法达到要求,值得采用升压DC-DC(Step_up)来为该电路供电——好在MC34063A电路非常便宜。升压后VPP为12V左右。

图3 电源电路

MC34063没什么好说的,需要解释的是MOS管MOS_SW的作用。我是这么想的:为防止MC34063A工作时的开关噪声对其他测试电路的影响,可以用USB-6009的数字I/O P0.1在不需要时将MC34063关掉……

2、电流限制,普通运算放大器LM358的最大输出电流仅为20mA左右,因此图2所示的测试电路只能测试IC小于20mA的小功率情况。如果需要测试大电流三极管,可以在运放的输出端之后加一个晶体管射极跟随器。

三、测试程序

1、程序的流程如图4所示:

图4 测试程序流程图

程序中包含两个循环,中间的小循环用于采集IB固定的条件下,一条输出特性曲线上的点;外圈的大循环用于绘制不同的输出特性曲线。

2、基极电流IB的设置

基极电流靠USB-6009的DAC实现控制,需要把每次循环所需的电流折算为需要输出的电压Vout,由于计算公式较复杂,采用公式节点实现如图5:

图5 用公式节点计算基极电流的控制电压

 其中,0.57是常见小功率三极管9013的发射结压降,39*10**3是39K欧的电阻,10*10**(-6)是10uA电流(公式节点中的两个乘号**表示乘方运算),i是大循环中的循环次数。

3、集电极电压VCE的设置

集电极电压也靠USB-6009的DAC实现控制,依次递增DAC输出的电压V_CTL即可达到控制集电极电压的目的,也采用公式节点实现如图6:

图6 集电极电压计算的公式节点

集电极电压从0.01V开始,每次递增0.05V。

4、集电极电流IC的测量

图7 集电极电流计算的公式节点

根据图2所示的反馈电路和公式(2),集电极电流IC等于电阻R_tc上的压降除以它的阻值,Vcx是由测量得到的运放输出电压VAI4,VCE是由软件通过DAC设置的集电极电压,0.22是R_tc的阻值220欧姆。

5、曲线图的绘制

采用“XY曲线图”控件绘制输出曲线图。需要注意的是,XY曲线图需要将x轴的值构成的数组和y轴的值构成的数组打包成一个簇方可实现显示。如果包含x轴和y轴数值的数组本身已经是二维数组,XY曲线图控件会自动绘制出颜色不同的多条曲线。

6、USB-6009的控制

由于每次设置电流IB和电压VCE后只能采集一个有用的电流,因此USB-6009的ADC和DAC通道都采用“1通道1采样”的模式。但如果在每次D/A输出和A/D采集之前都重新配置ADC和DAC将会使测试过程非常缓慢,因此需要使用“DACmx开始任务”函数

来一次性启动ADC和DAC任务,以后每次都只需要通过句柄操作即可。

根据实测,测试8条输出特性曲线,每条曲线完成约100个测试点,所需的总测试时间约在1-2秒左右。

7、测试过程控制

不可能在程序开始运行后不断的重复测量过程,因此采用“事件结构”管理了一个“开始测试”按钮,只有单击“开始测试”,测试过程才会开始。

8、测试程序框图

不可能在一幅图中展示整个测试程序框图,挑选以下两个比较重要的程序框图展示。

图8 设置基极电流的程序框图

图9 设置集电极电压的程序框图

四、程序运行结果

1、输出特性曲线

采用常见小功率NPN型三极管9013作为测试对象,得到如图9所示的测试结果,与经典教科书介绍的晶体管输出特性曲线一致。

图10 实际测试得到的三极管输出特性曲线

2、输出特性曲面

不知“三极管输出特性曲面”这种说法对不对,但这是我从当学生时就像做的一件事,即将多条输出特性曲线绘制在一张三维图中。在LabVIEW中,这非常容易。

图11 三极管输出特性曲面1

图12 三极管输出特性曲面2

绘制这个三维曲面的代码也很简单,无非是把曲面上的每个点在X,Y,Z 三个轴上的投影分别用一个矩阵送给三维曲面控件。在上面程序的基础上添加曲面显示的程序框图如图13所示。

图13 绘制三极管输出特性曲面的程序框图

未完待续……

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

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

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

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

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

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

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

  4. 用NI的数据采集卡实现简单电子测试之5——压控振荡器的测试

    本文从本人的163博客搬迁至此. 为了展示连续信号采集的方法,以其外部触发采集功能.我用运算放大器实现了一个最简单的低频压控振荡器(VCO),作为USB-6009采集的信号源.在LabVIEW下编写的 ...

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

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

  6. 最简单的基于DirectShow的示例:视频播放器图形界面版

    ===================================================== 最简单的基于DirectShow的示例文章列表: 最简单的基于DirectShow的示例:视 ...

  7. 【转】linux设备驱动之MMC SD卡——核心层简单分析

    原文网址:http://blog.chinaunix.net/uid-28685940-id-3889878.html /*************************************** ...

  8. python3 练手实例5 做一个简单电子时钟

    import time,sys,os while(1): t = time.strftime('%Y-%m-%d\n%H:%M:%S',time.localtime(time.time())) pri ...

  9. 简单研究Android View绘制三 布局过程

    2015-07-28 17:29:19 这一篇主要看看布局过程 一.布局过程肯定要不可避免的涉及到layout()和onLayout()方法,这两个方法都是定义在View.java中,源码如下: /* ...

随机推荐

  1. Django 请求参数

    Django 请求参数 1.获取URL路径中的参数 需求:假设用户访问127.0.0.1/user/1/2,你想获取1,2.应该怎么操作呢? (1)未命名参数(位置参数) # 在项目下的urls.py ...

  2. Jmeter入门--元件作用域和执行顺序

    一.元件作用域 8类可被执行的元件(测试计划于线程组不属于可执行元件),这些元件中,取样器(Sampler)是典型的不与其他元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其他元件(配置 ...

  3. 退出全屏监听ESC事件

    fullscreenchange事件 fullscreenchange:当窗口大小改变时触发 isFullscreen:全局变量 window.addEventListener("fulls ...

  4. [翻译] GiFHUD

    GiFHUD progress hud for displaying only animated gif images. no labels (for now) 状态指示器,仅仅用来显示gif图片,不 ...

  5. swift版的元组

    swift版的元组 说明 元组的内容并不多,使用的话跟普通变量类似,以下是测试源码: // // ViewController.swift // Tuples // // Created by You ...

  6. MongoDB的Spring-data-mongodb集成(Win10 x64) 第一章 - MongoDB安装与简单命令

    这是MongoDB系列的第一章,作者将持续更新. 1.下载 https://www.mongodb.com/download-center#community 2.安装与配置 有关安装的任何困难请点击 ...

  7. September 23rd 2017 Week 38th Saturday

    Lonely people will always remember his life occurred in each person. 寂寞的人总是会用心记住他生命中出现过的每个人. If you ...

  8. 【模块化】 RequireJS入门教程总结与推荐

    之所以学习RequireJS,肯定对 模块化有一定的理解.这里有几篇学习 RequireJS的文章,推荐给大家去学习. Javascript模块化编程(一):模块的写法 Javascript模块化编程 ...

  9. codeforces 432E Square Tiling

    codeforces 432E Square Tiling 题意 题解 代码 #include<bits/stdc++.h> using namespace std; #define fi ...

  10. 如何让邮件营销平台成为EDM神器?

    任何一家做邮件营销的企业都希望自己的投入获得超乎想象的回报,出现打开率.点击率和伴随而来的成交量能够节节攀升的现象,这些数据我们当然可以通过监测各种平台的反馈而得到确切的报表.当然,作为邮件营销平台运 ...