IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

Pull-up & Pull-down !


Sujet :

Raspberry Pi

  1. #1
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 055
    Points
    19 055
    Par défaut Pull-up & Pull-down !
    Salut à tous.

    J'aimerai avoir quelques informations sur la raspberry en ce qui concerne les interrupteurs (boutons poussoirs) et en particulier sur :
    *) les seuils électriques en volts des GPIO pour définir l'état 1 (HIGH) ou 0 (LOW).
    *) intensité minimal dans l cas d'un court-circuit afin de ne pas griller le GPIO
    *) le calcul des résistances dite de tirage ou de rappel pour un montage Pull-up et pull-down.

    Et aussi des explications sur le choix du montage en pull-up et pull-down.
    J'ai lu plusieurs articles sur le net concernant les interrupteurs et les montages en pull-up é pull-down, sans avoir compris leur utilité.

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

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


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 601
    Points : 56 698
    Points
    56 698
    Billets dans le blog
    40
    Par défaut
    Bonjour,

    Réponse partielle par manque de temps, mais j'essaierai de repasser plus tard...

    Citation Envoyé par Artemus24 Voir le message
    J'aimerai avoir quelques informations sur la raspberry en ce qui concerne les interrupteurs (boutons poussoirs) et en particulier sur :
    *) les seuils électriques en volts des GPIO pour définir l'état 1 (HIGH) ou 0 (LOW).
    Si la doc est à jour, on trouve ça au chapitre Voltage Specifications.

    Pour VDD IO=3,3V :
    - VIL (Input Low Voltage) = 0,9V max
    - VIH (Input High voltage) = 1,6V min

    Donc une entrée est à l'état LOW en dessous de 0,9V, et à l'état HIGH au-dessus de 1,6V.

  3. #3
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 187
    Points : 11 568
    Points
    11 568
    Par défaut
    [EDIT]@f-leb, je viens de voir ta réponse seulement maintenant et je me rends compte qu'il m'a fallu 1h pour faire les schémas + explications résumées... je comprends pourquoi tu dis "réponse partielle faute de temps"[/EDIT]



    Salut,
    Je ne sais pas trop ce que tu souhaites comme explications/informations, ni de quel niveau donc je vais en donner le plus possible.
    Voici la datasheet qui parle de la partie électrique https://www.raspberrypi.org/document...M3plus_1p0.pdf On trouve un tableau récap ici, en bas de cette page https://www.raspberrypi.org/document...gpio/README.md,

    Nom : Capture du 2019-04-30 17-52-16.png
Affichages : 8364
Taille : 73,4 Ko



    Citation Envoyé par Artemus24
    *) les seuils électriques en volts des GPIO pour définir l'état 1 (HIGH) ou 0 (LOW).
    VIH => tension d'entrée interprétée comme un HIGH = de 1.6V à 3.3V
    VIL => tension d'entrée interprétée comme un LOW = de 0V à 0.9V



    Citation Envoyé par Artemus24
    *) intensité minimal dans l cas d'un court-circuit afin de ne pas griller le GPIO
    Je pense que tu parles du courant maxi en cas de court circuit ? La doc ne le donne malheureusement pas ou ce n'est pas dit clairement, je n'ai trouvé aucun tableau "Absolute Maximum Rating" comme on trouve dans 99% des datasheet. En revanche il y a quelques données intéressantes si jamais tu veux placer des résistances de limitations/protections.

    Ici pour VOH le constructeur dit ; mes I/O sont alimentés en 3.3V mais si je mets une sortie à HIGH et que je débite 2mA dessus alors la tension chutera à 3V (au lieu de 3.3V) soit une perte de 0.3V pour 2mA de conso. Et pour IOH qui est une autre manière de regarder la même chose, il dit au travers d'un autre test qu'en ayant maintenu la tension HIGH à 2.3V il a réussi a débiter 17mA sur la sortie.

    Nom : g26448.png
Affichages : 6239
Taille : 41,9 Ko

    Maintenant pour VOL le constructeur dit ; mes I/O sont alimentés en 3.3V mais si je mets une sortie à LOW et que j'absorbe 2mA dessus alors la tension augmentera à 0.14V (au lieu de 0V). Et pour IOL qui est une autre manière de regarder la même chose, il dit au travers d'un autre test qu'en ayant maintenu la tension LOW à 0.4V il a réussi a aborber 18mA sur la sortie.

    Nom : text19933.png
Affichages : 6223
Taille : 43,4 Ko

    Le constructeur ne donnant pas plus d'info sur les valeurs limites, il serait sage de prendre 17mA ou 18mA pour comme courant max à ne pas dépasser (que ce soit en courant débiter ou consommé).


    Citation Envoyé par Artemus24
    *) le calcul des résistances dite de tirage ou de rappel pour un montage Pull-up et pull-down.
    Pour calculer une résistance de pullup ou down il faut prendre en compte quelques petites choses mais on peut se contenter d'un gros coup de "à la louche". Dans la datasheet on regardera le IIL et IIH qui représente les courants de fuites. Ils ne sont pas forcément des courants de défauts ceux sont des courants dont l'entrée à besoin pour fonctionner correctement. Il faut donc que la résistance de pullup ne s'oppose pas au courant de fuite : Bon ici on nous donne que IIL mais je vais considérer que IIH vaut également 5µA. La résistance de pullup maxi ne doit pas dépasser VPULLUP = 3.3V / 0.000005A = 660kΩ mais est ce vraiment une bonne idée de mettre une si haute valeur ? La réponse est non à cause du bruit électronique et plus la résistance est grande et plus le bruit électronique est fort (celui ci dépend de la température). Si on mets une résistance faible, c'est mieux mais on va consommer plus sur l'alimentation lorsque l'interrupteur est fermé. Avec une pullup de 660kΩ lorsque l'interrupteur se ferme on va consommer juste 5µA sur l'alimentation, avec une pullup de 10kΩ on consommera 330µA mais il y aura beaucoup moins de bruit. Tout est histoire de compromis et il n'y a pas de règle.

    Nom : text19969.png
Affichages : 6213
Taille : 16,7 Ko

    C'est le même principe avec une pulldown. Faire un choix de pulldown ou pullup est vraiment tiré par les cheveux étant donné qu'on baisse toujours la valeur théorique de la résistance de tirage. Je n'ai pas d'avis là dessus.

    Nom : text19968.png
Affichages : 12191
Taille : 16,9 Ko
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

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


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 601
    Points : 56 698
    Points
    56 698
    Billets dans le blog
    40
    Par défaut
    Citation Envoyé par Vincent PETIT Voir le message
    [EDIT]@f-leb, je viens de voir ta réponse seulement maintenant et je me rends compte qu'il m'a fallu 1h pour faire les schémas + explications résumées... je comprends pourquoi tu dis "réponse partielle faute de temps"[/EDIT]
    Salut Vincent Je comprends pourquoi il t'a fallu 1h

    A noter que les pullup-pulldown internes au Pi sont entre 50 et 65k.

  5. #5
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 055
    Points
    19 055
    Par défaut
    Salut à tous.

    Merci pour vos explications. Maintenant, il faut que je digère cela. Je reviendrais avec d'autres questions.

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

  6. #6
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 055
    Points
    19 055
    Par défaut
    Salut à tous.

    Merci pour vos explications.

    Citation Envoyé par Vincent Petit
    Je ne sais pas trop ce que tu souhaites comme explications/informations, ni de quel niveau donc je vais en donner le plus possible.
    Je me suis procuré un kit électronique de chez Kubii et j'ai réalisé un montage basique comprenant deux interrupteurs et sept leds.
    Je me suis fait un programme écrit en 'C/C++' afin de gérer le tout avec trois timers et un chenillard avec plusieurs effets.
    Le premier bouton sélectionne l'allumage et l'extinction de toutes les leds, le deuxième bouton gère le choix de l'effet chenillard.
    A l'inverse de ce que j'ai pu voir, j'ai préféré sortir correctement de mon programme au lieu de faire un CTRL-C.

    Ça fonctionne parfaitement, oui, sauf que du point de vue de la valeur des résistances, je n'y comprends rien.
    Le montage sur la plaque d'essai n'a posé aucun problème puisque je me suis informé sur la net avant de faire quoi que ce soit.
    J'ai utilisé pour les leds les résistances à 1k ohms et pour les interrupteurs, les résistances à 10k ohms.
    De toutes façons, je n'avais pas d'autres possibilités.

    Qu'est-ce que je souhaite ?
    Comment passe-t-on des caractéristiques de la raspberry au schéma suivant dans le cas du pull-down sur les interrupteurs ? Et en particulier la valeur des résistances.



    J'ai trouvé ce schéma dans un site consacré à l'arduino et le seul correctif concerne le voltage qui est de 3,3Vcc et non de 5Vcc.

    Indiquez le numéro de la question si vous répondez, svp !

    1) j'ai fait le choix du pull-down car il me semble que c'est plus logique d'avoir un état à 0 quand le bouton n'est pas enfoncé et un état à 1 quand celui-ci en pressé.
    Vous pouvez argumenter sur le bienfait de ce choix ou sur celui du pull-up afin que je comprenne mieux la différence entre ces deux pull.

    2) après la lecture de votre message, je constate que le calcul des résistances (de tirage ou de rappel) dépendent de IIL et de IIH.
    J'avais cru comprendre que cela dépendait de ILV et de IHV, c'est-à-dire des seuils

    Dois-je comprendre que cette valeur de 5µA correspond à un seuil où la GPIO est dite flottante (au delà, elle ne l'est plus) ?

    Citation Envoyé par Vincent PETIT
    Tout est histoire de compromis et il n'y a pas de règle.
    3) C'est ce genre de réponse auquel je ne m'attendais pas.
    Je comprends mieux pourquoi l'électronique ne m'a jamais plus.
    Ce sont des recettes de cuisine où chacun définit ses propres règles.

    En tout cas, j'ai compris votre raisonnement, mais cela ne répond pas à ma question première, à savoir pourquoi ce choix la valeur de la résistance de 50k ohms pour l'interne et de 10k ohms pour l'externe.

    4) et qu'en est-il de la valeur de la résistance de protection ? Est-ce aussi un compromis ?

    5) Pouvez-vous me définir le rôle de la résistance pour forcer le voltage (les états à 1 ou à 0) dans le cas du pull-down ?
    Le rôle de la résistance n'est-elle pas là pour contrôler l'intensité ?

    6) pour le court-circuit dans le cas de la GPIO en OUTPUT, j'avais trouvé sur le site framboise 314, les valeurs suivantes :
    --> valeur maximale à ne pas dépasser sur une seule GPIO < 16mA.
    --> valeur maximale à ne pas dépasser sur toutes les GPIO < 50mA.

    Autrement dit, il n'y a pas de court-circuit (ou devrais-je dire griller la GPIO) tant que je respecte ces valeurs.
    Je suppose que cela s'applique aussi à la GPIO en INPUT.

    7) Si j'applique en externe une résistance trop forte, la GPIO est flottante ou il y a trop de parasites.
    Et si j'applique en externe une résistance trop faible, je risque de griller le GPIO.

    Comment trouver l'intervalle de confiance, si je peux m'exprimer ainsi ?
    Pour la valeur maximale, il s'agit ceux du §5). Mais pour la valeur minimale, c'est moins clair.

    8) dans le cas de l'usage de la led, j'ai pas bien compris pourquoi je peux, selon les sites, trouver des valeurs différentes.
    Par exemple, un led rouge de 5mm dite standard, dont l'intensité est à 10mA.
    Un premier calcul donne : R = 3,3Vcc / 10mA = 330 ohms.
    Un second calcul donne : R = (3,3Vcc - 1,6Vcc) / 10mA = 1,7Vcc / 10mA = 170 ohms.
    Dans mon kit, la résistance est de 1k ohms.

    Pourquoi toutes ces différences et quelle est la valeur théorique minimale que l'on doit retenir ?
    Si j'augmente la valeur de la résistance, il y a moins d'intensité que va circuler dans le circuit et par conséquent la led va moins briller.

    En tout cas, Vincent Petit, vos schémas et vos explications me sont très utiles, mais pas votre conclusion (je parle du compromis).

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

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


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 601
    Points : 56 698
    Points
    56 698
    Billets dans le blog
    40
    Par défaut
    Salut,

    Pendant que Vincent rédige son tutoriel, je réponds seulement à la dernière question

    8) dans le cas de l'usage de la led, j'ai pas bien compris pourquoi je peux, selon les sites, trouver des valeurs différentes.
    Par exemple, un led rouge de 5mm dite standard, dont l'intensité est à 10mA.
    Un premier calcul donne : R = 3,3Vcc / 10mA = 330 ohms.
    Un second calcul donne : R = (3,3Vcc - 1,6Vcc) / 10mA = 1,7Vcc / 10mA = 170 ohms.
    Dans mon kit, la résistance est de 1k ohms.

    Pourquoi toutes ces différences et quelle est la valeur théorique minimale que l'on doit retenir ?
    Si j'augmente la valeur de la résistance, il y a moins d'intensité que va circuler dans le circuit et par conséquent la led va moins briller.
    Petit préambule avec cette remarque :
    Je comprends mieux pourquoi l'électronique ne m'a jamais plus.
    Ce sont des recettes de cuisine où chacun définit ses propres règles.
    Non quand même pas, tout s'explique rigoureusement avec les lois de la Physique. Seulement, les paramètres influents sont nombreux, et il y a des incertitudes sur les valeurs. Dans le cadre d'un montage Do It Yourself, tu ne te préoccupes pas nécessairement de l'influence de la température, de la précision sur la valeur des résistances et quand un tutoriel te donne une valeur de résistance largement supérieure à celle d'un autre tutoriel, on ne te dit pas nécessairement que dans un cas la luminosité de la LED est 30% plus faible (ça clignote et point barre)... Ce qui fait que les calculs simplissimes que l'on trouve sur Internet ne sont que des calculs de prédimensionnement, pour déduire des plages de fonctionnement, des valeurs mini ou maxi, des approximations suffisantes pour des usages "courants".

    Pour calculer la résistance associée à la LED, on utilise ce genre de schéma :
    Nom : 10000000000001DA000000E27543D11A26D4D0F4.png
Affichages : 6026
Taille : 11,3 Ko

    Et la loi d'Ohm, nous dit que Formule mathématique

    Après tu te dis que ton objectif premier est de ne pas griller ta LED rouge.
    Nom : 100000000000035700000172EFF018A4F7E3C485.png
Affichages : 6025
Taille : 52,6 Ko

    On s'exécute, If = 25 mA alors...
    Mais là tu te dis que tu vas éviter d'approcher cette valeur de trop près par sécurité, alors tu prends une valeur typique :
    Nom : 100000000000034B000001E4E34373E1144CACBE.png
Affichages : 6067
Taille : 62,2 Ko

    Disons 20 mA pour la LED rouge comme dans la doc (et là c'est bien car tu as la doc de la LED, as-tu les références des LED de ton kit ?). Et là tu te rappelles que ta nouvelle priorité c'est de protéger ton Pi et qu'il vaut mieux dans ce cas éviter de débiter plus de 16 mA sur une broche GPIO. Par sécurité encore et pour éviter de trop sacrifier sur la luminosité, tu prends If=10 mA.

    Pour la tension d'alimentation Ve, en sortie de la GPIO tu as 3,3V à l'état haut. En théorie... parce que si tu débites du courant, la tension chute un peu (et pas qu'un peu d'ailleurs). De combien ? Hé bien si tu ne sais pas, tu te mets dans les conditions qui vont maximiser la valeur de Rp (pour limiter davantage le courant qui traverse la LED). Donc tu prends la valeur haute, 3,3 V, ça tombe bien...

    Pour la tension de seuil Vf, d'après la doc elle est comprise entre 1,8V et 2,4V pour la LED rouge, pas très précis. La valeur qui maximise Rp est la plus petite, soit Vf=1,8V (en fait en prenant If=10 mA, au lieu de 20 mA, Vf diminue un peu, environ 0,1V, passons...).

    Ce qui donne Rp=(3,3-1,8)/0.01=150 Ohm.

    Et là tu vas peut-être prendre une valeur encore supérieure, car tu doutes...

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 267
    Points : 4 829
    Points
    4 829
    Par défaut
    Bonsoir à tous

    1: De manière générale on travail en signal actif à 0, donc pull-up et led qui s'allument quand la sortie est à 0. Cela pour deux raisons:
    • Une raison historique, les premières logiques électronique (dont la TTL qui est partie sur la la lune) sont électriquement asymétriques entre les deux états et fonctionnent avec un courant bien plus important à l'état bas que à l'état haut. (Une entrée en l'air est considérée à 1, la sortie est capable d'absorber bien plus de courant à l'état bas que d'en fournir à l'état haut). Mine de rien jusqu'en 2010 une grande partie des circuits standards avait encore cette dissymétrie (surtout sur les sorties en techno CMOS), même si cela c'est estompé avec le temps.
    • Une logique active à l'état bas nécessite de partager la masse entre les différentes alimentations, alors qu'une logique active à l'état haut nécessite de partager les alims, beaucoup moins pratique et avec un plus grand risque de panne.

    La question de lire un 1 au lieu de 0, c'est juste une question d'écriture! (Aux études c'est une fainéantise des cancres de la classe)

    3: Le gros problème c'est que l'électronique n'est absolument pas linéaire, on fait tous pour la rendre linéaire et on a linéarisé les calculs ce qui les rendant valides que dans une plage donnée. Ensuite avec l'habitude on dimensionne quasi sans faire de calcul... De plus dans nombre de cas la plage possible pour une valeur est énorme, une résistance de pull-up cela peut être de 1k à 470k, à quoi bon calculer? On prend une valeur dont on sait que cela fonctionne sans être sensible... (je force un peu le trait). La résistance de Led c'est un peu le contre-exemple où la valeur doit être calculée assez précisément.

    4: La résistance de protection, 100ohm sur le schéma que tu montres c'est OK à deux conditions: Ne pas activer la pull-down/-up interne et augmenter sa valeur à au moins 330 ohm pour un Pi.

    5: La pull-down est nécessaire car une entrée en l'air ne va pas se mettre à 0, mais tendre vers Vcc/2 ou rester dans l'état précédent. Surtout c'est une impédance très élevée (660 kohm) et donc une antenne, le moindre champ électrostatique va changer l'état (le 50Hz de la maison diffusé par les câbles dans les murs est très largement suffisant).

    6: 50mA au total, donc pour 7 leds (qui peuvent toutes s'allumer en même temps en cas d'erreur de code) c'est maxi 7.1mA par Led, cela devient gentiment trop peu. Une Led 5mm avec un nominal de 20mA devient visible aux alentour de 5mA et est correct depuis 10mA (correct c'est à dire que l'état allumé / éteint est distinguable de jour sans incertitude). Là encore c'est au doigt mouillé.

    8: La tension des leds varient de par leur technologie. de 1.4V (jaune et vert), 1.6V (rouge traditionnel) à plus de 2V pour les rouge haute luminosité et même 3.2V pour certaines blanches (et je ne parle pas des Leds d'éclairage parfois encore plus). Donc le problème des rouges c'est qu'il faut savoir si c'est des 1.6V ou des 2 à 2.2V... Au delà d'une tension de 1.8V, on peut même alimenter les leds depuis le 5V (anode sur 5V, cathode sur la sortie via la résistance) car 5 - 1.8 = 3.2 inférieur au 3.3 d'alimentation du Pi. Mais attention à ne pas court-circuité la led sinon bye-bye le Pi...

    La réponse de F-Leb: on prend 180ohm pour couvrir les 5% de tolérance de la résistance. Car comme dit plus haut la led c'est ce qui accepte le moins de variance sur la valeur. Mais comme indiqué au point 6 ce calcul est dangereux pour le Pi.

    Ce n'est pas pour rien que c'est un métier à part entière!

    Bonne suite

    Delias

  9. #9
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 187
    Points : 11 568
    Points
    11 568
    Par défaut
    Salut,
    Je vais essayer d'aller plus loin dans mes explications pour qu'elles soient le plus concrètes possibles. Avant cela et histoire que nous parlions des mêmes choses, je vais rappeler les termes.

    Les termes lorsqu'on parle de sortie
    Tension de sortie
    • VOL, Voltage Output Low, tension de sortie à l'état bas. En théorie c'est 0V mais suivant les conditions, ça peut être un plus que 0V.
    • VOH, Voltage Output High, tension de sortie à l'état haut. En théorie +3.3V sur le Raspberry mais idem cette tension peut chuter dans certaine condition.

    Courant de sortie
    • IOL, Current Output Low, courant de sortie à l'état bas. Cette notion peut être déroutante, on l'appelle parfois "current sink" ou "entrance", c'est le courant qui peut rentrée dans cette sortie à l'état bas.
    • IOH, Current Output High, courant de sortie à l'état haut. C'est le courant qui peut sortir du composant pour allumer une LED par exemple, on l'appelle parfois "current source" ou "sortance".


    Les termes lorsqu'on parle d'entrée
    Tension d'entrée
    • VIL, Voltage Input Low, tension d'entrée interprété comme un état bas.
    • VIH, Voltage Input High, tension d'entrée interprété comme un état haut.

    Courant d'entrée
    • IIL, Current Input leakage Low, courant de fuite de l'entrée lorsqu'elle est à l'état bas.
    • IIH, Current Input leakage High, courant de fuite de l'entrée lorsqu'elle est à l'état haut.



    Pour fixer les idées voici quelques exemples de connexions entre tous ces termes. Sur l'image ci dessous, on voit les courants qui circulent lorsqu'on relie deux composants électroniques ensembles. En rouge c'est le parcours du courant lorsque la sortie du composant de gauche est à High et en bleu le parcours du courant lorsque la sortie du composant est à Low. Regardons les deux cas de figure, lorsque la sortie est à High on sait qu'elle peut débiter un IOH maxi de 17mA (en gardant en tête que la tension s'est écroulé à 2.3V pour un tel courant demandé) mais finalement seulement IIH de l'entrée va être demandé car ce courant de fuite correspond simplement à son bon fonctionnement. Lorsque la sortie est à Low, on sait que cette sortie peu encaisser un IOL de 18mA ("current source sink"), au prix d'un Low qui va monté au dessus de 0V, mais en réalité seulement IIL de l'entrée va passer dans IOL. Concernant les tensions c'est un peu plus intuitif, il faut que le VOL de la sortie soit en accord avec le VIL de l'entrée et idem avec VOH de la sortie et le VIH de l'entrée.

    Nom : fanout.gif
Affichages : 5999
Taille : 4,3 Ko

    Tous ces paramètres sont reliés entre eux; VOH => VIH et IOH => IIH. Quelques pièges dans tout ça ; imagine que tu connectes 100 entrées de composants sur la sortie. Si celle ci passe a 1 elle va devoir fournir, via son IOH, les somme de tous les IIH, le peut elle ? Et la doc nous apprend qu'en fonction du IOH la tension VOH chute et tu dois t'assurer que cette tension qui s'est un peu effondrée colle toujours avec les VIH des entrées des 100 composants.

    Tout ça pour dire qu'il y a un lien et que dans certain cas de figure il faut y regarder de prés. Evidemment, c'est rare d'être embêté lorsqu'on raccorde la sortie d'un Raspberry avec des entrées de composants électroniques ayant la même tension. Le IOH et IOL du Raspberry sont tellement grand face aux IIL et IIH que tous les niveaux de tension VOL/VOH => VIL/VIH correspondent parfaitement mais c'est une tout autre histoire si tu commandes des transistors bipolaires voir même des MOSFET à cause du gros appel de courant qu'il demande et qui met à plat le IOH de la sortie du composant qui le pilote.


    Citation Envoyé par Artemus24 Voir le message
    1) j'ai fait le choix du pull-down car il me semble que c'est plus logique d'avoir un état à 0 quand le bouton n'est pas enfoncé et un état à 1 quand celui-ci en pressé.
    Vous pouvez argumenter sur le bienfait de ce choix ou sur celui du pull-up afin que je comprenne mieux la différence entre ces deux pull.
    Ton raisonnement est le plus logique et personnellement je n'ai pas de préférence. On peut faire l'un ou l'autre. C'est un peu comme une LED et sa résistance de limitation (ou de fixation du courant ça dépend comment on le voit), cette dernière peut être placée avant la LED (sur son anode) ou après la LED (sur ça cathode) ça ne fait strictement aucune différence par contre sur internet presque tout le monde met la résistance avant la LED, sur l'anode. Va savoir pourquoi !?

    Citation Envoyé par Artemus24 Voir le message
    2) après la lecture de votre message, je constate que le calcul des résistances (de tirage ou de rappel) dépendent de IIL et de IIH.
    J'avais cru comprendre que cela dépendait de ILV et de IHV, c'est-à-dire des seuils

    Dois-je comprendre que cette valeur de 5µA correspond à un seuil où la GPIO est dite flottante (au delà, elle ne l'est plus) ?
    Tu fais référence à quoi par ILV et IHV ?
    Les 5µA c'est le courant nécessaire pour que l'entrée fonctionne, selon que l'entrée voit un High ou un Low elle aura besoin de +5µA ou -5µA.


    Citation Envoyé par Artemus24 Voir le message
    3) C'est ce genre de réponse auquel je ne m'attendais pas.
    Je comprends mieux pourquoi l'électronique ne m'a jamais plus.
    Ce sont des recettes de cuisine où chacun définit ses propres règles.

    En tout cas, j'ai compris votre raisonnement, mais cela ne répond pas à ma question première, à savoir pourquoi ce choix la valeur de la résistance de 50k ohms pour l'interne et de 10k ohms pour l'externe.
    Non non ce n'est pas des recettes miracles et comme le dit f-leb que j'ai lu en faisant tous mes "Prévisualisation du message" la doc parle de plage de valeur.


    Citation Envoyé par Artemus24 Voir le message
    5) Pouvez-vous me définir le rôle de la résistance pour forcer le voltage (les états à 1 ou à 0) dans le cas du pull-down ?
    Le rôle de la résistance n'est-elle pas là pour contrôler l'intensité ?
    Ceci devrait répondre aux deux questions, on va regarder le rôle et calculer non pas la bonne pulldown une bonne pulldown.

    On sait que le IIL max de l'entrée est de 5µA, c'est donc le courant que consomme l'entrée. On a pas la main dessus. D'un autre côté on connait la loi d'Ohm qui dit que lorsqu'un courant passe dans une résistance ça crée une tension. U=R.I ou plus exactement U = R.IIL



    Raisonnons par l'absurde ! On regarde le petit schéma de gauche.

    On veut que lorsque le bouton soit relâcher on ait 0V donc un Low à l'entrée
    Si la résistance fait 0Ω, parfait, le courant IIL sera de 5µA par contre dès que je vais fermer l'interrupteur je vais faire un jolie court-jus.
    Si la résistance faut 250kΩ, et si elle est parcourue par un courant de 5µA, ça donne VR = 250 000 * 0.000005 = 1.25V ... L'entrée va prendre ces 1.25V pour un High quand que le bouton est relâcher, on voulait un Low

    Une pulldown de 0Ω on fait un court jus quand on ferme l'interrupteur. Une pulldown de 250kΩ et l'entrée verra toujours un High peut importe l'état de l'interrupteur.

    Etant donné que pour un Raspberry un Low va de 0V à 0.9V tu as un sacré paquet de résistance qui vont convenir.

    50kΩ * 5µA = 0.25V => ok ce sera vu comme un Low par l'entrée
    10kΩ * 5µA = 0.05V => ok ce sera vu comme un Low par l'entrée
    ...

    Citation Envoyé par Artemus24 Voir le message
    4) et qu'en est-il de la valeur de la résistance de protection ? Est-ce aussi un compromis ?

    7) Si j'applique en externe une résistance trop forte, la GPIO est flottante ou il y a trop de parasites.
    Et si j'applique en externe une résistance trop faible, je risque de griller le GPIO.

    Comment trouver l'intervalle de confiance, si je peux m'exprimer ainsi ?
    Pour la valeur maximale, il s'agit ceux du §5). Mais pour la valeur minimale, c'est moins clair.
    Je crois qu'on peut répondre à ces deux questions en même temps.

    On reprend la réponse du dessus mais on va partir dans l'extrême pour voir comme la résistance de pulldown va se comporter. On prend un valeur de 10MΩ et elle est traversée par un courant de 5µA ça donne une tension de 50V Bon là on a un problème car c'est pas possible puisque tout est en +3.3V. C'est là qu'on peut regarder la résistance comme une protection de limitation en courant (pas en tension). La résistance étant fixe à 10MΩ et la tension étant fixe à 3.3V c'est en réalité le courant de 5µA qu'on a restreint, on l'a restreint à 3.3V/10MΩ = 33nA

    Exemple avec une pullup, admettons qu'on la choisisse comme suit :
    R = 3.3V / 0.000005A = 660kΩ

    Si le courant de l'entrée se met a augmenter de façon anormal disons de x10. Naïvement on fait U = R . I = 660kΩ . 0.00005A = 33V ! Pas possible car on alimente la pullup en 3.3V et en réalité c'est le courant qui va s'écraser à 5µA

    Citation Envoyé par Artemus24 Voir le message
    6) pour le court-circuit dans le cas de la GPIO en OUTPUT, j'avais trouvé sur le site framboise 314, les valeurs suivantes :
    --> valeur maximale à ne pas dépasser sur une seule GPIO < 16mA.
    --> valeur maximale à ne pas dépasser sur toutes les GPIO < 50mA.

    Autrement dit, il n'y a pas de court-circuit (ou devrais-je dire griller la GPIO) tant que je respecte ces valeurs.
    Je suppose que cela s'applique aussi à la GPIO en INPUT.
    Si tu respects ces valeur alors il n'y a pas de soucis, le problème de court circuit se pose si tu branches mal quelques choses ou le plus souvent lorsqu'on a mal dimensionner quelques choses (on veut envoyer trop de courant dans un transistor, dans une LED). Ta remarque est pertinente, et pour les INPUT ? Pour les entrées on connait leur consommation et il n'y a aucune raison qu'elle consomme plus sauf si elles sont mortes.


    Citation Envoyé par Artemus24 Voir le message
    8) dans le cas de l'usage de la led, j'ai pas bien compris pourquoi je peux, selon les sites, trouver des valeurs différentes.
    Par exemple, un led rouge de 5mm dite standard, dont l'intensité est à 10mA.
    Un premier calcul donne : R = 3,3Vcc / 10mA = 330 ohms.
    Un second calcul donne : R = (3,3Vcc - 1,6Vcc) / 10mA = 1,7Vcc / 10mA = 170 ohms.
    Dans mon kit, la résistance est de 1k ohms.
    Voir les réponses de f-leb et Delias

    Citation Envoyé par Artemus24 Voir le message
    Pourquoi toutes ces différences et quelle est la valeur théorique minimale que l'on doit retenir ?
    Si j'augmente la valeur de la résistance, il y a moins d'intensité que va circuler dans le circuit et par conséquent la led va moins briller.
    Voir les réponses de f-leb et Delias, les docs donnent des plages de valeurs, les composants électroniques ont des tolérances (des résistances à +/-5% de précision), les alimentations des taux d'ondulations et il n'est pas rare d'avoir un +3.3V +/- 10mV.

    Faire un calcul qui tombe pile poils c'est pas possible.


    Examinons ton montage.
    Quand l'interrupteur est ouvert la résistance de 100Ω est en série avec la 10kΩ donc on les ajoutera pour faire les calculs.

    Interrupteur ouvert : Quelle est la tension à l'état bas ?
    ULOW = (100Ω + 10kΩ) * 5µA
    ULOW = 0.0505V
    Ok le Raspeberry prendra cette tension comme un Low sans problème.

    Interrupteur fermé : Qu'est ce qui se passe ?
    Un courant va sortie du 5V, se diviser en deux, un courant partira vers l'entrée du Raspberry via la 100Ω et un autre courant va traverser la 10kΩ
    Le courant qui passera dans la 10kΩ sera de 500µA (+5V / 10kΩ)
    Le courant qui passera dans la 100Ω sera de 5µA (voir datasheet)

    Le courant total qui sortira du +5V sera de 505µA.

    En regardant la 100Ω et avec la loi d'Ohm on déduit rapidement que 5V / 100Ω = 50mA ça veut dire que si le courant de 5µA monte pour une raison inconnue, a 50mA alors le courant va devoir se limiter. (la résistance chauffe en échange)


    Citation Envoyé par Artemus24 Voir le message
    Comment passe-t-on des caractéristiques de la raspberry au schéma suivant dans le cas du pull-down sur les interrupteurs ? Et en particulier la valeur des résistances.


    Désolé pour les fautes d'orthographes.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  10. #10
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 055
    Points
    19 055
    Par défaut
    Salut à tous.

    Citation Envoyé par f-leb
    et là c'est bien car tu as la doc de la LED, as-tu les références des LED de ton kit ?
    En achetant le kit chez Kubii, je n'ai pas reçu les fiches techniques des leds et des interrupteurs.
    Je pense que le matériel est du standard destiné à la raspberry (enfin, je crois).

    Il est pourtant indiqué, sur le site kubii, que la led fait 3mm mais je pense que c'est plutôt du 5mm (j'ai mesuré son diamètre).
    A partir de là, j'ai considéré que c'est I=10mA (peut-être à tort).

    Mais à vrai dire, j'ai raisonné à l'envers, puisque j'ai que deux résistances, l'une à 1k ohm et l'autre à 10k ohms.
    J'ai réservé celle à 10k ohms pour l'interrupteur (résistance de rappel puisque j'utilise le pull-down) et l'autre pour une led.
    D'où I = 3,3Vcc / 1000 ohms = 3,3mA. Et dans mon exercice, j'allume une seule led à la fois.

    Merci pour les explications, c'est plus clair.
    Pour l'aspect chiffré, je me suis inspiré de cette page chez GoTronic.

    En résumé, ces leds ont un voltage au maximum de 5Vcc, et une intensité au maximum de 50mA.
    La chute de tension directe, noté Vf est de 1,8Vcc avec une intensité noté IF de 20mA.

    @ Delias : merci pour vos explications, fort intéressante !
    Je retiendrais une résistante de protection à 330 ohms et non pas à 100 ohms.

    Citation Envoyé par Delias
    Ce n'est pas pour rien que c'est un métier à part entière!
    Je me rends compte de cette difficulté pour maîtriser tous ces aspects numériques.

    @ Vincent PETIT : en regardant de plus près vos magnifiques schémas, je croyais que si la GPIO est en INPUT, le sens du courant est entrant. Or je constate qu'il est aussi sortant.

    Citation Envoyé par Vincent PETIT
    cette dernière peut être placée avant la LED (sur son anode) ou après la LED (sur ça cathode) ça ne fait strictement aucune différence par contre sur internet presque tout le monde met la résistance avant la LED, sur l'anode. Va savoir pourquoi !?
    Sachant que le sens du courant va de l'anode à la cathode, il me semble logique d'appliquer la résistance avant la led et non l'inverse.
    Si je conserve cette logique de positionnement de la résistance, je devrais privilégier le pull-up.

    Citation Envoyé par Vincent PETIT
    Si la résistance faut 250kO, et si elle est parcourue par un courant de 5µA, ça donne VR = 250 000 * 0.000005 = 1.25V ... L'entrée va prendre ces 1.25V pour un High quand que le bouton est relâcher, on voulait un Low
    Voilà l'information qui me manquait. Pour reprendre le calcul de la résistance de rappel, je dois avoir :

    a) un courant de 5µA qui correspond à IIH pour le cas de l'interrupteur fermé, c'est-à-dire une GPIO en HIGH.
    C'est le cas où la GPIO n'est pas flottante, tant que le courant est >= 5µA.

    b) au maximum une tension de 0,9Vcc (cas du LOW).
    Le calcul de la valeur maximale de la résistance donne : R * 0,000005A < 0,9Vcc, soit R < 180000 ohms, soit 180K ohms au maximum.
    D'où le 250k ohms qui va donner une tension dans l'intervalle d'incertitude (de 0,9Vcc à 1,6Vcc).

    d) mais aussi l'intensité doit être < 16ma, disons du 10mA au maximum.
    Ce qui donne R = 0,9Vcc / 0,010A = 90 ohms, j'arrondis à 100 ohms.
    Si je prends du 1mA, jz trouve 900 ohms, que j'arrondis à 1k ohms.

    Donc mon intervalle va de 1k ohms jusqu'à 180k ohms.

    Citation Envoyé par Delias
    De plus dans nombre de cas la plage possible pour une valeur est énorme, une résistance de pull-up cela peut être de 1k à 470k, à quoi bon calculer?
    Je vois une contradiction avec la valeur de 470k ohms, par rapport aux remarques de Vincent Petit.

    Merci à tous. Vos remarques sont très enrichissantes.

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

  11. #11
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 187
    Points : 11 568
    Points
    11 568
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    je croyais que si la GPIO est en INPUT, le sens du courant est entrant. Or je constate qu'il est aussi sortant.
    C'est un peu déroutant mais c'est la même chose pour les sorties finalement. Ça explique pourquoi on voit des valeurs négatives dans les datasheet (2mA et -2mA). Lors des tests VOL et VOH les voltmètres ont été positionné de la même façon (de manière a mesurer des tensions positives car c'est la donnée qui nous intéresse) et on voit dans les conditions de tests qu'ils ont absorber puis fournit 2mA.

    Nom : text19934.png
Affichages : 5870
Taille : 13,6 Ko

    Si le courant peut rentrer dans une sortie (ça peut paraitre aussi bizarre qu'un courant qui sort d'une entrée) c'est parce que dedans c'est fait comme ça. Ici une sortie à l'état bas et une LED dessus. (ch'ui entrain de devenir un bête en représentation )

    Nom : text19933.png
Affichages : 5909
Taille : 9,8 Ko

    Citation Envoyé par Artemus24 Voir le message
    Sachant que le sens du courant va de l'anode à la cathode, il me semble logique d'appliquer la résistance avant la led et non l'inverse.
    Si je conserve cette logique de positionnement de la résistance, je devrais privilégier le pull-up.
    Beaucoup de monde le voit de cette manière car malheureusement il y a une très mauvaise analogie avec l'eau qui circule partout dans la littérature et sur internet. Il est écrit que la résistance est l'équivalent d'un robinet, beaucoup de courant avant la résistance et moins après, ce qui est complètement faux en réalité. Une résistance devrait être l'équivalent d'une canalisation complète, grosse résistance = petit canalisation = petit courant et comme la LED est dans la canalisation alors le courant qui passe au travers est limité peu importe l'emplacement de la résistance

    En orange voici où est cette canalisation (son vrai nom c'est une maille dans les lois de Kirrchoff). C'est la résistance qui défini le diamètre de toute la canalisation orange et peu importe où la résistance se trouve dans la maille, même au cul de la pile ça ne ferait pas de différence.

    Nom : text19935.png
Affichages : 5936
Taille : 23,3 Ko

    Citation Envoyé par Artemus24 Voir le message
    a) un courant de 5µA qui correspond à IIH pour le cas de l'interrupteur fermé, c'est-à-dire une GPIO en HIGH.
    C'est le cas où la GPIO n'est pas flottante, tant que le courant est >= 5µA.

    b) au maximum une tension de 0,9Vcc (cas du LOW).
    Le calcul de la valeur maximale de la résistance donne : R * 0,000005A < 0,9Vcc, soit R < 180000 ohms, soit 180K ohms au maximum.
    D'où le 250k ohms qui va donner une tension dans l'intervalle d'incertitude (de 0,9Vcc à 1,6Vcc).

    d) mais aussi l'intensité doit être < 16ma, disons du 10mA au maximum.
    Ce qui donne R = 0,9Vcc / 0,010A = 90 ohms, j'arrondis à 100 ohms.
    Si je prends du 1mA, jz trouve 900 ohms, que j'arrondis à 1k ohms.

    Donc mon intervalle va de 1k ohms jusqu'à 180k ohms.


    Notons que tu as calculé la pulldown maxi mais en mini on peut descendre autant qu'on veut mais le prix à payer c'est que une fois l'interrupteur fermé (IIL n'intervient plus lorsque l'interrupteur est fermé) car un gros courant peut circuler du +3.3V, qui est d'un côté de l'interrupteur, vers la masse au travers de la pulldown (consommation excessive sur le régulateur qui fournit le +3.3V, problème d'échauffement de la résistance)


    Citation Envoyé par Artemus24 Voir le message
    Je vois une contradiction avec la valeur de 470k ohms, par rapport aux remarques de Vincent Petit.
    En effet, autant avec la pulldown tu as chercher à limiter la valeur de la résistance afin de limiter l'augmentation de la tension à ses bornes autant avec une pullup tu vas limiter la résistance afin de limiter la chute de tension à ses bornes.

    Pour la pulldown tu as fait RPULLDOWN MAXI = VIL / IIL

    Pour une pullup on fera RPULLUP MAXI = (VCC - VIH) / IIH

    Ce qui donnerait (3.3V - 1.6V) / 0.000005A = 340kΩ maxi car au delà la chute de tension a ses bornes serait trop grande et il y aurait moins de 1.6V à l'entrée du composant.


    Le principe est un peu plus compliqué à comprendre sans voir comment on modélise l'entrée (un générateur de courant de 5µA avec une grande résistance/impédance en parallèle qui forme en réalité un pont diviseur de tension avec RPULLUP, on peut le voir comme ça)

    Pourquoi Delias parle de 470kΩ et dès fois c'est même bien plus ? Si on prend des microcontrôleurs ultra faible consommation comme la gamme MSP430 de chez Texas Instruments, les IIL et IIH ne sont que de 50nA. Des résistances de tirage de l'ordre du MΩ sont tout à fait envisageable. Sur le ATMEGA328P du UNO c'est de l'ordre de 1µA.

    Citation Envoyé par Artemus24 Voir le message
    Merci à tous. Vos remarques sont très enrichissantes.
    Je trouve que sur internet et de manière générale, une grande partie des gens ne savent pas vraiment d'où sort la valeur d'une résistance de tirage. Mais quelque part on peut le comprendre au vu des paramètres variables (tolérance des résistances, prendre un résistance normalisée, définir soit même une limitation de courant 1mA ou 10mA, choisir le courant qui va traverser la résistance de tirage lorsque le switch est fermé etc...)


    ps : Tout ce qu'on a écrit juste pour une résistance de tirage !!! J'imagine même pas si quelqu'un pose une question sur les AOP ou les alimentations à découpage ou autres joyeusetés de ce genre
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

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


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 601
    Points : 56 698
    Points
    56 698
    Billets dans le blog
    40
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    J'ai utilisé pour les leds les résistances à 1k ohms et pour les interrupteurs, les résistances à 10k ohms.
    De toutes façons, je n'avais pas d'autres possibilités.

    [...]

    Un second calcul donne : R = (3,3Vcc - 1,6Vcc) / 10mA = 1,7Vcc / 10mA = 170 ohms.
    Dans mon kit, la résistance est de 1k ohms.
    La résistance 1k est trop élevée, mais on peut déjà réduire de moitié (500 Ohm) avec deux résistances de 1k en parallèle

  13. #13
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 055
    Points
    19 055
    Par défaut
    Salut à tous.

    Pour la compréhension du montage que j'ai fait, j'avais besoin de savoir calculer la résistance pull-down pour l'interrupteur.
    Sur les différents sites, presqu'aucune explication, juste des chiffres que l'on doit considérer comme vrai.

    @ Vincent PETIT : le calcul de la résistance pour le pull (je parle des deux), se fait alors ainsi :

    1) cas du pull-down : R = (0,9Vcc - 0,0Vcc) / 0,000005A = 180 000 ohms = 180k ohms.
    2) cas du pull-up : R = (3,3Vcc - 1,6Vcc) / 0,000005A = 340 000 ohms = 340k ohms.
    Au final, on prend le minimum des deux, à savoir 180k ohms.

    Mon intervalle est donc [1k ohms ; 180k ohms]. C'est le cas où j'utilise la même résistance en tirage (Pull-Up) et en rappel (Pull-Down).
    Ma question de départ se résume à ce calcul.

    Citation Envoyé par f-leb
    La résistance 1k est trop élevée, mais on peut déjà réduire de moitié (500 Ohm) avec deux résistances de 1k en parallèle
    Je peux t'assurer que la led clignote et que cela se remarque.

    En résumé, j'ai trois types de résistances dans mon montage et avec mon kit :

    1) une résistance sur le circuit de la led, et il y a sept leds, donc sept résistances ==> R = 1k ohms.
    J'ai grillé une led en faisant mumuse avec une pile de 3Vcc.
    Avec ces sept leds, je fais un chenillard avec plusieurs effets.

    2) pour l'interrupteur, j'ai choisi le pull-down avec une résistance de rappel ==> R = 10k ohms.
    Il y a deux interrupteurs, l'un pour sortir proprement du programme.
    L'autre pour sélectionner le type d'effet que je désire obtenir.
    Soit deux résistances.

    3) j'ai placé une résistance de protection entre l'interrupteur et la GPIO : R = 10k ohms.
    Soit aussi deux résistances.

    Je désire compléter mon montage par d'autres leds.
    Est-ce que je peux mettre des leds de 5mm (de diamètre) à 10mA ?
    Ou bien mettre des leds à 2mA ?

    Pour 10mA, je vais mettre au minimum une résistance de 330 ohms.
    Pour 2mA, je vais mettre au minimum une résistance de 1650 ohms.

    Combien de GPIO, je peux utiliser ?
    Avec 10mA, et à 330 ohms, seulement 5 GPIO (50mA / 10mA = 5).
    Avec 2mA et à 1650 ohms, seulement 25 GPIO (50mA / 2mA = 25).

    Question subsidiaire : après les interrupteurs et les leds, quel est l'exercice qui vient après ?

    P.S.: c'est vraiment très sympathique à tous de m'avoir autant détailler le fonctionnement du pull-up/down.

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

  14. #14
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 187
    Points : 11 568
    Points
    11 568
    Par défaut
    Salut,
    Il y a une petite erreur dans les calculs, j'ai applaudi trop vite D'ailleurs je me rends compte que dans toutes les explications que j'ai donné, nous avons raisonné que sur la pullup/down en ne tenant pas compte de la résistance de limitation qui a une influence minime. En bas du message #9 j'en parle mais je ne montre aucun calcul. Bon finalement tu vas voir que l'influence de la résistance est insignifiante au regard de l'énorme plage de possibilité pour la résistance de tirage.

    Citation Envoyé par Artemus24
    1) cas du pull-down : R = (0,9Vcc - 0,0Vcc) / 0,000005A = 180 000 ohms = 180k ohms.
    2) cas du pull-up : R = (3,3Vcc - 1,6Vcc) / 0,000005A = 340 000 ohms = 340k ohms.
    Ceci est rigoureusement exacte avec une résistance de tirage. Une fois la résistance de limitation placée voici ce qu'on a ;

    Nom : text199701.png
Affichages : 5976
Taille : 60,1 Ko



    Dans le cas de l'interrupteur ouvert :
    Dans le cas du pulldown le courant IIL créera une augmentation de tension en passant dans la puldown mais aussi dans la résistance de limitation qui est dans le passage. On s'assura de ne pas dépasser 0.9V en faisant la somme des augmentations par rapport au 0V

    Dans le cas du pullup le courant IIH créera une chute de tension en passant dans la pullup mais aussi dans la résistance de limitation qui est dans le passage, on s'assura d'avoir au moins 1.6V en retirant les chutes de tension de l'alimentation.


    Citation Envoyé par Artemus24
    1) cas du pull-down : RP-DOWN + RLIM = (0,9Vcc - 0,0Vcc) / 0,000005A = 180 000 ohms = 180k ohms.
    2) cas du pull-up : RP-UP + RLIM = (3,3Vcc - 1,6Vcc) / 0,000005A = 340 000 ohms = 340k ohms.


    Dans le cas de l'interrupteur fermé :
    Dans le cas du pulldown
    Citation Envoyé par Artemus24
    d) mais aussi l'intensité doit être < 16ma, disons du 10mA au maximum.
    Ce qui donne R = 0,9Vcc / 0,010A = 90 ohms, j'arrondis à 100 ohms.
    Si je prends du 1mA, jz trouve 900 ohms, que j'arrondis à 1k ohms.
    Oui ! Même si il n'y a aucune raison que l'entrée se mette soudainement à consommer beaucoup plus que 5µA, ça toujours sage de dire qu'on bridera le courant nécessaire à 1mA maxi

    Dans le cas du pullup
    Pour la cas pullup la présence d'une résistance de limitation est très discutable, moi je n'en mets pas, car lorsque l'interrupteur est fermé le courant IIL est sortant c'est à dire que le seul cas de figure où cette résistance de protection sensée protéger l'entrée, fonctionnera ; c'est quand l'entrée sera morte En réalité on ne protège rien.


    A titre personnel, je préfère protéger en tension mes entrées (diode d'écrêtage) et en courant mes sorties (résistance de limitation surtout si je fais une fausse manipulation est que je mets au 0V une sortie à +3.3V).


    Citation Envoyé par Artemus24
    2) pour l'interrupteur, j'ai choisi le pull-down avec une résistance de rappel ==> R = 10k ohms.
    Il y a deux interrupteurs, l'un pour sortir proprement du programme.
    L'autre pour sélectionner le type d'effet que je désire obtenir.
    Tu n'as pas vu de rebond de l'interrupteur ? Ca arrive souvent que le contact rebondisse, on peut régler ce problème soit par soft soit par l'ajout d'un petit condensateur. On reconnait la 10kΩ en tirage et la 100Ω qui ici protège l'interrupteur du condensateur.

    Nom : wfHUB.png
Affichages : 6298
Taille : 16,3 Ko

    Citation Envoyé par Artemus24
    Est-ce que je peux mettre des leds de 5mm (de diamètre) à 10mA ?
    Ou bien mettre des leds à 2mA ?
    Peut importe mais à coup de 10mA on arrivera plus vite à la limite. Le Raspberry est équipé d'un fusible réarmable de 2.5A, on a déjà quoi faire mais l'animal doit déjà consommer beaucoup à lui seul.

    Citation Envoyé par Artemus24
    Pour 10mA, je vais mettre au minimum une résistance de 330 ohms.
    Pour 2mA, je vais mettre au minimum une résistance de 1650 ohms.
    Ces valeurs de résistances devraient te faire approcher des courants de 10mA ou 2mA souhaités, il faudrait avoir la datasheet des LED pour bien faire le calcul.

    Citation Envoyé par Artemus24
    Combien de GPIO, je peux utiliser ?
    Avec 10mA, et à 330 ohms, seulement 5 GPIO (50mA / 10mA = 5).
    Avec 2mA et à 1650 ohms, seulement 25 GPIO (50mA / 2mA = 25).
    Ca personnellement je ne sais pas, je n'ai pas lu toute la doc.


    Citation Envoyé par Artemus24
    Question subsidiaire : après les interrupteurs et les leds, quel est l'exercice qui vient après ?
    Domptage des bus I2C et SPI pour sauvegarder des données dans des mémoires, aller chercher des infos de capteurs en tout genre ou encore ajouter des fonctionnalités comme un convertisseur analogique numérique ou un convertisseur numérique analogique. Jouer avec le PWM pour faire tourner des moteurs ou servomoteur. Ajouter des cartes HAT etc...
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  15. #15
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 055
    Points
    19 055
    Par défaut
    Salut Vincent PETIT.

    Citation Envoyé par Vincent PETIT
    Il y a une petite erreur dans les calculs, j'ai applaudi trop vite
    Citation Envoyé par Vincent PETIT
    Ceci est rigoureusement exacte avec une résistance de tirage.
    Ben alors, c'est juste ou pas ?

    Quand je parle du calcul qui donne 180k ohms ou 340k ohms, je pense à une seule résistance dans le schéma du pull-up/down.
    Donc oui, par résistance, il faut comprendre la résistance de protection + la résistance de rappel (ou de tirage).

    Je suis d'accord que dans le cas du pull-up, la résistance de protection ne sert à rien.
    Il ne faut pas oublier que je me trouve dans le cas du pull-down, et de ce fait, la résistance de protection sert à quelque chose.

    Citation Envoyé par Vincent PETIT
    Tu n'as pas vu de rebond de l'interrupteur ? Ça arrive souvent que le contact rebondisse,
    A vrai dire, je n'en sais rien.

    Le bouton est géré par une fonction (un thread) qui est déclenchée par le timer, avec une périodicité de 50000000 nano secondes.
    Je gère deux variables pour l'état du bouton, qui sont précédant (prec) et pressé (press).
    Quand j'appuie sur le bouton, j'ai prec=0 et press=1. Cela correspond au passage de l'état 0 à l'état 1.
    Quand je relâche le bouton, j'ai prec=1 et press=0. Cela correspond au passage de l'état 1 à l'état 0.
    Je gère que le cas où le bouton est pressé (prec=0 et press=1). Les trois autres cas sont ignorés.



    Comment calcule-t-on la valeur du condensateur si la résistance R2 (de protection) est aussi de 10k ohms ?

    Citation Envoyé par Vincent PETIT
    Domptage des bus I2C et SPI pour sauvegarder des données dans des mémoires, aller chercher des infos de capteurs en tout genre ou encore ajouter des fonctionnalités comme un convertisseur analogique numérique ou un convertisseur numérique analogique. Jouer avec le PWM pour faire tourner des moteurs ou servomoteur. Ajouter des cartes HAT etc...
    On m'a parlé d'un transistor npn qui devrait servir d'interrupteur. Il y a une résistance coté GPIO.
    Par contre, je n'utilise plus les broches 3,3Vcc et ground de la raspberry, mais une autre source d'alimentation.

    Gérer l'UART entre deux ordinateurs, par exemple windows et la raspberry.
    Pour cela, il me faut [utl=https://www.gotronic.fr/art-cable-serie-debug-usb-ttl-20673.htm]un câble[/url] que je n'ai pas encore commandé.

    Gérer un afficheur LCD, je pense avec I2C.

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

  16. #16
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 267
    Points : 4 829
    Points
    4 829
    Par défaut
    Bonjour à tous

    Citation Envoyé par Artemus24 Voir le message
    Je suis d'accord que dans le cas du pull-up, la résistance de protection ne sert à rien.
    Il ne faut pas oublier que je me trouve dans le cas du pull-down, et de ce fait, la résistance de protection sert à quelque chose.
    Non elle a la même (in-)utilité que cela soit en pull-up ou en pull-down. Elle protège une entrée/sortie dans le cas d'une erreur de programmation configurant l'E/S en sortie... Inutile en production et à titre personnel jamais utilisée même en développement, je suppose que c'est pareil pour Vincent... (mais je comprends le pourquoi du comment).

    Pour le condo, cela se calcul avec la constante de temps du couple RC, la durée des rebonds du contact et la dérive de tension admise entre l'état de repos et le seuil... Autant dire assez prise de tête. Dans les faits on essaie puis on adapte.
    A titre conservatoire tu peux considérer que (R1+R2)*C doit rester plus ou moins constant (à 50% près). Là de nouveau l'expérience te donnes les valeurs qui vont bien quelque en fonction de la technologie du circuit numérique qui suit. Et à nouveau je n'ai jamais mis d'anti-rebond en composant sur l'entrée d'un micro, toujours par le code... J'avais dû le faire en exercice avec un compteur TTL. (La résistance de pull-up interne étant plutôt faible, il faut un plus gros condo qu'avec du CMOS)

    Citation Envoyé par Artemus24 Voir le message
    On m'a parlé d'un transistor npn qui devrait servir d'interrupteur. Il y a une résistance coté GPIO.
    Par contre, je n'utilise plus les broches 3,3Vcc et ground de la raspberry, mais une autre source d'alimentation.
    Uniquement si les masses sont communes (et peuvent l'être ce n'est pas toujours le cas)! Sinon il faut passer par un couplage à séparation galvanique (le classique optocoupleur, ou plus moderne à circuit magnétique)

    Quand aux Leds est-ce des modèles standard ou des modèles "faible courant" vu qu'elles sont visibles avec 1K soit moins de 2mA? Car 10mA ou 20mA dans une faible courant et elle est morte...

    Bonne suite

    Delias

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


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 601
    Points : 56 698
    Points
    56 698
    Billets dans le blog
    40
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Question subsidiaire : après les interrupteurs et les leds, quel est l'exercice qui vient après ?
    On peut rester dans les LED avec un ou plusieurs afficheurs 7 segments, jouer avec le multiplexage, les registres à décalages, les décodeurs BCD... (voir ici).

  18. #18
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 055
    Points
    19 055
    Par défaut
    Salut Delias.

    Citation Envoyé par Delias
    Elle protège une entrée/sortie dans le cas d'une erreur de programmation configurant l'E/S en sortie...
    Vous répondez justement à ma question ! Comme je bidouille, je ne suis pas à l'abris d'une mauvaise manipulation.
    C'est comme le vélo. On commence avec les roulettes sur la roue arrière et quand on se sent plus à l'aise, on les supprime.

    Citation Envoyé par Delias
    Et à nouveau je n'ai jamais mis d'anti-rebond en composant sur l'entrée d'un micro, toujours par le code...
    Comme j'utilise un timer, chaque appel du thread gérant le bouton, est espacé par 50.000.000 nano secondes. Ce qui se passe entre deux appels ne m'intéresse pas.
    Comme l'intervention humaine est beaucoup plus longue que celle de mon timer, je suis obligé de connaitre l'état précédent du bouton.
    A savoir s'il a été enfoncé (état 1) ou relaché (état 0). Autrement dit, position instable (état 1) ou position stable (état 0).

    Ma problématique était, entre deux lancements du thread gérant le bouton, de ne pas faire deux fois la même chose.
    J'ai considéré qu'utiliser la valeur précédente du bouton était la solution.
    De ce fait, je ne gère que les changements d'état entre deux appels du thread.

    Inversement, quand la GPIO est dite flottante, je vois s'afficher dans mon code, l'état du bouton qui change continuellement.
    Mais là, dans le code, je ne peux rien faire pour ce cas de figure.

    Citation Envoyé par Delias
    Quand aux Leds est-ce des modèles standard ou des modèles "faible courant" vu qu'elles sont visibles avec 1K soit moins de 2mA? Car 10mA ou 20mA dans une faible courant et elle est morte...
    Il s'agit de mon prochain achat. Je désire installer quatre leds rouges, quatre leds jaunes et quatre leds vertes, soit douze leds au total.
    Si je choisis des leds standard à 10mA, je n'ai pas besoin de changer les résistances (1k ohms).
    Si je choisis des leds économiques (à faible courant) à 2mA, je suis obligé de mettre au miniumum du 2k ohms.

    Citation Envoyé par f-leb
    On peut rester dans les LED avec un ou plusieurs afficheurs 7 segments, jouer avec le multiplexage, les registres à décalages, les décodeurs BCD... (voir ici).
    Il y a plus de possibilités avec un afficheur LCD I2C.

    Pour l'instant, je n'ai plus de questions concernant le pull-up/down.

    Merci à tous de m'avoir si bien répondu !

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

  19. #19
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 267
    Points : 4 829
    Points
    4 829
    Par défaut
    Bonjour Artemus

    La temporisation des lectures est la technique simple d'anti-rebond logiciel, ce n'est pas la meilleures, mais la plus simple à mettre en œuvre.
    Comparer à la valeur précédente, c'est la détection de changement de signal, le point de base de la lecture d'un bouton poussoir.
    Ces deux points se retrouvent dans quasi tous les tutos Arduino un minimum sérieux.

    Citation Envoyé par Artemus24 Voir le message
    Inversement, quand la GPIO est dite flottante, je vois s'afficher dans mon code, l'état du bouton qui change continuellement.
    C'est ce que je t'ai expliqué plus haut.

    Citation Envoyé par Artemus24 Voir le message
    je ne peux rien faire pour ce cas de figure.
    Si tu peux faire 2 choses: ignorer une entrée qui n'est pas branchée et/ou activer le pull-up / pull-down interne...

    Citation Envoyé par Artemus24 Voir le message
    Il s'agit de mon prochain achat. Je désire installer quatre leds rouges, quatre leds jaunes et quatre leds vertes, soit douze leds au total.
    Si je choisis des leds standard à 10mA, je n'ai pas besoin de changer les résistances (1k ohms).
    Si je choisis des leds économiques (à faible courant) à 2mA, je suis obligé de mettre au miniumum du 2k ohms.
    C'est quoi ton calcul? Tu n'as pas suivi les explications des collègues!
    3.3V - 1.6V (tension d'une led, valeur basse) = 1.7V -> c'est cette tension qui est appliquée à la résistance. (valeur élevée, potentiellement plus faible avec des leds de 2.0 ou 2.2V)
    1.7V / 1kΩ = 1.7mA (donc courant élevé potentiellement plus faible, 1.3mA à VLed = 2.0V et 1.1mA à VLed = 2.2V)
    1.7V / 2kΩ = 0.85mA (idem)
    Ma remarque d'avant c'est que les leds que tu as ne sont pas forcement des leds 10 ou 20mA et que tenter d'y faire passer ce courant dedans en abaissant la résistance à 180Ω n'est éventuellement pas la chose à faire.


    Bonne suite

    Delias

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

Discussions similaires

  1. requete de maj aprés un rda.pull
    Par redenil dans le forum Réplications
    Réponses: 1
    Dernier message: 25/01/2009, 23h06
  2. probleme avec la methode pull
    Par redenil dans le forum Windows Mobile
    Réponses: 5
    Dernier message: 18/01/2009, 19h57
  3. Probleme Pull() RDA
    Par braxivamov dans le forum Windows Mobile
    Réponses: 1
    Dernier message: 10/04/2008, 02h57
  4. différence entre Pull & push parsing?
    Par ferrero dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 04/05/2007, 16h51
  5. [MVC] Différences entre les framework MVC push et pull ?
    Par XavierZERO dans le forum Frameworks Web
    Réponses: 5
    Dernier message: 15/01/2004, 13h12

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