Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Input Digitale: Pull-Up e Pull-Down

Link copiato negli appunti

In questa lezione affrontiamo i concetti di resistenza Pull-Up e Pull-Down necessari per l'implementazione di un Input Digitale con il Rapsberry Pi.
Spesso quando si vuole leggere lo stato di un input digitale, a esempio un pulsante collegato ad un GPIO su Rapsberry, si verificano effetti inattesi: il pulsante viene letto come "premuto" anche se effettivamente non lo è, oppure lo stato dell'input digitale commuta velocemente tra HIGH e LOW.
Tutte queste problematiche hanno una motivazione specifica.
Andiamo ad analizzare le ragioni che illustrano perché ciò accada e soprattutto scopriamo come evitarlo.

Alta Impedenza

Come abbiamo già detto in alcune lezioni precedenti i GPIO del Raspberry Pi possono essere impostati in modalità OUTPUT oppure INPUT.
In quest'ultimo caso il pin in questione viene portato in uno stato di alta impedenza. In breve esso si comporta come se fosse elettricamente disconnesso dal resto del circuito. Ai suoi capi non è presente un valore di tensione preciso ma la tensione dipende dal circuito al quale il pin stesso è collegato.
Possiamo immaginare come se in serie al pin sia presente una resistenza da 100 MOhm. In questo modo il pin in INPUT richiede una piccolissima corrente per cambiare il suo stato logico.
In altre parole, quando un GPIO è in modalità INPUT, se non collegato correttamente, si comporta come una "semplicissima antenna" che può captare qualsiasi tipo di rumore o perturbazione elettrica/elettromagnetica, cambiando stato logico in maniera casuale e non controllabile.
Tale caratteristica ci permette di comprendere che per leggere correttamente lo stato di un pulsante, senza letture spurie, è necessario collegarlo al Raspberry Pi correttamente.

Resistenza di Pull-Up e Pull-Down

Questa problematica può essere risolta collegando opportunamente una resistenza al pin e al pulsante in questione.

pupd

Esistono due configurazioni possibili denominate in base alla posizione della resistenza:

  • Pull-Up: quando si inserisce una resistenza (10-100K Ohm) tra il GPIO e l'alimentazione (VCC).
  • Pull-Down: quando si inserisce una resistenza (10-100K Ohm) tra il GPIO e la massa (GND).

Vediamo più in dettaglio il funzionamento.

Pull-Up

Quando il pulsante non è premuto (OFF) il pin assume stato logico stabile 1 (HIGH).
Contrariamente al caso in cui la resistenza non sia presente lo stato logico 1 permane all'ingresso del GPIO del Raspberry Pi in modo stabile e permanente. Una volta premuto il pulsante la corrente fluisce verso massa portando il pin allo stato logico 0 (LOW).

Pull-Down

Con il pulsante OFF (non premuto) il GPIO assume stato logico stabile 0 (LOW).
Poiché la resistenza è presente lo stato logico 0 permane all'ingresso del pin del Raspberry Pi senza oscillazioni.
In questo caso alla pressione del pulsante la corrente fluisce verso massa portando il pin allo stato logico 1 (HIGH).

Conclusioni

In conclusione possiamo affermare che quando si collega un dispositivo di INPUT al Raspberry PI è sempre necessario usare una resistenza di Pull-Up o Pull-Down per evitare letture errate.
Fortunatamente ogni GPIO del Raspberry Pi è dotato internamente di una resistenza di Pull-Up o di Pull-Down attivabile via software.
In questa lezione abbiamo affrontato l'annoso problema delle letture spurie di un input digitale.
Nella prossima lezione applicheremo quanto appreso gestendo la lettura di un pulsante collegato al Raspberry Pi tramite la libreria GPIOZero.

Ti consigliamo anche