Débuter en électronique !

Vous venez de déballer votre Raspberry Pi et vous vous posez des questions ? C'est ici que ça se passe !

Modérateurs : Francois, EVOTk

destroyedlolo
Raspinaute
Messages : 1270
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Débuter en électronique !

Message par destroyedlolo » jeu. 2 mai 2019 16:01

Salut,
Artemus24 a écrit :
jeu. 2 mai 2019 12:19
Justement, c'est ce principe du pull-up (ou pull-down) que je ne comprends pas.
Et plus particulièrement le rôle joué par la résistance (de tirage ou de rappel) et le calcul de leur valeur.
Bon, on va faire simple, en partant de ton schéma avec l'interrupteur.

0/ Si tu laisses ouvert l'interrupteur, on est d'accord que sans la résistance, le GPIO est en l'aire, connecté a rien, flottant. Ok ?

1/ Pour qu'il ne reste pas flottant, il faut donc dans ce cas lui appliquer un niveau électrique qui sera le niveau par défaut (à nouveau, l'inter est ouvert).
Donc la solution pourrait etre de le relier à la masse.

2/ Maintenant, on ferme l'inter ... l'inter fermé relie le GPIO au +3.3v mais comme il est aussi relié à la masse par l'étape 1, boom : cours-jus franc puisqu'on se retrouve avec le 3.3 relié directement à la masse. Toujours ok ?

3/ La solution est donc d"ajouté une résistance pour va limité le courant dans ce cas de figure, donc entre le niveau par défaut (la masse), et le GPIO.

=> C'est la résistance de rappel.

Si ce n'est pas clair, dessine les schéma des étapes 0/, 1/ et 2/ ;)

Artemus24 a écrit :
jeu. 2 mai 2019 12:19
destroyedlolo a écrit :Il n'y a CC que lorsque le GPIO est connecté en SORTIE.
Si je suis dans le cas de la led, donc la GPIO est en OUTPUT, c'est la GPIO qui produit la tension dont j'ai besoin.
La broche courte (cathode) de la led est relié à la masse (ground) et la broche longue (anode) à la GPIO.
Ce qui fait le court-circuit, c'est bien l'intensité qui passe dans le circuit. Est-ce bien cela ?
Il n'y a pas de pb de CC possible sur le GPIO ou il y a la LED ... vu que quelque soit sa configuration, ENTREE ou SORTIE, il y aura toujours une charge : la LED.
Le problème se situe sur le GPIO ou il y a l'inter : si le dit GPIO a été configuré en SORTIE et qu'il force son niveau à la masse (GPIO=0), tu te te retrouve avec un CC si l'inter est appuyé : +3.3 venant de l'inter sur la masse venant du GPIO.
Artemus24 a écrit :
jeu. 2 mai 2019 12:19
Je me trouve dans le cas de la GPIO en INPUT, comme dans le cas de l'interrupteur.
Il faut aussi que tienne compte du fait que le GPIO n'est pas forcément en INPUT : je veux dire qu'avant que tu lance ton programme, il peut (conditionnel) avoir été mis en SORTIE par un autre processus, par le systeme, ou etre son été par défaut au boot (ce que tu trouveras dans les datasheet).
Artemus24 a écrit :
jeu. 2 mai 2019 12:19
destroyedlolo a écrit :Tu peux mettre même plus, mais au bout d'un moment, ça va te rendre plus sensible aux parasites.
Sensible aux parasites, je suppose que cela signifie que la GPIO est flottante.

Si la résistance est trop forte, la GPIO sera flottante.
Si la résistance est trop faible, la GPIO sera en cort-circuit.
En très gros résumé, on peut dire ca.
Artemus24 a écrit :
jeu. 2 mai 2019 12:19
Oui, mais voilà, j'ai cru comprendre que la lecture de l'état (0 ou 1) du GPIO se faisait en volt.
De 0Vcc à 0,9Vcc, c'est l'état 0 et de 1,6Vcc à 3,3Vcc c'est l'état 1. Entre 0,9Vcc et 1,6Vcc c'est un état intermédiaire considéré comme indéfini.
Et c'est là que je ne comprends plus rien, en quoi une résistance qui influence l'intensité a aussi une influence sur la tension ?
???? Heu, que ce soit pour faire de la logique ou pour allumer une lampe, l'électricité reste de l'électricité donc : a partir du moment ou il y a une différence de potentiel (ici 3.3 vs GND) relié par des composants quelconques (ici l'inter fermé et la résistance de tirage), l'intensité qui circule doit etre INFERRIEUR à la valeur maximale du composant le plus faible.
Donc il faut que ta tension soit dans les marges indiquées pour que la logique fonctionne, mais il faut aussi que l'intensité qui y circule reste < a ce que peut supporté le composant le plus faible.
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Bud Spencer
Raspinaute
Messages : 504
Enregistré le : lun. 15 août 2016 21:38

Re: Débuter en électronique !

Message par Bud Spencer » jeu. 2 mai 2019 23:08

Pourquoi tu t’embrouille avec tous ces court-circuits ? Il ni a pas de court-circuit. Il y aurrait court-circuit uniquement si tu reliais directement le 3.3 et gnd ensemble sans rien pour limiter le courrant entre les 2. A partir du moment où il y a une charge résistive (ou quoi que ce soit d’autre pour limiter le courant), il ni a plus de court-circuit, il y a juste une consommation de courant qui est relative à la tension et à la valeur de la résistance :
Pour rappel I = U/R :
Si R = 0 alors il y a court-circuit dès l’ors que U <> 0
Si R = 10K et U = 3.3, alors I = 3.3/10K, il ni a pas court-circuit. Il y a juste une conso de .33 mA


Donc la question n’est pas de savoir à partir de quel moment il y a court-circuit ou pas mais quel courant maxi on peut admettre dans le circuit. A ça, on répond très facilement dans le cas d’une résistance de pull : Le moins possible.


Si par exemple tu mets une résistance de pull très faible. 1 ohms : I = 3.3 / 1 = 3.3 A.
Déjà, le circuit de protection du pi va sauter parce qu’il ne peut pas supporter un tel courrant. En supposant qu’il tienne le coup (un pi expérimental peut etre ….), c’est l’alimentation qui va dérouiller et la tension va s’effondrer. Soyons fou, disons que ton alimentation est du genre musclée et puisse encaisser sans broncher. Là c’est la résistance de 1 ohms qui devrait encaisser. Le pourrait-elle ? Bien sûr, si elle était dimensionné pour :
Pour rappel encore : P = UI :
Donc il faudrait une résistance capable d’encaisser 3.3 * 3.3 = 11 Watt (à la louche). Autant dire qu’avec une résistance ¼ watt classique, tu aurais intérêt à avoir une bonne climatisation et extincteur …


Maintenant, l’opposé : qu’elle résistance maxi puisque le but est de consommer le moins de courant possible tout en garantissant le maintien d’état de l’entrée. Ca, pour le savoir, il faudrait éplucher la datasheet du soc et ce n’est meme pas sûr que toutes les informations nécessaire pour en faire le calcul s’y trouve. On sait que les résistances de pull interne peuvent varier, de mémoire, de 10 à 50 k suivant les composants. S’ils ont définis cette plage de tolérance à la construction du soc, c’est qu’ils ont estimé que c’était correct et fiable pour assurer un bon fonctionnement des rôles de pull tout en sachant qu’aux 2 extrêmes cela ne représente qu’un courrant très faible.
Exemple dans le pire des cas, avec les pull en version mini (10K) et si tu mets 20 GPIO en entrées et que tu appuis sur les 20 boutons à la fois :
20 * U/I = 20 * 3.3 / 10000 = 6.6 mA (moins de la moitié de la conso d’une seule led …)
Pour bien prendre la mesure de l’ordre de grandeur, cela représente 3.3 * .0066 = .022 W soit pour 20 pull de 10K, moins de 1/10 eme la puissance admissible par une seule petite résistance de ¼ w …


Le cas de court-circuit qui t’inquiète : Tu as mis un bouton sur ce que tu penses etre une entrée (pour l’exemple bouton au gnd avec résistance de pull up) et pas de bol, tu te trompes dans ton programme en la configurant en sortie et en l’activant à 1. Là tu as 3.3 v sur ta gpio et malencontreusement tu appuis sur le bouton. Là on est d’accord, il y a court-circuit. Certain composant sont protégé contre ce genre d’erreur, d’autre pas. Perso je ne miserais pas trop sur l’excellence d’un pi dans ce domaine mais plutôt sur un grillage en règle de la sortie. Mais comme toi malin, tu as eu la bonne idée de placer une résistance de 100 ohms en série sur ton entrée au cas où elle deviendrait sortie.
Re loi d’Ohm en cas de boulette : 3.3 / 100 = 33 mA.
Bon il ni a plus court-circuit, mais il est quand meme préconisé de ne pas dépasser 15 mA par gpio et là on est quand meme à plus du double. Il ne faudrait donc peut etre pas appuyé trop longtemps sur le bouton ;)

Artemus24 a écrit :
jeu. 2 mai 2019 12:19
Et c'est là que je ne comprends plus rien, en quoi une résistance qui influence l'intensité a aussi une influence sur la tension ?
C’est une relation. La tension est proportionnel au courrant et à la résistance et le courrant est proportionnel à la tension et à la résistance (U=RI I=U/R R=U/I)

Artemus24 a écrit :
jeu. 2 mai 2019 12:19
Dans la formule U = R * I, la constante est bien la tension, non ?
Si il y a une constante la dedans, c’est plutôt R , mais c'est sans importance ... pour l'instant

Artemus24 a écrit :
jeu. 2 mai 2019 12:19
La GPIO en INPUT et non reliée se compote comme une antenne radio.
C'est un peu exagère comme relation mais c'est une image valable.

Artemus24 a écrit :
jeu. 2 mai 2019 12:19
Si je comprends bien, dans le cas du pull-up/down externe, il ne faut rien activer :

Code : Tout sélectionner

bcm2835_gpio_set_pud(KEY_a, BCM2835_GPIO_PUD_OFF);
Et dans le cas du pull-up/down interne, il faut activer le mode pull-up :

Code : Tout sélectionner

bcm2835_gpio_set_pud(KEY_a, BCM2835_GPIO_PUD_UP);
ou bien le mode pull-down interne dans le programme :

Code : Tout sélectionner

bcm2835_gpio_set_pud(KEY_a, BCM2835_GPIO_PUD_DOWN);
C'est exactement ca.

Artemus24 a écrit :
jeu. 2 mai 2019 12:19
Déjà que j'ai des problèmes de compréhensions avec les résistances, si maintenant vous introduisez les transistors, je ne vais pas m'en sortir.
Le but était d’arriver au dessin du bouton ‘virtuel’ activé par la gpio pour bien marquer la séparation entre le Pi et un montage externe. Sans entrer dans les détails, C’était l’occasion d’imager ce type de montage et ça peut servir aussi à d’autre pour comprendre le fonctionnement (avant d’en maitriser tous les paramètres). Il est trop tôt pour toi pour aborder ça, mais il viendra peut etre un jour ou je me ferais un plaisir de t’expliquer ce qu’est cette résistance Rb, à quoi elle sert et comment elle se calcul.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Artemus24
Raspinaute
Messages : 334
Enregistré le : ven. 15 sept. 2017 19:15

Re: Débuter en électronique !

Message par Artemus24 » ven. 3 mai 2019 10:13

Salut à tous.

@ Destroyedlolo : pour tes explications, oui, c'est plus clair, mais il manque un cas de figure. Je dénombre trois chemins, qui sont :
a) de la masse à la GPIO.
b) de la 3,3Vcc à la GPIO.
c) de la 3,3Vcc à la masse.

Quand l'interrupteur est ouvert, il n'y qu'un seul chemin, celui de a). J'ai un doute sur le sens du courant.
Si la GPIO est en INPUT, le sens du courant va de la masse vers la GPIO.
Si la GPIO est en OUTPUT, le sens du courant va de la GPIO vers la masse.

Quand l'interrupteur est fermé, c'est là que ça se complique, puisque il existe plusieurs chemins.
J'ai compris que le chemin depend de la valeur de la résistance. Et donc, le bon chemin est celui b).

Comme la résistance (de tirage ou de rappel) a une valeur forte, le courant qui passe par le chemin c) est très faible mais pas nul.
Ce qui me dérange dans le chemin c), c'est que le courant passe quand même.
Ne serait-il pas plus judicieux d'empêcher le courant de prendre le chemin c) ?

Je pense à une diode, entre la masse et le point de jonction.
Si l'interrupteur est ouvert, le chemin va de la masse vers la GPIO.
Si l'interrupteur est fermé, le chemin va de la 3,3Vcc vers la GPIO, sans passer par la masse.
Qu'est-ce que tu en penses ? Il se peut que j'interprète mal le sens du fonctionnement de la diode.
Je veux juste savoir si l'idée du sens de circulation du courant est correcte ou pas.
Autrement dit, dans l'idéale, le courant ne devrait suivre le chemin c).
Destroyedlolo a écrit :l'intensité qui circule doit être INFERRIEUR à la valeur maximale du composant le plus faible.
Dans le cas de la GPIO, la limite autorisée est doit être < 16Ma.
D'où l'intérêt de placer une résistance afin de rester dans les limites autorisées.

Quelle doit être la valeur de cette résistance (de tirage ou de rappel) ?
Elle dépend de la position ouverte ou fermée de l'interrupteur.
Si en position ouverte, il faut laisser passer suffisamment de courant afin que la GPIO ne soit pas flottante.
Si en position fermée, il faut faire en sorte que le courant ne puisse pas passer, ou très peu, du 3,3Vcc vers la masse.

C'est là qu'il me manque une information pour estimer la valeur de cette résistance.
Il y a l'exemple du schéma qui donne 10k ohms, et la résistance de rappel en interne à la raspberry qui est de 50k ohms.
Mais je pense que la valeur que je recherche correspond à l'intensité minimale afin que la GPIO ne soit pas flottante.
Si je prends la résistance à 50k ohms, le calcul donne I = 3,3Vcc / 50000 ohms = 0,066mA.

@ Bud Spencer : c'est beaucoup plus clair maintenant. Je résume ce que tu as dit :

a) dans un circuit, je dois tenir compte du courant maxi. Je retiens alors la limite par GPIO < 16mA. Ainsi que la limite concernant tous les GPIO < 50mA.

b) la résistance de protection doit répondre aussi au courant maxi.
Si je m'aligne sur du 10mA donc < 16mA, alors la résistance de protection doit être de R = 3,3Vcc / 10mA = 330 ohms.
Et les deux résistances (de protection et de rappel) ne s'ajoute, puisque le sens du courant n'est pas le même.

c) pour la résistance (de tirage ou de rappel), il faut appliquer le courant le plus faible, donc une valeur de résistance forte.
Sur le principe, je suis d'accord, mais je ne sais pas quelle valeur choisir afin que la GPIO ne devienne pas flottante.

d) comme j'utilise des résistances couche carbone à ¼ watts, il faut que je tienne compte aussi de la puissance, P = U * I.
Mais comme ce sont des milliampères que je manipule, la puissance est de l'ordre de : P = 3,3Vcc * 0.010A = 0,033 Watts < 0,25 Watts, soit 7 fois moindre.

e) pour le transistor, c'est très intéressant, mais on verra cela une autre fois.

P.S.: je commence à mieux comprendre le fonctionnement des interrupteurs. Merci ! :D

@+
--> RPi0v1.3, RPi0W, Rpi0WH + Tuner TV HAT, 2xRpi2B, Rpi3A+, Rpi3B+

destroyedlolo
Raspinaute
Messages : 1270
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Débuter en électronique !

Message par destroyedlolo » ven. 3 mai 2019 11:11

Salut,
Artemus24 a écrit :
ven. 3 mai 2019 10:13
@ Destroyedlolo : pour tes explications, oui, c'est plus clair, mais il manque un cas de figure. Je dénombre trois chemins, qui sont :
a) de la masse à la GPIO.
b) de la 3,3Vcc à la GPIO.
c) de la 3,3Vcc à la masse.

Quand l'interrupteur est ouvert, il n'y qu'un seul chemin, celui de a). J'ai un doute sur le sens du courant.
Si la GPIO est en INPUT, le sens du courant va de la masse vers la GPIO.
Quelle drole d'idée : le courant va toujours du + vers le -.
Comme il n'y a pas de tension négative sur le PI, le courant ne part jamais de la masse.
Dans ce cas précis, il faut voir si le GPIO fait transiter du courant en INPUT lorsqu'il lui est appliqué une tension nul (ca doit etre dans le datasheet). Généralement, les portes sont faites pour qu'il n'y en ait que lorsqu'on applique une tension positive a son entrée, mais ca dépend vraiment du circuit employé. Dans tous les cas, c'est pinuts (sur la framboise, j'en sais rien, mais sur le ESP, ca tourne en uA ou nA).
Artemus24 a écrit :
ven. 3 mai 2019 10:13
Si la GPIO est en OUTPUT, le sens du courant va de la GPIO vers la masse.
Uniquement si le GPIO est à HAUT. Sinon, pas de courant.
La résistance doit donc etre au moins de 3.3v (tension du GPIO a HAUT) / 0,016 (courant max admissible par le GPIO).
Artemus24 a écrit :
ven. 3 mai 2019 10:13
Quand l'interrupteur est fermé, c'est là que ça se complique, puisque il existe plusieurs chemins.
J'ai compris que le chemin depend de la valeur de la résistance. Et donc, le bon chemin est celui b).
Je pense qu'il faut que tu révises les lois de l'électricité ;)
A partir du moment ou il y a un circuit fermé et une différence de potentiel, il y a toujours une circulation de courant : donc il ne va pas passer uniquement par b) mais par b) et c). En clair et en décodé, Ib = 3.3 / Résistance interne du GPIO en INPUT (voir le datasheet) donc pas grand chose.
Ic = 3.3 / ta résistance de rappel.
Et I sortant du 3.3v est la somme des 2 : I = Ib + Ic ...
Artemus24 a écrit :
ven. 3 mai 2019 10:13
Comme la résistance (de tirage ou de rappel) a une valeur forte, le courant qui passe par le chemin c) est très faible mais pas nul.
Ce qui me dérange dans le chemin c), c'est que le courant passe quand même.
Ne serait-il pas plus judicieux d'empêcher le courant de prendre le chemin c) ?
Non, ca ne sert strictement à rien et ca risque de ne pas marché du tout (il faut un courant minimum pour qu'une diode devienne passante).
La solution est de mettre une résistance suffisamment grande pour que la conso soit "négligeable" pour ton alimentation ... le plus simple étant encore de passer par la résistant interne de Pull-down, elle est faite pour ça :P
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Artemus24
Raspinaute
Messages : 334
Enregistré le : ven. 15 sept. 2017 19:15

Re: Débuter en électronique !

Message par Artemus24 » sam. 4 mai 2019 10:42

Salut Destroyedlolo.

Désolé je me suis mal exprimé.
Destroyedlolo a écrit :Dans ce cas précis, il faut voir si le GPIO fait transiter du courant en INPUT lorsqu'il lui est appliqué une tension nulle (ca doit être dans le datasheet).
Le GPIO est en INPUT et l'interrupteur est ouvert, il existe un seul chemin entre la GPIO et la masse.
Comme la masse ne fournit pas de courant mais en reçoit, et que la GPIO reçoit du courant mais n'en fournit pas, en toute logique, rien ne peut circuler entre la masse et la GPIO.
De ce fait, la GPIO passe à l'état 0 (de 0Vcc jusqu'à 0,9Vcc).

Si l'interrupteur est fermé, le courant circule entre les deux chemins :
--> depuis les 3,3Vcc vers la GPIO
--> depuis les 3,3Vcc vers la masse.

La résistance de rappel réduit le courant (l'intensité) à quelque chose de très faible, ne provoquant pas de court-circuit.
La résistance de protection réduit aussi le courant mais pas autant que la résistance de rappel, et permet à la GPIO de passer à l'état 1 (de 1,6Vcc jusqu'à 3,3Vcc).

J'ai émis l'hypothèse d'une diode, mais l'idée est mauvaise.

C'est plus clair maintenant.

Merci à vous deux pour votre aide.

@+
--> RPi0v1.3, RPi0W, Rpi0WH + Tuner TV HAT, 2xRpi2B, Rpi3A+, Rpi3B+

Répondre

Retourner vers « Débutants »