GPIO: Pourquoi câbler le bouton à la masse plutôt que + 3,3v?


13

Dans la plupart des exemples que j'ai vus de câblage des boutons aux entrées GPIO, le bouton est câblé de sorte que lorsqu'il est fermé, un circuit est terminé entre la broche et la masse, produisant une entrée faible sur la broche. Une résistance de rappel est utilisée pour définir la valeur d'entrée par défaut sur élevé. Le code sur le Pi peut alors détecter un faible appui sur un bouton.

J'ai connecté les boutons à + 3,3 V, donc le signal est élevé car cela semble plus logique et maintient le code plus logique, mais il doit y avoir une raison pour laquelle la plupart des gens préfèrent se connecter à la terre. Quels sont les avantages?


Remarque: Quand je dis «pull up resistor», je voulais dire soit une résistance physique externe, soit la résistance pull-up interne, configurée en code.
howard10

Réponses:


17

L'une des principales raisons pour lesquelles le câblage des boutons et de la logique vers GND est favorisé (puis copié partout sur Internet) est dû à l'optimisation de l'alimentation.

  • Tirer une broche LOW avec une résistance à GND coûte 0 watts.
  • Tirer une broche HAUTE avec une résistance à + Vcc coûte de l'énergie.

Sur les circuits complexes ou les circuits qui reposent sur des batteries, cette puissance est très précieuse.

D'autres raisons incluent la faible génération d'EMF. Sur les appareils sans fil, une logique élevée entraînera des interférences inutiles sur des récepteurs RF extrêmement sensibles. Sur de tels émetteurs-récepteurs, un plan GND est utilisé pour filtrer le bruit et c'est là que toute la logique est entraînée. Le processeur utilise ensuite le plan GND pour filtrer les bruits de commutation.


3
Comment tirer vers le haut ou vers le bas avec une résistance coûte-t-il de l'énergie? Le courant circule vers une entrée à très haute impédance sur le Pi, ce qui va réduire tout courant à des sous-microAmps, qui sont des microWatts de puissance.
stefandz

D'accord, mais dites-moi si je me trompe. tirer une broche vers le bas, ce qui est une 0v = 0wattsutilisation, mais tirer une broche vers le haut >0watts- n'importe quel type, micro, milli, nano, n'a pas d'importance. Comme mentionné, sur la puissance de la batterie, chaque nano-watt aide. Mais comme déjà répondu ici ... sur USB, cela ne veut rien dire. Suis-je trompé?
Piotr Kula

1
Pas nécessairement vrai. Les entrées numériques sont à haute impédance à la terre - vrai. Mais ce ne sont pas que des résistances. Ce sont des portes d'entrée, normalement vers des transistors FET et ces portes ne sont pas idéales. Ils ont des courants de fuite, et ces courants de fuite peuvent être dans les deux sens, vers l'intérieur ou vers l'extérieur. Par conséquent, votre pulldown pourrait bien consommer un microwatt ou deux, autant qu'un pullup.
stefandz

Si vous deviez concevoir un appareil intégré fonctionnant avec des piles 2AA et que le client exige, il fonctionne pendant au moins 12 mois. Et vous devez tirer / monter un GPIO. Lequel utiliseriez-vous pour économiser le plus d'énergie. (On parle de micro gestion ici)
Piotr Kula

4
Pour ce que ça vaut, j'ai fait quelques mesures à ce sujet - et les gains de conversion (pour la consommation d'énergie) mais juste. 10k pullup à 3.3V = 9fW (oui femtowatts) - 10k pulldown to ground = 5fW. Ce n'est certainement même pas pour économiser un peu de territoire de la batterie.
stefandz

9

Il y a des raisons historiques complexes pour lesquelles les ingénieurs électriciens tiraient généralement les entrées avec des résistances et utilisaient des commutateurs pour les mettre à la terre.

Cependant, ces raisons ne sont pas particulièrement pertinentes pour l'utilisation hobby du Raspberry Pi. Utilisez tout ce qui a du sens pour vous.

Si vous fabriquez un produit commercial ou si vous souhaitez que votre conception soit légèrement meilleure, vous choisirez des tractions avec un interrupteur de mise à la terre pour les raisons pratiques suivantes:

  • Un long fil de terre présente moins de risques de rayonnement EMI / EMC qu'un câble connecté à l'alimentation
  • Mettre à la terre quelque chose et trouver un point de mise à la terre auquel se connecter est plus facile qu'une ligne électrique
  • Si le commutateur ou le câblage, généralement placé à une certaine distance du circuit, est endommagé et court-circuite le fil ou les pièces internes du commutateur au boîtier ou à l'utilisateur, aucun mal n'est fait - tout est à la terre

2

Il n'y a strictement pas besoin de résistance de pull-up, le BMC GPIO a des résistances de pull-up internes qui sont activées lorsqu'elles sont programmées en entrée, mais cela ne fait aucun mal.

Il est peu judicieux de connecter une broche GPIO directement à 3V3 ou GND. Le GPIO est bidirectionnel et, s'il est programmé en entrée, cela ne poserait aucun problème. D'un autre côté, s'il est programmé comme sortie, un courant excessif sera tiré.

Une bonne conception (sûre) utiliserait une résistance série (1 kΩ) en série avec le bouton poussoir pour limiter le courant. Pour les raisons avancées par Adam Davis, il est préférable de connecter le bouton-poussoir à la masse et de localiser la résistance de protection à proximité de la broche GPIO.


Le seul problème est que pendant les phases de démarrage 1 à 3, ces broches flottent (transfert du GPU vers le CPU) puis à la phase 4 pendant le démarrage du noyau Linux, les codes PIN sont définis sur l'état correct. Cela peut entraîner de graves problèmes avec les portes en attente de logique. Il est donc conseillé de les abaisser de toute façon afin que la période flottante au démarrage ne rende pas vos circuits fous!
Piotr Kula

1

Je ne pense pas qu'il y ait une raison de préférer l'un sur l'autre sur le RPi. La plupart des gens ne font probablement que copier ou porter des circuits qu'ils ont vus ailleurs.

Lors de la connexion du circuit (avec des fils ou un PCB), il est juste de choisir ce qui est le plus pratique et de le traduire dans le bon sens dans votre logiciel.


0

Dans l'ancien temps du TTL, il fallait beaucoup plus de courant pour tirer une broche plus bas que pour la tirer haut. Ainsi, une résistance de rappel pourrait être une résistance plus élevée (et donc moins de perte de puissance) qu'une résistance à rappel. Cela n'a pas d'importance avec le CMOS moderne, mais les vieilles habitudes ont la vie dure.


-1

La connexion de la broche à la terre avec une résistance de rappel interne signifie que vous utilisez moins de pièces. Tout ce dont vous avez besoin est un bouton; pas besoin de résistance externe pour limiter le courant.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.