Quando utilizzare le resistenze pull-down vs. pull-up


42

Dopo aver appreso e sperimentato i microcontrollori, ho capito il concetto di resistori pull-up e pull-down. Ora capisco quando e come usarli e come funzionano. Ho usato principalmente i pull-up perché mi hanno insegnato, ma mi è sempre sembrato un po 'arretrato, poiché la chiusura dell'interruttore imposta l'ingresso MCU su LOW. Penso che avrebbe più senso usare un resistore pull-down, in modo che l'ingresso sia BASSO quando l'interruttore è aperto, ma questo è solo il mio modo di pensare.

Devo tirare i miei input a lancio singolo su o giù? Quando si preferisce tirare verso il basso piuttosto che verso l'alto e viceversa?


3
Come (altra) ape elettronica, devo dire che questa domanda non è affatto stupida. Non diventare neanche io lo so, ma perché: "Visto: 1989 volte".
Steenhulthin,

* Perché * 12998 volte
Mike Causer,

Risposte:


29

La risposta dipende da quale si desidera che sia la configurazione "predefinita". Ad esempio, supponiamo di avere un MOSFET a canale N down-stream e di volerlo disattivarlo per impostazione predefinita. Quindi si utilizzerà un resistore pull-down per garantire questo comportamento se l'ingresso diventa ad alta impedenza.

schematico

simula questo circuito - Schema creato usando CircuitLab

D'altra parte, supponiamo di avere un MOSFET a canale P a monte e di volerlo disattivarlo per impostazione predefinita. Questa volta è necessario un resistore pull up per creare questo comportamento.

schematico

simula questo circuito

Esiste anche il caso alternativo in cui si desidera che un dispositivo sia attivato per impostazione predefinita, nel qual caso i due casi precedenti sarebbero invertiti (pull-up per il MOSFET a canale N, pull-down per il MOSFET a canale P).

Alcune altre considerazioni:

  1. Le linee I2C specificano resistenze di pull-up perché si prevede che i dispositivi abbiano uno scarico aperto a terra e quindi necessitano di un modo per aumentare il potenziale della linea.

  2. I comparatori analogici sono generalmente configurati come dispositivi open-drain e quindi hanno anche bisogno di resistori pull-up per ottenere un alto potenziale di uscita.

  3. Puoi assorbire più corrente usando i resistori pullup / pulldown, a seconda di ciò che è agganciato all'input / output.

  4. Entrambe le configurazioni potrebbero funzionare ugualmente bene nella tua applicazione (cioè non ci sono vantaggi significativi in ​​un modo o nell'altro).

... E qualsiasi numero di motivi molto specifici dell'applicazione per cui una configurazione può essere preferita.


16

Se il segnale non ha già una specifica, utilizzare quello che ha più senso per te. È una tua scelta fare un input attivo-alto o attivo-basso .

Se sono pulsanti, assicurati di utilizzare un circuito di debounce (o fallo nel software).

schematico

simula questo circuito - Schema creato usando CircuitLab


+1 per l'unico confronto side-by-side tra attivo-alto e attivo-basso che ho visto. Bello, chiarisce le cose.
TomServo,

15

Se la progettazione del tuo circuito è tale che puoi scegliere - in altre parole non è richiesto dal resto del circuito di utilizzare un pull up o pull down - allora dovresti considerare la sicurezza in caso di guasto.

Se il tuo microcontrollore fallisce, o solo quell'uscita fallisce, il pull up o pull down avrà effetto. Come cambierà il funzionamento del tuo dispositivo? Metterà l'utente in pericolo, ad esempio forzando un elemento riscaldante? Interesserà la sicurezza, come disabilitare una serratura?

I resistori pull / down determinano lo stato predefinito del filo. La decisione su quale debba essere lo stato predefinito dipende dalla sicurezza, infine dalla funzionalità desiderata del circuito.


5

Se stai lavorando con un Arduino / ATmega328 puoi usare la resistenza pull-up integrata .

Ci sono resistori pullup da 20K integrati nel chip Atmega a cui è possibile accedere dal software. Queste resistenze pullup integrate sono accessibili impostando pinMode () come INPUT_PULLUP. Ciò inverte efficacemente il comportamento della modalità INGRESSO, dove ALTO indica che il sensore è spento e BASSO indica che il sensore è acceso.

Il valore di questo pullup dipende dal microcontrollore utilizzato. Sulla maggior parte delle schede basate su AVR, il valore è garantito tra 20kΩ e 50kΩ. Sull'Arduino Due, è compreso tra 50kΩ e 150kΩ. Per il valore esatto, consultare la scheda tecnica del microcontrollore sulla scheda.

Quando si collega un sensore a un pin configurato con INPUT_PULLUP, l'altra estremità deve essere collegata a terra. Nel caso di un semplice interruttore, questo fa sì che il pin indichi ALTA quando l'interruttore è aperto e BASSO quando l'interruttore è premuto.

Anche il Raspberry Pi ne ha .


4

Spesso si desidera pull-up o down - spesso down - sulle uscite di dispositivi programmabili come i microcontrollori per definire il loro stato durante le sequenze di accensione. Tali uscite sono spesso ad alta impedenza all'accensione e i dispositivi collegati possono ricevere segnali involontari se ciò non viene fatto. Se ad esempio sono coinvolti più materiali di consumo, è meglio progettare ciascuna sezione come sicura con zero volt sugli ingressi e utilizzare i pull-down.

Un po 'più oscuro delle altre risposte, ma ho visto esempi di fumo blu e minacce di azioni legali.


Chiarimento: la domanda non era perché si dovrebbero usare resistori pull-up o pull-down, ma se si dovrebbe tirare su o giù.
Osvein,
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.