Attention, il se peut que je fasse des énormités plus grosses que moi, n'hésitez pas à me rappeler l'évidence !
J'essaye actuellement de rajouter un écran LCD 4x20 HD44780 sur le tableau de bord de ma moto. Bon au delà de l'integration au tableau de bord qui s'annonce esthétiquement catastrophique, j'ai un autre problème.
L'ecran fonctionne bien si j'utilise la librairie LiquidCrystal en mode 4bit et avec des fils court. J'ai ensuite été confronté à un problème de nombre de pin, j'ai donc rajouté un shift register pour économiser. Tout fonctionne toujours bien à ca stade. Mais voilà, pour des raison de place, de température, d'isolation, d'humidité et d'accessibilité je voudrais que l'arduino soit placé sous la selle. Autrement dis à un peu moins d'un mètre du guidon. J'ai rajouté la longueur de fil, et là, au moment du test, le resultat est très aléatoire... J'ai pleins de caractères étranges qui s'affichent (mais je retrouve des éléments corrects) et des bugs un peu partout entre les écrans du programme.
Vu que ca fonctionnait en courte distance, je me suis dit que ca devait être une question de diaphonie (chose que je ne connaissais pas avant )
Le fait de bouger les fils semble influer sur les resultats à l'ecran (et les resultats semblent stable si je ne touche pas aux fils entre deux reset)
Ma question : comment faire pour venir à bout de ce problème ?
J'avais pensé utiliser un cable rj45 à la place de mes fils 0,2mm mono brin.
Mettre un fil de masse "maous costaud". Ne pas se contenter de "reprendre" une masse sur le châssis.
S'assurer que tous les fils ont la même longueur.
Quand je parle de fils c'est Horloge, Data sans oublier le verrou ("Latch").
Torsader les fils entre eux (y compris celui de masse) pour assurer un câblage stable.
Éventuellement placer la torsade de fils dans une gaine de blindage. Attention un blindage se met à la masse en UN SEUL point.
Si tu le relie à la masse aux deux extrémités tu vas provoquer une circulation de courants perturbateurs. Généralement le blindage est relié à la masse coté utilisation c'est à dire dans ton cas coté afficheur, mais... il y a toujours un "mais", des fois c'est coté émission c'est à dire coté carte arduino. La raison -> Il existe des principes généraux et une multitude de cas particuliers. La gestion des masses est très complexe et on ne sait pas la modéliser correctement, c'est avant tout une question d'expérience (et de multiples plantages).
Le câble ethernet est une bonne solution pour obtenir un blindage déjà fait et en suivant les recommandations de 68tjs tu ne devrais plus avoir de problèmes.
Quand aux raccordements ils devront se faire comme cela:
Ok donc pour le moment j'ai le shift register avec l'arduino donc loin de l'ecran. Je dois donc le coller à l'ecran et l’éloigner de l'arduino pour que les fils long soit les 3 entre le shift register et l'arduino.
Je vais déjà faire ca...
Pour le fil de masse, pour moi c'est absolument magique, je me contente de brancher sur gnd sans rien comprendre
D'après ce que tu me dis, voilà ce que je comprends : je dois souder un gros cable (genre 1mm multibrin) sur le cadre de la moto et j'y raccorde tous les branchements sur la masse de l'ecran et du shift register. J'ai raison ou j'ai rien compris ?
Tous les fils ont la même longueur, mais en torsadant à l'arrache ca n'avait pas reglé le problème.
En tout cas, merci beaucoup pour cette réponse très rapide et ces pistes jusqu'à lors inconnue de mon petit cerveau.
BananaFanatics:
Le câble ethernet est une bonne solution pour obtenir un blindage déjà fait et en suivant les recommandations de 68tjs tu ne devrais plus avoir de problèmes.
Quand aux raccordements ils devront se faire comme cela:
Mais voilà, pour des raison de place, de température, d'isolation, d'humidité et d'accessibilité je voudrais que l'arduino soit placé sous la selle.
Au moins pour les points température, isolation et humidité l'afficheur est aussi sensible voir plus que l'arduino.
Le registre à décalage c'est une solution satisfaisante pour l'esprit, mais d'un point de vue technique c'est pas génial. Le principe même rend le système sensible. La moindre perturbation (et c'est pas ce qui manque sur un véhicule) crée des fronts d'horloge parasites qui entraînent des perturbations d'affichage comme c'est une solution sans intelligence locale (près de l'afficheur) il n'y a aucune chance que les erreurs soient vues et corrigées.
Tout ça pour dire qu'il y a peut être d'autres solutions plus robustes.
utiliser une arduino mini logée sous l'afficheur à la place d'une uno.
utiliser un afficheur intelligent avec une liaison série (de type UART). C'est moins sensible qu'un registre à décalage.
Pour ce qui concerne la température prévoir un réglage du contraste de l'afficheur par ce que entre l'hiver et l'été la température sur un tableau de bord peut facilement s'étaler de -15°C à +50°C autant dire que l'afficheur va souffrir. La réponse des cristaux liquides est assez dépendante de la température. Certaines familles de cristaux liquides n'aiment d'ailleurs pas du tout les températures négatives.
En fait je comptais faire un ecran facilement débranchable en cas de grand froid, pluie, ou grosse chaleur (soleil sur un parking). Mais le reste du système j'aimerai bien le laisser en place de manière quasi définitive.
La torsade + le déplacement du shift register semble avoir réglé le problème.
Pour le moment le fil de masse est toujours le même, et toujours branché sur le gnd de l'arduino.