Transistor Curve Tracer

4,135

66

66

Intro: Transistor Curve Tracer

I've always wanted a transistor curve tracer. It's the best way of understanding what a device does.Having built and used this one, I finally understand the difference between the various flavours of FET.

It's useful for

  • matching transistors
  • measuring the gain of bipolar transistors
  • measuring the threshold of MOSFETs
  • measuring the cutoff of JFETs
  • measuring the forward voltage of diodes
  • measuring the breakdown voltage of Zeners
  • and so on.

I was very impressed when I bought one of the wonderful LCR-T4 testers by Markus Frejek and others but I wanted it to tell me more about the components so I started to design my own tester.

I began by using the same screen as the LCR-T4 but it doesn't have a high enough resolution so I changed to a 320x240 2.8" LCD. It happens to be a colour touch-screen which is nice. The curve tracer runs on an Arduino Pro Mini 5V Atmega328p 16MHz and is powered by 4 AA cells.

Step 1: How to Use It

When you switch on the curve tracer, the main menu screen is displayed.

Select the kind of device by touching one of "PNP NPN", "MOSFET" or "JFET". You can test diodes in the "PNP NPN" mode.

Put the Device Under Test (DUT) into the ZIF socket. The menu screen shows you which pins to use. PNPs, p-channel MOSFETS and n-channel JFETS go in the left side of the socket. NPNs, n-channel MOSFETS and p-channel JFETS go in the right side of the socket. Close the ZIF socket.

After a second or so, the tester will realise that it has a component and will start to draw the curves.

For a PNP or NPN transistor it plots Vce (the voltage between the collector and emitter) versus the current flowing into the collector. A line is drawn for each different base current - e.g. 0uA, 50uA, 100uA, etc. The gain of the transistor is shown at the top of the screen.

For a MOSFET it plots Vds (the voltage between the drain and source) versus the current flowing into the drain. A line is drawn for each different gate voltage - 0V, 1V, 2V, etc. The turn-on threshold of the FET is shown at the top of the screen.

For a JFET it plots Vds (the voltage between the drain and source) versus the current flowing into the drain. A line is drawn for each different gate voltage - 0V, 1V, 2V, etc. With depletion JFETs, current flows when the gate voltage is equal to the source voltage. As the gate voltage is changed to be further from the drain voltage, the JFET turns off. The cut-off threshold of the FET is shown at the top of the screen.

The most interesting part of a MOSFET or JFET curve is around the turn-on or cut-off voltage plus or minus a few hundred mV. In the main menu, touch the Setup button and the Setup screen will be shown. You can select the minimum and maximum gate voltage: more curves will be drawn in that region.

For a PNP or NPN transistor, the Setup screen allows you to select the minimum and maximum base current

With diodes, you can see the forward voltage and with Zeners, the reverse breakdown voltage. In the image above, I've combined the curves of several diodes.

Step 2: How It Works

Let's consider an NPN transistor. We're going to draw a graph of the voltage between the collector and emitter (x-axis is Vce) versus the current flowing into the collector (y-axis is Ic). We'll draw one line for each different base current (Ib) - e.g. 0uA, 50uA, 100uA, etc.

The emitter of the NPN is connected to 0V and the collector is connected to a 100ohm "load resistor" and then to a voltage that slowly increases. A DAC controlled by the Arduino sweeps that test voltage from 0V to 12V (or until the current through the load resistor reaches 50mA). The Arduino measures the voltage between the collector and emitter and the voltage across the load resistor and draws a graph.

This is repeated for each base current. The base current is generated by a second 0V-to-12V DAC and a 27k resistor. The DAC produces 0V, 1.35V (50uA), 2.7V (100uA), 4.05V (150uA), etc. (Actually, the voltage has to be a little higher because of Vbe - assumed to be 0.7V.)

For a PNP transistor, the emitter is connected to 12V and the collector is connected to a 100ohm load resistor and then to a voltage that slowly decreases from 12V to 0V. The base current DAC steps down from 12V.

An n-channel enhancement MOSFET is similar to an NPN. The source is connected to 0V, the load resistor is connected to the drain and to a voltage sweeping from 0V to 12V. The DAC that was controlling the base current now controls the gate voltage and steps 0V, 1V, 2V, etc.

A p-channel enhancement MOSFET is similar to an PNP. The source is connected to 12V, the load resistor is connected to the drain and to a voltage sweeping from 12V to 0V. The gate voltage steps 12V, 11V, 10V, etc.

An n-channel depletion JFET is slightly more difficult. You would normally imagine the source connected to 0V, the drain connected to a varying positive voltage and the gate connected to a varying negative voltage. A JFET normally conducts and is turned off by a negative gate voltage.

The curve tracer can't generate negative voltages so the n-JFET drain is connected to 12V, the source is connected to a 100ohm load resistor and then to a voltage that slowly decreases from 12V to 0V. We want Vgs (the gate-source voltage) to step from 0V, -1V, -2V, etc. We want Vgs to remain constant as Vds (the drain-source voltage) varies. So the Arduino sets the voltage at the load resistor then adjusts the gate voltage DAC until Vgs is the required value. It then sets a new voltage at the load resistor and again adjusts the gate voltage, etc.

(The curve tracer can't measure the voltage applied to the gate but it knows what it's told the DAC to do and that's accurate enough. Of course, this only measures the negative-gate part of the JFET response; if you want to see the positive-gate part, treat it as a MOSFET.)

A p-channel depletion JFET is treated similarly but the 0-to-12V values are all inverted.

(The curve tracer does not specifically deal with depletion MOSFETs or enhancement JFETs but you could treat them as depletion JFETs and enhancement MOSFETs.)

Once it has completed the graph the curve tracer calculates the gain, threshold or cut-off of the transistor.

For bipolar transistors, the Arduino looks at the average spacing of the horizontal lines of the curves. As it draws the curve for base current, it notes the collector current when Vce is equal to 2V. The change in collector current is divided by the change in base current to give the gain. The gain of a bipolar is a vague concept. It depends on how you measure it. No two makes of multimeter will give the same answer. Generally, all you're asking is "is the gain high?" or "are these two transistors the same?".

For MOSFETs, the Arduino measures the turn-on threshold. It sets the load voltage to 6V then gradually increases Vgs until the current through the load exceeds 5mA.

For JFETs, the Arduino measures the cut-off voltage. It sets the load voltage to 6V then gradually increases (negative) Vgs until the current through the load is less than 1mA.

Step 3: The Circuit

Here is a brief description of the circuit. A more complete description is in the attached RTF file.

The curve tracer needs three voltages:

  • 5V for the Arduino
  • 3.3V for the LCD
  • 12V for the test circuit

The circuit must convert make these different voltages from the 4 AA cells.

The Arduino is connected to a 2-channel DAC to produce the various test voltages. (I tried using the Arduino PWM as a DAC but it was too noisy.)

The DAC produces voltages in the range 0V to 4.096V. These are converted into 0V to 12V by op-amps. I couldn't find any through-hole rail to rail op-amps that can source/sink 50mA, so I used an LM358. The output of an LM358 op-amp cannot go higher than 1.5V below its supply voltage (i.e. 10.5V). But we need the full range of 0-12V.

So we use an NPN as an open-collector inverter for the output of the op-amp.

The advantage is that this home-made "open-collector op-amp" output can go right up to 12V. Feedback resistors around the op-amp amplify the 0V to 4V from the DAC to 0V to 12V.

The voltages at the Device-Under-Test (DUT) vary between 0V and 12V. The Arduino ADCs are limited to 0V to 5V. Potential dividers do the conversion.

Between the Arduino and the LCD are potential dividers that drop 5V to 3V. The LCD, the touch screen and the DAC are controlled by the SPI bus.

The curve tracer is powered from 4 AA cells which give 6.5V when new and can be used down to around 5.3V.

The 6V from the cells is dropped to 5V with a very low dropout regulator - a HT7550 (if you don't have one then a 5V zener and a 22ohm resistor is not too much worse). The current consumption of the 5V supply is around 26mA.

The 6V from the cells is dropped to 3.3V with a low-dropout regulator - the HT7533. The current consumption of the 3.3V supply is around 42mA. (A standard 78L33 would work but it has a 2V dropout so you'd have to throw away your AA cells sooner.)

The 6V from the cells is boosted to 12V with a SMPS (Switched Mode Power Supply). I simply bought a module from eBay. I had real trouble finding a decent converter. The bottom line is, don't use an XL6009 converter, it's an absolute menace. As the battery goes flat and falls below 4V the XL6009 goes crazy and produces up to 50V which would fry everything. The good one I used is:

https://www.ebay.co.uk/itm/Boost-Voltage-Regulator-Converter-Step-up-Power-Supply-DC-3-3V-3-7V-5V-6V-to-12V/272666687043?hash=item3f7c337643%3Ag%3AwsMAAOSw7GRZE9um&_sacat=0&_nkw=DC+3.3V+3.7V+5V+6V+to+12V+Step-up+Power+Supply+Boost+Voltage+Regulator+Converter&_from=R40&rt=nc&_trksid=m570.l1313

It's tiny and is about 80% efficient. Its input current consumption is around 5mA when waiting for a DUT to be inserted and momentarily up to 160mA when drawing the curves.

As the AA cells are discharged the voltages vary, the software compensates by using reference voltages. The Arduino measures the 12V supply. The Arduino ADC uses its "5V" supply as a reference voltage but that "5V" is calibrated accurately against the Arduino's internal 1.1V reference voltage. The DAC has an accurate internal reference voltage.

I like the way the LCR-T4 has a button to turn it on and turns itself off automatically with a timeout. Unfortunately, the circuit introduces a voltage drop which I can't afford when powering from 4 AA cells. Even re-designing the circuit to use a FET wasn't sufficient. So I'm using a simple on/off switch.

Step 4: The Software

The Arduino sketch is attached here. Compile and upload it to the Pro Mini in the usual way. There are lots of descriptions of how to upload programs on the web and in other Instructables.

The sketch starts by drawing the main menu then waits for you to insert a component or touch one of the buttons (or send a command from the PC). It tests for component insertion once a second.

It knows you have inserted a component because, with the base/gate voltage set to half way (DAC = 128) and the load resistor voltage set to 0V or 12V, a current of several mA flows through one or other of the load resistors. It knows when the device is a diode because changing the base/gate voltage does not change the load current.

It then draws the appropriate curves and switches the base and load currents off. It then tests once a second until the component is unplugged. It knows the component is unplugged because the load current falls to zero.

The ILI9341 LCD is driven by my own library called "SimpleILI9341". The library is attached here. It has a standard set of drawing commands very similar to all such libraries. Its advantages over other libraries are that it works (some don't!) and it shares the SPI bus politely with other devices. Some of the "fast" libraries you can download use special timing loops and are upset when other, maye slower, devices are used on the same bus. It's written in plain C and so has smaller overheads than some libraries. A Windows program is attached which allows you to make your own fonts and icons.

Step 5: Serial Comms to PC

The curve tracer can communicate with a PC via a serial link (9600bps, 8-bit, no parity). You will need a suitable USB-to-serial convertor.

The following commands can be sent from the PC to the curve tracer:

  • Command 'N': trace the curves of an NPN transistor.
  • Command 'P': trace the curves of a PNP transistor.
  • Command 'F': trace the curves of an n-MOSFET.
  • Command 'f': trace the curves of a p-MOSFET.
  • Command 'J': trace the curves of an n-JFET.
  • Command 'j': trace the curves of a p-JFET.
  • Command 'D': trace the curves of a diode on the NPN side of the socket.
  • Command 'd': trace the curves of a diode on the PNP side of the socket.
  • Command 'A' nn: set DAC-A to the value nn (nn is a single byte) then return an 'A' to the PC. DAC-A controls the load voltage.
  • Command 'B' nn: set DAC-A to the value nn then return a 'B' to the PC. DAC-B controls the base/gate voltage.
  • Command 'X': continuously send ADC values back to the PC.
  • Command 'M': show the main menu.

When the curves are traced following one of the commands, the results of the curve are transmitted back to the PC. The format is:

  • "n": start a new plot, draw the axes, etc.
  • "m (x),(y),(b)": move the pen to (x),(y).
    • (x) is Vce in integer mV.
    • (y) is Ic in integer hundreds on uA (e.g. 123 means 12.3mA).
    • (b) is the base current in integer uA
    • or (b) is 50 times the gate voltage in integer mV
  • "l (x),(y),(b)": draw a line to pen to (x),(y).
  • "z": the end of this line
  • "g (g)": the end of the scan;
    • (g) is the gain, threshold voltage (x10) or the cut-off voltage (x10)

The values sent to the PC are the raw measured values. The Arduino smooths the values before drawing them by avreraging; you should do the same.

When the PC sends an "X" command, The ADC values are returned as integers:

  • "x (p),(q),(r),(s),(t),(u)"
    • (p) the voltage at the load resistor of the PNP DUT
    • (q) the voltage at the collector of the PNP DUT
    • (r) the voltage at the load resistor of the NPN DUT
    • (s) the voltage at the collector of the NPN DUT
    • (t) the voltage of the "12V" supply
    • (u) the voltage of the "5V" supply in mV

You could write a PC program to test other devices. Set the DACs to test voltages (using 'A' and 'B' commands) then see what the ADCs report.

The curve tracer only sends data to the PC after it has received a command as sending data slows down the scan. It also no longer tests for the presence/absence of a component. The only way to turn off the curve tracer is to send an 'O' command (or to remove the battery).

A Windows program is attached which demonstrates sending commands to the curve tracer.

Step 6: Building the Curve Tracer

Here are the major components that you'll probably need to buy:

  • Arduino Pro Mini 5V 16MHz Atmel328p (£1.30)
  • 14pin Zif Socket (£1)
  • MCP4802 (£2.50)
  • HT7533 (£1)
  • LE33CZ (£1)
  • IL9341 2.8" Display (£6)
  • 5V to 12V boost Power Supply (£1)
  • 4xAA cell battery holder (£0.30)

Search eBay or your favourite supplier. That's a total of around £14.

I got my display here:

https://www.ebay.co.uk/itm/2-8-TFT-LCD-Display-Touch-Panel-SPI-Serial-ILI9341-5V-3-3V-STM32/202004189628?hash=item2f086351bc:g:5TsAAOSwp1RZfIO5

And the boost SMPS here:

https://www.ebay.co.uk/itm/DC-3-3V-3-7V-5V-6V-to-12V-Step-up-Power-Supply-Boost-Voltage-Regulator-Converter/192271588572?hash=item2cc4479cdc%3Ag%3AJsUAAOSw8IJZinGw&_sacat=0&_nkw=DC-3-3V-3-7V-5V-6V-to-12V-Step-up-Power-Supply-Boost-Voltage-Regulator-Converter&_from=R40&rt=nc&_trksid=m570.l1313

The remaining components are things you probably have already:

  • BC639 (3 off)
  • 100nF (7 off)
  • 10uF (2 off)
  • 1k (2 off)
  • 2k2 (5 off)
  • 3k3 (5 off)
  • 4k7 (1 off)
  • 10k (7 off)
  • 27k (1 off)
  • 33k (8 off)
  • 47k (5 off)
  • 68k (2 off)
  • 100R (2 off)
  • Slide Switch (1 off)
  • LM358 (1 off)
  • stripboard
  • 28-pin IC socket or SIL header
  • nuts and bolts

You will need the usual electronics tools - soldering iron, cutters, solder, odd pieces of wire, etc. - and a USB-to-serial convertor to program the Arduino.

The curve tracer is built on stripboard. If you're the sort of person who wants a curve tracer, you will already know how to lay out stripboard.

The layout I used is shown above. Cyan lines are copper on the back of the stripboard. Red lines are links on the component side or are the extra-long leads of the component. Curved Red lines are flexible wire. Dark blue circles are breaks in the stripboard.

I built it on two boards, each 3.7" by 3.4". One board contains the display and the tester circuit; the other board has the battery holder and the 3.3V, 5V and 12V supplies. I kept the low-voltage ("5V") and high-voltage ("12V") parts of the tester circuit separate with only high-value resistors crossing the frontier.

The two boards and the display form a triple-decker sandwich held together with M2 screws. I cut lengths of plastic tube to act as spacers or you could use ballpoin pen tubes, etc.

I only connected the Arduino Mini pins that I needed and only the ones on the sides (not at the top and bottom ends of the Mini PCB). I used short lengths of wire rather than the usual row of square pins that Arduinos are supplied with (the pins soldered to the PCB are square in the drawing). I wanted the Arduino to be flush against the stripboard because there's not a lot of height under the display.

The Arduino ProMini pinout is rather variable. The pins on the long edges of the board are fixed but the pins on the short edges differ between suppliers. The layout above assumes a board with the 6 programming pins with Gnd next to the Raw pin and with DTR next to Tx on the long edge. At the other end of the board are a row of 5 pins with 0V next to D9 and A7 next to D10. None of the short-edge pins are soldered into the stripboard so you can use loose wires if your ProMini is different.

Use a SIL header socket to hold the display. Or cut a 28-pin IC socket in half and use the pieces to make a socket for the display. Solder the square pins that are supplied with the display (or came with the Arduino) into the display. They're too fat to plug into a turned-pin socket - choose a socket that has the "spring clip" kind of pins. Some "spring clip" kind of IC sockets can only withstand half a dozen insertions/removals of the LCD so try to find good ones in your component drawer.

The LCD contains a socket for an SD card (which I didn't use). It is connected to 4 pins on the pcb. I used the pins and a piece of SIL header or IC socket to help support the LCD.

Notice that there are some links under the ZIF socket. Solder them in before you fit it.

I added a programming connector with Tx, Rx, Gnd and a reset button. (My USB-to-serial convertor doesn't have a DTR pin so I have to reset the Arduino manually.) I unsoldered the programming connector when the project was finished.

To protect the electronics, I made a cover from polystyrene sheet.

Files for the circuit in EasyPC format are attached.

Step 7: Future Development

It might be nice to produce curves for other components but which? It's not clear to me what extra infomation the curve of a thyristor or triac would tell me beyod what the LCR-T4 tester does. The LCR-T4 tester can even be used with opto-isolators. I've never used a depletion MOSFET or an enhancement JFET or a unijunction transistor and don't own any. I presume the curve tracer could treat an IGBT as a MOSFET.

It would be nice if the curve tracer could recognise a component automatically and say which pin is which. Ideally, it would then go on to produce the curves. Unfortunately, the way the DUT pins are driven and measured, that would require a lot of extra components and complexity.

A simpler solution is to copy the existing LCR-T4 tester circuit (it's open source and very simple) with a second Atmega processor. Extend the ZIF socket to 16-pin to give three extra pins into which the unknown component can be plugged. The new Atmega acts as a slave on the SPI bus and reports to the main Arduino Mini what it sees. (SPI slave sketches are available on the web.) The software of the LCR-T4 tester is available and looks well documented. There's nothing inherently difficult there.

The main Arduino displays the component type and a diagram of how to plug the component in to the curve tracer part of the ZIF socket.

I've attached a surface-mount layout which can be used with an Arduino ProMini or with a naked Atmega328p (in EasyPC format). If there is sufficient demand (and orders with money) I could produce a batch of SM PCBs Could you buy one from me ready built? Well yes, of course, but the price would be silly. The advantage of dealing with China is that so many nifty electronic modules can be bought so cheaply. The disadvantage is that it's not worth developing anything: if it's a success, it will be cloned. Nice as this curve tracer is, I don't see it as a viable business opportunity.

Share

    Recommendations

    • Metalworking Contest

      Metalworking Contest
    • Tiny Home Contest

      Tiny Home Contest
    • Furniture Contest 2018

      Furniture Contest 2018

    66 Discussions

    0
    None
    KasperJ8

    Question 4 days ago

    Hi,

    Have you considered to add the Gate-charge curve? that is quite easy to make - but maybe the sample rate of the ADC could be an issue - must be less than 1us i presume... but in principle it is adding a 1mA current sourve on the drain and a switchable 1mA current source on the gate, measure the gate voltage while the gate charges up, each us reading will give the nc charge. :)

    7 more answers
    0
    None
    Peter BalchKasperJ8

    Answer 4 days ago

    I've been looking at high-speed ADC on the Arduino recently. It's possible to get rather poor quality ADC samples at 1Msps. You can get better quality samples at 100ksps - i.e. 10uS per sample - but they're not great.

    If we assume that a big power MOSFET has a gate charge of 100nC and you charge it at 1mA, it will be "full" after 100uS. So, at best, that would be 10 ADC samples - not really enough for a decent graph.

    A more typical MOSFET has a gate charge under 10nC so a Arduino is nowhere near fast enough at 1mA.

    If you could charge the gate at 10uA then it would be OK but I'm not sure how well that would work for the MOSFET. And you've got to worry about the Atmel's input impedance - say 100Mohm and 14pF.

    100Mohm wouldn't have much effect on the 10uA current. Shall we guess a gate capacitance of 5nF? (I know it's non-linear but we can guess an approximate value.) So 14pF is trivial. It looks to me like the ADC could measure the rising gate voltage OK.

    The question is, can you reasonably charge a gate at 10uA - most people discuss switching gates fast not slowly.

    Have you tried looking at it with an oscilloscope?

    Do you think my numbers are reasonable?

    Peter

    0
    None
    KasperJ8Peter Balch

    Reply 4 days ago

    Hi -

    First i was thinking about some PSOC - it could incorporate all analog signal i presume - but has not that internal ADC in that speed - Then i sav the STM32F7 series, it has 3x2.4Msps and i think they can be combined... But i know it is not a trivial task... The PSOC approch with an external ADC was also a nice solution for less hardware... But the software need a lot of work...

    I think you numbers seems ok - i think it can be an issue to make a stable 10uA current generator... But i think mostly the traces are for comparing different mosfets. Another option i am not sure is present, is a pc interface to get the traces to a PC

    0
    None
    Peter BalchKasperJ8

    Reply 4 days ago

    The section "Step 5: Serial Comms to PC" describes the serial interface and has a Windows EXE that displays the curves. Or do you mean when looking at gate charge vs voltage? The serial interface allows primitive commands to set DAC values and read ADC results. You could use those to draw the gate charge graph. You may need to add other commands to turn the current source on/off.

    0
    None
    KasperJ8Peter Balch

    Reply 4 days ago

    Hi -

    First i was thinking about some PSOC - it could incorporate all analog signal i presume - but has not that internal ADC in that speed - Then i sav the STM32F7 series, it has 3x2.4Msps and i think they can be combined... But i know it is not a trivial task... The PSOC approch with an external ADC was also a nice solution for less hardware... But the software need a lot of work...

    0
    None
    Peter BalchKasperJ8

    Reply 4 days ago

    PSOC as in "Programmable System on a Chip" from Cypress? It's not something I've ever looked at.

    0
    None
    KasperJ8KasperJ8

    Reply 4 days ago

    I think you numbers seems ok - i think it can be an issue to make a stable 10uA current generator... But i think mostly the traces are for comparing different mosfets. Another option i am not sure is present, is a pc interface to get the traces to a PC

    0
    None
    Peter BalchKasperJ8

    Reply 4 days ago

    > i think it can be an issue to make a stable 10uA current generator...

    Why do you need a constant current generator? What you're making is a graph of charge vs voltage - right? So let's say your "current generator" is a 10V source and a 1M resistor. As the gate charges up, the current through the resistor will change. But you know what that current is - it's (10V-Vg)/1M. So you know the charge in the gate. Surely the fact that it's not linear is irrelavent.

    0
    None
    mausi_mick

    Question 4 weeks ago

    In my test-assembly I have problems with C1 and C2 between Basis and Collector of Q1 an Q2,

    Perhaps 100 nF is to much because of the Miller-Effect ?

    With 100nF between Emitter and Collector it is stable.

    11 more answers
    0
    None
    mausi_mickmausi_mick

    Answer 23 days ago

    Peter,

    I have only tested the NE5532 with 150 Ohm load, with V-PIN8 on the MT3608 with 12.7V to 14V (I can vary it) and the 100 Ohm resistors R32/R37 on PIN1 (with max 12V from the DAC).

    This voltage is stable (for more than 100mA at the TCA0372, I made only a short test with output high) .

    I think in the original schematic, the LM358 with Q1/Q2 has perhaps some problems with stability , but I think the bigger problem is Q3 and his base-resistor (R21/4.7k) :

    If Q3 has high-beta (for instance 200 at Ic = 50mA), on R21 are 1.175 V,

    the voltage on the emitter of Q3 is 12V - 1.1175V (- Vbe or Vceo ??),

    under 11V. If the beta is not so high, you have perhaps only 10V on the emitter / ADC0.

    0
    None
    Peter Balchmausi_mick

    Reply 23 days ago

    > the LM358 with Q1/Q2 has perhaps some problems with stability

    Yes but it worked for me with the 100n C1..C4. They slow the frequecy response so I put big delays in after any big change to the DAC. If your circuit responds faster then you can make the delays smaller (remember to try the Q command).

    > problem is Q3 and his base-resistor (R21/4.7k) :
    > If the beta is not so high,

    BC639 have always had high gain for me. I started with 10k but settled on 4k7.

    > I think the TCA0372 is the best choice,

    They sound useful. I'll order some - but I don't fancy having to re-wire the stripboard.

    Have you measured how close the TCA0372 can get to 0V and 12V? Can you post photos of the curves for NPN and PNP?

    > it was a lot of noise on the curves.

    I guess it will have a faster response than my "open collector op-amp". So you can make the dealys smaller. Then take multiple ADC measurements and average them to reduce the noise.

    0
    None
    Peter Balchmausi_mick

    Reply 22 days ago

    Those photos look very good indeed. I don't see any of the noise you mentioned.

    > Ubat = 11.26V
    > Uout (no load) = 11.05 V

    So both the TCA0372 and the L2722 can get their output to within 0.2V of the power line. That's very good. How close can they get to 0V? Fig 4 of the L2722 doc from ST says it can get to within 0.5V of the power line and 0.05V of the 0V line.

    A 6V output into 100ohm is 0.35W so it shouldn't overheat.

    > Uout (100 Ohm) = 10.98 V (TCA 0372)
    > Uout (100 Ohm) = 11.00 V (L2722)

    I hadn't measured that for my "open collector" output so I can't compare but it seems acceptable.

    > The op in non-inverting-mode with R1 = 49.9k, R2 = 26.2k
    > and 3.9... V (via zener) on + input

    If it's in in non-inverting-mode then you connect the 26.2k to 0V. The 0.. 4.08V from the DAC is amplified by (49.9k+26.2k)/26.2k and so turns into 11.8V. Right?

    So what's the zener for?

    And 11.8V isn't quite enough with a 12.6V supply. If you want to turn off the base of a PNP DUT then you need to get Vbe below 0.2V.

    Well, maybe most people aren't old enough to have drawers full of germanium transistors from the 1970s. But even a silicon transistor might turn on at 0.6V.

    I'm very impressed by your photos. The DUT is turning off completely.

    Peter

    0
    None
    mausi_mickPeter Balch

    Reply 22 days ago

    > the noise was only by testing opamp TDA2822M, the signal was clean testing TCA0372 and L2722.

    > zener: by testing the output swing I had no DAC, therefore I put a 3.9V zener-diode on the non-inverting input. I could adjust the voltage a little bit by changing the zener-current (between 5mA and 10mA ?).

    > pos. swing: I think the result (0.2V) is excellent for a non R-to-R opamp at more than 100mA output current.

    I think in the original schematic the drop was more than 1V at 50mA:

    - a little bit on R30/1k,

    - probably about 1V on R31/4.7k,dependent of beta/hfe of Q3

    - 0.1V to 0.7V on Ube/Uce ? of Q3, I don't know.

    > neg. swing: how I can test the drop to zero ?

    - 0.0V on non-inverting input

    - voltage on output without load

    - voltage on output with 100 Ohm resistor to 12V ?

    - voltage on output with 100 Ohm resistor to 0V ?

    0
    None
    mausi_mickmausi_mick

    Reply 22 days ago

    now I have tested TCA0372 and L2722 with load between output and + 12V.

    There is the L2722 better than the TCA0372:

    Non-Inv-Pin : 0 V

    Ubat = 12.00 V

    L2722 : Uout = 204 mV (no load), 348 mV (100 Ohm)

    TCA0372: Uout = 477 mV (no load), 820 mV (100 Ohm)

    0
    None
    mausi_mickmausi_mick

    Reply 19 days ago

    Now I have tested nearly all kinds, also exotic like p-JFETs.

    I think the opamp TCA0372 is the best choice, its stable for all devices .

    I have found a small error in the source-code near line 327:

    in the second: switch (kind)...

    case tkNPN: ...

    case tkPJET: ...

    the if statement: if (kind != tkNJET) ...

    has to change to if (kind != tkpJET)...

    otherwise every p-JFET is a Diode !

    I have changed some things for the j-FET curves. Now it looks better:

    TranCurveTracer11-001.JPG
    0
    None
    Peter Balchmausi_mick

    Reply 16 days ago

    > I think the opamp TCA0372 is the best choice, its stable for all devices .

    Does the attached PDF show the circuit you are using?

    > I have found a small error in the source-code near line 327:

    OK, I'll fix that. Thanks.

    > I have changed some things for the j-FET curves. Now it looks better:

    Excellent. What have you changed?

    Peter

    0
    None
    mausi_mickPeter Balch

    Reply 16 days ago

    Peter,

    I think the schematic looks good, I have changed the dividers to 49.9/26.1 k instead of the 68/33 k, and some µF between + and -.

    I had now a new little board for the transistor sockets with a dual switch for pos. and neg. side (+ or - on emitter) with a break position

    between. Therefore only the base is permanent connected. For measurement I only have to switch - in the right direction.

    Than I try to integrate encoder(s) for a quicker change of the parameters ... min ... max. I have connect them to 2,3 (interrupt-pins) and 4,5 and use the switch on the back of the encoder for reset.

    But I think it's perhaps better to change ...min and ... inc parameters instead of ... max.

    I have changed the MCP4802 / 8bit through a MCP4812 /10 bit.

    Perhaps it's a little bit better for jFETS near 0V Vds.

    If You have interest, I will send You a small video.

    TranCurveTracer13TCA0372_board.JPGTranCurveTracer14TranSocketSwitch.JPGTranCurveTracer16Setup_mod.JPG
    0
    None
    Peter Balchmausi_mick

    Reply 13 days ago

    > some µF between + and -.

    Where? In parallel with the feedback resistors of the op-amps? Across the power supplies?

    > a dual switch for pos. and neg. side

    I thought of that but had a ZIF socket to hand.

    > Than I try to integrate encoder(s) for a quicker change of the parameters ... min ... max.

    A rotary knob to turn and push?

    > a MCP4812 /10 bit.
    > Perhaps it's a little bit better for jFETS near 0V Vds.

    That makes sense.

    So what analog input pins are you using? The ones I showed the schematic or some others as well?

    Peter

    0
    None
    mausi_mickPeter Balch

    Reply 12 days ago

    hi Peter,

    I have made a lot of small changes:

    > the 10 µF Tantal(or a multilayer ceramic) between/near the supply PINs of the TCA0372.

    > I put 2 encoders (on PIN2(ext.interrupt) and PIN4 and the second on PIN3(ext.inetterupt) and PIN5). I need 2 small interrupt-routines in the source for encoder 1 (for changing minimal parameter) and

    encoder 2 (for changing increment parameters).

    > I changed the menu in the source ( without ZIF-Socket )

    (look at the pictures)

    > I have made a new Icon for Diodes (shottky,np,LED,Zener < 11V, base-emitter-zener from npn/pnp...)

    > I have reduced the current for diodes to abot 20mA, because bigger voltages maybe destroy the DUT (20mA * 12V = 240mW).

    Perhaps I have to make a small video from the handling.

    TranCurveTracer_10_001_npn.JPGTranCurveTracer_Menu_Bipolar_19-001.JPGTranCurveTracer_Menu_MOSFET_JFET_20-001.JPGTranCurveTracer_NMOS_17-001.JPGTranCurveTracer_PNP_18-001.JPG