Multitester using ATMega8 and HD44780 LCD

Here is my implementation of the multimeter designed by Markus F. It’s a neat tool, that can be used to detect (good for unknown components or those that have the labels erased) and measure:
– Transistors: Bipolar/Mosfet
– Diodes and Double Diodes
– Resistors
– Capacitors: between 0.2nF to 7300μF
– Triacs
– Thyristors

The Multimeter board

To build one you will need:
– an Atmega8 microcontroller
– a 2×16 HD44780 LCD
– a 5V regulator
– some resistors
The multimeter schematic:

The PCB Layout (and complete project details) is also available here.
I designed my multimeter on a test board, and put everything together in a nice metal box:

I connected a power switch, and a reset button (the pulls the RESET pin to GND), and a 3 PIN connector for the components to be measured.

The Software

To program the Microcontroller (write the software), I use a parallel programmer. It uses the LPT1 port (printer port), and a 5 wire cable. The connection is as follows:

I use 460Ohm resistors. My connector is a 5pins array in the following sequence [Ground, Reset, SCK,MISO,MOSI].
For this programmer, in Ponyprog you can select Parallel/LPT1/AVR ISP I/O:

The code is available here (and can be compiled with AVR Studio), or ready compiled here.

To program the Atmega8, connect it to the parallel programmer, open Ponyprog, go to File->Open Program (FLASH) File and select the .hex (TransistorTestNew_UART_not_inverted.hex), then go to File->Open Data (EEPROM) File and select the .epp file (TransistorTestNew_English.eep). Next press Command->Write all and make sure the software is successfully written to your Atmega8.

Alternatively you can use avrdude instead of Ponyprog: avrdude -p atmega8 -c stk200 -U flash:w:TransistorTestNew_UART_not_inverted.hex:i

The code is configured to work with a stock 1MHz Atmega8, so make sure the fuses are not changed (or if they are revert them to the default values). No quartz crystal is required. Here are the settings as seen in Ponyprog:

The multimeter is ready to go. If there is no component connected, you will see “No, unknown or damaged part”. If you connect a component, it will detect it (transistor, capacitor, etc) and display the most important parameters.

This article has 6 Comments

  1. Hi,

    How can I compile the source code? I tried compiling in AVR Studio but got lot of errors..

    ../main.c: In function ‘main’:
    ../main.c:454: error: ‘Bat’ undeclared (first use in this function)
    ../main.c:454: error: (Each undeclared identifier is reported only once
    ../main.c:454: error: for each function it appears in.)
    ../main.c:456: error: ‘BatEmpty’ undeclared (first use in this function)
    ../main.c:461: error: ‘BatWeak’ undeclared (first use in this function)
    ../main.c:465: error: ‘TestRunning’ undeclared (first use in this function)
    ../main.c:500: error: ‘Diode’ undeclared (first use in this function)
    ../main.c:503: error: ‘NextK’ undeclared (first use in this function)
    ../main.c:514: error: ‘DualDiode’ undeclared (first use in this function)
    ../main.c:519: error: ‘K1’ undeclared (first use in this function)
    ../main.c:521: error: ‘K2’ undeclared (first use in this function)
    ../main.c:529: error: ‘K’ undeclared (first use in this function)
    ../main.c:538: error: ‘TwoDiodes’ undeclared (first use in this function)
    ../main.c:540: error: ‘Antiparallel’ undeclared (first use in this function)
    ../main.c:559: error: ‘InSeries’ undeclared (first use in this function)
    ../main.c:674: error: ‘Thyristor’ undeclared (first use in this function)
    ../main.c:676: error: ‘GAK’ undeclared (first use in this function)
    ../main.c:682: error: ‘Triac’ undeclared (first use in this function)
    ../main.c:693: error: ‘Resistor’ undeclared (first use in this function)
    ../main.c:733: error: ‘Capacitor’ undeclared (first use in this function)
    ../main.c:754: error: ‘TestFailed1’ undeclared (first use in this function)
    ../main.c:756: error: ‘TestFailed2’ undeclared (first use in this function)
    ../main.c:757: error: ‘Bauteil’ undeclared (first use in this function)
    ../main.c:760: error: ‘Unknown’ undeclared (first use in this function)
    ../main.c:762: error: ‘OrBroken’ undeclared (first use in this function)
    make: *** [main.o] Error 1
    Build failed with 25 errors and 0 warnings…

  2. Hello
    I am using 82nF or 120nF for C1 – C2 and I get “Battery empty” followed by “timeout”. If I dont use c1(pin 21 directly to Ground) I get “Testing…” and then “no device…” and “timeout!” again.
    Please help me

    Thank you

  3. Here a very superficial information, look elsewhere admin – Censor is irrational, but that’s his thing, new updates, new knowledge, but you are in the Middle Ages.

Leave a Reply