Conception de modules afficheurs à LED en remplacement des afficheurs LCD défectueux dans les Citroën CX
Vous possédez une Citroën CX phase II, et votre barrette d’afficheurs LCD est défectueuse ?
Cet article vous propose une solution inédite pour remédier au problème !
Sommaire
- 1Pour quoi faire ?
- 2Les différentes versions
- 3Les étapes du rétrofit
- 3.1Brochage du connecteur d'entrée AMP :
- 3.2Brochage des écrans LCD
- 3.2.1Écran LCD de température
- 3.2.2Écran LCD d'horloge
- 3.2.3Brochage déterminé
- 3.2.4Écran OdB
- 4Conception du schéma électronique
- 4.1Aparté sur le pilotage des écrans LCD
- 4.2Le schéma ! (module LED pour la température)
- 4.2.1Connecteurs de gauche (SV1 & SV2)
- 4.2.2Circuits intégrés XOR
- 4.2.3Transistors MOSFET
- 4.2.4Partie alimentation
- 4.2.5Bloc autour de U1 (AOP = amplificateur opérationnel = comparateur)
- 5Le prototype
- 6La carte électronique (PCB)
- 7Essais !
- 7.1Premiers tests
- 7.2Essais routiers
- 8Bilan des tests, et suite du projet
- 8.1Points à améliorer ou corriger pour la version 2a
- 8.2Détails sur le point 4.
- 8.3Suite du projet
Pour quoi faire ?
Problème bien connu : avec le temps, tous les afficheurs LCD de CX sont morts ou en passe de mourir. Les afficheurs LCD ont souvent des problème de contacts (c’est le boitier qui plaque les afficheurs LCD contre la carte électronique, donc quand le boîtier est cassé – et c’est très souvent le cas – l’afficheur LCD n’est plus plaqué et il n’affiche plus rien).
Et problème plus grave car irrémédiable : les afficheurs LCD "se vident" (deviennent transparents et n’affichent plus rien).
Bref, ces afficheurs LCD ont fait leur temps, et sont maintenant quasiment introuvables, il est donc grand temps de trouver une solution !
Alors des solutions, en fait il en existe déjà plusieurs :
- Certains refont les afficheurs avec d’autres récupérés sur d’autres CX, mais ça ne tient jamais bien longtemps, et les afficheurs commencent à se faire vraiment rares comme je disais.
- Un Géorgien a refait la barrette complète, sur base de microcontrôleur / microprocesseur récent : https://www.youtube.com/watch?v=Y7T9V95xVB4
- Dans le même principe, certains membres du forum de l’Agence CX ont aussi commencé une refabrication complète : https://www.lacitroencx.com/viewtopic.php?p=301398
Donc pourquoi se lancer dans encore une autre refabrication ?
Parce que j’ai envie de partir sur une autre piste que les projets existants. Pour tout dire, je ne suis pas convaincu par les solutions existantes, qui sont toutes à base d’écrans LCD (donc qui craignent le gel et la chaleur) ; la solution présentée ici va garder la barrette d’origine et toute son intelligence pour ne remplacer que les écrans LCD par des modules à afficheurs à LEDs.
Cerise sur le gâteau, cette solution permet de conserver de manière certaine et sans bug toutes les fonctionnalités de la barrette d’origine (dont il existe à minima 8 versions), notamment l’allumage des voyants au tableau de bord, le clignotement en cas de surchauffe, l’horloge qui reste à l’heure, …
Les différentes versions
Ci-dessus quelques photos de 3 versions différentes des barrettes d’afficheurs LCD de CX.
- La carte la plus en haut est une version 3 afficheurs : température d’huile (tout à gauche), température d’eau, puis horloge.
- La carte du milieu est une version 4 afficheurs "récente" (CX avec clavier codé) : température d’huile (tout à gauche), température d’eau, horloge, puis température extérieure.
- La carte du bas est une rare version 4 afficheurs avec ordinateur de bord : température d’huile (tout à gauche), température d’eau, écran ordinateur de bord (plus large), puis température extérieure.
Il existe encore beaucoup d’autres versions de ces barrettes, à priori la plupart sont basées sur les cartes électroniques du haut, sur lesquelles plus ou moins de composants sont montés selon le nombre d’afficheurs LCD présents : de 2 à 4.
De ce que j’ai compris, il existe également des CX avec seulement l’horloge, et dans ce cas ce n’est plus ces barrettes qui sont utilisées, mais un simple module d’horloge.
La version avec ordinateur de bord (afficheur plus large, et pas de boutons pour le réglage de l’horloge, tout se fait depuis le clavier dédié) est antérieure à la version sans ordinateur de bord !
Ce qu’il faut retenir : au niveau des écrans LCD, il y a à priori 3 versions pour toutes ces barrettes :
- écrans LCD températures : ce sont tous les mêmes, les logos changent selon leur position dans la barrette, c’est obtenu simplement avec les contacts qui sont agencé différemment selon la position des écrans dans les barrettes, afin d’allumer le bon logo (température d’huile / d’eau / extérieure)
- écran LCD horloge : simple écran avec 4 digits, un séparateur ‘:’, et un logo "AM" / "PM" (heure à l’anglaise …)
- écran LCD ordinateur de bord (OdB) : alors celui là est spécifique à l’OdB, et je le cherche désespérément pour pouvoir le refabriquer en version LED, donc si vous l’avez, contactez-moi ou laissez un commentaire à la fin de l’article !
Les étapes du rétrofit
Dans ce paragraphe, je vais décrire comment j’ai fait pour retrouver les informations dont j’avais besoin sur les barrettes d’afficheurs existantes afin de créer un module LED.
Brochage du connecteur d’entrée AMP :
Première étape : déterminer le brochage de la barrette pour pouvoir la brancher. Cette étape n’est pas bien compliquée, en effet le brochage est disponible dans les docs Citroën que l’on trouve en ligne.
En voici une copie, avec la photo qui va bien.
1 : masse (patte la plus vers l'intérieur du PCB)
2 : thermistance température extérieure (à priori 6.4kΩ à 0°C et 3kΩ à 20°C)
3 : "
4 : thermistance température d'huile (à priori 850Ω à 80°C et 160Ω à 100°C)
5 : "
6 : thermistance température d'eau (à priori 800Ω à 80°C et 350Ω à 100°C)
7 : "
8 : +12V éclairage (veilleuse)
9 : +12V après contact
10 : +12V permanent (pour l'horloge)
11 : "signaux de références" (j'imagine une horloge ?)
12 : entrée des données (en provenance de l'ordinateur de bord, pour les versions équipées)
13 : sortie pour allumage voyant STOP
14 : sortie pour allumage voyant eau
15 : sortie pour allumage voyant huile
ATTENTION : il semblerait que Citroën ou le concepteur de la barrette (BORG) se soit trompé dans la numérotation du connecteur, en effet, la broche "1″ commence normalement de l’autre coté de ce que j’ai marqué … Mais le brochage que j’ai extrait de la doc Citroën correspond bien aux numéros sur ma photo (et donc pas aux numéros officiels de ce connecteur).
Brochage des écrans LCD
Là on rentre un peu plus dans le "reverse engineering" : il s’agit de déterminer le brochage des écrans LCD, vu qu’on va se mettre en lieu et place de ces derniers, il faut trouver quel fil correspond à quoi.
Juste pour être clair dans mes explications, voilà la numérotation (arbitraire) que j’ai adoptée pour ces écrans LCD. J’ai simplement repris la numérotation utilisée pour les circuits intégrés en électronique, où on commence en bas à gauche et on termine en haut à gauche.
Écran LCD de température
J’ai ensuite soudé des petits fils sur toutes les broches de ces supports d’écrans, en prenant soin de pouvoir toujours remettre l’écran LCD en place :
Ensuite il ne restait plus qu’à utiliser un potentiomètre pour simuler les capteurs de température, et faire bouger le dernier digit (par exemple).
Puis j’ai utilisé mon analyseur logique ("Saleae" rouge sur la photo) qui permet de voir 8 signaux en même temps (beaucoup plus rapide que de les faire un par un), afin de voir quels signaux bougeaient en fonction des chiffres affichés.
Par exemple, sur les courbes ci-dessus, les 8 "Channel x" de l’analyseur sont branchés sur 8 fils de l’afficheur dont je cherche le brochage.
Je règle le potentiomètre de manière à faire changer le dernière digit de 0 à 9 : changements repérés par les labels 0 à 9 en haut des courbes.
Ensuite je n’ai plus qu’à procéder par déduction, par exemple pour la courbe violette, le segment est allumé pour tous les chiffres sauf le chiffre 2 => c’est forcément le digit ‘c’ (en bas à gauche) qui est commandé par ce fil.
Note : je reviendrai plus tard dans l’article sur la façon de piloter les afficheurs LCD, car en vérité, il y a un peu d’électronique sur la plaque d’essai pour pouvoir afficher les signaux comme je l’ai fait sur l’analyseur logique ; sans cette électronique, on verrait un brouillard de signaux à 77Hz.
Écran LCD d’horloge
Déterminer le brochage de cet écran est encore plus simple, en effet, le circuit intégré Philips PCF1172BT que l’ont voit à coté de l’écran est le circuit de gestion de l’horloge justement ! Donc il n’y a plus qu’à trouver la datasheet de ce composant, puis suivre / tester les fils entre le composant et l’écran.
Bon, il y a quand même une petite blague : on ne trouve pas la datasheet du composant PCF1172BT sur internet, mais celle du composant PCF1172CT ; cette petite lettre qui peut sembler anecdotique ne l’est pas du tout … En fait, la version B est semble t’il une version miroir de la version C, c’est à dire qu’ils ont monté la puce sur le dos à l’intérieur du composant ! Cette information est confortée par le fait que le point blanc sur le composant – point qui identifie la patte 1 – est situé en haut à gauche du circuit intégré, alors que normalement il est toujours situé en bas à gauche. (L’idée derrière le circuit "Miroir" était très probablement de proposer aux clients de pouvoir router les afficheurs LCD sans croisement de pistes selon que le circuit intégré PCF1172 était situé du même coté que l’afficheur LCD ou non sur le PCB).
Brochage déterminé
On a toutes les infos, il ne reste plus qu’à les regrouper ! J’ai fait ça sur une feuille manuscrite :
- En haut à gauche il y a le dessin d’un écran LCD de température, ainsi que la désignation standard de chaque segment, de ‘a’ à ‘g’.
- En haut à droite : tous les segments affichables sur les écrans LCD
- Tableau :
- Les lignes correspondent au brochage des écrans LCD expliqué ci-avant (26 broches pour chaque écran)
- Les colonnes "température" correspondent aux différentes étapes qu’il m’a fallu pour déterminer quel segment correspondait à quelle broche. Par exemple le segment 3b (afficheur 3, segment b) est piloté par la broche 19 du PCB
- Les colonnes "heure PCF1172″ correspondent aux segments de l’horloge 12h, avec entre parenthèse la broche du PCF1172 concernée.
- Les colonnes "heure PCF1171″ sont pour un projet futur de remplacer l’horloge 12h par une horloge 24h qui correspond quand même mieux à une voiture française ! Le PCF1171 est justement la version 24h du PCF1172, donc c’est l’idéeal.
Écran OdB
Comme évoqué précédemment, je ne possède pas cet écran LCD dans un état exploitable, je ne peux donc pas déterminer son brochage … Si quelqu’un passe par là et qu’il peut me prêter ça, qu’il me fasse signe, sinon il n’y aura jamais de version LED pour les barrettes avec OdB !
Conception du schéma électronique
Maintenant qu’on a toutes les infos, il est temps de passer au schéma électronique pour fabriquer les modules LEDs en question.
Aparté sur le pilotage des écrans LCD
Tout comme les afficheurs à LEDs, les afficheurs LCD ont un "fil" commun à tous les segments, nommé "Back Plane", mais au contraire des afficheurs à LEDs, ce fil commun doit être alternativement relié au "0V" puis au "5V" (par exemple) à une fréquence de quelques dizaines de hertz (mesuré à 77Hz sur la CX).
L’autre coté de chaque segment ressort sur une patte, voir la section précédente pour les détails.
Si on veut allumer (noircir) le segment "3c" par exemple, il faut envoyer un ‘+5V’ sur le segment en question quand le "Back Plane" est à 0V, puis quelques millisecondes plus tard, envoyer un "0V" sur le segment "3c" quand le "Back Plane" est passé à 5V, etc …
Si au contraire on veut qu’un segment reste transparent (éteint), alors il faut envoyer la même chose que le signal présent sur le "Back Plane".
Cette méthode permet de ne pas endommager les afficheurs LCD, qui dans le cas contraire (si ils étaient commandés avec une tension continue) verraient leurs segments rester allumés de manière plus ou moins définitive.
Ci dessous, un relevé à l’oscilloscope des signaux en question : en haut le signal back-plane (BP), et en bas, le signal d’un segment "allumé" ou "éteint" :
Si on résume tout ceci dans un tableau, voici ce que ça donne :
| Patte Back-Plane (BP) | Patte segment ‘x’ | État segment ‘x’ |
|---|---|---|
| 0V | 0V | segment éteint |
| 0V | 5V | segment allumé |
| 5V | 0V | segment allumé |
| 5V | 5V | segment éteint |
Pour les afficheurs à LED, on veut récupérer l’info "segment allumé, donc soit BP = 0 et segment = 1, soit BP = 1 et segment = 0. Les électroniciens auront reconnu la fonction qu’il nous faut pour décoder ça : c’est une porte logique "OU exclusif" (XOR). Vous en verrez plein dans le schéma qui suit, vu qu’il nous en faut une par segment !
Le schéma ! (module LED pour la température)
Ci-dessous la version 1a de mon schéma (projet complet placé sous licence open-source "CERN-OHL-W", merci de la respecter). C’est ce schéma que j’ai routé et qui a abouti à la carte électronique présentée un peu plus bas.

Module LED pour remplacer un écran LCD de température sur Citroën CX. Révision 1a
Dans les sections ci-dessous, je vais décrire le schéma en détail. Vous pouvez bien sûr sauter au paragraphe suivant si ces sections ne vous intéressent pas.
Connecteurs de gauche (SV1 & SV2)
Rien de particulier ici, les connecteurs sont en fait des contacts à ressorts qui vont venir se reprendre sur les plages de la barrette d’afficheurs, là où il y avait les zébras des écrans LCD à l’origine. Le brochage a été déterminé dans les étapes précédentes, il est juste repris ici pour la compréhension du schéma.
Pour mémoire, les désignation du type "2g" etc … signifient "2 ème afficheur 7 segments" en partant de la gauche, et segment ‘g’ (voir la feuille manuscrite pour les détails).
Circuits intégrés XOR
Sur le schéma vous verrez plein de circuits intégrés "4070″ (HEF4070 = Philips, HCF4070 = ST Microelectronics, CD4070 = Texas Instruments, …, tous sont équivalents). Ces circuits intègrent 4 portes OU-exclusif (XOR) à 2 entrées par circuit ; ce sont des grands classiques des années 1980, et ils sont toujours fabriqués. Il existe des versions plus récentes qui sont plus rapides, mais sans intérêt pour nous car on n’a aucun besoin de vitesse, et surtout les versions historiques sont très robustes vu qu’elles supportent des alimentations entre 3 et 18V, au contraire des versions actuelles qui ne supportent que 5-6V au max (si pour une raison X ou Y (régulation d’alimentation qui lâche par exemple), la tension batterie (12V) se retrouve à alimenter ces circuits, ils tiendront sans problème le coup, et c’est une des raisons pour lesquelle je suis parti sur ceux là, même si je les alimente en 5V car les signaux en provenance des barrettes sont des signaux 5V).
Il y a 26 fils pour les afficheurs LCD de température (également ceux d’horloge), ce qui nous fait un maximum de 25 portes OU-exclusif à avoir + un fil back-plane. Dans la pratique, on va se débrouiller avec 24 portes = 6 circuits 4070 de 4 portes, car on n’a pas la place pour mettre plus de toutes façons. Pour l’afficheur de température, c’est plus que suffisant, et pour l’afficheur de l’heure, on utilisera une petite astuce pour la porte manquante.
Toujours pour l’afficheur de température, vous noterez quelques composants en l’air (R48 par exemple). Ils ne servent strictement à rien, mais je les ai mis pour réserver la place lors du routage, en prévision de l’afficheur LCD de l’horloge, qui lui aura besoin de tous les composants.
Transistors MOSFET
Une fois l’info "Segment éteint" / "segment allumé" fabriquée et disponible en sortie de porte logique XOR, il nous reste à commander les afficheurs à LEDs.
Les afficheurs 7 segments sont un assemblage de LEDs (9 LEDs dans ceux choisis, car deux points décimaux en plus). La plupart des afficheurs existent en version Cathode commune (toutes les cathodes (= le moins) des LEDs reliées entre elles dans l’afficheur) ou Anode commune (l’inverse ; version de loin la plus courante).
Je suis bien sûr parti sur une version à Anode commune, qui je l’espère aura une meilleure pérennité, et qui surtout permet de relier facilement l’anode à une tension différente de celle de la logique (voir ci-après).
Un afficheur à LED ça consomme plusieurs mA (en général entre 3 et 20mA par segment, selon la technologie et selon la luminosité voulue), ce qui est trop pour être commandé par les portes logique directement. Par ailleurs, je voulais éviter de recréer une alimentation à part – question de fiabilité dans le temps – donc l’anode commune des afficheurs est connectée au +12V après contact (et pas au 5V des portes logiques), ce qui présente l’avantage de ne nécessiter aucune alimentation externe, mais par contre empêche toute commande directe depuis une porte logique 5V (sinon les segments resteraient en permanence allumés, puisque même si la porte logique sort un niveau 1 (pour éteindre le segment), ce niveau vaut 5V, donc le segment voit "12 – 5 = 7V" à ses bornes => il reste allumé).
Il faut donc une interface entre les portes logiques et les afficheurs à LEDs : ce sont des transistors type MOSFET canal N.
Quand ils reçoivent un "0V" sur le grille, ils sont ouverts, donc la tension sur leur drain est "libre" => le segment va s’éteindre.
Et quand ils reçoivent un "5V" (en provenance de la porte logique) sur leur grille, ils sont fermés, donc ils relient le segment concerné à la masse (au travers d’une résistance 1.1kΩ) pour limiter le courant dans la LED.
Vous noterez deux choses :
- Les résistances de 1.1kΩ sont là pour régler le courant dans les segments en mode "jour" : I = (Vbat – Vled) / R = (12 – 2) / 1100 = 9.1mA (calcul en première approximation, courant moyen fixé à la moitié de ce que supportent les afficheurs). Les résistances seront ajustées après mes essais routiers.
- Les résistances de 330kΩ : avec des transistors MOSFET elles ne sont normalement pas nécessaires, mais il y a une raison pour laquelle je les ai mises : elles servent à filtrer les "glitchs" de commutation. Si on prend le cas d’un segment allumé par exemple : rappelez-vous que les signaux bougent en permanence, et entre le moment ou le signal "back plane" passe à 0 et le signal du segment concerné passe à 1, les deux signaux n’étant pas parfaitement synchronisés, et il peut y avoir un court instant où les deux sont à ‘0’, ou les deux à ‘1’, ce qui va créer un glitch à 0V en sortie de porte logique qui n’a pas lieu d’être. Voyez la photo ci-dessous pour une visualisation du phénomène : la courbe du haut montre le glitch (signal qui passe brusquement à 0V pendant 1µs environ, avant de repasser à 5V). Les deux courbes du bas sont les deux signaux qui se croisent (ils bougent en opposition afin d’allumer le segment, tel que décrit juste au dessus).
On pourrait laisser comme ça car le glitch en question sera invisible à l’oeil nu (il ne dure qu’une microseconde, soit 0.000001s sur ma mesure ci-dessus), mais c’est toujours mieux de le filtrer, ça va moins faire chauffer les transistors, et accessoirement faciliter le routage ! Vu qu’on est ultra contraints par la place, et vu qu’il n’y a nullement besoin d’une grande précision pour filtrer ça, j’ai fait un filtre passe bas avec la résistance 330kΩ en question, et le condensateur présent sur la grille à l’intérieur du MOSFET (inhérent aux MOSFET) qui vaut Ciss = 34pF typique. Ce n’est pas d’une grande précision, mais c’est largement suffisant pour notre besoin.
Le filtre ainsi réalisé aura un Tau (durée pour charger 63% du condensateur d’entrée) = R x C = 330k * 34p = 11µs, à comparer aux 1µs de durée des glitchs : les MOSFET choisis (2N7002HS) commencent à basculer autour de 1.75V (Vgsth), soit 35% du 5V ; du coup on voit de manière empirique qu’il faudrait que le glitch dure au moins 5 à 6µs pour que la tension à l’entrée des MOSFET passe les 1.75V et donc bascule, or le glitch ne dure qu’une µs, donc le MOSFET restera dans son état d’origine si un glitch se présente, CQFD !
Voilà, vous avez toute la chaîne pour piloter un afficheur à LED à partir de signaux de commande prévus pour des afficheurs LCD !
C’est de l’électronique assez simple au final ; la grosse contrainte pour moi a été le manque de place, puisque tout doit tenir là où il n’y avait qu’un écran LCD à la base.
Partie alimentation
Toujours dans l’optique de faire un module LED plug an play, je devais récupérer une alimentation sans avoir besoin de souder des fils (l’écran LCD ne nécessite aucune alimentation, il n’y a donc rien de récupérable sur les 26 broches du LCD).
Pour cela il y a en revanche la lampe à incandescence juste en dessous de chaque écran LCD. Je viens donc récupérer l’alimentation là dessus, avec des contacts à ressorts (SV3 et SV4) directement soudés sur mon module LED. Sur le principe c’est très simple, mais on verra après que ce n’est pas si simple que ça en fait.
Et donc la partie alimentation en question :
- le transistor Q14 sert à protéger contre les inversions de polarité (le transistor agit en tant que diode pilotée, ce qui permet d’éviter les pertes d’une diode classique).
Classiquement on utilise une diode sur +Vcc (SV3), mais je n’ai pas fait ça, en effet, si on monte le module à l’envers sur la barrette, la broche SV4 qui est normalement la masse va se retrouver au +12V ; avec la diode, la broche SV4 resterait connectée à ma carte, et forcerait donc l’ensemble du montage au +12V, ce qui pourrait être dommageable pour les signaux de la barrette d’afficheurs LCD qui verraient arriver un +12V. En utilisant un transistor sur la broche moins (SV4), ça permet de déconnecter cette broche en cas d’inversion de polarité grace à Q14 ; seule restera la broche SV3 qui elle sera à la masse, et donc sans danger pour le reste de la barrette. - La résistance 150Ω 3W est une résistance de puissance pour remplacer la lampe à incandescence, de manière "éternelle" (au contraire d’une lampe, ce genre de résistance bobinée ne grille à peu près jamais, surtout quand elles sont surdimensionnées comme là). Cette résistance sert de charge pour différentier le mode jour du mode nuit (feux allumés). On verra par la suite que cette solution qui a le mérite d’être très simple n’est malheureusement pas viable.
- Le condensateur sert à filtrer un peu l’alimentation (pour l’amplificateur opérationnel U1)
- L’ensemble R60 et D1 (diode zener 5V1) permet de faire une alimentation 5V très faible encombrement et ultra fiable (auto protégé contre les inversions de polarité et très tolérant aux surtensions). Cette alimentation sert uniquement à alimenter les portes logiques CD4070 ; ces portes ne consomment que très très peu de courant, il n’est donc pas nécessaire d’avoir une alimentation de grande puissance. Je passe sur les calculs, mais le choix de la résistance permet d’assurer au minimum 1mA de courant d’alimentation avec une tension d’entrée de 6V mini, et le choix de taille de la résistance permet de supporter jusqu’à 20V en entrée, ce qui est normalement largement suffisant.
- A noter que j’aime bien mettre une grosse diode zener ou une transil à l’entrée de toute alimentation (broches SV3 & SV4), ce qui permet souvent de sauver les cartes en cas de pépin (surtension, inversion de polarité, mauvais fil qui touche, …). La diode va généralement mourir en court-circuit, ce qui protège le reste de la carte. Là vu le manque de place, je n’ai pas pu mettre cette diode, mais c’est en partie compensé par le choix des composants : Q14 (inversion polarité), D1 (zener qui supporte de larges écarts d’alimentation), U1 (comparateur directement sur Vcc mais qui supporte jusqu’à 42V d’alimentation), CD4070 (portes logiques qui supportent jusqu’à 18 voire 20V en cas de pépin).
Bloc autour de U1 (AOP = amplificateur opérationnel = comparateur)
Comme évoqué ci-avant, l’afficheur dispose d’un mode jour (LEDs allumées à fond) et d’un mode nuit. Pour le mode nuit, on ne peut pas de contenter de baisser la tension d’alimentation (ce qui est fait pour les lampes à incandescence), car les LEDs éclairent encore beaucoup trop fort !
Diviser la tension d’alimentation par deux ne change que très peu la luminosité perçue … pour la nuit il faut vraiment que ça ne dérange pas les yeux.
Du coup la technique employée est de couper l’alimentation des LEDs de manière cyclique : par exemple, on va allumer les LEDs pendant 3ms toutes les 15ms. Grace à la persistance rétinienne (idem pour les télé), l’oeil ne verra rien scintiller, car la fréquence de découpage est supérieure à 50Hz (1/0.015 = 67Hz environ). Par contre la quantité de lumière émise va être proportionnelle au rapport cyclique : 3 * 100 / 15 = 20% de la pleine luminosité.
Et donc le montage autour de U1 permet de faire ceci : régler le rapport cyclique (mini 2.4% de la pleine luminosité environ). L’ajustement se fait par une toute petite résistance ajustable.
Je ne vais pas rentrer dans les détails, sachez simplement que le montage s’appelle un multivibrateur astable basé sur un amplificateur opérationnel (ici plutôt un comparateur pour avoir des temps de commutation courts). R50 et R61 permettent de charger / décharger C2, qui est le condensateur qui fait le timing pour le rapport cyclique. Les deux diodes D3 et D4 permettent d’avoir un chemin différent pour le temps à l’état haut et le temps à l’état bas (et ainsi régler le rapport cyclique).
R53 vient perturber l’entrée e+ de l’AOP et permet également de régler les timings. R51 et R52 permettent de fixer un point décentré, afin de privilégier le temps ON le plus court possible (donc la luminosité la plus basse). En effet, on ne peut pas jouer que sur la valeur du potentiomètre pour ça, sinon il y a trop de courant qui passe dans son curseur, et il va griller (d’où la présence de R5 pour limiter le courant à 0.5mA dans le curseur)
Enfin, a noter une petite originalité par rapport aux schémas classiques : D3, zener de 8V2, qui permet d’empêcher le montage de fonctionner si la tension d’alimentation est trop importante. Raison ? gérer le passage en mode jour !
En mode jour, la tension d’alimentation du module LED est d’environ 12V (+12V après contact, moyennant l’alternateur, etc …) => la diode zener empêche l’AOP de faire redescendre la tension sur l’entrée e-, donc on a toujours e- > e+ en cas d’alimentation suffisante, et la sortie de l’AOP reste à 0V (ce qui force le transistor Q13 = MOSFET canal P à être 100% passant, donc les LEDs allumées à fond).
En mode nuit, la consommation de la résistance de charge 150Ω 3W vue précédemment permet de faire chuter la tension aux bornes du module LED, donc la diode zener reste bloquée et l’AOP peut faire son job de multivibrateur pour régler la luminosité de nuit !
En pratique, on verra par la suite que même si le principe fonctionne très bien, la solution choisi n’est malheureusement pas viable avec plusieurs modules par barrette, car la consommation avec la résistance de charge est trop importante …
Voilà pour l’analyse de schéma !
Le prototype
Une fois le schéma fait, j’ai vérifié que tout était OK en cablant le schéma sur des "breadboards" (plaques d’expérimentation). Ci-dessous vous verrez le circuit complet, avec les 6 circuits intégrés XOR, le potentiomètre de réglage de la luminosité, le potentiomètre de simulation de la température, …
Les logos en bas de la photo sont en Vinyle, découpés par un ami. L’idée est simplement d’éclairer derrière avec des LEDs, avec un logo différent pour chaque afficheur de température.
La carte électronique (PCB)
Je ne vais pas trop rentrer dans les détails, mais cette étape a été très longue, du fait des grosses contraintes de place !
Au final j’ai utilisé des composants très petits, car il n’y avait pas le choix, mais je suis quand même arrivé à rester en circuit 2 couches (coût moindre et fabrication plus facile). Les composants sont en taille 0402 (petites résistances et condensateurs) / SOT363 (2×2.2mm) pour les transistors / SOD523 (diodes) / …. On n’est pas au niveau des téléphones, mais ça commence à être vraiment petit et difficilement soudable à l’oeil nu (j’utilise un microscope dédié pour ça).
Les plus petites pistes font 0.1mm de large, idem pour les espacements … ça aussi c’est pas bien gros !
Pour se connecter au circuit d’origine, j’ai prévu deux options : des contacts à ressort, qui viennent donc faire contact sur les pastilles prévues initialement pour les zebras des afficheurs LCD. Également prévu des demi-trous métallisés (castellated holes en anglais) sur la tranche du PCB, permettant de souder le module sans utiliser de contact à ressort.
Trouver les contacts à ressort n’a pas été une mince affaire, car le pas est petit (donc les contacts doivent l’être aussi !), et non standard (donc impossible d’utiliser des barrettes toutes prêtes). La soudure de ces contacts est aussi très difficile, car l’étain a tendance à filer à l’intérieur de ces derniers, et bien sûr après ils ne fonctionnent plus …
Pour éviter de reproduire les erreurs du circuit d’origine, j’ai prévu 4 vis de fixation qui se prennent directement sur la carte d’origine, ainsi même si le boîtier plastique est cassé, il ne participe aucunement à maintenir les contacts entre les modules et la carte électronique.
Essais !
Premiers tests
Ci-dessous 3 photos qui montrent les premiers tests sur table. Les deux dernières photos montrent respectivement le mode nuit (faible éclairage) et le mode jour. Le filtre teinté placé devant les afficheurs est indispensable car il améliore considérablement la visibilité. Ne pas se fier au halo qu’on voit sur les photos : dans la réalité il n’y a aucun halo.
Essais routiers
L’étape suivante des tests a bien sûr été d’aller essayer la barrette d’afficheur en conditions réelles. L’afficheur LED est tout à gauche de la barrette sur les images ci-dessous.
La première photo montre l’afficheur avec une forte luminosité ambiante, mais l’afficheur à l’ombre : les afficheurs LEDs éclairent plus fort que les LCD, il va falloir baisser la luminosité (et on verra juste après que c’est une bonne nouvelle !). Ne pas prêter attention au logo qui n’est pas en version définitive, je vais changer de modèle de LED pour avoir un meilleur éclairage, et j’attends un écran en INOX pour le recentrer correctement.
La seconde photo montre les afficheurs avec un soleil qui arrive directement dessus. Là les afficheurs LCD sont plus visibles, du fait qu’ils réfléchissent la lumière qui arrive sur la feuille de plastique semi-réfléchissante située à l’arrière de l’écran LCD (voir les photos précédentes). L’afficheur LED reste malgré tout visible, donc c’est OK.
Je n’ai pas fait de photo dans la nuit (en mode nuit), principalement parce que mon appareil photo a beaucoup de mal dans la pénombre, mais sachez que les afficheurs fonctionnent très bien et sont très agréable en mode nuit avec le réglage de luminosité assez faible.
Bilan des tests, et suite du projet
Le premier prototype est 100% fonctionnel, sans erreur, mais pas exempt de défauts pour autant !
Points à améliorer ou corriger pour la version 2a
- En plein jour, la luminosité est trop élevée par rapport à l’original, et ça tombe bien, parce que mon module consomme trop pour la barrette ! Du coup pour la prochaine version, je vais diviser par deux la consommation de chaque segment. Il est possible qu’en plein soleil on soit un peu limite (avantage du LCD dans ce cas vu qu’il se contente de laisser passer la lumière sans en fabriquer), mais dans tous les autres cas, c’est à dire sans soleil qui arrive directement sur les afficheurs, la luminosité sera très bonne.
- J’ai prévu un masque en INOX pour afficher les logos … ce que je pensais être une simple formalité est en fait une vraie galère : impossible de trouver un fournisseur qui me découpe le masque dans de l’épaisseur 0.2 ou 0.3mm à un prix raisonnable. Pour info, au moins cher je suis à plus de 7€ par masque, en quantité 100, sachant qu’il y a 4 voire 5 types de masques à fabriquer, ça va couter à minima 5 * 700 = 3500€, c’est beaucoup trop.
- Après de nombreuses heures de recherche, j’ai fini par trouver un filtre teinté pour écran LED d’une épaisseur d’1mm (la plupart ne descendent pas en dessous de 2mm), donc ça c’est OK. En revanche, je me rends compte que les LEDs derrière les logos n’éclairent pas assez fort, et qu’en plus il leur faut un filtre translucide blanc si on veut voir quelque chose d’uniforme.
Je vais tester d’autres modèles de LEDs et acheter des filtres translucides, à suivre … - Et le problème le plus embêtant : je n’avais pas pensé au fait que la détection de l’allumage des phares que j’avais faite en mode "basique" (résistance de charge 150Ω 3W) ne fonctionnerait pas avec plusieurs modules.
Détails sur le point 4.
Ci-dessous des explications techniques sur ce qui pose problème pour la détection du mode nuit … n’hésitez pas à passer à la suite sans lire, c’est technique !
- Chaque ampoule fait 1.2W, soit une résistance équivalente de 120Ω à 12V (P = U² / R).
- Le mode nuit de la barrette d’origine est fait en insérant des résistances de puissance en série avec les ampoules à incandescence : 23.5Ω (2×47Ω en //) pour la version 4 afficheurs, 34Ω (2×68Ω en //) pour la version 3 afficheurs, et j’imagine 2x 100Ω en // (ou 1x 51Ω) pour la version 2 afficheurs, mais non vérifié.
- Le but est bien sûr de faire chuter la tension aux bornes des ampoules, à environ 6.5V (en pratique c’est plutôt 5.2V mesurés, car la résistance d’une ampoule c’est pas linéaire), pour qu’elles éclairent moins fort la nuit (Note : au passage, plus il va y avoir d’ampoules grillées dans la barrette, et plus les ampoules restantes vont éclairer fort en mode nuit).
- Et donc pour passer en mode nuit, la solution simple que j’ai utilisée c’est de mettre une résistance de puissance en parallèle avec l’alimentation de mon module LED, de valeur à peu près équivalente à une ampoule, et de mesurer la tension aux bornes de cette résistance (< à 9-10V => mode nuit). La solution fonctionne pour 1 module, mais pour plusieurs modules c’est pas bon, car ça va beaucoup trop consommer de courant (consommation des résistances de puissance + consommation des afficheurs LEDs = beaucoup trop pour la barrette ! Risque de griller la diode d’entrée et le transistor "jour/nuit" assez rapidement).
Du coup ce weekend j’ai réfléchi à une solution plus électronique, et moins consommatrice de courant, qui s’attelle à mesurer la résistance série présente dans le circuit (les fameuses 2×47Ω ou autres en //) :
- si j’arrive à mesurer une résistance série, alors je bascule en mode nuit (luminosité réglable)
- sinon, je me mets en mode jour et j’allume les afficheurs à fond.
Toute la difficulté est que la différence entre "résistance série présente" et "résistance série absente" est assez ténue … il faut arriver à faire la différence de manière certaine entre 23.5Ω, et 3.5Ω ("résistance" aux bornes du transistor).
L’idée de départ pour ça était que chaque module commute en parallèle de l’alimentation une faible charge un très court instant (invisible à l’oeil nu), pour mesurer la chute de tension sur l’alimentation, et ainsi en déduire la résistance série de l’alimentation.
Sur le principe, c’est simple, il suffit de mesurer la chute de tension quand la charge est commutée. En pratique, c’est vraiment pas simple, car il y a jusqu’à 4 modules totalement indépendants, qui en plus affichent des choses imprévisibles. Du coup la consommation instantanée est totalement imprévisible, et en plus de ça la tension batterie est inconnue, il est à peu près impossible de détecter de manière fiable si la résistance série est présente (mode nuit) ou pas.
Au final, je vais partir sur "le module horloge" qui fait la commutation de charge + mesure pour savoir si la résistance série est présente, et les autres modules qui ne font que la mesure, ce qui permettra déjà de maîtriser un peu mieux la consommation globale. Si ça ne fonctionne pas, je n’ai pas d’autre idée que de reprendre l’information en amont, avec un fil, mais bien sûr on perd le concept de "Module LED", donc ce serait bien dommage … à suivre !
Suite du projet
J’ai bossé sur le schéma de la version 2a du module pour la température, et en parallèle le schéma de la version 1a du module LED pour l’horloge. Je vais probablement lancer un prototype de l’horloge, en même temps que la version 2a pour corriger les défauts constatés sur le module pour la température.
J’ai aussi une solution à trouver pour les logos pour éviter que ça ne coûte une fortune.
Je vais essayer les afficheurs verts (conforme aux couleurs d’origine), mais ne vous attendez pas à un vert pâle comme l’origine, ce sera plutôt un vert "pétant" !
Et j’aimerais faire des plaques taraudées (en lieu et place des écrou) pour faciliter l’assemblage des modules sur la barrette de la CX.
Enfin, si quelqu’un me procure un écran LCD pour OdB (prêt), je peux me pencher sur cet afficheur également. Ceux qui sont intéressés, ne traînez pas trop après je ne reviendrai pas sur le projet car je ne serai plus dedans !