Discussion: Multiples écrans LCD

  1. #1
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    7 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 7 443
    Points : 22 573
    Points
    22 573

    Par défaut Multiples écrans LCD

    Bonjour,

    J'en suis encore au niveau de l'étude de faisabilité mais je réfléchis sur un projet qui utiliserait 10 écrans LCD 16*2 ou 20*2 et deux 20*4 autour d'un Arduino 2560.
    J'ai vu qu'avec une connexion I2C je pouvais commander plusieurs écrans mais les modèles que j'ai trouvés jusqu'à maintenant ne pouvaient être paramétrés que sur 8 adresses différentes (0x20 à 0x27).

    Je me demandais donc s'il y existait un moyen de doubler le réseau I2C en utilisant d'autres broches de la carte pour SDA et SCL.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  2. #2
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Ancien développeur matériel électronique (Hard/Soft)
    Inscrit en
    avril 2002
    Messages
    1 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ancien développeur matériel électronique (Hard/Soft)
    Secteur : Service public

    Informations forums :
    Inscription : avril 2002
    Messages : 1 875
    Points : 5 917
    Points
    5 917

    Par défaut

    Salut,
    Petites questions avant de donner mon avis :

    Quelle est la distance entre les afficheurs ?
    J'imagine que c'est pour faire de l'affichage déporté ?
    Je demande car le bus I2C n'est pas un bus de terrain, il n'est pas du tout prévu pour sortir d'un circuit imprimé. Il faut le savoir et le prendre en compte surtout en fonction de l'endroit où le montage sera utilisé.

    A tout à l'heure.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    7 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 7 443
    Points : 22 573
    Points
    22 573

    Par défaut

    Merci de t'intéresser à mon projet.

    Ce serait pour un pédalier de commande donc en gros un boitier métallique solide (tôle de 10 ou 15 dixièmes) de 70 * 25 cm et une épaisseur de 3 à 6 cm)
    Si j'arrive à placer le contrôleur au milieu, ça ferait des conducteurs d'au plus 40 à 50 cm, sous blindage si nécessaire.

    Alimentation à découpage externe, 2 entrées/sortie MIDI (31250 bauds).
    Les seules sources de perturbation électromagnétique seraient les douze contacteurs (stomp box button), une vingtaine de leds, et deux relais 1RT, tous connectés à l'Arduino.
    Les contrôles potentiométriques seront à l'extérieur du boitier.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Expert éminent
    Avatar de Auteur
    Profil pro
    Inscrit en
    avril 2004
    Messages
    6 754
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 6 754
    Points : 9 204
    Points
    9 204

    Par défaut

    bonjour,

    50cm, ne me semble pas une distance excessive... Il existe des routeurs I2C, nous en parlons un petit peu dans cette discussion :
    https://www.developpez.net/forums/d1...e/#post8502567

    Je me demande aussi si placer 2 de ces routeurs (1 à gauche et 1 à droite du microcontrôleur, 1 routeur pour 5 écrans) à mi-chemin pour limiter les parasites ne serait pas une idée à creuser...

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    septembre 2008
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : septembre 2008
    Messages : 482
    Points : 1 391
    Points
    1 391

    Par défaut

    Bonsoir

    Comme tout problème, il y a plusieurs solutions.
    Durant mes études, en cours de microcontrôleurs, on avait dû programmer une interface I2C software en ASM sur un ATMegaxxxx, ce n'est pas bien sorcier, mais la boucle de fond doit être interrompue pendant la transmission.
    Dans la famille des 4000 (les antiques circuits logiques CMOS), il y a deux puces qui vont bien: 4066 et 4052. Avec une ou deux sorties de l'Arduino on peut ainsi rediriger les deux lignes de l'I2C vers l'un ou l'autre demi-bus. Doubler la valeur des pull-up et en mettre 3 paires. histoire de maintenir l'état haut sur les demi-bus déconnectés.

    Pour la longueur des connections, il faut au besoin réduire la fréquence du bus, et surtout soigner le découplage de chaque écran.

    Delias

  6. #6
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Ancien développeur matériel électronique (Hard/Soft)
    Inscrit en
    avril 2002
    Messages
    1 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ancien développeur matériel électronique (Hard/Soft)
    Secteur : Service public

    Informations forums :
    Inscription : avril 2002
    Messages : 1 875
    Points : 5 917
    Points
    5 917

    Par défaut

    +1 pour les solutions de Auteur et Delias.

    Si tu as assez de broches de libres sur le Arduino et que tu ne veux pas t'encombrer de l'I2C tu peux aussi mettre en parallèle tous les afficheurs LCD 2x16, voir même tous les LCD y compris les 4x16 si les contrôleurs sont identiques. Il n'y a qu'a piloter la broche Enable de l'afficheur concerné, un peu comme on le fait en gérant des composants SPI.

    Dans le schéma de principe ci dessous, tout est en parallèle sauf les broches "Enable" de chaque afficheur qui se pilote indépendamment. On peut même prendre un bon vieux câble en nappe pour le câblage. Si tu as 18 broches de libres et que les contrôleurs des afficheurs sont les mêmes alors ce type de câblage pour tes 12 LCD, est possible.

    Nom : Capture du 2017-05-19 22-01-41.png
Affichages : 81
Taille : 36,0 Ko
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    septembre 2008
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : septembre 2008
    Messages : 482
    Points : 1 391
    Points
    1 391

    Par défaut

    +1 également pour Vincent

    En complément de sa solution, l'utilisation de deux 74HC238, pour démultiplexer de 4 à 6 sorties Arduino en 12 (jusqu'à 16) lignes E pour les LCD.
    4 Sorties: 3 pour les addr des dmux, 1 pour la selection d'un DMUX (en branchant sur E pour le 1er et sur /E sur le 2ème). Limite à 15 LCD
    5 Sorties: 3 pour les addr des dmux, 1 pour chaque E d'un dmux, limite à 16LCD.
    6 Sorties: 3 pour les addr des dmux, 1 pour chaque /E d'un dmux et 1 commun pour les 2 E des dmux, permet l'utilisation de la lib LCD standard qui agit sur E.

    En plus des 6 lignes communes pour tous les LCD, on est à 10/12 sorties au lieu des 18 de la solution originale.

    Je peux développer si souhaité.

    Delias

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    7 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 7 443
    Points : 22 573
    Points
    22 573

    Par défaut

    Woah !
    Tout ça pour une simple question de faisabilité ! Je n'en demandais pas tant.
    Merci à tous de vous être autant impliqués sur cette question.
    J'aurai appris plein de choses, en particulier sur la longueur limitée des connexions I2C, information qui n'apparait pas sur le site Arduino.
    Et entre temps, j'ai aussi découvert que le Due avait deux ports I2C, ce qui me simplifierait la vie

    Maintenant que je sais que c'est faisable, je vais pouvoir pousser plus loin l'étude des autres fonctionnalités que je voudrais donner à mon pédalier MIDI.
    Compte-tenu de mon peu de temps disponible, ce sera pour cet été, ou le suivant... ou la retraite
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  9. #9
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur systèmes embarqués
    Inscrit en
    juin 2009
    Messages
    3 561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur systèmes embarqués

    Informations forums :
    Inscription : juin 2009
    Messages : 3 561
    Points : 9 359
    Points
    9 359
    Billets dans le blog
    1

    Par défaut

    J'ai réfléchi il y a pas longtemps à comment faire ça ^^

    A mon avis, une solution simple est d'utiliser un IOExpander piloté I2C par écran LCD. Ainsi, tu n'as pas besoin de beaucoup de pins par écrans et tu peux dupliquer facilement les paires (IOExpander ; LCD). J'avais commencé à regarder pour le faire avec un IOExpander de chez Texas Instruments. De mémoire, l'adresse était sur 3 bits, ce qui te fait donc 7 adresses possibles. Je ne connais pas trop l'I2C mais ça doit faire une adresse pour le maitre (ton MCU) et 6 esclaves (tes écrans). Avec deux ports I2C, tu pourrais donc avoir 12 écrans. Si ton MCU ne possède qu'un seul I2C hardware, tu dois pouvoir facilement trouver des bibliothèques pour faire de l'I2C software.

    PS : le code auquel je m'étais arrivé est sur GitHub (main, lcd). Tu peux voir la partie LCDLowLevelImpl à implémenter avec de l'I2C au lieu de simples GPIO comme c'est fait actuellement. Rajouter un constructeur prenant en paramètre le port I2C et l'adresse du LCD, et c'est parti !

  10. #10
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    7 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 7 443
    Points : 22 573
    Points
    22 573

    Par défaut

    En cherchant autre chose, je suis tombé là-dessus : Multiplexeur I2C TCA9548A, qui répond à ma question initiale.
    Sans rien retirer à la validité des réponses qui m'ont été données.

    Cela pourrait servir à quelqu'un d'autre pour un autre besoin tel que le multiplexage de capteurs...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 49
    Dernier message: 17/03/2010, 14h03
  2. 1 écran LCD wide pour remplacer 2 CRT ?
    Par antoinev2 dans le forum Périphériques
    Réponses: 4
    Dernier message: 03/07/2009, 10h12
  3. Réponses: 3
    Dernier message: 02/05/2008, 16h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo