element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Community Hub
Community Hub
Member Blogs Experimenting with MOSFETs: Output Characteristics
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Leaderboard
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Community Hub to participate - click to join for free!
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: jc2048
  • Date Created: 1 Jan 2020 11:43 AM Date Created
  • Views 6061 views
  • Likes 9 likes
  • Comments 7 comments
  • mosfet
  • test
  • arduino uno
  • characteristics
  • experimenting
  • semiconductor
  • jc2048
Related
Recommended

Experimenting with MOSFETs: Output Characteristics

jc2048
jc2048
1 Jan 2020

Introduction

 

More experimenting with MOSFETs. This time I'm going to have a look at the output characteristics.

 

On a datasheet, output characteristics are usually drawn something like the following two graphs. The first is for

the IRF730 part that I have been experimenting with extensively in this series of blogs and the second is for a

small-signal part, a BS170:

 

image

image

Curves of drain current against drain-source voltage are drawn for a set of fixed Vgs voltages. The Vgs voltage

step size is chosen to give a reasonable spread of curves and the choice will depend, in part, on the forward

transconductance of the part: a power device, with a fairly high transconductance, will need the gate voltages

closer [half volt steps seem to be common] than a small-signal part, like a BS170 or 2N7000, where the step size

might typically be one volt.

 

For this blog, I'm going to try and display the curves for the BS170 part. Dealing with the kind of currents

involved with the small part will be much easier than trying to do the same with a power transistor. The resulting

graph will also show the active-region section of the curves, above pinch-off, better.

 

Circuit

 

Now I need to consider the design of the test circuit. As before, I'm going to draw the curves on the screen of my

oscilloscope. That will enable me to do the test for each curve quickly, with a long rest period [10ms] in between

tests, in order to get around the otherwise difficult problem of the very high level of dissipation once the drain

voltage is fairly high and the drain current is also high.

 

I need to be able to control the gate voltage so that it can be changed for each sweep. After a bit of thought, I

decided to do this with a variant of the simple resistor-ladder DAC that I've used previously with an Arduino.

 

That's convenient because I'm also going to be using an Arduino UNO again to do the timing of the test. The ladder

can only have an output within the 5V range of the UNO's power rails and wouldn't be able to drive the gate of the

DUT [device under test] very hard, so I'm going to buffer it with an op-amp circuit with a gain of x4. That way, I

get a range of 0-15V in 1V steps. Although it's far from ideal for this application, I'm going to see if I can get

away with using a cheap LM324 device for this. With feedback, the op amp output has a low impedance [well below an

ohm], but the natural output resistance of the amplifier will be tens of ohms, possibly as much as a hundred, so

when the drain voltage starts rising, the internal intrinsic capacitances of the MOSFET might result in the gate

moving around and the op amp won't necessarily be fast enough to counter it. To avoid any problems with that [I

won't have problems with the BS170, I was thinking ahead to the situation if I try testing power devices], I'm

going to have a 470n capacitor at the gate, isolated from the op amp output with a resistor. The 470nF is hundreds

of times the size of any intrinsic capacitance and will reduce any disturbance at the gate in proportion. There is

plenty of time between test intervals for the capacitor to charge to the new gate level, I just need to remember to

write the new A/D value to the resistor ladder at the end of one test so that it has maximum time to settle before

the start of the next.

 

The final thing I need to do is to find a way to vary the drain voltage whilst measuring the drain current. I going

to try doing that with another MOSFET, wired as a source follower, controlled by an op amp with the JFET constant-

current source that I used in one of the previous blogs charging a capacitor to give a reference voltage ramp for

it to follow. That will be enabled for the 50us of the test by an output pin of the UNO.

 

The drain current I'll simply measure directly with a current probe. Plotting that against the voltage at the drain

of the device will then sketch the curve.

 

Put all that together and this is the resulting circuit diagram:

 



Here it is on a piece of scrap pcb material. I reworked the board that I did for the transfer-characteristic testimage

rather than start again from scratch, as it already had some of the circuit on it, though that meant it all ended

up a bit on the messy side.

 

image

 

The red/black leads [left] connect to the PSU that's providing the 15V for the MOSFETs. The yellow/orange leads are to a separate supply for the op amp and the ramp circuitry. The red loop at the bottom edge is for the current probe. The UNO is powered from its USB lead.

 

The upside-down chip is the op amp [it's not really dead, it's just pretending].

 

Testing a BS170

 

The code for the Arduino UNO was very simple. Note that it's specific to the UNO as I talk directly to the output

pins to save time.

 

/* mosfet output-characteristic control program */

#include <arduino.h>

#define START_VOLTAGE 4
#define END_VOLTAGE 10

void setup() {
  PORTC = 0x00;
  DDRC = DDRC | 0x2F;    // set output pins
}

void loop() {
  int i;
  while(1) {
    for(i = START_VOLTAGE; i <= END_VOLTAGE; i++) {
      PORTC &= 0xFFF0;
      PORTC |= i & 0x000F;
      delayMicroseconds(10000);
      noInterrupts();
      PORTC |= 0x20;
      delayMicroseconds(50);
      PORTC &= ~0x20;
      delayMicroseconds(20);
      interrupts();
      }    
    }
}

 

The code steps the gate voltage from 4V to 10V in one volt steps. For each step, there's a pause of 10ms and then

it carries out the test for 50us by taking pin A5 high at the start and then low at the end. I'm using a long

persistence on the oscilloscope to accumulate the separate curves, so that it will give me a graph like the one

you'd see in a datasheet.

 

Here's the gate voltage as it's doing that. You can see the way it's being changed every 10ms and how it settles

well before the next test

 

image

 

This next trace shows the Vds voltage in yellow and the Id current curves in blue. I've adjusted the drain voltage

so that it sweeps from 0 to 10V in the width of the screen [ten divisions, so 1V/div]. That saves me from having to

use the XY plot [which is very limited on this particular 'scope].

 

image

 

here it is again without the voltage curve

 

image

 

This nicely shows the shape of the curves. The bottom curve is for 4V gate drive, the top one for 10V, and the

current is 500mA per division, so the top curve is exceeding 2.6A. My curves appear much smoother that the

manufacturer's. The main deficiency of mine is right at the start where they get off to a slightly wobbly lift-off

[that will be my test circuit, not the MOSFET]. The top two curves coming down again at higher voltages might be

dissipation related (by that stage, for the higher one, the device is dissipating more than ten watts which will

have some heating effect in a small die in a TO92 package, even when limited to just a few tens of microseconds).

 

Testing an IRF730

 

I was going to end there but couldn't resist trying the IRF730. Although it's a power device, the currents are

manageable if I keep the Vgs fairly low, so I set the UNO to test at 5V and 6V. Here are the traces.

This one closely matched the typical device on the datasheet.

 

image

 

Testing a BSS138

 

Finally, I thought I'd have a go at a BSS138. This has a lower threshold than the BS170, so I tested with steps

from 2V up to 8V. Here is the graph I obtained.

 

image

 

Again, this one seemed to be better than the datasheet, but a major problem was the small package. For the first

couple of seconds, the traces visibly move around before the temperature of the part stabilizes and everything

comes to rest, so it certainly won't match the 25degC of the manufacturer's test.

 

Conclusions

 

That worked much better than I thought it would and, with a bit of work, could probably be turned into a piece of

test equipment. The test isn't perfect, even with a pulse test (0.5% duty cycle) there is evidence of temperature

effects, but it's nice being able to come up with reasonably plausible curves.

 

Other MOSFET Blogs

 

Experimenting with MOSFETS: Total Gate Charge

Experimenting with MOSFETs: Transfer Characteristic

Experimenting with MOSFETS: Threshold Voltage  

 

If you found this blog interesting and would like to see others I've written, a list can be found here: jc2048 Blog Index

  • Sign in to reply

Top Comments

  • fmilburn
    fmilburn over 5 years ago +4
    Hi Jon, The curves really turned out nice and the design is quite elegant in its simplicity. I am trying to understand the measured current Id though. In the manufacturer’s curve for the BS170 the drain…
  • jc2048
    jc2048 over 5 years ago in reply to fmilburn +4
    Thanks for the comment. The horizontal scale on all the curve traces is effectively 1V per division, so yes you're right, my curves are quite a bit different to the datasheet for both the BS170 and the…
  • jc2048
    jc2048 over 5 years ago in reply to fmilburn +4
    Those curves are a bit academic anyway. At least, they are for the BS170 in a TO92 package. The package dissipation limit is 350mW. If I draw that limit on the curves [very crudely, freehand, in orange…
  • genebren
    genebren over 5 years ago +3
    Another very interesting experiment/blog on MOSFETs. I really enjoy reading through your experiments and am very impressed with the results that you achieve. Thanks for sharing!
  • fmilburn
    fmilburn over 5 years ago in reply to jc2048 +3
    Thanks, I did not look at the datasheet and was unaware the range could be this large. Your explanations of how things work in this series have been very informative.
  • shabaz
    shabaz over 5 years ago +3
    Hi Jon, Awesome report, and very useful circuit! It would make a nice kit, for people to assemble their own mini-curve-tracer.
  • jc2048
    jc2048 over 5 years ago in reply to shabaz +3
    It's not so good on lower currents. I couldn't resist trying, but it quickly showed up the deficiencies in the circuit. Here I've dropped the gain of four on the gate drive so the steps are 0.25V at a…
Parents
  • genebren
    genebren over 5 years ago

    Another very interesting experiment/blog on MOSFETs.  I really enjoy reading through your experiments and am very impressed with the results that you achieve.

     

    Thanks for sharing!

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • More
    • Cancel
Comment
  • genebren
    genebren over 5 years ago

    Another very interesting experiment/blog on MOSFETs.  I really enjoy reading through your experiments and am very impressed with the results that you achieve.

     

    Thanks for sharing!

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • More
    • Cancel
Children
No Data
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube