GPIO: Perché collegare il pulsante di messa a terra anziché + 3,3 v?


13

Nella maggior parte degli esempi che ho visto sul cablaggio dei pulsanti agli ingressi GPIO, il pulsante è cablato in modo tale che quando chiuso, un circuito viene completato tra il pin e la terra, producendo un input basso sul pin. Una resistenza pull-up viene utilizzata per impostare il valore di input su alto. Il codice sul Pi può quindi rilevare il livello basso premendo un pulsante.

Ho collegato i pulsanti a + 3.3 v, quindi il segnale è alto in quanto sembra avere più senso e mantiene il codice più logico, ma ci deve essere un motivo per cui la maggior parte delle persone preferisce connettersi a terra. Quali sono i vantaggi?


Nota: quando dico "resistenza pull up" intendevo una resistenza fisica esterna o una resistenza pull-up interna, configurata in codice.
howard10

Risposte:


17

Uno dei motivi principali per cui i pulsanti e la logica di cablaggio a GND sono preferiti (e quindi copiati su Internet) è a causa dell'ottimizzazione dell'alimentazione.

  • Tirare un perno BASSO con resistenza a GND costa 0 watt.
  • Tirare un perno ALTO con resistenza a + Vcc costa potenza.

Su circuiti complessi o circuiti che si basano su batterie questa potenza è molto preziosa.

Altre ragioni includono la bassa generazione di campi elettromagnetici. Sui dispositivi wireless, se si porta la logica in alto, si generano conversazioni inutili su ricevitori RF estremamente sensibili. Su tali ricetrasmettitori esiste un piano GND utilizzato per filtrare il rumore ed è qui che viene trascinata tutta la logica. Il processore utilizza quindi il piano GND per filtrare i rumori di commutazione.


3
In che modo tirare su o giù con un resistore costa energia? La corrente fluisce verso un ingresso di impedenza molto alta sul Pi, che ridurrà qualsiasi corrente fino a sub-microAmps, che è microWatt di potenza.
Stefandz,

OK, ma dimmi solo se sbaglio. tirare un perno verso il basso, il che è utile 0v = 0watts, ma tirarlo verso l'alto >0watts: qualsiasi tipo, micro, milli, nano, non importa. Come accennato, la potenza della batteria aiuta ogni nano watt. Ma come già risposto qui ... su USB non significa nulla. Mi sbaglio?
Piotr Kula,

1
Non necessariamente vero. Gli ingressi digitali sono ad alta impedenza verso terra - vero. Ma non sono solo resistori. Sono porte di ingresso, normalmente a FET e queste porte non sono ideali. Hanno correnti di dispersione e queste correnti di dispersione possono essere in entrambe le direzioni, dentro o fuori. Quindi il tuo pulldown potrebbe consumare un microwatt o due, proprio come potrebbe fare un pullup.
Stefandz,

Se è stato necessario progettare un dispositivo incorporato con batterie 2AA e il cliente lo richiede per almeno 12 mesi. E devi tirare su / giù un GPIO. Quale useresti per risparmiare più energia. (Stiamo parlando di micro management qui)
Piotr Kula,

4
Per quello che vale, ho fatto alcune misurazioni su questo - e il pulldown vince (per il consumo di energia) ma solo. 10k pullup a 3.3V = 9fW (sì femtowatt) - 10k pulldown a terra = 5fW. Questo non è certamente nemmeno nel salvare un po 'di territorio della batteria.
Stefandz,

9

Ci sono complesse ragioni storiche per cui gli ingegneri elettrici in genere hanno elevato gli ingressi con resistori e hanno utilizzato interruttori per metterli a terra.

Tuttavia, questi motivi non sono particolarmente rilevanti per l'uso hobby del Raspberry Pi. Usa tutto ciò che ha senso per te.

Se stai realizzando un prodotto commerciale o desideri che il tuo design sia leggermente migliore, sceglierai i pull-up con un interruttore di messa a terra per i seguenti motivi pratici:

  • Un filo di terra lungo presenta un rischio di radiazione EMI / EMC inferiore rispetto a quello collegato all'alimentazione
  • Mettere a terra qualcosa e trovare un punto di terra a cui connettersi è più semplice di una linea elettrica
  • Se l'interruttore o il cablaggio, generalmente posti a una certa distanza dal circuito, vengono danneggiati e cortocircuita il cavo o le parti interne dell'interruttore verso la custodia o l'utente, non viene fatto alcun danno: è tutto a terra

2

Non è assolutamente necessario un resistore di pull-up, il BMC GPIO ha resistori di pull-up interni che vengono attivati ​​quando programmati come input, sebbene non facciano male.

È poco pratica collegare un pin GPIO direttamente a 3V3 o GND. Il GPIO è bidirezionale e se programmato come input ciò non causerebbe problemi. D'altra parte, se programmato come uscita, verrà assorbita una corrente eccessiva.

Un buon design (sicuro) userebbe un resistore in serie (1 kΩ) in serie con il pulsante per limitare la corrente. Per i motivi addotti da Adam Davis, è preferibile collegare il pulsante a terra e posizionare la resistenza di protezione vicino al pin GPIO.


L'unico problema è che durante le fasi di avvio 1-3 questi pin sono mobili (passaggio da GPU a CPU), quindi sulla fase 4 durante l'avvio del kernel Linux i PIN sono impostati sullo stato corretto. Ciò può causare seri problemi con porte in attesa di logica. Quindi è consigliabile abbatterli comunque in modo che il periodo fluttuante durante l'avvio non renda i tuoi circuiti mentali!
Piotr Kula,

1

Non credo che ci sia un motivo per preferire l'uno all'altro sull'RPi. La maggior parte delle persone probabilmente sta semplicemente copiando o trasferendo i circuiti che ha visto altrove.

Quando si collega il circuito (con fili o PCB), va bene scegliere quello che è più conveniente e tradurlo nel significato giusto nel software.


0

Ai vecchi tempi del TTL ci voleva molta più corrente per abbassare un perno piuttosto che per tirarlo in alto. Quindi un resistore pullup potrebbe essere una resistenza più elevata (e quindi meno spreco di energia) rispetto a un resistore pulldown. Non importa con i moderni CMOS ma le vecchie abitudini sono dure a morire.


-1

Collegando il pin a terra con un resistore pullup interno, si utilizzano meno parti. Tutto ciò che serve è un pulsante; non è necessario un resistore esterno per limitare la corrente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.