Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Raspberry Pi Discussion :

Afficheur à sept segments


Sujet :

Raspberry Pi

  1. #1
    Expert éminent sénior
    Afficheur à sept segments
    Salut à tous.

    1) projet.

    Comme j'aime bien les leds, mon choix va se faire sur un afficheur à sept segments.
    D'après ce que j'ai vu sur le net, il existe plusieurs solutions pour gérer ce ou ces digit(s).
    Le problème est le nombre de fils à gérer qui, dans le cas d'un digit fous quatre est au nombre de 34 !
    Pourquoi 34 ? Sept segments + le point décimal = 8 fils x 4 digits = 32 fils
    Auquel on ajoute les deux points et le symbole des degrés (°) qu'ils ont renommé en apostrophe (???), va savoir pourquoi.

    Sinon, on peut gérer un afficheur à quatre digits.
    Le nombre de fils tombe à 16, voir moins si l'on combine certains d'entre eux.

    2) choix de l'afficheur.

    J'ai le choix entre un afficheur à 1 digit ou un afficheur à 4 digits.
    Ma préférence va au 4 digits. Mais voilà, il y a en a de deux sortes :
    --> à anode commune.
    --> à cathode commune.

    Sauf que chez GoTronic, je ne trouve que des afficheurs à anodes communes.
    --> https://www.gotronic.fr/art-afficheu...gits-22872.htm
    --> https://www.gotronic.fr/art-afficheu...gits-20160.htm
    --> https://www.gotronic.fr/art-afficheu...gits-20161.htm
    --> https://www.gotronic.fr/art-afficheu...gits-20371.htm
    --> https://www.gotronic.fr/art-afficheu...gits-20371.htm

    Ou bien prendre un simple digit. Dans ce cas, mon choix se fera sur un 13mm :
    --> Afficheur rouge à leds à anode commune.
    --> Afficheur vert à leds à cathode commune.

    Pour l'instant, je ne sais pas quoi choisir car cela va dépendre de la finalité du montage.

    3) Contraintes.

    Comme chaque segment ou point décimal ou deux points ou encore le symbole des degrés représente une led, il faut obligatoirement une résistance.

    D'après la documentation, au maximum, chaque led de l'afficheur sept segments admet 20mA.
    Une résistance de 1k ohms devrait produire pour 3.3Vcc, une intensité de : 3.3 / 1000 = 3.3mA.
    Cette intensité est acceptable. La luminosité sera un peu plus faible, mais parfaitement lisible.

    Si j'allume la totalité des leds, qui sont au nombre de 34, j'aurai une intensité de : 34 * 3.3mA = 112.2mA.
    Dans ce cas, je crame les GPIO de ma raspberry.

    D'après ce que j'ai pu voir sur le net, dans le cas de l'arduino, il n'y a aucun source d'alimentation extérieure.
    Il se trouve qu'une broche peut supporter au maximum 40mA et dans la totalité des broches, un maximum de 200mA.
    Avec une résistance de 1k ohms sur chaque led, il n'y a aucun problème.

    Avec la raspberry, un GPIO admet au maximum 16mA, et au total, un maximum de 50mA.
    Autrement dit, ce qui est valable pour l'arduino, ne l'est pas pour la raspberry.

    Dans la réalité, toutes les leds de l'afficheur à sept segments ne sont pas allumées.
    Mais de toute façon, la raspberry ne va pas supporter cette intensité maximale.

    Pour résoudre ce problème, je dois utiliser une source d'alimentation extérieure.
    Ce qui implique d'utiliser des transistors pour amplifier le signal, entre le GPIO et la led au travers des résistances.

    Remarque : dans mon premier montage sur breadboard, j'ai 18 leds qui sont gérées par ma raspberry.
    Sauf que j'allume que deux leds à la fois, ce qui donne un maximum de 2x3.3mA = 6.6mA.
    Dans ce cas là, ma raspberry ne craint rien car je respecte le maximum autorisé.

    4) Comment gérer tout ce paquet de fils ?

    Il existe des composants pouvant réaliser cela, comme le :

    a) Décodeur BCD/7 segments.
    --> https://www.gotronic.fr/art-cd4511-319.htm

    L'inconvénient est qu'il ne sait gérer que sept segments à la fois.
    Ce qui implique d'en mettre quatre, un par digit.
    Ca, c'est dans le cas où nous avons des digits indépendants.
    Dans le cas d'un afficheur à 4 digits, le nombre de fils est au maximum de 16.

    Cette solution semble convenir pour 1 digit, mais pas pour quatre.

    b) registre à décalage à huit bits : 74HC595.

    Si j'utilise un afficheur à 4 digits, il me faut deux registres à décalage de huit bits. Pourquoi ?
    Il y a sept segments + le point décimal, soit huit fils.
    Comme il y a quatre digits, il faut ajouter quatre fils.
    Et pour terminer, les deux points et le symbole des degrés, qui comptent pour quatre fils.
    --> 2 fil pour les deux points et l'anode commune.
    --> 2 fil pour le symbole des degrés et l'anode commune.
    Soit au total seize fils, peut-être un peu moins. Je n'ai pas encore trop réfléchi sur le montage électronique.

    Je ne sais pas trop pourquoi dans ces deux derniers cas, on nomme cela anode commune alors qu'il n'y a rien de commun.
    Si l'anode était commune, il y aurait qu'un seule fil ou si vous préférez un seule sortie, or il y en a plusieurs.

    Sur un breadboard, je ne sais pas trop si j'aurai assez de place entre :
    --> un afficheur de 4 digits à sept segments.
    --> des résistances de 1k ohms pour chaque led.
    --> deux registres à décalages de huit bits : 74HC595.
    --> un paquet de fils.

    Comme je ne trouve que des afficheurs 4 digits à anode commune, je suis obligé de prendre quatre transistors BC547 NPN.
    (NPN, pour faire en sorte qu'un signal UP de la raspberry produise un DOWN vers l'anode commune de la digit et vice versa).
    Et sur chaque GPIO vers le transistor (donc sur la base), mettre une résistance disons aussi de 1k ohms.

    --> quatre transistors BC547 NPN
    --> quatre résistances de 1k ohms.

    Il reste le condensateur que je ne vois pas sur tous les schémas de montage.

    J'aime bien cette solution même si je la trouve un peu compliqué à mettre en oeuvre (je parle du montage électronique, pas du programme).
    Je peux simplifier le montage si j'utilise un seul digit, en cathode commune, qui implique aucun transistor.

    Par ce montage, je fais deux tests en un seul :
    --> test du registre à décalage huit bits, voire même sur seize bits avec deux registres montés en série.
    --> l'afficheur à 4 digits de 7 segments.

    c) le Max7219.

    Je peux trouver chez cdiscount, soit :
    --> le max7219,
    --> le module de deux afficheurs 4 digits avec le max7219,
    pour un prix raisonnable. Ce max7219 se pilote par le mode SPI.

    --> http://www.learningaboutelectronics....er-circuit.php

    Je pense que le module de deux afficheurs 4 digits est encore la meilleure solution pour faire l'usage d'un max7219.

    5) Comment faire le bon choix du montage électronique sachant que le test se fera avec la raspberry Pi ?

    Mes contraintes sont celle de la Raspberry Pi, entre autre l'intensité maximale.
    Je ne comprends pas pourquoi sur certains montages, il n'y a pas de résistances ?
    Je suppose que je vais devoir utiliser une source d'alimentation externe.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  2. #2
    Expert éminent sénior
    Bonjour,

    Chez Lextronic j'ai trouvé des afficheurs 20mm à cathode commune (il y a d'autres couleurs) :
    https://www.lextronic.fr/afficheur-7...-mm-29881.html

    J'ai trouvé aussi ce module :
    https://www.lextronic.fr/module-grov...ges-29435.html
    avec un contrôleur TM1637, qui utilise une liaison SPI, donc 4 fils.

    Le tutoriel de f-leb sur l'utilisation du MAX7219 :
    https://f-leb.developpez.com/tutorie...ter-bargraphe/

  3. #3
    Membre actif
    Salut,

    Citation Envoyé par Artemus24 Voir le message

    Le problème est le nombre de fils à gérer qui, dans le cas d'un digit fous quatre est au nombre de 34 !
    Pourquoi 34 ? Sept segments + le point décimal = 8 fils x 4 digits = 32 fils
    Les portes segments (digits) ne sont normalement pas activés en même temps, mais à tour de rôle. C'est la persistance rétinienne qui fera le reste, comme pour le cinéma. Le nombre de pins nécessaire serait de l'ordre nb_pins = nb_max_segments + nb_digits.

    Et en 14 ou 16 segments,

  4. #4
    Responsable Arduino et Systèmes Embarqués



    Alors le MAX7219, c'est la rolls pour des digits 7-segments Communication SPI (3 fils), le composant prend en charge le multiplexage et intègre en plus un décodeur BCD-7segments, et une seule résistance suffit pour régler l'intensité.

    Sinon, si on se tourne vers ce genre de montages (avec cathode commune ici) :

    http://www.hackyourmind.org/public/images/display7seg_anim.gif

    Il faut gérer le multiplexage pour n'afficher qu'un digit à la fois et jouer sur la persistance rétinienne.

    Pour dimensionner la résistance en série avec chaque segment, on se place dans le pire cas avec les 7 segments + point décimal allumés.
    Si on doit limiter le courant qui retourne au GND à 50 mA, on prend 5 mA par segment (5 x (7 segments + point) = 40 mA) et on garde quelques mA de réserve notamment pour commander le transistor.

    Avec une tension de seuil de LED à environ 1,8V (LED rouge) et la tension VCEsat = 0,2V , la tension aux bornes de la résistance est 3,3-1,8-0,2 = 1,3V. Donc R=1,3/0,005=260 Ohms.
    En partique, tu commences à 390 Ohms et tu descends un peu si la luminosité est faible.

  5. #5
    Expert éminent sénior
    Salut à tous.

    @ Auteur : Le premier afficheur serait l'idéal car il est avec cathode commune.
    Je vais poser la question à GoTronic car ils ont parfois du matériel qui n'est pas accessible sur leur site.
    Peut-être que GoTronic devra le commander.

    Du coup, je me demande si au lieu d'un afficheur 4-digit, je ne prendrais pas quatre afficheur 1-digit ?
    Bonjour le nombre de câble qui va exploser sur un breadboard.

    Le deuxième afficheur est en vente chez GoTronic :
    --> https://www.gotronic.fr/art-afficheu...0003-19020.htm
    Je croyais que les composants grove devrait s'utiliser avec une interface grove.
    Ma question peut sembler naïve, mais puis-je l'utiliser directement sur ma Raspberry Pi ?

    La prise grove à quatre fils, est-ce une prise JST (J'ai toujours le problème de trouver le bon câble) ?
    Je pose la question car je possède un câble JST mâle à quatre contacts comme celui-ci :
    --> https://www.gotronic.fr/art-cordon-j...jst4-22571.htm

    Pour le didacticiel de f-leb, je le connaissais déjà. Merci quand même d'avoir mis le lien.

    Voici le bargraphe que je vais me procurer :
    --> https://www.gotronic.fr/art-bargraph...230c-22180.htm
    J'ai regardé la documentation GoTronic et comme c'est un R1230C (exactement un KWL-R1230CDUGB de LuckyLight), il est à cathode commune.

    Je viens de jeter un coup d'oeil à lextronic, et je constate qu'ils acceptent les chèques. Parfais !

    Dans le didacticiel de f-leb, il utilise une résistance de 29.2k ohms.
    Dans la documentation du max7219 de chez maxim, le minimum de la résistance est de 9,53k ohms, pour une intensité maximale de 40mA.
    J'ai retrouvé le tableau de f-leb dans la documentation.
    Si je ne me suis pas trompé, il est conseillé d'utiliser une résistance de 47k ohms, pour économiser l'énergie.
    Je n'ai pas compris pourquoi la valeur de la résistance est aussi grande ? Je verai cela en temps utile.

    Je ne vais pas m'attaquer au MAX7219 en tant que premier projet. Je vais faire cela étape par étape.
    Je vais commencer par la Raspberry Pi puis reprendre les mêmes projets mais avec le Bus Pirate, si cela est possible.

    a) 1 seul digit piloté par les GPIO.
    c) 1 seul digit au travers du 74HC595.
    d) 1 bargraphe au travers du 74HC595.
    e) 4 digit au travers de deux 74HC595.
    f) 2 bargraphes au travers de deux 74HC595.
    g) 4 digit au travers du MAX7219.

    @ kaitlyn : oui, je découvre la persistance rétinienne, ainsi que le multiplexage.

    Citation Envoyé par f-leb
    Il faut gérer le multiplexage pour n'afficher qu'un digit à la fois et jouer sur la persistance rétinienne.
    Je n'avais pas bien compris l'astuce utilisé pour gérer toutes ces leds sans avoir une intensité trop élevée.

    Citation Envoyé par f-leb
    Si on doit limiter le courant qui retourne au GND à 50 mA, on prend 5 mA par segment ...
    Une résistance de 1k ohms devrait donc faire l'affaire (5Vcc / 1000 ohms = 5mA) !
    C'est bon, j'ai assez de résistances 1k ohms. Est-ce que cela peut encore fonctionner avec du 10k ohms ?
    Ce sera moins lumineux. Cela ne me pose pas de problème.

    Citation Envoyé par f-leb
    ... et on garde quelques mA de réserve notamment pour commander le transistor.
    A la base du transistor, on met aussi une résistance de 1k ohms.
    Et du coup, je dois mettre aussi une résistance de 1k ohms sur le collecteur (je crois) afin de limiter l'intensité à 5mA.

    Citation Envoyé par f-leb
    En pratique, tu commences à 390 Ohms et tu descends un peu si la luminosité est faible.
    Pourquoi j'utilise 1k ohms ?

    J'ai des leds économiques 5mm dont la couleur est rouge (Vf=1,6V), jaune (Vf=2,4V) et verte (Vf=2,4V).
    --> https://www.gotronic.fr/cat-leds-5-mm-1293.htm
    Dans mon premier montage sur ma breadboard avec leds, interrupteur et résistances, piloté par la Raspberry Pi, j'utilisais du 3.3Vcc.
    La luminosité est largement suffisante.

    Je vais utiliser du 5Vcc pour l'afficheur à 7 segments, mais avec une source d'alimentation extérieure, genre :
    --> https://www.gotronic.fr/art-alimenta...w-bb-25638.htm

    Quelles sont les caractéristiques des transistors utilisés dans ce montage ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  6. #6
    Expert éminent sénior
    Citation Envoyé par Artemus24
    Je croyais que les composants grove devrait s'utiliser avec une interface grove.
    non pas spécialement. Le connecteur a 4 broches, +5V, GND, DIO et CLK. L'interface grove est une carte avec des connecteurs, et fait liaison entre les entrées sorties de l'Arduino et les composants grove. Il n'y a pas d'électronique. Il faut ajuster les E/S du programme pour interroger le bon composant.

    Citation Envoyé par Artemus24
    Ma question peut sembler naïve, mais puis-je l'utiliser directement sur ma Raspberry Pi ?
    Oui : http://wiki.seeedstudio.com/Grove-4-Digit_Display/

    Citation Envoyé par Artemus24
    La prise grove à quatre fils, est-ce une prise JST (J'ai toujours le problème de trouver le bon câble) ?
    Je pose la question car je possède un câble JST mâle à quatre contacts comme celui-ci :
    --> https://www.gotronic.fr/art-cordon-j...jst4-22571.htm
    Je crois que sur la platine, c'est un connecteur mâle, il te faut donc un femelle. Ce sont des câbles de la marque JST avec un pas de 2mm. Il s'agirait de la série PH (à vérifier !). Peut-être que Molex fabrique le même type ou des équivalents.


    Tu peux te procurer ces câbles (cela t'évitera d'acheter le connecteur, les broches et de sertir ) :
    (femelle-femelle) https://www.gotronic.fr/art-5-cables...lles-19069.htm
    (femelle-mâle) https://www.gotronic.fr/art-5-cables...ales-23368.htm

  7. #7
    Responsable Arduino et Systèmes Embarqués



    Citation Envoyé par Artemus24 Voir le message
    Une résistance de 1k ohms devrait donc faire l'affaire (5Vcc / 1000 ohms = 5mA) !
    La calcul ne va pas ! Il n'y a pas 5V (ou 3,3V) aux bornes de la résistance.



    Pour un segment allumé sous 3,3V en sortie du Pi, on applique la loi des mailles :
    3,3 = VR + VF + VCE

    d'où la tension aux bornes de la résistance :
    VR= 3,3 - VF - VCE
    soit environ 3,3 - 1,8 - 0,2 = 1,3V

    Si on veut limiter le courant à 5mA qui traverse la LED du segment et de la résistance en série :
    R = 1,3 / 0,005 = 260 Ohms

  8. #8

  9. #9
    Expert éminent sénior
    Salut à tous.

    Citation Envoyé par f-leb
    La réalisation d’un afficheur 7 segments à un ou plusieurs digits est un exercice classique par lequel tout apprenti en systèmes embarqués doit obligatoirement passer.
    C'est pourquoi, je désire entreprendre ce projet, que je vais réaliser en plusieurs étapes, afin de bien comprendre son fonctionnement.

    Je ne sais pas comment vous faites avec les photos et descriptions des sites, comme Kubii ou Gotronic, mais je n'arrive pas à savoir ce qu'il me faut.
    Au fur et à mesure de mes commandes, ainsi que de mes lectures sur le net, je découvre ce dont j'ai besoin. Mais il n'est pas facile de s'y retrouver.
    Pourquoi ne propose-t-il pas le matériel qui est le plus utilisé par les internautes ?

    Comme je n'ai pas la connaissance d'un électronicien, choisir les bons composants nécessite de passer par un forum.

    Citation Envoyé par Auteur
    Le connecteur a 4 broches, +5V, GND, DIO et CLK.
    Ce sont exactement les mêmes broches que sur mon Bus Pirate. Ca tombe bien.

    Citation Envoyé par Auteur
    L'interface grove est une carte avec des connecteurs, ... Il n'y a pas d'électronique.
    D'accord. J'ai toujours l'impression que ces cartes sont comme des serrures. Elles ne peuvent être utilisées que par une seule clef.

    Citation Envoyé par Auteur
    Ce sont des câbles de la marque JST avec un pas de 2mm. Il s'agirait de la série PH (à vérifier !).
    Merci pour l'information.

    Citation Envoyé par f-leb
    La calcul ne va pas !
    Dans mon premier montage, le voltage est de 3.3Vcc. La led rouge admet un Vf = 1,6 Vcc.

    Si j'applique la formule que j'ai trouvé chez GoTronic, le calcul donne :
    --> R = (Vcc - Vf) / I
    --> R = (3.3 - 1.6) / 20mA
    --> R = 85 ohms.

    Je suppose que pour 20mA, l'intensité lumineuse est 660 nm, c'est-à-dire à son maximum.
    Si maintenant, je mets une résistance de 1k ohms, l'intensité devient :
    --> I = (Vcc - Vf) / R
    --> I = (3.3 - 1.6) / 1000
    --> I = 1.7mA.

    Soit 85/1.7 = 50, soit 50 fois moins.
    Ma question concernait, non pas dans la justesse des calculs, mais si la résistance pouvait convenir pour ce genre de montage.
    Ou si tu préfères, jusqu'à quelle valeur en ohms, peut-on majorer cette résistance, afin que le montage puisse fonctionner encore ?

    Après toutes vos explications, je me pose encore quelques questions :

    6) le choix des transistors.

    J'ai compris que les transistors ne sont utiles que dans les afficheurs à anode commune.

    6-a) Je suppose que je dois le prendre sous la forme d'un boitier to92.
    Cela sera plus facile à positionner sur un breadboard.

    6-a) Le transistor doit être un NPN.
    Est-ce bien cela ?

    6-b) mon choix va se porter sur l'un de ces trois là, oui, mais lequel pourrait me convenir :
    --> https://www.gotronic.fr/art-transist...c547a-1335.htm
    --> https://www.gotronic.fr/art-transist...c547b-1336.htm
    --> https://www.gotronic.fr/art-transist...c547c-1337.htm

    Je pense que je vais prendre le troisième, à savoir le BC547C. Est-ce le bon choix ?

    6-c) il y a aussi ceux-ci :
    --> https://www.gotronic.fr/art-transist...-to92-1539.htm
    --> https://www.gotronic.fr/art-transist...n3904-1561.htm
    --> https://www.gotronic.fr/art-transist...4401-14411.htm

    Ne serait-il pas un meilleur choix ?

    6-d) pour un autre projet, je devrais prendre des transistors PNP :
    --> https://www.gotronic.fr/art-transist...h2907-1373.htm
    --> https://www.gotronic.fr/art-transist...27-40-1320.htm

    Pour faire quoi avec ?
    Dans un autre projet, pour comprendre le fonctionnement des transistors et la différence entre un PNP et un NPN.
    Ce projet sera composé de résistances, de leds, d'un potentiomètre. Je vais étudier la variation de l'intensité.

    6-e) en poursuivant mes recherches, j'ai trouvé ceci :
    --> https://www.gotronic.fr/art-uln2803a-10727.htm

    Vu que GoTronic ne dit rien à ce sujet j'ai fait une petite recherche, que voici :
    --> https://fr.farnell.com/stmicroelectr...ton/dp/1094428

    C'est un "Réseau de transistors bipolaires, Darlington, NPN, 50 V, 2.25 W, 500 mA, 1000 hFE, DIP".
    J'ai remarqué que ce composant est utilisé dans les montages des afficheurs 4-digit.

    Mais il y a aussi :
    --> https://www.gotronic.fr/art-uln2804a-10728.htm

    Quelle est la différence entre le ULN2804A et le ULN2803A ?
    Quel composant choisir ?

    7) j'ai vu que l'on utilise un condensateur dans le registre à décalage 74hc595.
    (J'avais déjà abordé cette question dans mon autre sujet sur le bus pirate.)

    7-a) Un 100nF (0,1 uF), peut-être ?
    --> https://www.gotronic.fr/art-condensa...-100-nf-66.htm

    Est-ce le bon choix ?

    7-b) comment calculer la bonne valeur du condensateur ?

    7-c) ou placer le condensateur ?

    Il faut tenir compte de la fréquence puisque la persistance rétinienne est le problème de base de ce montage.
    A combien doit-on estimer cette fréquence ?

    8) et pourquoi pas une diode, afin que le courant ne puisse pas retourner dans le 74HC595 ?

    Même question, ou placer la diode ?

    9) F-leb, je vais suivre le schéma du message #10.
    Pas avec le MAX7219, mais avec des registres à décalage 74HC595.

    Coté segment, j'aurai besoin que de huit résistances, qui seront en sortie du premier 74HC595.

    Coté digit (ou coté transistor), je vais mettre un autre 74HC595.
    Pas de transistor, car les 1-digit sont en cathode commune.

    Je vais monter en série les deux 74HC595, afin de gérer un mot de 16 bits.
    Avec ce schéma, je peux utiliser huit afficheurs à 1-digits.

    10) La grosse difficulté sera de placer tout ce paquet de fils sur la breadboard.

    Je pense prendre celle-ci :
    --> https://www.gotronic.fr/art-plaque-d...apide-6861.htm
    où celle-là :
    --> https://www.gotronic.fr/art-plaque-d...apide-6862.htm

    Au final, je vais conserver le montage sur la breadboard.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  10. #10
    Responsable Arduino et Systèmes Embarqués

    Salut,

    Citation Envoyé par Artemus24 Voir le message
    Dans mon premier montage, le voltage est de 3.3Vcc. La led rouge admet un Vf = 1,6 Vcc.

    Si j'applique la formule que j'ai trouvé chez GoTronic, le calcul donne :
    --> R = (Vcc - Vf) / I
    --> R = (3.3 - 1.6) / 20mA
    --> R = 85 ohms.

    Je suppose que pour 20mA, l'intensité lumineuse est 660 nm, c'est-à-dire à son maximum.
    Si maintenant, je mets une résistance de 1k ohms, l'intensité devient :
    --> I = (Vcc - Vf) / R
    --> I = (3.3 - 1.6) / 1000
    --> I = 1.7mA.

    Soit 85/1.7 = 50, soit 50 fois moins.
    Tu voulais dire 20 / 1,7 =12, soit 12 fois moins, je suppose...


    Citation Envoyé par Artemus24 Voir le message
    Ma question concernait, non pas dans la justesse des calculs, mais si la résistance pouvait convenir pour ce genre de montage.
    Ou si tu préfères, jusqu'à quelle valeur en ohms, peut-on majorer cette résistance, afin que le montage puisse fonctionner encore ?
    La résistance sert à limiter le courant qui peut griller la LED ou (pire) ton GPIO. Ici, plus la résistance est grande et plus le courant est faible. La priorité est donc de protéger le matériel, c'est tout. Les calculs permettent un prédimensionnement compte tenu des incertitudes sur les caractéristiques des composants (tension de seuil de la LED à +/-0,2V, résistance à 5% près, et ton 3,3V en sortie GPIO est en fait plus bas quand on tire du courant, etc.). Si tu prends un R trop bas, tu grilles tout de façon irréversible et si tu prend un R trop élevé, la luminosité de ta LED sera faible mais c'est beaucoup moins grave.

    Citation Envoyé par Artemus24 Voir le message
    6) le choix des transistors.

    J'ai compris que les transistors ne sont utiles que dans les afficheurs à anode commune.
    Pas seulement, mon schéma du message #7 comporte bien un transistor NPN avec un afficheur à cathode commune.

    Pour un afficheur à anode commune, il faut un PNP :

  11. #11
    Expert éminent sénior
    Salut à tous.

    Citation Envoyé par f-leb
    Tu voulais dire 20 / 1,7 =12, soit 12 fois moins, je suppose...
    Oups. Tu supposes bien. Désolé pour mon erreur d’inattention.

    Citation Envoyé par f-leb
    La priorité est donc de protéger le matériel, c'est tout.
    C'est surtout pour protéger le GPIO de ma Raspberry Pi.

    Citation Envoyé par f-leb
    si tu prend un R trop élevé, la luminosité de ta LED sera faible mais c'est beaucoup moins grave.
    Je n'ai pas besoin d'une luminosité à son maximum.

    A priori, une résistance de 1k ohms doit convenir.

    Citation Envoyé par f-leb
    Pas seulement, mon schéma du message #7 comporte bien un transistor NPN avec un afficheur à cathode commune.
    Le transistor sert dans le cas où j'ai besoin d'utiliser une source d'alimentation extérieure.
    J'ai un GPIO de 3.3Vcc avec une intensité très faible (i< 1mA).
    J'ai besoin de 5Vcc (ou plus) et d'une intensité bien plus grande, genre 20mA.
    Comme mon alimentation externe produit le courant et l'intensité dont j'ai besoin, le transistor sert à gérer le signal dont j'ai besoin.

    Citation Envoyé par f-leb
    Pour un afficheur à anode commune, il faut un PNP :
    Oups, j'ai encore dit une autre connerie ! Et personne n'a réagit à mes propos :
    Citation Envoyé par Artemus24
    Comme je ne trouve que des afficheurs 4 digits à anode commune, je suis obligé de prendre quatre transistors BC547 NPN.
    (NPN, pour faire en sorte qu'un signal UP de la raspberry produise un DOWN vers l'anode commune de la digit et vice versa).
    Non, le transistor de type NPN sert pour les afficheurs à cathode commune et non à anode commune, comme je l'ai dit.

    D'après ce que j'ai compris, un NPN laisse passer le courant quand le signal est à UP.
    un PNP ne laisse pas passer le courant quand le signal est à UP.
    Donc pour un afficheur à cathode commune, il me faut bien des transistors BC547 NPN.

    Le condensateur 100 nf (ou 0,1 uf) :
    --> https://www.gotronic.fr/art-condensa...-100-nf-66.htm

    Mettre ce condensateur entre :
    --> le 5Vcc et la borne 16 du 74HC595
    --> le ground (la masse).
    comme indiqué sur le schéma suivant :



    La diode ne sert que si j'ai autre chose que des leds en sortie des broches Q0 à Q7 du 74HC595.
    C'est une sécurité afin qu'il n'y a pas un court-circuit ou un retour dans le 74HC595 (je ne connais pas le terme exacte).

    Dans ce schéma, il y a un chaînage des 74HC595.
    On utilise la Q7' (broche N° 9) en sortie du premier 74HC595, et la DS (broche 14) en entrée du second 74HC595.
    De même les SH (broche 11) et les ST (broche 12) de chaque 74HC595 sont liés (voir schéma).

    Je vais utiliser une alimentation externe de ce genre :
    --> https://www.gotronic.fr/art-alimenta...w-bb-25638.htm

    En résumé, voilà le type de montage que je vais entreprendre :
    --> quatre afficheurs 1-digit à cathode commune.
    --> huit résistances à 1k ohms à placer sur les sept segments et le decimal point (dp).
    --> quatre résistances à 1k ohms aussi, pour sélectionner les quatre 1-digit.
    --> un 74HC595 qui va gérer les sept segments et le decimal point.
    --> un seconde 74HC595 qui est monté en série par rapport au premier 74HC595.
    --> ce second 74HC595 va gérer la sélection des quatre digit.
    --> une source d'alimentation extérieure à 5V avec au moins à 500mA.

    Il reste la jonction entre la raspberry, l'alimentation extérieure et les deux 74HC595.

    --> le 5Vcc, je le prends sur l'alimentation extérieure.
    --> je relie le GND de la raspberry, au GND de l'alimentation extérieur, et aux GND des 74HC595.

    Sur le 74HC595 :

    --> le 5V est relié à l'alimentation extérieure.
    --> le 5V (broche 16) est relié au /SRCLK (broche 10).
    --> le GND (broche 13) est relié au GND de l'alimentation extérieure.
    --> le Q7' (broche 9) du premier 74HC595 vers le Q0 (broche 15) du seconde 74HC595.

    puis les broches GPIO de la Raspberry Pi :
    --> première broche de la raspberry vers le SER (serial : broche 14)
    --> deuxième broche de la raspberry vers le RCLK (Register Clock : broche 12).
    --> troisième broche de la raspberry vers le SRCLK (Serial Clock : broche 11).

    Je vais devoir faire des tas de tests avant le faire le montage final.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  12. #12
    Responsable Arduino et Systèmes Embarqués

    Citation Envoyé par Artemus24 Voir le message

    6-a) Le transistor doit être un NPN.
    Est-ce bien cela ?
    Tout dépend du montage, si c'est un afficheur à cathodes ou à anodes communes.

    Citation Envoyé par Artemus24 Voir le message
    6-b) mon choix va se porter sur l'un de ces trois là, oui, mais lequel pourrait me convenir :
    --> https://www.gotronic.fr/art-transist...c547a-1335.htm
    --> https://www.gotronic.fr/art-transist...c547b-1336.htm
    --> https://www.gotronic.fr/art-transist...c547c-1337.htm

    Je pense que je vais prendre le troisième, à savoir le BC547C. Est-ce le bon choix ?
    Le courant collecteur maxi Icmax = 100 mA est un peu juste. Si toutes les segments d'un afficheurs sont allumés (7 + le point), avec 10-15 mA par segment, tu approches de la limite...

    Pas tout regardé mais à priori ils conviennent tous pour des afficheurs 7 seg 5V

    Edit : oups, je n'avais pas vu ton dernier message

  13. #13
    Modérateur

    Salut,
    Citation Envoyé par Artemus24
    D'après ce que j'ai compris, un NPN laisse passer le courant quand le signal est à UP.
    un PNP ne laisse pas passer le courant quand le signal est à UP.
    Avec un toute petite nuance. La tension UP doit avoir la même tension que celle de l'émetteur, comme dans l'image ci dessous.

    Pour faire un OFF avec un PNP (bloquer le transistor), il faut appliquer sur la résistance de base la même tension que celle de l'émetteur, 5V des deux côtés, ce qui dans bien des cas n'est pas du tout pratique. C'est pour cette raison qu'on rencontre beaucoup moins souvent le PNP.




    Avec un PNP pas question de piloter la base du transistor avec du 3.3V si il commande quelque chose en 5V par exemple. On ne pourra pas le bloquer.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  14. #14
    Expert éminent sénior
    Salut à tous.

    Citation Envoyé par f-leb
    Tout dépend du montage, si c'est un afficheur à cathodes ou à anodes communes.
    J'ai pourtant bien précisé le type d'afficheur que je vais utiliser dans mon dernier message :
    Citation Envoyé par Artemus24
    Donc pour un afficheur à cathode commune, il me faut bien des transistors BC547 NPN.
    Avec la précision dans mes propos du choix de ce type de transistor NPN :
    Citation Envoyé par Artemus24
    D'après ce que j'ai compris, un NPN laisse passer le courant quand le signal est à UP.
    Sauf si j'ai compris tout de travers (je pense que c'est le cas).

    Citation Envoyé par f-leb
    Le courant collecteur maxi Icmax = 100 mA est un peu juste.
    Je vais prendre le problème à l'envers : Qu'est-ce que tu me conseilles comme transistor ? Et de quel type pour un afficheur à cathode commune ?

    Si j'utilise deux 74HC595, du coup, je n'ai plus besoin de transistors, n'est-ce pas ?

    Citation Envoyé par f-leb
    Edit : oups, je n'avais pas vu ton dernier message
    C'est pas bien grave.

    @ Vincent Petit : en te lisant, j'ai besoin d'un cour sur les transistors.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  15. #15
    Responsable Arduino et Systèmes Embarqués

    Salut,

    Citation Envoyé par Vincent PETIT Voir le message
    Avec un PNP pas question de piloter la base du transistor avec du 3.3V si il commande quelque chose en 5V par exemple. On ne pourra pas le bloquer.
    oups, oui, bien vu


    Citation Envoyé par Artemus24 Voir le message
    Je vais prendre le problème à l'envers : Qu'est-ce que tu me conseilles comme transistor ? Et de quel type pour un afficheur à cathode commune ?

    Si j'utilise deux 74HC595, du coup, je n'ai plus besoin de transistors, n'est-ce pas ?
    Et relier directement une sortie du 74HC595 à la cathode commune du digit ? Certainement pas. Les sorties du registre à décalage sont prévues pour conduire quelques milliampères en fonctionnement continu. Si tous les segments+point décimal sont allumés, la cathode conduit 8x le courant conduit par une LED.
    Il faut un transistor NPN : la cathode commune du digit reliée au collecteur (avec Ic = 8xcourant LED < Ic maxi du transistor), l'émetteur au GND, et la base à la sortie du registre à décalage. Le courant faible en sortie de registre est à même de saturer le transistor.
    Pour le dimensionnement, tu peux commencer par la note de la rédaction dans le manuel de laboratoire.

  16. #16
    Modérateur

    Citation Envoyé par f-leb Voir le message
    oups, oui, bien vu
    Ce n'était qu'une petite remarque sur le pourquoi on rencontre rarement le PNP, mais personne n'avait fait d'erreur depuis le début

    Par contre je n'ai pas encore compris le montage ? Combien de 74HC595 ? Quel afficheur ? Quel type ?

    Le problème en électronique et le même qu'en informatique, on a toujours beaucoup de possibilité pour faire la même chose

    On peut prendre un 74HC595 par afficheur 7 segments, pas besoin de transistor mais il faudra un paquet de résistance et un paquet de filasse a câbler si on veut dupliquer 4 fois le montage (pour gérer 4 afficheurs), On peut prendre un composant optimisé juste pour les afficheurs comme le MAX7219 avec son générateur de courant intégré qui permet de se passer des résistances, on peut prendre un seul 74HC595 pour piloter des afficheurs 7 segments un par un chacun leur tour et suffisamment vite pour qu'on n'y voit que du feu.

    En tout cas expérimenter deux 74HC595 en cascade est intéressant. Pas forcément pour piloter des afficheurs 7 segments, mais plutôt car on peut reconstruire un port parallèle 16 bits (on réalise un convertisseur données séries via le SPI vers données parallèle sur les sorties), en en mettant 4 en cascades on reproduit un port 32 bits (et pourquoi pas piloter un vieux disque dur IDE en remplaçant les 74HC595 par des 74HC299 car ils font entrées/sorties)
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  17. #17
    Responsable Arduino et Systèmes Embarqués

    Salut Vincent,

    Citation Envoyé par Vincent PETIT Voir le message
    Par contre je n'ai pas encore compris le montage ? Combien de 74HC595 ? Quel afficheur ? Quel type ?

    Le problème en électronique et le même qu'en informatique, on a toujours beaucoup de possibilité pour faire la même chose
    Si je ne me trompe pas, Artemus est parti sur un afficheur 4 digits à cathode commune (ou 4 x 1 afficheur à cathode commune mais il va falloir du câble en plus) piloté en amont par deux 74HC595 en cascade. Le premier pour piloter les segments+point décimal, et 4 sorties du deuxième serviront à activer les digits chacun leur tour (multiplexage).

  18. #18
    Modérateur

    D'accord,
    Si l'idée c'était de se mettre 4 sorties du deuxième 74HC595 à l'état bas pour activer les digits chacun leur tour (sans transistor) alors c'était très astucieuse ! Grâce au IOL - le courant pouvant rentrer dans une broche afin de rejoindre le 0V, mais oui comme tu l'as dit plus haut là il risque d'avoir un peut trop de courant qui va entrer dans une broche. Sur ce type de composant, le IOL doit être de 20mA grand max si on allume un 8 sur l'afficheur, soit 7 segments d'allumés en même temps si je ne dis pas de bêtise il faudrait que chaque segment ne consomme pas plus de 2mA (ça va pas briller fort... même pas sur qu'on voit quelque chose ?)
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  19. #19

  20. #20
    Expert éminent sénior
    Salut à tous.

    Citation Envoyé par f-leb
    Et relier directement une sortie du 74HC595 à la cathode commune du digit ? Certainement pas.
    J'ai relu tous les messages, et oui, je comprends maintenant pourquoi c'est une mauvaise idée (à cause de l'intensité x8 en sortie).
    En fait, cela dépend beaucoup de la valeur des résistances que je vais devoir redimensionner.

    Citation Envoyé par f-leb
    Les sorties du registre à décalage sont prévues pour conduire quelques milliampères en fonctionnement continu.
    Combien de milliampères ?

    Je viens de jeter un coup d'oeil à la documentation (Datasheet) du 74HC595 (Texas instrument).
    --> http://www.ti.com/lit/gpn/sn74hc595

    Dans la première page du PDF, il est dit +/- 6mA OUTPUT DRIVE pour 5Vcc.

    Citation Envoyé par f-leb
    Si tous les segments+point décimal sont allumés, la cathode conduit 8x le courant conduit par une LED.
    Il est indiqué 20mA au maximum pour le OUTPUT !
    Du coup pour être < 20mA, en théorie, il faut laisser passer du 20mA / 8 = 2.5mA.
    La résistance devrait être de l'ordre de : 5Vcc / 2.5mA = 2k Ohms.
    La résistance la plus proche est du 2.2k ohms.

    Est-ce une bonne idée de ne pas prendre de transistor, et de mettre des résistances de 2.2k ohms à la place des 1k ohms à la sortie du premier 74HC595 ?
    Si je mets une résistance de 10k ohms, la led s'allume plus faiblement, mais cette fois, l'intensité x8 reste inférieure au 20mA.

    Citation Envoyé par f-leb
    Il faut un transistor NPN
    Je suppose que c'est pour le digit à cathode commune.
    Mais si j'ai un digit à anode commune, il me faut un transistor PNP, n'est-ce pas ?

    Citation Envoyé par f-leb
    la cathode commune du digit reliée au collecteur (avec Ic = 8xcourant LED < Ic maxi du transistor), l'émetteur au GND, et la base à la sortie du registre à décalage.
    Vu que ce n'est pas évident pour moi, j'ai dû relire à plusieurs reprises cette phrase pour comprendre le rôle joué par le transistor.
    Si aucun courant est présent à la base du transistor, rien ne passe entre le collecteur et l'émetteur.
    Autrement dit, la sortie du registre à LOW bloque le digit. Pourquoi ?
    Parce que le transistor est de type NPN et le digit est à cathode commune.

    Et avec ce transistor NPN, je peux me permettre de fournir à sa base du 3.3Vcc ainsi qu'une intensité faible I< 1mA.

    Citation Envoyé par Vincent Petit
    mais personne n'avait fait d'erreur depuis le début
    Si, moi.

    Citation Envoyé par Vincent Petit
    Par contre je n'ai pas encore compris le montage ? Combien de 74HC595 ? Quel afficheur ? Quel type ?
    a) Je vais utiliser des afficheurs 1-digit à cathode commune de chez Gotronic :
    --> https://www.gotronic.fr/art-afficheu...s547ap-320.htm
    Il y a une erreur dans le dessin de la digit car il faut lire C(C) et non A(C) car Gotronic a mis le même dessin pour les quatre types de digits (rouge, verte , à anode commune, à cathode commune).
    Je vais en mettre quatre.

    b) deux registres à décalages 74HC595 en cascade :
    --> https://www.gotronic.fr/art-74hc595-10102.htm
    Le premier pour contrôler les segments et le decimal point.
    Le second pour contrôler la sélection des 1-digit.

    c) des résistances de 1k ohms à la sortie du premier 74HC595.
    Des résistances de 10k ohms sur les quatre sorties du second 74HC595.

    d) il me faut quatre transistors NPN selon les recommandations de f-leb.
    Au départ, j'avais cru comprendre que l'on pouvait s'en passer si j'utilisais des digit à cathode commune.

    e) le tout sera monté sur une breadboard, reliés par du "FIL DE CÂBLAGE RIGIDE 0,20 MM²" de différentes couleurs :
    --> https://www.gotronic.fr/cat-fil-de-cablage-950.htm
    Ainsi que des jumpers si je ne peux pas faire autrement.
    Pourquoi ? Parce que je désire conserver ce montage.

    f) une alimentation extérieure :
    --> https://www.gotronic.fr/art-alimenta...w-bb-25638.htm

    Citation Envoyé par Vincent Petit
    En tout cas expérimenter deux 74HC595 en cascade est intéressant. Pas forcément pour piloter des afficheurs 7 segments, mais plutôt car on peut reconstruire un port parallèle 16 bits
    Je me suis dit que tout faire avec un port en 16 bits était la solution que je devais envisager pour piloter les segments+decimal point et sélectionner les digits.
    Avec cette solution, je peux mettre huit 1-digit.
    Je reconnais que cela va faire un paquet de fils sur la breadboard. Mais bon, si ça rentre, je ne vois pas pourquoi je n'envisagerais pas cette solution.

    Citation Envoyé par Vincent Petit
    (ça va pas briller fort... même pas sur qu'on voit quelque chose ?)
    Quand j'ai fait mon premier montage avec des leds et des interrupteurs, j'ai mis pour les leds des résistances à 1k ohms.
    Je peux t'assurer qu'elles éclaires suffisamment pour distinguer si elles sont allumées ou pas.

    Citation Envoyé par Vincent Petit
    Pour le 74HC595, 6mA recommandé sous 5V seulement, donc oui c'est vite vu
    6mA au maximum.
    Avec huit leds, cela fait 6mA * 8 = 48mA.
    Comme le dit Vincent, c'est <20mA pour la sortie du 74HC595 pour la cathode commune.

    En tout cas merci pour votre aide, car cela m'a permis de mieux comprendre le fonctionnement des digits, du 74HC595 et du dimensionnement.
    Quand j'aurai mes composants, je vais reprendre tout cela à tête reposée, tenir compte de tout ce qui a été dit.

    Encore merci pour votre aide.
    Cordialement.
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr