Arduino 16arduino_goodfields_64.jpgafficheur LCD JUMBO
 
Sommaire

Un  afficheur LCD géant ! Un afficheur LCD géant ! Au  fer à souder ! Au fer à souder ! "A"  Attaque par le DB15 "A" Attaque par le DB15
"B"  Attaque sur le socket NEC "B" Attaque sur le socket NEC "U"  Une horloge JUMBO + afficheur récepteur I2C "U" Une horloge JUMBO + afficheur récepteur I2C "V"  Cohabitation avec un LCD classique "V" Cohabitation avec un LCD classique
La page principale ... La page principale ...
   
Vers le début Vers Page 2 Vers sommaire Un afficheur LCD géant !
Voici les codes :
_16_LCD_jumbo.zip _16_LCD_jumbo.zip
cliquez pour agrandir : photo/16_triplette_c.jpg
cliquez pour agrandir : photo/16_lcd_jumbo.jpg J'ai pu récupérer des afficheurs LCD géants, de 6 digits 7 segments de 30mm de haut. Ils sont architecturés comme ceci, un maître à gauche et 2 esclave à droite qui s'empilent grâce à des connecteurs DB15 :
MAITRE :
========
Connecteur HE10     <-->  Processeur SCHRINK        <-+->  HITACHI 61603	    <-->  Verre LCD
Alimentation 7-24V        E/R bus pincé               |   Contrôleur LCD          6 digits
Bus pincé                 pilotage de 3 afficheurs    |                           5 . décimaux
                                                      |                           2 : :
                                                      |
                                                      +-DB15F-><-DB15M [2° afficheur 'esclave'] <-DB15F--DB15M-> [3° afficheur 'esclave'] <-DB15F-
ESCLAVE :
=========
Connecteur DB15M    <-+->  HITACHI 61603	    <-->  Verre LCD
Alimentation 5V       |   Contrôleur LCD          6 digits
Bus pincé             |                           5 . décimaux
                      |                           2 : :
                      +-DB15F->
cliquez pour agrandir : photo/16_ligne.jpg L'afficheur à gauche, décrit dans les 4 premières lignes ci-dessus, est un 'maître', comporte un chip contrôleur programmé (NEC D75P008CU) qui gère le 'bus pincé' arrivant sur le HE10.
Ce bus, très particulier aussi bien au niveau électrique (type comme I2C tiré, mais au +24 Volts) qu'au niveau protocole (4800 bauds, bits à l'envers, à détection de collision, et possibilités très particulières), est à abandonner.
Ce NEC pilote le HITACHI 61603 local, mais aussi 2 autres par chainage sur les DB15. C'est cet interface DB15 qui va nous intéresser, puisqu'il va nous permettre d'attaquer directement le HITACHI avec l'ARDUINO.

Le HITACHI 61603 quant à lui, pilote le verre LCD :
Le protocole est assez simple, dans la mesure où j'ai volontairement simplifié en ne tenant pas compte du signal READY ni du signal /RE qui permet le reset de compteur,car il existe une methode logicielle (cf notice)...

Voir doc page 1249-1250 :
Le protocole consiste à envoyer les données sous forme de 4 quartets, en 4 fois, en validant à chaque fois par le signal WE :
- mise à 0 du /CS du module désiré
- mise en place des données (sur 4 bits)
- mise à 0 du signal d'écriture /WE
- attente de 25 microsecondes (théoriquement 2,5 à 3,5)
- mise à 1 du signal /WE
- attente de 25 microsecondes
- mise à 1 du signal /CS

ceci 4 fois bien sûr pour envoyer nos 4 quartets ...

On peut envoyer les états de 8 bits consécutifs d'un coup, les 4 quartets sont rassemblés en 2 octets :
- 00xaaaaa aaaaa = numéro de digit concerné (paquet de 8 segments, pour nous de 0 à 6 (6 pour les ::)) x=sans utilité
- dddddddd dddddddd = états des 8 segments

On a également la possibilité d'envoyer segment par segments, mais c'est pas du tout économique car il faut 4 quartets par segment !

Le compteur de quartets peut "se planter", on a donc possibilité de faire une remise à zéro en envoyant 4 fois le quartet solitaire suivant :
- 11xxxxxx
quartet qui est en sorte un 'NO OPERATION' et décrémente le compteur jusqu'à 0. C'est cette méthode que j'utilise pour faire un 'reset' au démarrage'

Toute cette cuisine est assurée par lcdj_quartet(i); i étant les 4 quartets à envoyer (stockés dans un entier 16 bits).
// reset compteur de quartets
    i=0xCCCC; lcdj_quartet(i);
// mode setting (deux fois , selon notice)
    i=0x8400; lcdj_quartet(i);
    i=0x8400; lcdj_quartet(i);

Arrangement bizarre des segments dans la mémoire
Assez bizarrement, les 8 segments d'un digit ne sont pas contigus dans la mémoire.
Cela vient d'une simplification hazardeuse de la conception du circuit imprimé entre le contrôleur et le verre LCD.
Les 3 segments inférieurs et le point de 2 digits contigus sont dans le même octet (0,1,2)
Les 4 segments supérieurs sont sur d'autres octets, dans l'ordre inverse ! (6,5,4)
cliquez pour agrandir : photo/16_horloge.jpg Par ailleurs, des ":" (semi-colon in english) existent sur le verre entre les digits 1 et 2 et aussi 3 et 4, mais ne sont pas câblés, bien que le contrôleur puisse piloter 8 digits complets (64 segments). On va utiliser le 7°octet de segments pour les allumer ...
Tout ceci nous conduit à faire du cablage et de la gymnastique, et en particulier d'avoir un buffer de 'bits' dans le bon ordre pour profiter des envois par octets qui sont plus rapides que bit à bit ...
Doc du contrôleur HITACHI Doc du contrôleur HITACHI Dessin du verre LCD Dessin du verre LCD

   
Vers le début Vers Page 2 Vers sommaire Au fer à souder !

Carte type "Maître"
cliquez pour agrandir : photo/16_maitre.jpg Cette carte comporte un connecteur HE10 à 10 points et un DB15 (trapézoïdal). On la place composants visibles, HE10 à gauche.

cliquez pour agrandir : photo/16_maitre_modifie.jpg - enlever le processeur NEC, l'encadrer ou le mettre à la poubelle (ou autre usage passif)
- pour le CS, mettre un pont (morceau de fil de résistance coudé en u) entre les pin 28 et 29 du support du NEC (7° et 8° pin en partant du haut droit)
- pour les ::,
- mettre un fil entre Pin 29 SEG48 et la 10° pin en partant de la droite du verre (voir photo)
- mettre un fil entre Pin 28 SEG49 et la 9° pin en partant de la gauche du verre (fils émaillés)

En plus, si on veut, faire ceci :
- couper la patte No 3 du LM339 (DIL 14 pin) , afin de couper son alimentation (il servait de détecteur réception bus pincé). Ce n'est pas indispensable (économie d'énergie si alimentation + 24 Volts)
D'autres composants sont inutiles et récupérables, par exemple :
- les 3 diodes bleues : ce sont des BAT47, Schottky, 0,2 V de chute (très bien pour les claviers analogiques)
- le XLS93LC46 (DIL 8 pin) : c'est une EEPROM série de 128 octets (bof), de toute façon, elle n'est plus alimentée (par le NEC).
- un 2N7000 : c'est un mosfet N faible signaux ...
- le quartz 4Mhz : très difficile (soudures sous le verre !!!)

Alimentation
Pour commencer, on peut alimenter en 5V par le DB15, la consommation est faible (moins de 1 mA !!!). Si on veut finasser, on peut alimenter par le HE10, avec une tension comprise entre 7 et 24 Volts, le régulateur 78L05 fera le travail de régulation pour les 3 afficheurs chaînés si c'est le cas.
Brochage HE10 10 points :
- broches 7,8,9 et 10 en +8 à +24 Volts.
- broches 3,4,5, et 6 : GND masse 0 Volts
- broches 1 et 2 : Bus pincé, laisser en l'air (côté triangle repère)

Interfaces NEC, HITACHI et DB15
La documentation La documentation
NEC
Pin
HITACHI
Pin
Nom Usage Pin DB15F
origine
Maître modifié"A"
Pin DB15F
No de fil
nappe 10 fils "A"
No de fil
nappe 10 fils "B"
42 11 VSS GND 0 Volts 7,8,15 7,8,15=GND 10 10
25 10 D0 data poids faible 1 1 1 1
24 9 D1 data 9 9 2 2
23 8 D2 data 2 2 3 3
22 7 D3 data poids fort 10 10 4 4
8 5 /RE /reset 4 4 - -
7 4 /WE /write 12 12 5 5
29 3 /CS /chip select local - - - 6
28 3(1°esclave) /CS2 /chip select unité 2 3 3(CS en fait) 6 7
27 3(2°esclave) /CS3 /chip select unité 3 11 11 - 8
30 2 READY prêt 5 5 - -
21 1 VDD + 5 Volts 6,14 6,14 9 9

   
Vers le début Vers Page 2 Vers sommaire "A" Attaque par le DB15
On va tout d'abord utiliser un 'maître modifié "A"' selon notice ci-dessus, et attaquer sur le DB15:
Nom Usage Pin DB15F
origine
Maître modifié"A"
Pin DB15F
No de fil
nappe 10 fils "A"
Entrée ARDUINO
MEGA/UNO
VSS GND 0 Volts 7,8,15 7,8,15=GND 10 GND
D0 data poids faible 1 1 1 32 / 2
D1 data 9 2 2 33 / 3
D2 data 2 3 3 34 / 4
D3 data poids fort 10 10 4 35 / 5
/RE /reset 4 4 tiré au +5V(2) - -
/WE /write 12 12 5 36 / 6
/CS /chip select - 3 tiré au -(1) - -
VDD + 5 Volts 6,14 6,14 9 Vcc 5Volts
- Potentiomètre
de test
- - - A0
- Led
heart-beat
- - - 12
(1) tiré au - GND par une résistance de 20kOhms entre pin 3 et 7+8
(2) tiré au +5V par une résistance de 20kOhms entre pin 4 et 6
cliquez pour agrandir : photo/16_DB15A.jpg J'ai également installé une diode de sécurité 1N400X entre 6 (Kathode=trait) et 7+8 (Anode)

Le programme "_16_LCD_jumbo_simple" va permettre de tester ce montage, il fait tourner une démo des caractères, puis l'affichage de la valeur analogique de A0. Si on met le potentiomètre à 0, on retourne en démo caractères.

L'essentiel est dans lcd_jumbo.h : les déclarations, et les sous-programmes.

   
Vers le début Vers Page 2 Vers sommaire "B" Attaque sur le socket NEC
Cette méthode évite d'avoir un DB15 qui dépasse à droite si on n'utilise qu'un afficheur, mais aussi permet d'attaquer les 3 afficheurs chaînés (1 maître et 2 esclaves) ou câblés en paralèlle.
cliquez pour agrandir : photo/16_maitre_B.jpg Le câblage va consister à souder la nappe 10 fils directement sur les pin de l'ex-NEC. C'est un peu "sauvage", mais c'est très efficace. Attacher la nappe au support HE10 pour éviter l'arrachage ...
On peut faire ce câblage sur plusieurs cartes "maître", en les mettant en paralèlle (sauf le CS) pour gérer plusieurs affichages, comme le maître et ses 2 esclaves.

NEC
Pin
Nom Usage No de fil
nappe 10 fils "B"
Entrée ARDUINO
MEGA/UNO
42 VSS GND 0 Volts 10 GND
25 D0 data poids faible 1 32 / 2
24 D1 data 2 33 / 3
23 D2 data 3 34 / 4
22 D3 data poids fort 4 35 / 5
8 /RE /reset - tiré au +5V(1) -
7 /WE /write 5 36 / 6
29 /CS /chip select local (2) 6 37 / 7
28(1°esclave) /CS2 /chip select unité 2 7 (3) 38 / 8
27(2°esclave) /CS3 /chip select unité 3 8 (3) 39 / 9
30 READY prêt - -
21 VDD + 5 Volts 9 Vcc 5Volts
- Potentiomètre
de test
- - A0
- Led
heart-beat
- - 12
(1) tiré au +5V par une résistance de 20kOhms entre pin 4 et 6 du DB15 du 1° maître
(2) tiré au - GND par une résistance de 20kOhms entre pin 3 et 7+8 du DB15 du 1° maître si seul et non câblé sur ARDUINO
(3) Pin 7 et 8 si esclaves connectés par DB15, ou pin 6 du 2° puis pin 6 du 3° "maître"

cliquez pour agrandir : photo/16_triplette.jpg Le programme '_16_LCD_jumbo_triple' va permettre de tester ce montage à 3 modules.
cliquez pour agrandir : photo/16_triplette_b.jpg Voici les 3 modules assemblés, en phase (_16_LCD_jumbo_u_horloge) où on affiche l'heure et une espèce de bar-graphe qui avance avec les secondes ...
J'ai ajouté à droite des condensateurs de découplage sur l'alimentation, ayant eu des soucis, mais qui venaient en fait d'un micro-pont de soudure lors des liaisons des deux-points (vu les dimensions des pins, c'est facile !)...
cliquez pour agrandir : photo/16_triplette_c.jpg ... et dans leur boitier d'origine, en phase 'heure et date' (_16_LCD_jumbo_u_horloge). Ils ne sont pas rétro-éclairés, mais le contratse est très bon, un simple éclairage par quelques leds blanches sur un bandeau devrait suffire dans la pénombre ...
Remarquez que mon horloge n'étant pas (encore) synchronisée, on est le 01/01/1970 à 00h00 au démarrage (heure "UNIX")!

   
Vers le début Vers Page 2 Vers sommaire "U" Une horloge JUMBO + afficheur récepteur I2C
Le programme "_16_LCD_jumbo_u_horloge" est, comme son nom l'indique, une horloge sur 6 à 18 digits selon le nombre de modules montés, mais qui donne aussi la date, la valeur du potentiomètre cablé en A0, et affiche des messages arrivants sur la voie série ou (bientot) le bus I2C (adresse 2), soit sur le LCD , soit musicalement (morse et musique).
Messages Fonction Affichage Morse Musique Détails
Mxxxxxxxxxxxxxxxx Message jusqu'à 16 caractères si MAJUSCULES si minuscules -
Thh,mm,ss,jj,mm,aa Mise à l'heure de l'horloge locale
???Axxxxxxxxxxxxxxxx Affichage jusqu'à 16 caractères 1er caractère - -
???Kxxxxyyyyzzzzttttuuuuvvvv Kelvin:envoi infos météo - - -

   
Vers le début Vers Page 2 Vers sommaire "V" Cohabitation avec un LCD classique
Pourquoi ne pas réutiliser les 4 sorties de datas d'un LCD classique pour piloter notre jumbo ???
Bien sûr, les modules lcdcrystal ne vont pas marcher pour ce jumbo LCD, car le protocole n'est pas du tout le même.
Le CS sera différent, et impératif !
Le programme '_16_LCD_jumbo_v_lcd' va permettre de tester ce montage à 3 modules.

la suite : horloge RTC ... la suite : horloge RTC ... La page principale ... La page principale ...

Photos de la page :
cliquez pour agrandir : photo/16_DB15A.jpg cliquez pour agrandir : photo/16_esclave.jpg cliquez pour agrandir : photo/16_esclave_B.jpg cliquez pour agrandir : photo/16_horloge.jpg cliquez pour agrandir : photo/16_lcd_jumbo.jpg
16_DB15A 16_esclave 16_esclave_B 16_horloge 16_lcd_jumbo
cliquez pour agrandir : photo/16_ligne.jpg cliquez pour agrandir : photo/16_maitre.jpg cliquez pour agrandir : photo/16_maitre_B.jpg cliquez pour agrandir : photo/16_maitre_modifie.jpg cliquez pour agrandir : photo/16_triplette.jpg
16_ligne 16_maitre 16_maitre_B 16_maitre_modifie 16_triplette
cliquez pour agrandir : photo/16_triplette_b.jpg cliquez pour agrandir : photo/16_triplette_c.jpg
16_triplette_b 16_triplette_c

Dernière mise à jour : 11:40:03 18/09/2020