Smart IC Tester

10,829

100

40

Introduction: Smart IC Tester

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

We all know what IC Testers do... but for those who don't - IC Testers are devices which are used to test Integrated Circuits by sending in Pulses as per their Truth Table. Generally, IC number is fed into IC Tester and a comparison test is made against that particular IC's Logic Table.

A smart IC tester is far more capable and better than a generic IC Tester, it has an ability to detect and check the connected IC along with a manual mode. Our IC Tester features a Touch LCD which gives a better user experience and easy to understand UI.

IC Testers maybe costly instrumentation devices but this one is just under ₹1600( ~$25), pretty cheap right ?

Step 1: Let's Shop Some Stuff !!

Electronics

  • 1x Arduino Mega 2560
  • 1x 20 Pin ZIF Socket
  • 1x 2.4 inch TFT touch Screen LCD with inbuilt SD Card Slot
  • 1x 4GB MicroSDHC
  • 1x 6-pin Extra Length Female Header
  • 3x 8-pin Extra Length Female Header
  • 1x Male Header Strip
  • 2x WS2812B (Optional)
  • 2x 100 nF 0805 Capacitor (Optional)
  • 1x 180Ω 0805 Resistor (Optional)

Tools and Additional Supplies

  • Soldering Iron
  • Solder
  • A Laptop
  • USB Cable to connect Arduino Mega 2560
  • MicroSDHC Adapter

Step 2: Designing the PCB

I designed a shield for all components to fit-in and chose the Arduino Mega as my micro-controller board since both the ZIF Socket and LCD can be put side by side giving the build a compact and portable look and feel. I used Autodesk Eagle for the PCB Designing part (I've attached the eagle files below).

A big shoutout to guys at JLC PCB for sponsoring PCBs for the project. Do check them out they offer $2 PCB Prototyping and Free Shipping on First Order.

Step 3: Shut Up and Solder

Once you have all the components along with the PCB, just solder them in place as shown and you are ready to go !!

Once you're done with soldering put-on the LCD Shield and Female Headers and this completes your assembly for IC Tester.

Remember - "If it smells like chicken, you're doing it wrong" ;)

Step 4: Code? Yes..!!

Open up your Arduino IDEs and Open up the code... You can replace my name with your own so it boots up with your name. You're free to play around with colour schemes as per your choice.

All code files are available on GITHUB

Step 5: Preparing Database... a Time Consuming Task

I've compiled up a basic database for Component Tester that includes basic ICs. The database is in database.txt file on GitHub. Copy this txt file on SD Card and insert it in the Touch LCD Shield.

Thanks to instructable user JorBi for his Instructable - Arduino IC Tester from where I got inspiration to build one.

Pattern -

$[IC Number]

[IC Name]

[Pins]

[Test Case 1]

[Test Case 2]

...

[Test Case N]

Sample Test Case-

Say I have IC-7426, a sample test case would be

0000HHG000000V

Here 0/1 would be used to specify Input and H/L (High/Low) to specify output and V is used to denote VCC and G is used to denote Ground. Follow order from Pin 1, 2, 3, ..... 7, 8, 9, .... 14 for above IC

Step 6: Fingers Crossed !! Testing It All Together

Let's Upload the code and boot the IC Tester.

FINGERS CROSSED !!


And it worked great !!

Step 7: Happy Testing !!

You are welcome to contribute to the project and database on GitHub.

Share

    Recommendations

    • Water Contest

      Water Contest
    • Tiny Home Contest

      Tiny Home Contest
    • Metalworking Contest

      Metalworking Contest

    40 Discussions

    I have ordered five pcb and only need one, email me if you are interested.they will be at my cost plus postage to you ( I am in Australia)

    5 replies

    I'm in Sydney with spare boards, let me know if anyone needs for cost of P&P

    I couldn’t pm you but if you have a pcb left I would take it off your hands? Cheers Kester

    I have a couple of boards left, where are you located so I can work out the postage

    Jim

    Have you tried testing a 7474 or a 7475? I can't seem to get either
    flipflop to test successfully. I wrote a very simple test pattern for
    the 7475 and couldn't get the output stage to latch. I then moved the ic
    to a breadboard and proved the IC was working properly.

    Just wondered if you'd ever tested the 7474 with the database on Github.

    Thanks,

    Bob

    3 more answers

    I had the same trouble with the 7474 ic, the function test_case() in the sketch test_function as is will only output one clock pulses to a clock pin and not to the other clock pin, the 7474 has 2 clock pins, the fix is to replace the function test_case with

    the code below, also the tester will not test 4020 and 4022 ic the data file is wrong

    boolean testCase(String test, int pins)
    {
    boolean result = true;
    int clkPin = -1;

    Serial.println("SignalIn : " + test);
    Serial.print("Response : ");

    //Setting Vcc, GND and INPUTS
    for (int i = 0; i < pins; i++)
    {
    switch (test[i])
    {
    case 'V' : pinMode(pin[i], OUTPUT); digitalWrite(pin[i], HIGH);
    break;
    case 'G' : pinMode(pin[i], OUTPUT); digitalWrite(pin[i], LOW);
    break;
    case 'L' : digitalWrite(pin[i], LOW); pinMode(pin[i], INPUT_PULLUP);
    break;
    case 'H' : digitalWrite(pin[i], LOW); pinMode(pin[i], INPUT_PULLUP);
    break;
    }
    }

    delay(5);

    //Setting Input Signals
    for (int i = 0; i < pins; i++)
    {
    switch (test[i])
    {
    case 'X' :
    case '0' : pinMode(pin[i], OUTPUT); digitalWrite(pin[i], LOW);
    break;
    case '1' : pinMode(pin[i], OUTPUT); digitalWrite(pin[i], HIGH);
    break;
    case 'C' : pinMode(pin[i], OUTPUT); digitalWrite(pin[i], LOW);
    break;
    }
    }

    // }

    // Trigger Clock
    for(int i=0;i<pins;i++){
    if(test[i]=='C'){
    pinMode(pin[i],INPUT_PULLUP);
    }
    }

    delay(10); // keep it HIGH for some time

    for(int i=0;i<pins;i++){
    if(test[i]=='C'){
    pinMode(pin[i],OUTPUT);
    digitalWrite(pin[i], LOW); // set it back LOW
    }
    }

    delay(2);

    //Reading Outputs
    for (int i = 0; i < pins; i++)
    {
    switch (test[i])
    {
    case 'H' : if (!digitalRead(pin[i])) {
    result = false;
    Serial.print('L');
    }
    else Serial.print(' ');
    break;
    case 'L' : if (digitalRead(pin[i])) {
    result = false;
    Serial.print('H');
    }
    else Serial.print(' ');
    break;
    default : Serial.print(' ');
    }
    }
    Serial.println(";");
    //Serial.println("\nCase Result : "+String(result));
    return result;
    }

    That should've worked though I never tested 7474 or 7475 but the database is according to the tables listed in datasheet.

    I've tried two different Arduino Mega 2560 boards and can not seem to get a 7474 or 7475 to test correctly with known good ICs. Could you please try this on your system? All other nand/and/or/nor gate chips test ok, but ICs that latch with a clock pulse don't seem to work for me. Thanks. Bob.

    can u give me solution for

    lcd screen can't display the image and it only turns red

    1 more answer

    Hey,
    Sorry but I bought them from local market. So there aren't any specific part number list. But all parts are listed above. You can get them from sites like aliexpress or eBay

    Hi

    I have an issue with the touch scree. I cannot get past the Manual / Auto selection as if the touch is not calibrated or returning the wrong values. Any ideas to test this further

    Thanks

    Jman

    1 more answer

    Hi

    Ok finally got the Touch Screen sorted and LCD the correct way round. i am using a LCD labled www.mcufriend.com.

    I changed this line in tft screenStatus = 3; to screenStatus = 0;

    and the lines below in ic_tester

    #define YP A2

    #define XM A1

    #define YM 6

    #define XP 7

    Now it all works. Thanks for the cool project

    Jman

    Hi

    how to insert library into arduino?

    The caps and resistor are for the leds, could you indicate what goes where

    Jim

    1 more answer

    Look close I marked the single R spot Black and two Blue caps for you..

    The way to figure it out, is the caps touch pin_1 which is the LED cut corner..

    R2C.jpg

    How do you solve conflicts of arduino sending 0 to IC output pin, where is 1 and vice versa?

    Say I am actually (automatically) testing 4001 Quad 2-input NOR gate (2. entry in database), so the first 2 pins are inputs and for 00 3. pin is set by IC to 1 (first patter starts with 00H...)

    But the database starts with 4000 Dual 3-input NOR gate and inverter with first pattern 00000HG1LH000V so Arduino sets first 3 pins to output 000.

    And then on 3. pin Arduino is actively driving 0, while IC is actively driving 1.

    According to datasheets the IC Absolute Maximum rating for outpout pin is 10mA, while Arduino have Absolute max of 40mA and 20mA are listed under normal working conditions.

    So it is able sink 2x-4x more, than Absolute Maximum the tested chip can offer without risc of damaging - without any limiters on the way, if I understand the schema ... so possibly destroying the tested chip (mainly if it is somwhere much lower in the table, so there will be much more such conflicts foprced by testing before the right pin assignment is matched.)