È possibile utilizzare solo un condensatore per rimbalzare un pulsante?


19

Mi chiedevo: perché non puoi semplicemente collegare un condensatore a un pulsante per rimbalzarlo? Ho capito come ridurre il lavoro che il mio microprocessore deve fare, ma ho uno spazio molto limitato su un PCB che sto progettando, quindi non voglio fare un circuito di debounce completo che complicherebbe il design.


schematico

simula questo circuito - Schema creato usando CircuitLab


Questo è un circuito di esempio; scusate per eventuali errori (non sono bravo a progettare circuiti con condensatori). Funzionerebbe anche questo? Per quanto riguarda il tack switch, non sono riuscito a trovarne uno che corrisponda a quello che è nella vita reale, ma funziona in questa situazione. Il pulsante è come quello trovato qui . D10sta per Digital Pin 10, ma non importa; significa solo l'ingresso di Arduino. Inoltre non so quanto grande di condensatore avrei bisogno, quindi se questo circuito funziona, di che dimensioni ho bisogno?


Ancora una volta, sto solo cercando di semplificare questo per rendere più semplice la creazione senza dover eseguire il debouncing del software. Osservando come funzionano i condensatori, sembra che funzioni, ma potrebbe anche rendere il pulsante premuto più a lungo / ritardarlo se la capacità è troppo grande. Sono comunemente usati per "attenuare" il rumore negli alimentatori, quindi non è una cosa simile in cui "attenua" il rimbalzo? Anche le modifiche del circuito per farlo funzionare (se necessario) sarebbero apprezzate.


1
Ecco dove ne abbiamo discusso prima: electronics.stackexchange.com/questions/6884/…
Andy aka

5
Ti rendi conto che puoi rimandare un input semplicemente eseguendo il polling con un intervallo di almeno 50 ms? Meno lavoro da fare per il tuo aduino :)
Wouter van Ooijen,

1
50 milioni di secondi andrebbero bene - buon punto Mr O
Andy aka

1
No, intendo il sondaggio con un intervallo di almeno 50 ms e faccio qualsiasi cosa tu debba fare in base al livello che rilevi.
Wouter van Ooijen,

1
@AnnonomusPerson - un ritardo () in un ambiente a thread singolo significa che non può succedere nient'altro. Mentre questa è un'opzione, un'altra è fare altro lavoro utile fino a quando non è il momento di ricontrollare.
Chris Stratton,

Risposte:


12

Dipende dallo stato predefinito dell'interruttore. Un condensatore si carica solo quando si fornisce una tensione positiva. Di solito, in un ambiente incorporato, utilizziamo un pull-up per dare a un pin uno stato alto predefinito e collegare l'interruttore a terra. L'aggiunta di un condensatore non aiuta qui, perché non "memorizza" lo stato fondamentale.

Tuttavia, puoi anche utilizzare un menu a discesa. Ciò significherebbe che il pin è di default basso. Aumentandolo premendo l'interruttore, si caricherà il condensatore. Dopo il rilascio, il condensatore manterrà il pin alto per un po ', quindi sì, questo funzionerebbe. Non sono sicuro che 1uF sia sufficiente, troppo piccolo o troppo, ti consiglierei di guardare con un ambito e provarlo un po '.


Quindi se cambiassi +e -funzionerebbe?
Pinguino anonimo

@AnnonomusPerson dipende. Qual è lo stato predefinito dello switch?

Intendi quando non viene premuto se conduce l'elettricità? Se questo è ciò che intendi, posso farlo in entrambi i modi a causa della natura dello switch che sto usando. Guardando il link nella mia domanda, quando non viene premuto, il pulsante conduce da top left to the bottom lefte the top right to the bottom right. Quando viene premuto, conduce da top left to the bottom right, e il top right to the bottom left.
Pinguino anonimo

Va bene. Ciò significa che per impostazione predefinita si desidera che il pin sia basso. L'interruttore dovrebbe contattare +, in modo che il condensatore si carichi un po 'prima di rilasciare il pulsante.

3
@AnnonomusPerson No, l'interruttore deve fare contatto con +. È un po 'gergo per ciò a cui lo switch si connetterà quando viene premuto . Il condensatore è nel posto giusto. Il resistore sarebbe meglio collegato direttamente da terra al pin IO.
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.