Arduino Zener Diode Tester




Introduction: Arduino Zener Diode Tester

Zener Diode Tester is controlled by Arduino Nano. Tester measure breakdown Zener voltage for diodes from 1.8V to 48V. Dissipation power of measured diodes could be from 250mW to a few Watts. Measuring is simple, just connect diode and press button START.

Arduino Nano gradually connect range of voltages from lower to higher, in four steps. For each step, current is checked through measured Zener diode. If current is over zero value (not zero), it means: Zener Voltage was detected. In this case voltage is displayed for certain time (adjusted by software to 10 seconds) and measuring is stopped. Current in each step is constant through all voltages in that range and is decreasing by increasing step number - voltage range.

To maintain power dissipation for higher voltages, current in this range must be reduced. Tester is designed to measure diodes from 250mW and 500mW. Zener diodes with higher power, could be measured just the same way, but measured voltage value is lower for about 5%.

WARNING: Please be very careful. In this project high voltage 110/220V is used. If you are not familiar with a risk of touching main voltage, do not attempt this Instructable!

Step 1: Zener Diode

The Zener diode is special type of diode mainly used in circuits like reference voltage component or voltage regulator. In forward voltage direction I-V characteristics are the same like general-purpose diode. Voltage drop is about 0.6V. Biased in reverse direction, there is point, where current increase very sharply - breakdown voltage. This voltage is referred as Zener voltage. At this point, Zener diode connected directly to power supply with constant voltage output, would burn immediately. This is reason, why current through Zener diode, must be limited by resistor.

I-V characteristics are displayed on picture. Each type of Zener diode define current value at which is the right Zener voltage specified. (This voltage could be slightly changed by increasing of current). Typical current for diodes with power dissipation about 250 to 500mW, is 3 to 10mA and depends on voltage value.

Breakdown voltage is relatively stable for wide range of currents and is typical and different for each diode. Its value could be from about 2V to over 100V. Zener diodes, which are mostly used in practical usual circuits, are specified with voltages less than 50V.

Step 2: Parts

List of used parts:

  • Enclosure from OKW, Shell-type OKW 9408331
  • Hi-Link AC/DC adapter 220V/12V, 2pcs, eBay
  • Hi-Link AC/DC adapter 220V/5V, 2pcs, eBay
  • AC/DC adapter 220V/24V 150mA, eBay
  • Arduino Nano, Banggood
  • Capacitors M1 2pcs, M33 1pc, local store
  • Diodes 1N4148 5pcs, Banggood
  • IC1, LM317T, high voltage version, eBay
  • IC2, 78L12, eBay
  • Transistors 2N222 5pcs, Banggood
  • Relay 351, 5V, 4pcs, eBay
  • Reed relay, 5V, eBay
  • Resistors 33R, 470R, 1k 4pcs, 4.7k, 10k, 15k 2pcs, local store
  • Trimm3296W 100R, 200R, 500R 2pcs, eBay
  • Screw terminal block, Banggood
  • Connector Molex 2pins, Banggood
  • Connector Molex 3pins, Banggood
  • Small mini main switch, eBay
  • LED display 0-100V, 3 line, eBay
  • Power plug inlet, eBay
  • Audio spring terminal, eBay
  • Microswitch and button, Banggood
  • LED 3mm green and red, 2pcs, Banggood
  • Fuse 0.5A and fuse holder 5x20mm, eBay
  • Main power cord for small instruments


  • Power Drill
  • Soldering Iron
  • Heat Gun
  • Hot Melt Glue Gun
  • Wire Stripper and Cutter
  • Screwdriver Set
  • Pliers Set
  • Multimeter

Detailed list of parts is here:

Step 3: Circuit Description

Circuit description refer to attached connection diagram:

On the left side, there is high voltage part. Terminal block for 220V connection and all five AC/DC adapters. Adapters deliver measurement voltages in four steps - ranges: 12V, 24V, 36V, 48V.

Modules 5VA and 5VB are dedicated for MCU Arduino Nano and Digital Led Voltmeter. Modules 12VA supply the first range 12V and module 12VB add another 12V to second range value 24V. Next module 24V add another 24V to total the fourth range voltage 48V. Inside the last 24V module is 12V regulator circuit, providing 12V as the third range value to 36V. This solution was necessary because size of board does not allowed six modules to be mounted on it.

In the middle part is located IC1 LM317. IC1 must be in version for higher voltage (50V). It is connected as constant current regulator circuit and provide constant current through whole range of each voltage step. This current is stable in one range, but different in each step. The values are adjustable and are 20mA (12V), 10mA(24V), 7mA(36V), 5mA(48V). Values are chosen as upper limits for diode with 250mW power and they are good enough for more powerful diodes.

On both sides of IC1 are relays, connected the right voltage step to its input and the right trimmer resistor to its output. Trimmer resistor specifies current value on output and this current is fed to measured Zener diode via resistor R14. Current is checked on this resistor by Arduino. Voltage divider R1,R2 take reduced sample of voltage on R2 and connect it to analog pin A1.

Analog ground GND is common for all voltage adapters, digital voltmeter adapter and IC1. Be careful, there is another ground, digital for Arduino and its adapter. Digital ground is necessary for Arduino and its analog input as measurement reference point.

Arduino digital outputs D4 to D7 control relays for each step, D8 control Digital voltmeter and D9 control ERROR led in red colour. ERROR led is on if there is not detected current in any step. In this case Zener diode can be with higher Zener voltage as 48V, or could be defective (open). If there is short circuit at mesuring terminals, ERROR led is not activated and detected voltage is very small, lower than 1V.

After I have finished project I decided to add one more led - POWER, because if voltmeter is dark (off), there is not very clear if instrument itself is on or off. Led Power is connected in series with resistor 470 between points outside of PCB, from Start X3-1 to Zener X2-1. Resistor is mounted on small board with push button.

Step 4: Construction

As a box for the project, I have used enclosure OKW, found in old electronic parts store. This box is still available at OKW as a shell type enclosure. The box is not very suitable because is too small for the board, but some upgrade of box itself and PCB allow to put all parts inside. PCB was designed in Eagle as maximum size for free version 8x10cm. In the first moment it looks like impossible to put all components on board, but finally I was successful.

Box upgrade require remove some plastic parts inside and stands for screws. Parts upgrade require to modify plastic box for digital voltmeter, and make round cutout on two corners, near Error and Main power connectors. Upgrades are visible on pictures. Important thing is to make window for voltmeter as close to the box edge as possible. Push button START is located on small board and mounted with metal angle.

Windows and holes on the upper cover are made for Digital voltmeter, push button, spring terminal, LED Error, LED Power and USB Arduino Nano connector. On the lower part there is cutout for power switch and power plug inlet. Digital voltmeter and power switch are fixed on place by hot melt glue. The same way are fixed both 3mm Led diode indicators.

Measured diode is connected, not very typically, by audio spring connector. I was looking for some simple and fast connection. This solution seems to be the best one.

After soldering all components on the board, I have isolated two 220V tracks on bottom part, by hot melt glue gun. Wires leading from the board to power switch and to power plug inlet are isolated by heat-shrinkable tubing. Do it carefully, there should not be any exposed 220V wire or coper track.PCB is fixed on place by adhesive rubber spacers, which prevent it from vertical moving.

On front panel there is label print on adhesive photo paper. Label is done in Paint, which is tool in Windows 10 accessories. This tool is suitable for making instrument labels, because label could be done exactly in real size.

PCB is designed by Eagle free software. The board was ordered at JLCPCB company for a good price. There is not any reason to do it at home. I recommend to order the board and for this reason is attached Gerber zip. file.

Step 5: Programming and Setting.

Arduino software - ino file is attached. I try to document all main parts of code and hope it is better understandable than my English. What need to be explain from the code is function "service". It is service mode and could be used for setting instrument if you switch it for the first time.

Function for reading current "readCurrent" was introduced to code to prevent accidental random current reading. In this function, reading is done ten times and maximal value is chosen from ten values. The maximum value of current is taken as sample to analog input of Arduino.

In service mode you adjust four adjustable resistor R4 to R7. Each trimmer is responsible for current in one voltage range. R4 for12V, R5 for 24V, R6 for 36V and R7 for 48V. In this mode mentioned voltages are gradually presented at output terminals and allow to adjust required value of current (20mA, 10mA, 7mA, 5mA).

To enter service mode press START just after switching instrument on within 2 seconds. The first step (12V) is activated and ERROR led is blinking once. Now is time to adjust current. If current is adjusted, activate the next step(24V) by pressing START again. ERROR led is blinking twice. Repeat next steps the same way, using START button. Leave service mode by START button. In each time, the best moment for pressing START is time if led ERROR is dark after series of blinks.

Current adjustment is done by connected any Zener diode with voltage around range middle, for 12V range it should be 6 to 7V diode. This Zener diode must be connected in series with ammeter or multimeter. Adjusted value of current should not be precise, minus 15% to plus 5% is OK.

Step 6: Conclusion

Presented solution for measuring Zener diodes by Arduino is completely new. There are still some disadvantages, like power supply 220V, Led voltmeter and maximum measured voltage 48V. Instrument could be improved in mentioned weaknesses. I originally plan to power it by battery, but powering Arduino and relatively high measure voltage with one or more step up voltage converter require big battery and instrument would be larger in size.

There are many very good component tester on a market. They can test all type of transistors, diodes, other semiconductors and many pasive components, but measuring Zener voltage is problematic, because of small battery voltage. I hope, you enjoy my project and would have a nice time playing with construction.

Be the First to Share


    • Anything Goes Contest 2021

      Anything Goes Contest 2021
    • Jewelry Challenge

      Jewelry Challenge
    • Raspberry Pi Contest

      Raspberry Pi Contest



    Tip 2 years ago on Step 6

    - Problem: in the Gerber File is a short, or the traces to close ;-(
    Tip: the LCD Voltmeter work with supply 4 - 30 V, no extra 5V need, use
    the exsisting 12V supply for Zener. Only one 5V supply is need for
    - Tip: 3 wire LCD Meter was not avibel any more. You can
    use the 2 wire LCD Meter. Remove D1 on the Meter and feed +12V in were
    the cathode was.
    - why not use a Stepup Module? 12V up to 36V, 48 V... then may by change the PCB?
    - use a Arduino micro pro? Only once programmed


    Reply 2 years ago

    Hallo JensGS,

    it is not so simple with power supply voltages, as you think.
    If you power two different electronic circuits from one supply, there must be common reference point, like ground! This is basic must rule and if you not accept it, you can destroy components and power supply!

    Arduino is powered from separated Power supply 5V and must be powered separately because its sensing resistor R2 is not connected to GND. Arduino meassure voltage on this resistor and GND for Arduino is on one side of this resistor and it is Logical GND and totally different as GND for other circuits. If you connect Arduino GND to other GND circiuit, you 100% destroy MCU or something else. (It is short circuit state).

    The same rule is valid for LCD Voltmeter. The voltmeter must use isolated power supply, to separate measuring circuit from other part. Using 2 wire Voltmeter is not possible. 2.wire voltmeter is powered from circuit on which is measurement done.and is working from 4V or over. What is extra, it is taking current about 10mA from measured circuit. In such a case you can not measure Zener voltage below 4V, but you cannot use 2 wire voltmeter for resistor with current about 5mA absolutely.

    All mentioned problems are described in my article. If you read it, you would better understand why construction is designed such a way, as it was done. There are also sentences concerning Step Up modules. Using them create some more problems and construction should be much bigger in size.

    Gerber file is not a perfect but must be OK. Clearances between tracks are acceptable and PCB done according gerber file was used for the prototype.


    Reply 2 years ago

    I used the provided gerber files to jLpCB, but they have told me that
    there is a short circuit. So I drew everything in eagle again.

    The second power supply 5V, from below, for the meter and the third power
    supply 12V for the zener voltage are on the same GND. The meter can also
    be operated with 12V. The voltage for the meter is 4 upto 30V.

    Unfortunately, the 3-wire-meter is no longer available ;-( but you can
    take the 2-wire meter, desolder a diode in the meter and convert it to
    the 3-wire meter.

    I'm getting the parts to recreate it, if the parts arrive


    Reply 2 years ago

    Hallo JensGS,

    you are right, there is common GND for 5V and 12V , the first module. I was tested all parts connected on breadboard at first and I had a problems with voltmeter, if its power voltage was not isolated. But you can try. I knew that diode inside voltmeter could be disconnected and you can convert 2wire to 3wire. In this case it is O.K. you have 3 wire voltmeter. If original one is not available, you can use any voltmeter. The best one is with 1 decimal point over 10V and 2 decimal points below 10V (like 12.5V or 6.56V).
    If you order parts be careful about relays. Some of them are not good quality.
    Concerning Gerber file. I was using JLCPCP viewer today and check file on that web page. It was OK. There was not any error indicated. But anyway, there could be some error. The first version was with errors and the second version, as I remember, there was not error (it was corrected). But I am not sure about it. I have some boards free and I can sent you one.

    PCB Prototype   PCB Fabrication Manufacturer   JLCPCB.png

    Reply 2 years ago

    The calculated values for the potentiometers are: R4 (12V 20mA) 70 ohms.
    R5 (10mA) 130 ohms. R6 (7mA) 180 ohms. R7 (5mA) 250 ohms. Naturally
    depends on LM317 1.25 volts.
    boards have arrived and I have solderd the first parts. It still
    waiting of the transformers and the volt meter and the switch...
    I took a "Pro Micro" instad.
    Only the A1 is different. I will pre-set the resistors and if the transformers are there, then I can set exactly.


    Reply 2 years ago

    Hi jensGS
    You are right, the values for trimers are calculated for 1.25V on LM317 in CC mode. But these values are just informative. Real values are different, depend on impedance of surrounding components and you must consider that for small current values around 5mA, LM317 is working on its limits and formula is not valid. Values for trimers in published schematics are good and were updated according tests on breadboard.
    But there is very nice feature in my project: Service mode. In this mode you can adjust all currents - trimers very easy in simple way.
    Do not forgot to use high voltage LM317, if you can select, choose one with higher voltage by measurement.
    I had problems with relays. some of them are poor quality and contacts remain switched ON always after a few cycles. Choose higher quality relays. I did selection on breadboard, using arduino and simple code. Relays were switching ON and OFF in 1s intervals for a few days. About 50% of them were after this test thrown to electronic garbage.
    I wish you Good Luck.


    Reply 2 years ago

    it would have been helpful if the * .brd file had been there. But now I've already created a new board from the schematic. The PCBs are already ordered. That will certainly be a nice project for December ....