Component Tester - Test Almost Anything !!




About: your best teacher is your last mistake !! - Dr. APJ Abdul Kalam

Being an Electronics student or hobbyist, you may have thought of getting a tester that could test almost anything "THE ELECTRONICS COMPONENTS, OBVIOUSLY!!"

Now what if I tell you that you can have one and that too made by yourself under INR 600 only (USD 10).

Coming upon COMPONENT TESTER so it can test almost everything, obviously not the power components because they require more current and power which our AVR Microcontroller couldn't handle !! Oh yeah, I forgot to tell you guys that we would be using an ATMEGA328 for our build !!

Yes, the same microcontroller which an arduino uno uses...!!

So, here's what our Component Tester can test -

1. Resistors

2. Capacitors along with their Equivalent Circuit Resistance Value (ESR)

3. Inductors

4. BJTs

5. FETs

  • JFETs

6. Thyristors

  • SCRs
  • DIACs
  • TRIACs

7. IGBTs

8. Diodes

no the list doesn't end here.... it can test Voltage upto 50V, it has a FREQUENCY COUNTER and a FREQUENCY GENERATOR TOO :D

you can also detect the IR Codes by simply putting a TSOP Sensor on its test pins.... isn't that great :D

and yeah one thing i forgot to tell you guys it doesn't only detect the components it displays their respective values and properties too !!

No, don't thank me for such wonderful thing thank MARKUS F. the maker and developer of Component Tester and Karl-Heinz who developed the firmware for it.

Let's Start the build and you'll explore much more on the way to build your own..!!

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Order Stuff for Build !!

with some basic components and tools you will be ready to build...!!

Electronic Components

  • 1x 1nF (102) Ceramic Capacitor
  • 1x 10nF (103) Ceramic Capacitor
  • 4x 100nF (104) Ceramic Capacitor
  • 2x 22pF (22) Ceramic Capacitor
  • 2x 2.2uF, 50V Electrolytic Capacitor
  • 2x 1N5819 or any other Schottky Diode with current rating of 1A
  • 1x 7805 - 5V Voltage Regulator
  • 1x LM336 - 2.5V Voltage Reference Diode
  • 1x 10uH Inductor
  • 1x BC547 Transistor
  • 1x BC328-40 Transistor
  • 3x 680 ohm Resistor with 0.1% Tolerance (1% Tolerance would also do)
  • 3x 470k ohm Resistor with 0.1% Tolerance (1% Tolerance would also do)

NOTE: For 1% Tolerance and 5% Tolerance(not recommended but works with less accuracy) 680 ohm and 470k ohm resistors you need to make some changes in code and try to have all resistors indicating same value on multimeter.

UPDATE: For those who are having problems in finding 0.1% or 1% tolerances. You can use 5% tolerances. Just buy 5-7 resistors of 5% tolerances and find out 3 resistors having same value on the multimeter. I made another one for you guys with 5% tolerance resistors and changes the value of resistors in code and that worked too :)

  • 2x 3k3 ohm resistor
  • 2x 27k ohm resistor
  • 1x 100k ohm resistor
  • 1x 33k ohm resistor
  • 6x 10k ohm resistor
  • 1x 470 ohm resistor
  • 1x 15k ohm resistor
  • 1x 2k2 ohm resistor
  • 1x 200k ohm resistor
  • 2x 1k ohm resistor
  • 2x 10k ohm preset (Variable Resistance)
  • 1x 8MHz Crystal Oscillator
  • 1x ATMEGA 328/328p with Socket
  • 1x Rotary Encoder w/ Button Module and KNOB
  • 1x Red LED (you can use any colour I chose Red as it it used to denote POWER)

Hardware Parts

  • 1x 16 Pin Polarized Header Cable - Relimate Connectors
  • 3x 3 Pin Polarized Header Cable - Relimate Connectors
  • 2x 4 Pin Polarized Header Cable - Relimate Connectors
  • 1x 9V Battery Connector
  • 6x Banana Jack Connectors (Female)
  • 3x Banana Jack Connector Cable (with Male Heads)
  • 1x Enclosure Case (I used a plastic Switch Board Enclosure Case/ Plastic Project Box)

Tools Required

  • Soldering Iron
  • Some Solder
  • A Single Layer PCB (because I home etched mine for this as it reduces unwanted signals and noises in the circuit and being it a testing circuit etching your own PCB is advised for getting accurate results)
  • Solder Mask (optional)
  • Some strong cutters (to make cutouts on you enclosure)
  • Screwdrivers and Pliers
  • and some ISO-PROPYL Alcohol or Acetone would work fine to clean the flux residue on PCB (It its necessary that you clean the flux or it may cause some unwanted errors in your Component Tester).

Let's Start the build !!

Step 2: Schematics and PCB Build !!

This is a self designed and home etched PCB...!!

I used eagle software freeware version for designing PCB. I have attached the PCB (un-mirrored) files below so you can download and etch them at home. For etching you can refer to other instructables on how to go about etching process using Ferric Chloride(FeCl3).

You can Follow GreatScott's series on how to etch PCB's using Ferric Chloride-



UPDATE : I've uploaded Eagle Files :)

Step 3: Applying the Solder-Mask Onto PCB (OPTIONAL)

If you wish to apply solder mask u can follow the below video on how to go about applying solder mask.

I have attached the pad mask so to resist application of solder mask on component pads.

Step 4: Drilling Holes on PCB

For drilling holes on PCB you can either use a hand drill or a electric drill / drill press.

Step 5: Soldering Components on PCB

Be careful while soldering the 680 ohms and 470 kilo-ohms resistor which are test resistors !!

  • Do not apply more solder on these resistors as that can induce some unwanted capacitance or resistance in the circuit.
  • Do not leave flux on the PCB after soldering components !! This may result in some unwanted values u see on display. You can use Isopropyl Alcohol and some Cotton Buds to clean the flux on PCB.

Step 6: Preparing the Enclosure...!!

I used a plastic project box as enclosure for my COMPONENT TESTER...!!

I drilled holes for binding posts and DC jack socket then used a hot knife to make cutout for 16x2 LCD.

NOTE : desolder the grounded leg of push-button on rotary encoder module and connect that to positive side of LED along with wires coming from the PCB


  • PIN1 - LED Negative
  • PIN2 - LED Positive
  • PIN4 - +5V

Connect 2nd Pin of switch to LED Positive

Step 7: Uploading the Code to AVR

The code files are attached below as .zip file format so that you can compile an build code after making the necessary changes in configuration files.

Now open up config.h and make the following changes -

  • navigate to measurement settings and offsets
    • now in this section scroll to R_LOW and set the value of 680 ohm resistance you are getting on you multimeter try and choose 3 680 ohm resistance with same values showing on multimeter
    • now change the value of R_HIGH i.e. the value of the 470k ohm resistances you are getting on your multimeter be as precise as possible and try and choose 470k ohm resistances with closest values or same values showing up on multimeter.
    • change RH_OFFSET if you want or leave it as it is. RH Offset is Offset for systematic error of resistor measurement with Rh (470k)
    • change R_ZERO - Resistance of probe leads (in 0.01 Ohms).
      • Resistance of two probe leads in series. (Assuming all probe leads got same/similar resistance)
    • change CAP_WIRES - Capacitance of the wires between PCB and terminals (in pF).
      • 2pF for wires 10cm long
    • change CAP_PROBELEADS - Capacitance of the probe leads connected to the tester (in pF).
      • 3pF for about 10cm long probe leads
      • 9pF for about 30cm long probe leads
      • 15pF for about 50cm long probe leads
    • you can go through rest of values and play-around if you are familiar with AVR and coding. If not please do not alter anything else.

If you are facing problems opening .zip files I am sharing the Dropbox link to code -


UPDATE: If you are using usbasp programmer then you need not edit the Makefile else you need to goto line 54 and change

programmer = usbasp to programmer = <your programmer's name>

  • open command window in that folder where you have your code by holding shift and right click you will see an option of Open Command Window Here click that
  • type in make all
  • connect the Programmer with the ISP Header of Atmega328
  • type in make upload
  • then type make fuses
  • following to this type make clean

NOTE : I assume that you have avrdude pre-installed in your systems. if not youhave to download avrdude and install it before doing above steps.

Step 8: Assembling Everything As One Device

Before assembling just run everything and test one or two components so as to confirm everything is working fine.


So you made one component tester for yourself.... you can keep that handy on you workbench and use it to test your components more often...

UPDATE : You can see the menu for the tester which includes PWN Generation, Square Wave Generation, Frequency Counter, IR Code Detector, Calibration and Adjustment Menu by turning the rotary encoder left after turning the tester on.

Arduino All The Things! Contest

Runner Up in the
Arduino All The Things! Contest

Full Spectrum Laser Contest 2016

Participated in the
Full Spectrum Laser Contest 2016

20 People Made This Project!


  • Instrument Contest

    Instrument Contest
  • Make it Glow Contest

    Make it Glow Contest
  • STEM Contest

    STEM Contest

342 Discussions


6 weeks ago

سلام دوستانتنظیم فیوزبیت این مدارتستر ب چ صورت هستش؟

zizu zmr

Question 4 months ago

hi everybody.
I made it and work successfully. But there is only one problem
There is a problem with the capacitor test. The capacitor values are very low
for example: The capacitor with 3300 uf in the tester is 410 uf.
please help me to Fix this problem.

5 answers
alsiavash1633zizu zmr

Answer 4 months ago

Use shield cable to connect probes and shields to Gnd

zizu zmralsiavash1633

Reply 4 months ago

hi bro . thanks
I acted on your advice, but did not care
I think it's because of the difference in the IC micro-type

my micro IC is ATMEGA328P-PU. i need to change the code in the source. But I do not know programming

videoenquirerzizu zmr

Reply 8 weeks ago

According to the micro you are using, I guess you use an Arduino UNO board. See my Discussion from 10/08/2019 to open the program with Arduino IDE.
Look for the config.h, There are three adjusts of capacitance in there:

#define CAP_WIRES 3 // in line 297

#define CAP_PROBELEADS 11 // in line 310

#define CAP_PCB 32 // in line 388 for ATmega 328

Play with them and then compile and upload the sketch again.
Best regards.

alsiavash1633zizu zmr

Reply 4 months ago

open makefile with mfile.exe ( in all program > winavr group)
change mcu type then save make file and program again
But the problem seems to be fixed by changing the parameters of "measurement settings and offsets" ( see text above )
Also, change the power supply temporarily to the battery and check the result.
Act this warning in the text of the article:
"Do not leave flux on the PCB after soldering components !! This may result in some unwanted values you have on display. You can use Isopropyl Alcohol and some Cotton Buds to clean the flux on the PCB".

mistrijezizu zmr

Answer 4 months ago

first thing after you finished this build is calibrating the tester.
the procedure is described in manual:

so, looks like you don't calibrated the tool for caps...
and as a side note, try to measure more than one electrolytic, because is a well-known issue about measuring these!

and about your message: i'm sorry, but i became aware of this today! :(
and, for some mysterious reasons, i wasn't able to read my own inbox until i relogged on instructables...
anyway, i'm not familiar with pinouts of all modules, what i have is a bare rotary encoder, so, for my variant this part is different than of those who use arduino modules...


2 months ago

Hello Mr baweja akshay
I thank you for share you're design
And my question is how used square wave generation (which pins)?
Thank you again.

1 reply

Reply 8 weeks ago

Hi Purmasing,
I didn't build the project, so I did't test it yet, but searching at the "extras.c" in the software, I've found in the lines 252 to 263 an indication of using:

- probe # 2 (Pin 24 according schematic) as output and

- probe #1 (Pin 23 according schematic) or probe #3 (Pin 25 according schematic) as ground.

Be careful, don't make a short between them, I see no protection against that . The output are directly the pins of the micro.

Best regards.


Reply 8 weeks ago

If you prefer to compile and upload the project to the nano with the Arduino IDE, please see my former discussion (#338).
Best regards


Reply 1 year ago

yes, you can. :)
check the svn repository: in /software/trunk you will find an already compiled firmware to use with an arduino uno, and in /hardware you will find a folder "ArduinoUno_shield" with schematic for a shield.
of course, you can use an uno, nano or mini pro, because all three are 328 based arduinos.

oh, and this is the newest version, 1.13k... 1.12k is now outdated...


Reply 12 months ago

Might you add the link for Arduino board based?


8 weeks ago

I've seen in the discussions some people with difficulties to compile the code.
I agree. I think it's no so easy for the people not customed to use the clasical compilers.
What's about if I show you how to use the Arduino IDE to compile and upload the code in Arduino Uno? (or any Atmega 328 Arduino hardware).
Also it's possible the upload in the circuit provided in this Instructable through the ISP port.
It's really easy... let's go to hands on:

1) Add an empty file named "Any_thing.ino" in the folder containing all the c and h files, Rename the directory with the same "Any_thing" name in the usual way (as Arduino IDE requires it).

2) As the Arduino IDE doesn't use the makefiles, simply delete it.

3) Now, as you dont have the makefile, it's needed to make some corrections in the config.h.
Edit it in the segment marked as "MCU specific setup to support different AVRs" as following:
/* ************************************************************************
* MCU specific setup to support different AVRs
* ************************************************************************ */
* ATmega168// not used by Arduino, so, is taken off
// #if defined(__AVR_ATmega168__) // Commented for Arduino IDE
/* estimated internal resistance of port to GND (in 0.1 Ohms) */
// #define R_MCU_LOW 196 // Commented for Arduino IDE
/* estimated internal resistance of port to VCC (in 0.1 Ohms) */
// #define R_MCU_HIGH 225 // Commented for Arduino IDE
/* voltage offset of MCUs analog comparator (in mV): -50 up to 50 */
// #define COMPARATOR_OFFSET 15 // Commented for Arduino IDE
* capacitance of the probe tracks of the PCB and the MCU (in pF)
* - 35 for ATmega168A
* - 36 for ATmega168
// #define CAP_PCB 32 // Commented for Arduino IDE
/* total default capacitance (in pF): max. 255 */
// #define C_ZERO CAP_PCB + CAP_WIRES + CAP_PROBELEADS // Commented
/* memory layout: put stuff exceeding 512 bytes EEPROM into flash */
// #define MEM_TEXT PROGMEM // Commented
// #define MEM_read_word(a) pgm_read_word(a) // Commented
// #define MEM_read_byte(a) pgm_read_byte(a) // Commented
/* this MCU has 16kB Flash, 0.5kB EEPROM and 1kB RAM (enable extra features) */
// #define RES_FLASH 16 // Commented
// #define RES_EEPROM 0.5 // Commented
// #define RES_RAM 1 // Commented
* ATmega328
// #elif defined(__AVR_ATmega328__) // Commented for Arduino IDE
/* estimated internal resistance of port to GND (in 0.1 Ohms) */
#define R_MCU_LOW 205 /* 209 */
/* estimated internal resistance of port to VCC (in 0.1 Ohms) */
#define R_MCU_HIGH 225 /* 235 */
/* voltage offset of MCUs analog comparator (in mV): -50 up to 50 */
/* capacitance of the probe tracks of the PCB and the MCU (in pF) */
#define CAP_PCB 32
/* total default capacitance (in pF): max. 255 */
/* memory layout: put stuff into EEPROM (1kB) */
#define MEM_read_word(a) eeprom_read_word(a)
#define MEM_read_byte(a) eeprom_read_byte(a)
/* this MCU has 32kB Flash, 1kB EEPROM and 2kB RAM (enable extra features) */
#define RES_FLASH 32
#define RES_EEPROM 1
#define RES_RAM 2
* missing or unsupported MCU
// #else // Commented for Arduino IDE
// #error "************************************" // Commented for Arduino IDE
// #error "* *" // Commented for Arduino IDE
// #error "* No or wrong MCU type selected! *" // Commented for Arduino IDE
// #error "* *" // Commented for Arduino IDE
// #error "************************************" // Commented for Arduino IDE
// #endif // Commented for Arduino IDE

All other parts of the file remain exactly the same

4) Open the Any_thing.ino file in the Arduino IDE. Compile and Upload

5) That's all folks

I've attached two screen captures of the sketch in the Arduino IDE (compilation and upload to an Arduino Uno).
The last capture is the content of the folder containing the sketch. In my case, I named Test_Ard_ok.ino (really the name doesn't matter).

BTW I didn't build the hardware yet, Only I've tested the new sketch in an Arduino uno with the encoder and display.
Best regards and enjoy


Question 5 months ago on Step 2

I tried to have the eagle file printed on pcb but they said said that i have go unhid the polygon. I have no idea how to work on Eagle can you help me?


5 months ago

Program micro guide:

install winavr :
Download AVRDUDE 6.3 file:
Make a folder named test in the c windows drive and copy two
files inside the downloaded avrdude zip file
Download the tester code from the zip file top, then copy the
contents of the ComponentTester-classic-1.20m folder into the c: \ test folder
.use a usbasp compatible programmer
Connect to the computer ,
install driver and put the microc inside.
Run Windows Command Prompt and type :
cd \ test
path C: \ WinAVR-20100110 \ utils \ bin
make all
make upload
make fuses
make clean
If your programmer is not usbasp, is in c: \ test
Open makefile with a notepad and change this part of the
file as your programmer.
programmer = xxxxx

1 reply
zizu zmralsiavash1633

Reply 5 months ago

hi dear
i have many error and problems in the cmd. please help me


5 months ago

Version 1,2 doesn't have .hex and .eep files. Can somebody share it?

1 reply
zizu zmrnedqlkosivkov

Reply 5 months ago

Hi dear. can you help me for how to connect encoder and LED start and encoder pin on the bord. thanks