本文从本人的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. java基础(七) java四种访问权限

    引言   Java中的访问权限理解起来不难,但完全掌握却不容易,特别是4种访问权限并不是任何时候都可以使用.下面整理一下,在什么情况下,有哪些访问权限可以允许选择. 一.访问权限简介 访问权限控制: ...

  2. 【Java】解析xml

    xml: <?xml version="1.0" encoding="GB2312"?> <RESULT> <VALUE> ...

  3. docker如何创建支持SSH服务的镜像

    一般情况下,Linux系统管理员通过SSH服务来管理操作系统,但Docker的很多镜像是不带SSH服务的,那么我们怎样才能管理操作系统呢?在第一部分中我们介绍了一些进入容器的办法,比如用attach. ...

  4. 关于使用Entity Framework时遇到的问题 未找到具有固定名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架提供程序。请确保在应用程序配置文件的“entityFramework”节中注册了该提供程序

    问题描述: 使用Entity Framework获取数据时报以下错误: 未找到具有固定名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架提供程序.请确保在应用程序 ...

  5. 模板与STL学习简单的笔记

    一.如何进行泛型编程 C/C++是一种静态编程语言,必须需要把代码翻译成可执行的二进制可执行程序然后再运行,一旦编译好之后就不能再变了(数据类型也就必须确定下无法更改,因此要为每一种数据类型编写一份算 ...

  6. jQuery插件实例三:图片滚动[切换]效果一

    图片切换效果在很多网站上都能看到,是一种常见的广告/活动宣传方式,通常位于网页上端.这个插件是众多图片切换效果的形式中的一种,数据源可在前端配置,也可从后台通JSON格式传输数据,当然,数据格式是固定 ...

  7. Django 错误之 No module named ‘MySQLdb’

    由于卸载Mysql时将很多相关依赖包都卸载了,重装mysql后启动django出现如下错误: django.core.exceptions.ImproperlyConfigured:Error loa ...

  8. 【笔记】python的sqlalchemy数据库连接池原理的说明

    sqlalchemy数据库连接池的使用方式是延迟初始化,就是说一开始你调用create_engine(...)后创建的那个数据库池是空的,你后面通过session.connection()或者engi ...

  9. spring中MessageSource的配置使用方法3--ResourceBundleMessageSource【转】

    本文转载仅供自己学习收录,不做任何商业用途,如有需要请访问原地址:http://blog.csdn.net/qyf_5445/article/details/8124431 ApplicationCo ...

  10. vue项目用nodejs实现模拟数据方法

    1)在项目根目录(如demo)中创建一个文件夹,如base,将项目中所有的前端文件全部放到base文件夹中,此时项目demo下只有一个文件夹base 2)通过cmd进入命令窗口,直接执行npm ins ...