Afficheurs à LEDs
Date: 2014-12-22
Tags: DIY reverse_engineering
Récupération
J’ai récupéré un équipement de laboratoire fabriqué par Sofraser avec un module d’interface pour des capteurs de viscosité et deux modules de contrôle et d’affichage. Cet équipement est trop ancien et la documentation n’est plus disponible sur le site web du constructeur, mais il est possible d’en récupérer des pièces.
Tests et mesures
Les modules de contrôle et d’affichage sont formés de 3 cartes emboitées :
- Carte d’alimentation (transfo, régulateurs de tension), d’interfaces analogiques (comparateurs et amplis) et d’actionneurs (sorties à relais)
- Carte à MCU (Intel 8031, EPROM, SRAM, NV-SRAM)
- Carte d’affichage (afficheurs 7 segments, LEDs, boutons, drivers NPN et registre à décalage UCN5812AF d’Allegro)
Reverse Engineering Hardware
En fonctionnement normal, sans capteurs branchés, l’afficheur affiche quelque chose sur chaque afficheur.
Comme l’afficheur fonctionne, on peut mesurer les tensions d’alimentations et vérifier rapidement l’allure des signaux au voltmètre.
Pour identifier la suite, il faut débrancher l’afficheur, sortir la datasheet du registre à décalage et tester à l’Ohm-mètre.
Ce qui nous donne le pinout du connecteur :
- VDD (Power, 3~60V), il est peu probable que les transistors apprécient plus de 15V
- ?
- ?
- Blank/Strobe
- VDD (Logic, 3~15V), à adapter aux niveaux des signaux
- SW2
- CLK
- SW1
- SDIN
- SW3
- GND
- SW4
Les pins en vert sont connectés directement au registre à décalage et acceptent des signaux TTL et LV-TTL. Comme on a un registre à décalage, on peut être tenté d’utiliser un périphérique SPI, sauf que ceux des AVR et des MSP430 sont incapables de sortir des mots de 20bits… Il faudra faire du bit-bang en software.
En regardant la datasheet, on observe que les signaux SDIN et CLK permettent de charger le registre à décalage. Ensuite le signal Strobe permet d’activer le latch et le signal Blank permet d’activer le buffer. Sur ces cartes, les signaux Strobe et Blank sont reliés. Ainsi on économise un fil.
Reverse Engineering Software
En balayant le registre, on peut se rendre compte de l’adresse de chaque afficheur, segment et LED.
Afficheurs :
- 0x002000
- 0x001000
- 0x000800
- 0x000400
- 0x080000
- 0x040000
- 0x020000
- 0x010000
- 0x004000
LEDs :
- 0x008004
- 0x008020
- 0x008040
- 0x008080
- 0x008100
- 0x008200
On remarque aussi que tout est câblé ensemble. On peut choisir d’allumer les segments et les digits un par un, mais pas indépendamment (il est possible d’afficher ” 1 1”, mais pas “1234”). Pour afficher autre chose, il faut utiliser la persistance rétinienne et balayer chaque valeur par digit.
On peut associer les segments aux nombres et lettres que l’on va afficher :
- 0 - 0x3F0
- 1 - 0x180
- 2 - 0x368
- 3 - 0x3C8
- 4 - 0x198
- 5 - 0x2D8
- 6 - 0x2F8
- 7 - 0x380
- 8 - 0x3F8
- 9 - 0x398
- A - 0x3B8
- b - 0x0F8
- C - 0x270
- d - 0x1E8
- E - 0x278
- F - 0x238
- . - 0x004
Le programme est bêtement formé de LUTs (afficheur, LED et digits) et de boucles (SPI bit-banging et selection de l’afficheur/LED).
Chaînage
Le pin 2 est une sortie du registre à décalage et n’est pas câblée, mais il est possible de chaîner plusieurs afficheurs, seule la “longueur” du mot est doublée (40bits).
Références
- ← Previous page
Boot PXE - Next page →
Imprimante Matricielle Epson LX-800
Electronics Électronique puissance semiconducteur semiconductors power Hardware CPE INSA Xavier Bourgeois