Introduction: Arduino IC-Tester

Picture of Arduino IC-Tester

Quite some time ago I purchased an IC Tester from Genius. The G540 is able to programm various IC as it is able to test CMOS and TTL IC. Last option was quite interesting to me as this makes repairing stuff a lot easier when you know which part is defect instead of exchanging all part just by trial and error.

The programmer did a quite good job (some IC were not recognized) until I had to upgrade to Win7.

Here the programmer started to create troubles, the programmer was not recognized in some cases and the program froze during IC testing. After searching for alternatives I decided to make my own tester with some additional advantages.

So the result was a Arduino based IC-tester with an optional Serial output which does the job in most cases (still some room for improvement available).

Step 1: Starting Situation

Picture of Starting Situation

The original tester did a quite good job exept, that you had a lot of clicks (selecting the device etc.) before you could start, you allway needed to run the programm itself and most important:

there was no information about the testing result. If a IC was not found it was not possible to identify if it was not found due to being defect or due to a incorrect testing cycle (which appears to happen for some ICs).

So the idea was to overcome these disadvantages by develloping a tester of my own based on a Arduino Nano.

Step 2: The Circuit

Picture of The Circuit

The circuit is quite easy.

First of all there is the Arduino Nano. Due to the amount of available ports the maximum of pins to be tested is 16 (which is enough for most IC). To achieve this, the communication to the LCD display and to the EEPROM containing the test-data is done via I2C. The Nano takes over the communication to the computer to show the detailed test results.

The LCD-display is a simple standard 16x2 display including a I2C converter, thus needing only two pins of the arduino.

The test data is stored in a serial I2C EEPROM AT24C512. Here a script is stored which is tested step by step. For every type of IC a sequence of logical inputs to set and outputs to be expected. In case the outputs do not match the expectations, the script will jump to next possible part. In the current version the EEPROM needs to be programmed seperately via a programmer. I did not find a solution of transfering 25kbytes of data via the serial terminal.

The test script is in clear text so can be modified quite easily. The syntax is in the arduino sketch.

While testing multiple signals are set to the tested part which do not match the specification of the part (e.g. low is set as an input to a pin which acts as a high output) because all possible combinations are tested. To prevent overloading the Arduino and the part, all connections are done by 680 Ohms resistors. This creates a lot of "below the specifications" signals thus leading to random outputs of the tested IC. Still, if the IC maches to tested signals, the output of the tested IC is usable.

The test ist started with a single switch connected to one of the signle use analogue inputs.

Step 3: Having Fun

In the linked video the tester can be seen in operation.

Similar to the original the tester does not find all required IC. Some are a bit difficult in regard to what signals shoulb be expected. I will do some optimization as I find some spare time.

Step 4: EEPROM Upload Via the Tester

Someone asked me if it would be possible to upload the test-data to the EEPROM without having a programmer.

After some thought and some testing, I added some code to make this possible. The important aspekt of uploading the data via the Serial Monitor of Arduino is to set the baudrate to 1200! This will take some time to upload but it will prevent bytes from getting lost.

This should be done in the sketch as well as in the Serial Monitor.

If done, upload the sketch, open the Serial Monitor and wait until the options are given. Press "d" and press Enter. Now the tester is in upload mode.

Just paste in the full content of the test_16_full.dat and hit Enter. On the LCD the bytes are shown.

"done" at the LCD indicates succesfull upload.


wkozey (author)2017-02-10

It has been sometime since i commented with a solution that worked with the libary error that worked with my other projects. but i have finally breadboarded this critter after tracking down some 24c512. but i have a problem, after sucessfully programing the nano and flashing the eprom with no error, when i hit the test button it hangs at testing
IC-Tester V0.7
Database V
press 'v' to turn verbose mode on/off
press Key to start or enter part number (whithout prefix) - press ENTER...
press 'd' to load new EEPROM-Data -> paste EEPROM Data into dialog and press ENTER
EEPROM Programmer Mode
Please paste in all data and press ENTER
EEPROM updated
Test starting...
Any Ideas ?
all connection confirmed with

JorBi (author)wkozey2017-02-11

Hi wkozey,

Seems to be a database problem. It should say "Database V0003" if it does not, the data were not stored properly.

Please note that for uploading the database the serial terminal and the IC tester must be set to 1200 baut. Otherwise the Arduino is to slow in writing the data to the EEPROM and data will be lost.

wkozey (author)JorBi2017-02-11

Hmm, maybe there is something wrong wit the lot of ten eeproms i bought of eBay. I have the serial window set to 1200 baud and did change the sketch to 1200 baud before I uploaded it to the arduino, I also have the comm port of the arduino in windows set to 1200 baud 8N1. Do I have to set it back to 9600 baud after flashing? I am currently entering the schematic into eagle cad to make to construct a single sided non veroboard prototype PCB. with your permission when it is completed may I post the .sch and .brd files to this page ?

Thank you


wkozey (author)wkozey2017-02-11

It is my intention to construct a version based on the 20 pin Atmel 328P with ISP programming headers for updating the Atmel to flash the eeprom.

JorBi (author)wkozey2017-02-13

Feel free to modify and improve.

Just keep in mind, that it was difficult to create the circuit with a 32 pin version of the atmega328. A 20 pin version (I thought it might be a 28 pin version) might be difficult due to the missing ADC6 and ADC7.

wkozey (author)JorBi2017-02-13

Sorry typo 28 pin Atmega 328P, already started the project it will have on board 5v regulator so will be able to run off a 9v battery. thanks for you permission to modify the project and post the moded version to this forum when complete, lokking forwars to getting it done


wkozey (author)wkozey2017-02-10

a multi meter continuity test

wkozey (author)2016-11-19

You will need to remove completely the old library and any other LCD library you may have, such as the LiquidCrystal_I2C.
or rar them the delete the contents of the liquid crystal folder in
your sketches folder. eg:C:\Documents and Settings\Admin\My

download the
from and
extract and copy the contents of the new liquid crystal to that folder
.its what i had to do with Arduino IDE version 1.6.12, I had tried older
versions and still had the same error googled the error and found this
answer, reinstalled 1.6.12 applied the new library opened the ino and
wala compiled an installed no problem, Hope this helps people :o)

radovan7773 (author)2016-11-12

Arduino: 1.6.12 (Windows 10), Vývojová doska:"Arduino Nano, ATmega328"

IC_Tester_V05:116: error: 'POSITIVE' was not declared in this scope

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address


exit status 1

'POSITIVE' was not declared in this scope

JorBi (author)radovan77732016-11-13


My first guess would be, that the library is not found, as the "positive" is declared in the "<LiquidCrystal_I2C.h>" library. As Arduino changed the place and the way libraries are found after Arduino 1.6.5 I am not sure how to solve this (that was one of the reasons I stayed with 1.6.5). Probably someone else can solve this or a google search will turn someting up.

radovan7773 (author)2016-11-12

Hi. can someone write us how to program the Arduino Nano in Windows 10. Thank you.And step by step for beginners :)

JorBi (author)radovan77732016-11-13


it would be helpfull when you could describe the problems you are fighting with. I am using Win10 with Arduino 1.6.5. That is working without problems. The newer versions caused a lot of troubles including some schetches not working at all. That is the reason I am still using the older 1.6.5 version.

So if youu could describe your problems more in detail, probably someone could help you to solve them.

radovan7773 (author)2016-11-08

Hi. If the EEPROM is still connected to GND it erases the data from it? I think the pin 7 WP? When programming tends to pin 7 to GND but then is connected to VCC. or not?

JorBi (author)radovan77732016-11-13


according to the datasheet, the WP (write protect) pin must be connected to GND or left unconnected to be able to write to it. To protect it from writing, it must be connected to VCC. As the latest update of the programm allows to upload the data to the EEPROM, the WP pin should be connected to GND, as shown in the circuit.

radovan7773 (author)2016-11-03

Hi and R16 value?

JorBi (author)radovan77732016-11-03

a standard 10k resistor does the job.

radovan7773 (author)JorBi2016-11-08


AbdullahG8 (author)2016-10-01

Hi jorBi, Please add this project hex file code.

bamboombaps (author)2016-05-01

id love to build this but i need it dumbed down a bit

praveenkumar2000 (author)2016-02-01

can we use 16 x2 lcd directly without i2c converter
if yes pls. send me the code to my mail id

Seeing as they're using a nano, I'd venture their reason for using I2C, was to keep additional I/O pins freed up.. To go with a parallel LCD, you would need to use a MEGA, and re-assign driver pins for the LCD.

Then send the code pls.

Mail id:

GaryC6 (author)2016-02-02

This sounds nice except I don't think Ardunio is fast enough to test AC characteristics, is it? The only way I know you could test for a 4 nano second response time with an Ardunio would be to do an average and I am not sure an Ardunio can do that. Sure you can do a state test, but can you test how fast a device breaks the knee in a turn on and turn off waveform. If I remember correctly in the factory where I worked most devices QC rejected were rejected for not switching fast enough. I know that is not always important for every use but beware.

Eric Brouwer (author)2016-02-02

Great project. Thanks for sharing

Veda88 (author)2016-02-01

How did you get/create the contents of the eeprom?

DIY Hacks and How Tos (author)2016-01-31

Great idea for testing ICs. This could really save a lot of time in trouble shooting.