Simple TTL logic tester

Using an Arduino and Python script for testing simple logic I.C.s like 74xx TTL

Similar projects worth following
Quite some time ago I created a simple TTL-I.C.-logic tester based on an Arduino and a Python script.
Currently it only tests a limited set of different I.C.s from the 7400 series, having 14 and 16 pins.
The chip-definition is in a separate JSON-based text file, adding new I.C.s is as simple as creating a Boolean expression for its output pins.

The tester prototype hardware part was build on an Arduino UNO, but moved to an Arduino Mega 2560.

The software part is a +300 lines Python 3 script and a text/JSON based I.C.-definition list.

The original algorithm was based on boolean expressions generating all possible input patterns, but a direct imperative set- and expect-pattern list is added.

The PCB for a Arduino Mega 2560 based shield is now populated and being tested. It should allow testing IC's with 14, 16, 20, 24 and 28 pins and power at the highest pin number.

Current (v1.2) I.C.-list (actually tested): 4093, 40106, 7400, 7402, 7404, 7405, 7406, 7407, 7408, 7409, 7410, 7411, 7413, 7420, 7421, 7427, 7430,7432, 7433, 7438, 7451, 7486, 74125, 74132, 74138, 74139, 74153, 74240, 74244, 74257, 74365, 74367, 8T97


What the Python script does:

1. find the I.C. definition in the library

2. send the config to the Arduino

3. loop through:

  1.  generate a bit pattern for all the exercise pins
  2.  fill the query-template with the exercise logic levels
  3.  fill the expected result template with exercise logic levels
  4.  calculate the values for the query pins (convert to Python logic expression and evaluate)
  5.  fill the expected result template with query logic levels
  6.  send the query to the Arduino
  7.  retrieve the response from the Arduino
  8.  compare the expected result with the actual result

4. declare result and exit

New for version 1.3 are minimal power switching and Arduino only debugging commands. Note that the shown N8T97 is 44 years old and still working. 

(The logic probe is an old Elektor design)


Schema of PCB v 1.0

Adobe Portable Document Format - 155.97 kB - 10/12/2020 at 14:45


KiCAD file set. Waiting for boards now.

Zip Archive - 24.28 kB - 10/12/2020 at 14:24



Preview of the PCB v1.0.

image/png - 98.52 kB - 10/12/2020 at 09:27


  • New imperative testing format

    fjkraan02/10/2023 at 15:52 0 comments

    The original chip definition format based on Boolean formulas works nicely for simple gates, but it becomes a problem when clock-type events are needed, And those are abundant with the buffers, registers and latches.

    The chosen solution is in some sense simpler than the formula-based pattern generation as it just is a list of state-definitions executed in a specific order. The state definition are the actual commands send to the Arduino, but with a numeric prefix to make them unique. Python reads the definition into a dict object and those want unique keys. Almost by accident it makes finding the offending definition easier in the error message.

  • Improved JSON compatibility

    fjkraan09/27/2022 at 09:25 0 comments

    Converted the I.C. definition to proper JSON, apart from the header and comments. Strip all lines starting with '#' and it should validate. See for details. The header info is json-ified too, but not yet used.

  • The Mega shield

    fjkraan11/13/2020 at 08:51 0 comments

    The PCB for the Arduino Mega 2560 finally got populated and somewhat tested. The layout is not perfect and the result isn't quite fit for the promotion poster, but probably good enough for testing and usage. This project is just to make digital logic I.C.s testing easy, not to win beauty contests.

    Some issues found with construction and testing:

    • the LED resistor value of 330 ohm is way to low for the Arduino pins. It is changed to 3k3 ohm.
    • the resistor arrays were hard to find and weren't the designed size, so some extra resistors were needed to fill the missing positions. It would look better if all positions were discrete resistors.
    • The MOSFETs ordered had a different package than the PCB design.

    The next stage is:

    • to test the board,
    • add more and larger I.C.s to the library,
    • implement test algorithms for tri-state, open collector, ...

    At one time I might upload an updated schema and PCB, but as long as the current design is fixable, I won't order and test it.

    There are five pins were power can be applied, being the highest pin number for 14, 16, 20, 24 and 28 pin I.C.s. For different power pin schemes, the breadboard solution of the prototype could be used.

View all 3 project logs

  • 1
    Step 1

    For the prototype there isn't much to instruct. I use a cheap China prototype-shield with a fitting bread-board. The only connections are from the shield to the board and documented in the Arduino sketch pinMap.h file.

    For the prototype the power pin has to be set manually (pin 14 or pin 16). The Arduino Mega 2560 shield has automatic power switching for several common power pins; 14, 16, 20, 24, 28. Ground is always half that; 7, 8, 10, 12, 14.

View all instructions

Enjoy this project?



Fernando José Pompeo wrote 11/24/2021 at 17:12 point

Hi, I need to test some (most with up to 48-pin TSSOP) 16-bit TTL / CMOS like 74ABT16245, 74ABT16374, 74ABT163245, 74HC16540, 74HC16541, 74HC16374 and so on. Is it possible to modify or adapt this project for this purpose?
Regards Fernando

  Are you sure? yes | no

fjkraan wrote 11/24/2021 at 20:17 point

The current limitations of the board are 28 pins maximum. The firmware has no support for clocked logic and only rudimentary tri-state logic testing. There is no real reason these cannot be fixed, but at the moment I have no time for this.
And sockets for TSSOP do exist...

  Are you sure? yes | no

Number Format wrote 04/17/2021 at 01:05 point

Nice project. Thanks. I will try to actually build this in the next few weeks. Have the parts on order. Resistor array is hard to find that is for sure.

  Are you sure? yes | no

fjkraan wrote 10/09/2020 at 15:38 point

@apg.cooper: It is somewhat less a problem because in my solution only inputs are driven, as a test is chip specific. But I will take it into account for the PCB-version. So far I didn't manage to destroy a chip.

@Winston: The ZIF socket will be part of the PCB-version!

  Are you sure? yes | no

Winston wrote 10/09/2020 at 12:37 point

Very cool.  I did the same in college many moons ago using an 8080 trainer and used it to quickly give a go/no go test to all of the lab's 7400 series ICs.  Since the lab also included PCB manufacturing equipment, I made a ZIF socket adapter for the solderless breadboard.

  Are you sure? yes | no

agp.cooper wrote 10/08/2020 at 23:52 point


I think you need to add 2k2 resistors between the Arduino GPIOs and the test chip IO pins.

The Arduino can supply/sink 40mA which is enough to destroy a test chip if you try to drive (output to), by accident, a test chip output.

A 2k2 resistor good value for pulling down a 74LSxxx chip, almost any value will work for 74HCxxx.

Regards Alan

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates