用NI的数据采集卡实现简单电子测试之3——绘制二极管V-I特性曲线图
本文从本人的163博客搬迁至此。
接下来用USB-6009和LabVIEW实现对二极管最重要的特性曲线“V-I特性曲线”的测试和绘制。
一、什么是二极管V-I特性曲线
康华光版的《电子技术基础——模拟部分》这样介绍二极管的V-I特性:在二极管正向特性(在PN结两端施加N正P负的电压时的特性)的起始部分,由于正向电压较小,外电场还不足以克服PN结的内电场,因而这时的正向电流几乎为零,二极管呈现出一个大电阻,好像一个门坎。硅管的门坎电压Vth(又称死区电压)约为0.5V,锗管的Vth约为0.1V,当正向电压大于Vth时,内电场大为削弱,电流因而迅速增长。所谓“V-I特性曲线”是指正向电压和正向电流之间的关系。
二、测试电路
V-I特性曲线是二极管电流I和压降V之间的关系,只有一个自变量和一个因变量,是二维平面上的曲线。测试电路需要通过USB-6009的DAC控制流过二极管的电流,同时通过ADC测量其上的压降来绘制V-I曲线。和绘制三极管的输出特性曲线一样,可以通过由运放构成的反馈控制电路来控制流过二极管的正向电流,但测试普通二极管的V-I曲线时,一般要求测试电流达到100mA以上,无法由运放直接产生,需借用晶体管放大输出电流。我设计了图1所示的测试电路。
图1 二极管V-I特性测试电路
其中DI_CTL是由USB-6009的DAC输出的电流控制电压。D_test是被试二极管,采用常见整流二极管1N4007,其两端连接的AI3和AI7是USB-6009的ADC的一对差分输入端,用于测试D_test两端的电势差Vdt。Rd1是电流测试电阻,其作用是将流过被试二极管的电流ID转换为电压VD1,从而形成电流负反馈通路。为防止Rd1上功耗过大造成损毁,Rd1取值较小,仅为0.1欧姆。在500mA电流条件下,其上的压降也仅为50mV,很难与USB-6009的DAC输出的控制电压形成比较,因此需要先通过运放OP_dA构成的同相放大电路来将Rd1上的测试电压VD1放大成VD2。其增益G=(Rd3+Rd2)/Rd2=31.3倍,可将流过Rd1的500mA电流转换为1.56V输出电压。运算放大器OP_dB构成整个负反馈电路的误差放大环节,其作用是放大实际电流与USB-6009的DAC输出的控制电流的电压之间的误差,并将放大后的误差用于控制功率P沟道MOS管MOSP输出电流。根据负反馈系统的分析方法来分析图1的工作原理。
1、对运放OP_dB应用“虚短”的原则:OP_dA输出的VD2应该等于USB-6009输出的控制电压DI_CTL,当改变DI_CTL时,就可以改变流过D_test的电流ID。电流ID和电压DI_CTL之间的关系为:
ID=VDI_CTL/Rd1 (1)
2、上述电路使用虚短的前提之一是,整个系统是电流负反馈系统:但ID增加时VD1和 VD2也将增加,将使OP_dB的同相端电压增加,从而将使P欧沟道MOS管的栅极电压上升,并减少其打开的程度从而降低ID,并最终构成负反馈系统。
3、上述电路使用虚短的前提之二是,整个系统的稳定性。Cd1具有保证闭环稳定的作用,它可以降低高频信号的开环增益,从而整个系统在高频段发生自激振荡。
另外,这个电路值得注意的地方还在于,这是一个单电源电路,但电路的参考点却是“地电势”。具体体现在:
1、从Rd1上端得到的VD1是一个很小的电压,可能仅有几个mV,要使用只有单电源的运放拾取这个电压是有一定困难的,但LM358的共模电压可达负电源电压,因此能够拾取和放大VD1。
2、由于电流测试电阻Rd1安装在被测二极管和地之间,就不可能采用单端测量方式测量二极管上的压降,正好USB-6009提供了差分测量方式,将两个差分输入端分别连接在被测对象的两端,可以将两个输入端之间的共模电压抑制掉,从而直接得到被测对象两端的电势差。
三、测试程序
1、测试程序流程图如图2所示
图2 测试程序流程图
2、测试电流ID的设置
DACDI_CTL实现对测试电流ID采用公式节点实现DI_CTL和ID之间的换算,如图3所示:
图3 实现测试电流ID和控制电压换算的公式节点
图4 差分模式采集电压的程序框图
图5 设置测试电流程序框图
图6 读取二极管压降程序框图
图7 实际测试得到的二极管VI特性曲线
用NI的数据采集卡实现简单电子测试之3——绘制二极管V-I特性曲线图的更多相关文章
- 用NI的数据采集卡实现简单电子测试之2——绘制三极管输出特性曲线(面)图
本文从本人的163博客搬迁至此. 想设计几个实验,既能展示NI的LabVIEW和数据采集卡的功能特点,又能够让普通电类专业本科学生可以理解,自然首先想到了<电子技术基础>课程的内容.第一个 ...
- 用NI的数据采集卡实现简单电子测试之6——数字I/O及测试平台
本文从本人的163博客搬迁至此. 前面几个例子介绍了NI数据采集卡的模拟输入和输出功能,本例则集中介绍USB-6009的数字输入输出功能.本例包括基本数字IO电路及在LabVIEW中控制USB-600 ...
- 用NI的数据采集卡实现简单电子测试之1——USB-6009简介
本文从本人的163博客搬迁至此. 几年以来,一直担任学校“虚拟仪器”课程教师.以前上课都以介绍LabVIEW编程为主,硬件实验一直没有开展.这次借“西部高校实力提升工程”的机会,学院采购了一批NI的数 ...
- 用NI的数据采集卡实现简单电子测试之5——压控振荡器的测试
本文从本人的163博客搬迁至此. 为了展示连续信号采集的方法,以其外部触发采集功能.我用运算放大器实现了一个最简单的低频压控振荡器(VCO),作为USB-6009采集的信号源.在LabVIEW下编写的 ...
- 用NI的数据采集卡实现简单电子测试之4——半导体温度传感器
本文从本人的163博客搬迁至此. 为了展示NImax(Measurement & Automation explorer)的强大配置功能,做了一个半导体温度传感器测试的示例. 一.半导体温度传 ...
- 简单理解ECMAScript2015中的箭头函数新特性
箭头函数(Arrow functions),是ECMAScript2015中新加的特性,它的产生,主要有以下两个原因:一是使得函数表达式(匿名函数)有更简洁的语法,二是它拥有词法作用域的this值,也 ...
- ? 原创: 铲子哥 搜狗测试 今天 shell编程的时候,往往不会把所有功能都写在一个脚本中,这样不太好维护,需要多个脚本文件协同工作。那么问题来了,在一个脚本中怎么调用其他的脚本呢?有三种方式,分别是fork、source和exec。 1. fork 即通过sh 脚本名进行执行脚本的方式。下面通过一个简单的例子来讲解下它的特性。 创建father.sh,内容如下: #!/bin/bas
? 原创: 铲子哥 搜狗测试 今天 shell编程的时候,往往不会把所有功能都写在一个脚本中,这样不太好维护,需要多个脚本文件协同工作.那么问题来了,在一个脚本中怎么调用其他的脚本呢?有三种方式,分别 ...
- 【转】linux设备驱动之MMC SD卡——核心层简单分析
原文网址:http://blog.chinaunix.net/uid-28685940-id-3889878.html /*************************************** ...
- python3 练手实例5 做一个简单电子时钟
import time,sys,os while(1): t = time.strftime('%Y-%m-%d\n%H:%M:%S',time.localtime(time.time())) pri ...
随机推荐
- web项目启动时,自动执行代码的几种方式
在项目开发过程中,往往需要一些功能随着项目启动而优先启动,下面我总结几种方式(非spring boot) spring boot的参考 spring boot 学习之路9 (项目启动后就执行特定方法) ...
- 9.Java注解(Annotation)
一.系统内置标准注解 1.@Override 是一个标记注解类型,它被用作标注方法. 它说明了被标注的方法重载了父类的方法,起到了断言的作用.如果我们使用了这种Annotation在一个没有覆盖父类方 ...
- POST请求的forHTTPHeaderField
POST请求的forHTTPHeaderField 也许你的iOS项目中使用了AFNetworking2.0,或者是ASIHTTPRequest,对于http中POST请求的操作,你用了他们提供的现成 ...
- 使用CoreData [4]
使用CoreData [4] 此片文章主要是分析如何对CoreData进行封装. 在开始之前,我们需要弄明白3个非常关键的类,以下翻译凑合着看看. NSManagedObjectContext An ...
- 关于cocos2dx的textfield事件响应
time:2015/08/27 1. textfiled cocostudio的输入框,看源代码知道他是直接继承widget的,但是真正的输入框功能是label实现的,是Textfield类的一个成员 ...
- CDN高级技术专家周哲:深度剖析短视频分发过程中的用户体验优化技术点
深圳云栖大会已经圆满落幕,在3月29日飞天技术汇-弹性计算.网络和CDN专场中,阿里云CDN高级技术专家周哲为我们带来了<海量短视频极速分发>的主题分享,带领我们从视频内容采集.上传.存储 ...
- 如何在C++中动态建立二维数组(转)
http://blog.sina.com.cn/s/blog_7c073a8d0100qp1w.html http://blog.163.com/wujiaxing009@126/blog/stati ...
- UI(一)
1.AfxWinMain 首先,MFC程序先执行到TheApp实例化对象也就是通过这句CTestApp the App来实例化对象的然后,调用CTestApp构造函数分配内存空间 然后,就调用了Afx ...
- Programming Assignment 4: Boggle
编程作业四 作业链接:Boggle & Checklist 我的代码:BoggleSolver.java 问题简介 Boggle 是一个文字游戏,有 16 个每面都有字母的骰子,开始随机将它们 ...
- thusc2018真退役记
$day1$: 看了三道题,感觉这次特别毒瘤啊.. $t1$想了一会儿,发现是个傻逼题,然后切掉了. $t2$想了很久,不会,先去搞题答. 题答搞了很久,只搞出第一个点,后面的点根本没看出是什么意思. ...