Réparation d’un écran LCD Samtron 94v – Mode non optimal

Certains écrans LCD SAMSUNG / SAMTRON sont connus pour avoir des problèmes après quelques années de fonctionnement. J’ai récupéré un écran SAMTRON 94 H.S qui a des symptômes plutôt étranges. Pour une fois, nous n’avons pas affaire aux classiques condensateurs secs. L’écran s’allume mais ne veut rien afficher d’autre que le message « Mode non optimal ».

Mode non optimal
Mode non optimal

A priori, il devrait donc s’agir non pas de la carte d’alimentation mais plutôt de la carte logique. Quelques recherches à coup d’oscillo et de multimètre ne donnent rien de bon.  Sans disposer du datasheet du microcontroleur NT68F63LG ni du manuel de service de l’écran, difficile d’aller plus loin avec mes connaissances.

L'électronique

Je me rabat donc sur Internet 🙂 J’ai trouvé au fin fond d’un forum une personne qui discutait d’une panne sur un modèle similaire. Le pin 6 du NT68F63LG doit être alimenté entre 3.3v et 5v hors lorsque le problème se produit, il ne reçoit plus que 2v. Placer une résistance d’environ 50 ohms entre les pins 5 et 6 permettent de « remonter » le voltage à 4v et de régler le problème !

Fix

Voilà un fix qui coûte quelques centimes et qui prend une trentaine de minutes. Pensez-y si vous avez un écran Samsung  / Samtron qui présente les mêmes symptômes. Moi je viens de sauver un 19″ pour quelques centimes 🙂

Sauvé !

Support DIY pour caméra USB de chez Adafruit

Adafruit vend une petite webcam USB à utiliser comme outil d’inspection pour vérifier ses soudures, lire les inscriptions sur les composants, ou s’amuser avec les enfants… C’est une sorte de microscope USB low cost mais qui donne néanmoins de très bon résultats, pour peu que l’on arrive à faire la mise au point correctement. En effet, celle-ci est manuelle et dépend de la distance lentille / objet et du niveau de grossissement. Une fois le grossissement choisit, il faut approcher / éloigner le microscope pour avoir une image nette. Avec le support de base, c’est quasiment impossible de maintenir une image stable.

Microscope
Microscope

 

D’où l’idée de construire un support réglable !

Les pièces sont modélisées avec openscad puis imprimées sur mon imprimante 3D.

Support modélisé
Support modélisé

 

Fixation basse
Fixation basse
Plaque de contreplaqué 3mm
Plaque de contreplaqué 3mm
Coulisseau réglable
Coulisseau réglable
Coulisseau réglable
Coulisseau réglable
Bras de support
Bras de support
Vis de réglage
Vis de réglage
Fixation sur le support en bois
Fixation sur le support en bois
Réglage de hauteur
Réglage de hauteur
Support
Support
Molette de réglage
Molette de réglage
Molette de réglage
Molette de réglage

 

Les supports hauts et bas sont collés à l’epoxy ( JB weld, quel produit miracle 🙂

Tests :)
Tests 🙂

 

L’ensemble des fichiers pour reproduire les pièce est disponible sur Thingiverse.

 

et voici pour finir ce bref article des images à divers niveaux de grossissement.

 

Capteur d'humidité x200
Capteur d’humidité x200
Capteur d'humidité x10
Capteur d’humidité x10

 

Pour l’électronique, le grossissement x10 à x20 est largement suffisant. Au delà, c’est plus pour explorer l’infiniment petit 😉

 

P.S: vous avez vu, mes impressions sont quand même meilleurs qu’avant ! J’ai augmenté la température de l’extrusion de 185° à 220° ! Depuis fini les buses bouchées ou les bulles en cours d’impression.

 

Conversion de signaux i2c 3.3v <-> 5v

Dans mon post précédent, j’ai ajouté un bus I2C sur mon routeur MR3020. Ce bus est prévu pour fonctionner en 3.3v. Le chipset du MR3020 n’est probablement pas compatible avec des signaux 5v. Étant donné que je souhaite relier en I2C un arduino en 5V avec mon MR3020, il faut convertir les signaux 3.3v en 5v et réciproquement, la communication i2c étant bidirectionnelle.

Il existe plusieurs méthodes:

  • la première, proposée par NXP est basée sur des BSS138, des petits mosfets rapides.
  • La deuxième est basée sur un chipset spécialisé le PCA9306.

 

La première méthode est assez simple, il suffit d’utiliser 1 BSS138 par ligne de signal et 4 résistances de pullup. Le principe est décrit dans cette note.

 

NXP app note

 

La réalisation peut se faire sur un morceau de perfboard malgré le fait que les BSS138 soient des CMS. Mon circuit n’est pas très propre, mais il fonctionne 😉

 

i2c level shifter with BSS138

 

Il n’y a plus qu’à câbler les lignes L1 et L2 côté 3.3v sur les lignes SCL et SDA sur MR3020 et les lignes L1 et L2 côté 5V sur l’Arduino ou autre composant i2c 5v.

On peut retrouver ce circuit chez adafruit pour environ 4$ avec 4 lignes de signal.

Logic level converter

 

Passons maintenant au circuit à base de PCA9306. C’est le circuit que j’ai décidé d’utiliser sur le MR3020 pour la bonne raison que j’avais commandé des BSS138 et des PCA9306 donc je préfère utiliser le circuit spécialisé pour la conversion de niveaux sur bus i2c.

PCA9306 pinout

 

La lecture du datasheet nous indique le schéma pour mettre en oeuvre le convertisseur.

Schéma d’utilisation du PCA9306

Un petit tour chez Sparkfun nous confirme le schéma d’utilisation de ce composant.

Breakout board
Schéma Sparkfun

Attention toutefois, je n’ai pas le même « form factor » que le PCA9306 de sparkfun et la masse n’est pas au même endroit comme le confirme le datasheet. Suivant le boîtier, la masse est en 1 ou 4…

 

Pinning

 

Le circuit est réalisé sur une perfboard. J’ai mal coupé la perfboard et elle s’est cassée… quel c… mais bon le circuit marche quand même !

 

Pour souder le PCA9306, il faut un peu de patience et de bons yeux. Voilà une petite vidéo résumant la mise en place du PCA9306 sur une perfboard.

 

PCA9306

 

Convertisseur

 

Comme la dernière fois, nous allons tester l’I2C mais cette fois avec un composant i2c 5V, une horloge DS1307.

DS1307

 

On câble 5v, GND, SDA, SLC

Tests en cours

 

On lance « i2cdetect » sur le MR3020.

i2c-detect

 

Parfait, le convertisseur fonctionne, notre DS1307 est en 0x68.

 

La suite avec le branchement de l’arduino 😉

MR3020 et I2C avec les GPIO

La torture du MR3020 continue ! Comme je l’avais mentionné dans le post précédent, il me faut un bus i2c pour communiquer avec le contrôleur de mon robot qui sera basé sur un Arduino. Il existe de nombreuses GPIO sur le MR3020 mais certaines sont indisponibles car utilisées par le processeur ( initialisation de la flash par ex ). D’autres sont disponibles, comme les LED ou les interrupteurs. Je pourrais utiliser ces GPIO mais c’est dommage de supprimer des fonctionnalités du routeur…

Le routeur MR3020 a un cousin qui dispose de 2 GPIO non utilisées sur sa carte: les GPIO 7 et 29. Nous allons donc rechercher si sur notre routeur elles existent aussi. La page openwrt du MR3020 ne mentionne pas l’utilité de ces 2 GPIO mais qui sait… elles existent peut-être aussi sur ce routeur !

Pour les retrouver, on va d’abord décharger le module de gestion des LEDS pour être sûr de ne pas utiliser ces GPIO.

rmmod leds_gpio

Ensuite, on exporte ces 2 GPIO et on les place en mode OUTPUT.

cd /sys/class/gpio/
echo 7 > export
echo 29 > export
echo out > gpio7/direction
echo out > gpio29/direction

Les GPIO sont prêtes pour être utilisées. Afin de les repérer facilement sur la carte à l’aide de l’oscilloscope, on va générer un signal d’horloge bidon avec une fréquence peu élevée à l’aide d’un script « quick and dirty » en python.

import sys
import time

while True:
        value = open("/sys/class/gpio/gpio7/value","w")
        value.write(str(0))
        time.sleep(.0005)
        value.write(str(1))
        value.close()
        time.sleep(.0005)

Après quelques minutes de recherche, le signal carré est localisé sur les les pattes des résistance 15 et 17, comme sur son cousin le WR703N. Les autres pattes de ces résistances sont à la masse. Ce sont donc des resistances de pulldown mais à quoi servent-elles ? mystère … En tout cas, elles vont me servir 😉

 

Le signal carré

 

R15 et R17 donnent accès aux GPIO 7 et 29

 

Reste maintenant une opération relativement délicate: dessouder ces 2 minuscules résistances et souder des fils sur

  • R15
  • R17
  • GND
  • +3.3v
  • +5v

 

Résistances supprimées et fils soudés.

 

Oui, oui, c’est minuscule ! La preuve si vous comparez avec une résistance classique:

Les CMS font mal aux yeux 🙂

 

Ensuite passons à la masse. Elle sera prise sur les pattes de l’interrupteur de sélection du mode.

Masse

 

Le 3.3v que l’on prendra sur les pattes de ce que je pense être un régulateur.

3.3v

 

Et pour finir le 5V. Il est optionnel mais je pourrais en avoir besoin plus tard. Autant le câbler tout de suite.

5V

 

Pour résumer les positions des différentes lignes, rien ne vaut une petite photo d’ensemble.

le bus i2c prend forme

L’i2c étant un bus à collecteur ouvert, il faut placer des résistances de pullup sur les lignes SDA et CLK. Des résistances de 10k sont adaptées pour ça.

Un petit connecteur est réalisé sur un bout de protoboard.

Connecteur

 

Voilà, c’est presque terminé. Pour tester, je vais utiliser une eeprom i2c venant de chez HobbyElectro, le magasin en ligne créé il y a quelques temps par Furrtek.

 

Il faut configurer et charger le noyau i2c-gpio-custom en créant un fichier /etc/modules.d/99-i2c contenant la ligne

i2c-gpio-custom bus0=0,7,29

c’est tout 😉

Linux est maintenant capable de dialoguer en i2c sur les GPIO 7/29. Elle n’est pas belle la vie ?

 

Il suffit alors de câbler notre petite eeprom en suivant le datasheet.

Eeprom 24AA256

 

On ne branchera que VSS ( masse ) , Vcc, SCL et SDA.

 

Montage rapide

L’utilitaire i2c-detect permet de scanner le bus à la recherche d’une adresse i2c.

Trouvé ! l’adresse est 0x50

 

Tout marche, l’eeprom est trouvée en 0x50. Parfait !

Bientôt la suite avec l’Arduino…