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.
Pièce jointe 471711
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
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
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
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.
:mrgreen: 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" :lol: la doc parle de plage de valeur.
Citation:
Envoyé par
Artemus24
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
https://www.developpez.net/forums/at.../text19968.png
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
:aie: 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
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 :weird: 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
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
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
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
Désolé pour les fautes d'orthographes.