[Arduino] ICT testeur de circuits intégrés

Placez ici vos trucs et astuces, étalez sans retenue votre savoir-faire et votre science qui va nous permettre de redonner une apparence neuve et fonctionnelle à nos bouzes.

Modérateurs : Papy.G, fneck, Carl

Patrick
Messages : 1521
Enregistré le : 16 mai 2009 09:30
Localisation : Clermont-Ferrand

[Arduino] ICT testeur de circuits intégrés

Message par Patrick » 05 sept. 2020 12:23

Suite à un message sur un fil de discussion de Silicium, je me suis intéressé aux testeurs de composants.
J'ai un TL866 qui est capable de tester les circuits intégrés des séries 7400 et 4000 mais je voulais voir s'il y avait d'autres solutions plus souples d'utilisation.

J'ai rapidement trouvé une réalisation de Akshay Baweja, Smart IC Tester.
Basé sur un Arduino Mega, un écran TFT tactile et une carte d'extension spécifique, ce projet apparaît très simple à réaliser. Ce testeur est capable de tester les composants 7400 et 4000, de manière automatique en identifiant le composant, mais également manuellement en indiquant quel est le composant à tester.
J'ai remarqué dans la liste des personnes qui ont réalisé ce projet un pseudo connu sur le forum, philoupat6283.
Je l'ai donc contacté et il m'a fourni le PCB de l'extension (ainsi que de quelques autres montages que je n'ai pas encore réalisés :D).

Après l'étape indispensable d'approvisionnement des composants nécessaires, j'ai réalisé l'extension, assemblé les éléments, compilé l'application et programmé l'Arduino.
Le projet GitHub est un peu daté et les librairies utilisées ont évolué. Des adaptations et un changement de librairie ont été nécessaires, mais rien d'extraordinaire dans le monde Arduino.

Le testeur fonctionnel, je suis passé à la deuxième étape.

J'ai décidé de réaliser quelques modifications :
  • Optimisation du code et de l'empreinte mémoire.
  • Modification de l'interface. Les différentes étapes du traitement sont signalées visuellement par animation et code couleur.
  • Navigation possible dans les résultats d'identification de composant.
  • Test de composant en continu. Un appui sur l'écran termine le test.
  • Ajout du test de composant mémoire (4164 et 41256).
Voici quelques captures d'écran pour vous présenter le fonctionnement du testeur ICT.
L'écran de démarrage :
Image

L'écran d'identification de circuits logiques :
Image

La progression est indiqué par les carrés colorés en bas de l'écran. Le code couleur utilisé est le suivant :
  • Gris, définition de circuit ignorée (nombre de broches incompatible).
  • Orange, définition de circuit traitée, circuit incompatible.
  • Vert, définition de circuit traitée, circuit compatible.
Par ailleurs, la ligne au-dessus affiche un carré vert pour chaque définition de circuit compatible trouvée.

L'écran de test de circuit logique :
Image

Le code couleur utilisé est le suivant :
  • Gris, définition de circuit ignorée (code différent).
  • Vert, cycle de test réussi.
  • Rouge, cycle de test échoué.
Par ailleurs, la ligne au-dessus représente graphiquement le rapport entre cycles de test réussis et échoués.

L'écran de résultat du test :
Image

Le nombre de cycle de test et le pourcentage de réussite sont affichés. Le bouton redo permet de relancer le test.

L'écran de test de composant mémoire :
Image

Chaque carré représente le résultat du test d'une ligne complète de cellules (signal /RAS), selon le code suivant :
  • Vert, aucun défaut.
  • Rouge, erreur détectée.
Au centre, 4 carrés plus grands représentent les 4 types de test réalisés :
  • Remplissage alternatif 0, 1.
  • Remplissage alternatif 1, 0.
  • Remplissage 0.
  • Remplissage 1.
Ils sont colorés selon le code de couleur précédent, dès qu'un type de test est terminé.

L'écran de résultat du test :
Image

J'avoue m'être inspiré des couleurs du CPC 464 pour la conception des écrans :lol:

Le projet est hébergé sur GitHub.

Actuellement, le projet est limité par l'extension qui ne gère que les circuits à 16 broches au maximum.
J'ai commencé à concevoir une extension qui utilise un support ZIF à 40 broches.
Par exemple, le support de composants RAM répandus en boîtier DIP 18 comme les 4408 et 4416 pourra être ajouté.
Et pourquoi ne pas tester des composants différents : CPU, PPI, ROM, etc.

J'ai une question pour les électroniciens.
Je souhaite ajouter le support des 4116 qui nécessite 3 tensions d'alimentation, 5 V, -5 V et 12 V.
Le 5 V est disponible, le 12 V peut être produit par un LTC1262, le -5V par un ICL7660 (ou d'autres composants équivalents).
Mon problème est d'appliquer le 12 V et le -5 V aux broches du support ZIF par programmation sans danger pour l'Arduino.
J'ai pensé à un transistor pour faire passer ces tensions vers le support, mais comment empêcher que ces tensions partent également vers les broches de l'Arduino ? Car chaque broche du support est relié à une broche de l'Arduino qui peut configurer chaque broche en entrée ou en sortie.
SI vous avez des idées ou des solutions, merci de m'éclairer sur le sujet.
Patrick

capri2800
Messages : 224
Enregistré le : 19 nov. 2014 16:00
Localisation : Martigny, Suisse
Contact :

Re: [Arduino] ICT testeur de circuits intégrés

Message par capri2800 » 05 sept. 2020 14:29

Je suis en train de monter ceci :

https://www.google.ch/amp/s/8bit-museum ... ester/amp/

Ça teste beaucoup de chose, il est même capable de reconnaître des ROM en fonction de leur contenu ! C’est basé sur Arduino Mega, mais le gars a fait une carte spécifique pour.

Avatar du membre
gleike
Messages : 812
Enregistré le : 16 oct. 2014 11:12
Localisation : Ludres (54710) Meurthe & Moselle

Re: [Arduino] ICT testeur de circuits intégrés

Message par gleike » 05 sept. 2020 14:30

@Patrick

En utilisant un switch cmos de ce type ADG1334
Datasheet :
https://www.analog.com/media/en/technic ... DG1334.pdf

Patrick
Messages : 1521
Enregistré le : 16 mai 2009 09:30
Localisation : Clermont-Ferrand

Re: [Arduino] ICT testeur de circuits intégrés

Message par Patrick » 05 sept. 2020 14:46

Merci Gleike,
Si j'ai bien interprété la fiche technique, c'est exactement ça.
Je peux créer deux circuits, support ZIF/Arduino et support ZIF/alimentation, et sélectionner l'un ou l'autre avec l'entrée INx.
Cool :D
Patrick

Avatar du membre
hlide
Messages : 1846
Enregistré le : 29 nov. 2017 10:23

Re: [Arduino] ICT testeur de circuits intégrés

Message par hlide » 05 sept. 2020 15:04

Très intéressant. Peut-on envisager la possibilité de tester les FRAM et les programmer avec un contenu ? j'en ai en 8 Ko et 32 Ko et le TL866 ne semble pas savoir les gérer.

Patrick
Messages : 1521
Enregistré le : 16 mai 2009 09:30
Localisation : Clermont-Ferrand

Re: [Arduino] ICT testeur de circuits intégrés

Message par Patrick » 05 sept. 2020 15:17

Je ne sais pas Hlide.
Je ne connais pas ce type de composant, mais pourquoi pas.
Je te laisse découvrir le code, tu te feras une idée.
Ceci dit, la programmation peux se faire à partir d'un fichier présent sur la carte SD ou alors avec une application sur ordinateur qui transmet des commandes basiques à l'Arduino. Dans ce cas là, la logique applicative n'est plus sur l'Arduino et donc n'est plus limitée par ces capacités.
As-tu une référence de composant FRAM à me communiquer ?
Patrick

Avatar du membre
hlide
Messages : 1846
Enregistré le : 29 nov. 2017 10:23

Re: [Arduino] ICT testeur de circuits intégrés

Message par hlide » 05 sept. 2020 17:16

Oui, voici leur documentation :
FRAM 256Kbit 70ns : http://data.leocom.kr/datasheets/169651_82483.pdf
FRAM 64Kbit 120ns : https://www.tme.eu/Document/9adbf6cecac ... s_r3_1.pdf

Patrick
Messages : 1521
Enregistré le : 16 mai 2009 09:30
Localisation : Clermont-Ferrand

Re: [Arduino] ICT testeur de circuits intégrés

Message par Patrick » 05 sept. 2020 19:03

A la lecture des spécifications de ces composants FRAM la lecture et l'écriture à partir de ce type de montage me semble faisable. Certainement avec une application dédiée car l'a mémoire flash du Mega n'est pas infinie.
Patrick

Avatar du membre
hlide
Messages : 1846
Enregistré le : 29 nov. 2017 10:23

Re: [Arduino] ICT testeur de circuits intégrés

Message par hlide » 05 sept. 2020 19:16

En DIP, le 32 Ko est le maximum que l'on peut trouver.

Memphis
Messages : 346
Enregistré le : 25 janv. 2015 18:16
Localisation : Pont à Mousson (54)

Re: [Arduino] ICT testeur de circuits intégrés

Message par Memphis » 06 sept. 2020 16:33

Une chouette réalisation et évolutive pour sa librairie. :wink:
Es ce que cela peut fonctionner avec de la Sram tout comme la Dram . Par exemple la 2114
Jérôme

Patrick
Messages : 1521
Enregistré le : 16 mai 2009 09:30
Localisation : Clermont-Ferrand

Re: [Arduino] ICT testeur de circuits intégrés

Message par Patrick » 06 sept. 2020 16:36

La 2114 est en DIP 18. Il faut attendre l'extension avec le support 40 broches.
Sinon, en théorie, aucun problème.
Patrick

elektrax
Messages : 47
Enregistré le : 04 févr. 2014 19:30
Localisation : belgique

Re: [Arduino] ICT testeur de circuits intégrés

Message par elektrax » 10 sept. 2020 04:00

bonjour,
magnifique réalisation
j'ai aussi un tl866 auquel je fais peu confiance pour le test des ci logiques, il convient tres bien pour le flashage des pic12 et 16, des at avr et attiny, des uvprom <= 21V
pour le test des ci, je n'utilise que l'expro80(clone all-03), pour le test automatique il ne fait pas la différence entre un 7404, 7406, 7414, etc..tous les hex inverter avec ou sans trigger par exemple, ce n'est qu'un détail sans grande importance

bonne journée à tous

Avatar du membre
hlide
Messages : 1846
Enregistré le : 29 nov. 2017 10:23

Re: [Arduino] ICT testeur de circuits intégrés

Message par hlide » 10 sept. 2020 11:41

En fait, si l'on pouvait tester les CPU comme le Z80, les NEC V20/V30 et les 8087 (et d'autres ayant au maximum 40 broches), ce serait super cool pour débusquer les fakes à leur arrivé.

J'ai plein de Z80 supposés être du CMOS@20Mhz. Si on pouvait par exemple lui faire exécuter un "OUT (nn),0" (instruction non-officielle) qui mettra 0 sur le bus de donnée des non-CMOS et 255 pour les CMOS. Je sais qu'il existe au moins une réalisation à base d'Arduino à ce sujet où l'Arduino pilote la fréquence.

J'ai quelques V30@10MHz et un D8087@10MHz mais je ne peux pas les essayer (le PC1512 est chez mes parents dans un carton depuis des décennies et je ne peux pas le rapatrier avant longtemps). J'aurais souhaité pouvoir les tester.

Patrick
Messages : 1521
Enregistré le : 16 mai 2009 09:30
Localisation : Clermont-Ferrand

Re: [Arduino] ICT testeur de circuits intégrés

Message par Patrick » 10 sept. 2020 20:44

Merci à tous pour vos commentaires.

Voici quelques nouvelles...
En attendant la version 2 de l'extension, j'ai imaginé de relier les broches non utilisée du support ZIF à l'Arduino.
En préparant l'intervention, je me suis aperçu que toutes les broches du support sont câblées même si Akshay Baweja se limite à n'exploiter que 16 broches dans son application.

De ce fait, j'ai ajouté le support de quelques composants mémoires supplémentaires, sans modification matérielle :
  • SRAM 2114 en DIP 18.
  • DRAM 44256 en DIP 20.
En fait, c'est ce qui m'est tombé sous la main.
J'ai donc retravaillé le code et le résultat est actuellement utilisable.

Pour ce qui est des 2114, j'en ai 2 exemplaires, des NEC µPD2114L-1, retirés d'un ZX81. J'ai toujours quelques erreurs dans le processus de test, je ne sais pas si ce sont mes composants qui sont défectueux (le ZX81 semblait fonctionner correctement avant extraction de ces SRAMs) ou si ma procédure de test n'est pas correcte.
Voici une capture d'écran du résultat :
Image

En fait, les défauts constatés concernent quelques bits à 1 relus à 0. Le troisième type de test, écriture de 0 est toujours sans erreur.

Pour les DRAM 44256, j'ai factorisé le traitement des DRAM 4164. Trois différences :
  • Pour la 4164, la lecture etl'écriture se fontsur deux broches différentes. Pour la 44256, la lecture et l'écriture se font sur la même broche.
  • Pour la 4164, la taille de la donnée est de 1 bit. Pour la 44256, la taille de la donnée est de 4 bits.
  • Pour la 44256, il faut gérer un signal supplémentaire /OE.
Voici le résultat du test d'un composant MB81C4256A :
Image

La vérification est longue, près de 10 minutes. Le problème est que la programmation en entrée ou en sortie de chaque broche de données doit être réalisée à chaque lecture ou écriture, ce qui ajoute du temps de traitement. Une solution serait d'écrire une ligne entière de données puis de la relire avant que les données ne s'effacent. L'effacement pourrait être supprimer en gérant le rafraîchissement.

En conclusion, à partir d'un matériel relativement simple, les possibilités d'amélioration et d'évolution ne manquent pas. Je pense publier la nouvelle version ce dimanche.

Pour finir, une photographie du montage :
Image
Patrick

Patrick
Messages : 1521
Enregistré le : 16 mai 2009 09:30
Localisation : Clermont-Ferrand

Re: [Arduino] ICT testeur de circuits intégrés

Message par Patrick » 14 sept. 2020 17:54

La version 1.3.0 est publiée sur GitHub.
Par rapport à la version précédente, les modifications sont :
  • Support de la totalité des 20 broches du support ZIF et donc des composants en boîtier DIP 18 et DIP 20.
  • Ajout des composants DRAM 4416 et 44256.
  • Ajout des composants SRAM 2214.
  • Amélioration des performances.
J'ai porté une attention particulière à ce dernier point et je pense être arrivé à un bon résultat. Il ne faut pas oublier que l'Arduino Mega 2560 est équipé d'un MCU AVR 8 bits à 16 MHz. Dans un contexte ou les opérations effectuées sont des boucles de lecture et écriture sur des IO, il faut en tenir compte.

Je suis ainsi passé de 545,19 secondes à 264,59 secondes pour le test d'une DRAM 44256, et de 100,43 à 54,80 pour une 4164.
Vous pouvez consultez le code pour voir quelles sont les optimisations effectuées.

Dernier point, apparemment, je n'ai pas de composant mémoire défectueux. Mes 2114 passent le test et je n'ai pas encore remis la main sur les DRAMs hors-service que j'ai retirées de mes ordinateurs lors de mes réparations. Il faut que je les retrouve.

En ce qui concerne la version 2 en projet, j'ai reçu des échantillons de circuits et j'attends des adaptateurs DIP vers SSOP pour valider la partie alimentation pour les 4116.
Patrick

Répondre