Usi l'interruttore SPST come ingresso digitale?


10

Sono nuovo di "ingegneria elettrica" ​​e sto lavorando a un piccolo progetto Arduino. Voglio avere un interruttore SPST da utilizzare come ingresso digitale sulla scheda.

Ho uno dei cavi dell'interruttore collegato al posativo e l'altro collegato all'ingresso digitale. Il problema è che quando lo spengo non posso essere sicuro che l'ingresso sarà messo a terra. Come posso assicurarmi che l'ingresso sia messo a terra quando l'interruttore è spento?

Funzionerebbe se collegassi l'ingresso digitale a un resistore collegato a terra, quindi quando l'interruttore è spento verrà messo a terra, ma quando l'interruttore è acceso non andrà in cortocircuito - funzionerebbe?

Risposte:


9

La soluzione più convenzionale sarebbe quella di collegare a terra un lato dell'interruttore. Collegare l'altro all'ingresso digitale e anche a un resistore tra 1 e 10 K ohm che va all'alimentazione positiva.

Andare dall'altra parte, con un resistore pull down come descritto da Bruno, è possibile ma meno preferito. Molti input hanno già un certo grado di pull-up implicito e leggeranno un '1' se non collegati, anche se non in modo affidabile. Ma se il tuo interruttore è già collegato alla guida positiva, un pull down è una soluzione accettabile, anche se molti preferiscono usare una piccola resistenza quando si collegano gli ingressi logici alla guida positiva.

Molti microcontrollori hanno anche resistori pullup e / o pull down interni sui pin GPIO che possono essere abilitati scrivendo in un registro di configurazione. Se si sta guidando un ingresso di un tale microcontrollore, potrebbe non essere necessario un resistore pull-up esterno, sebbene non tutti i microcontrollori ne dispongano.


4
Inoltre, se si utilizza un uC con pull up o pull down integrati, è buona norma abilitarli su pin che non vengono utilizzati per mantenerli in uno stato noto.
Matt Young,

In realtà è più facile, per il mio progetto, collegare l'interruttore a terra. Quindi proverò ad usare una resistenza pull up. Grazie!
Sponge Bob,

2
Grande! Torna quando vuoi chiederci "switch bounce" :)
gbarry

Si scopre che Arduino eseguirà il pullup automaticamente. Non sono sicuro di come, ma nel codice c'è un "INPUT_PULLUP" digitale e non ho nemmeno bisogno di un resistore. È stato facile. Inoltre, riguardo al rimbalzo dello switch, l'ho notato mentre monitoravo l'uscita seriale. Quindi ho appena aggiunto un ritardo di 3 ms nel codice. Mi ha salvato un altro viaggio al negozio. :)
Sponge Bob,

Se sfogli la scheda tecnica di ATMEGA, vedrai che è possibile scrivere un po 'in un registro di configurazione per abilitare il pullup. Le librerie di Arduino lo stanno solo rendendo più conveniente. Per il rimbalzo, ignorare (quello) l'input per un po 'è un corso normale, anche se 3ms potrebbe essere un po' corto. Se il ritardo blocca l'intero sistema, potrebbe essere necessario mantenerlo breve, se ignora solo l'input di quanto sia possibile prolungarlo un po 'più a lungo poiché le riattivazioni intenzionali sarebbero ancora più lente.
Chris Stratton,

9

Sì, funzionerebbe come hai descritto. Questo è chiamato un resistore pull-down perché assicura che quando il contatto è aperto l'ingresso digitale si trova nello stato logico 0 (basso). Di solito è possibile utilizzare una resistenza da 10 KΩ per questo scopo.


2

Funzionerà e ti darà una logica positiva: un livello alto (logica "1") quando l'interruttore è chiuso.

Ma come dice Chris, la cosa invertita è più comune: interruttore collegato a terra e un resistore pull-up (anziché pull-down) all'alimentazione. La tua logica verrà invertita: una logica "1" corrisponderà a un interruttore aperto.

Un buon motivo per la versione pull-up è che la maggior parte dei microcontrollori li ha integrati e puoi abilitarli / disabilitarli a seconda delle tue esigenze. Alcuni microcontrollori hanno anche pull-down configurabili, ma questi sono meno comuni.

Se si desidera un pull-up esterno, 10 kΩ può essere un buon valore. L'ingresso di un microcontrollore può avere una corrente di dispersione fino a 1 µA, quindi 10 kΩ lascerà cadere 10 mV trascurabili. Valori più bassi sono certamente possibili, ma tieni presente che avranno una corrente maggiore a terra quando l'interruttore è chiuso. Una resistenza da 1 kΩ assorbirà 5 mA a 5 V, il che è davvero uno spreco di energia. Per i 10 kΩ sono solo 500 µA. Per applicazioni a bassissima potenza è possibile aumentare il valore a 100 kΩ, ma ricordare la corrente di dispersione; 1 µA produrrà una caduta di 100 mV!

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.