Ho realizzato un circuito banale che non riesco a capire

Ho realizzato questo circuito che funziona, ma non capisco completamente

PREMESSA: Ho appena iniziato ad interessarmi per hobby all'elettronica applicata, all'utilizzo di Fritzing ed Arduino. Quindi vogliate perdonare eventuali strafalcioni.

PROBLEMA (non vi preoccupate arriviamo al problema elettronico):

Studiare il "debouncing" di un pulsante normalmente aperto (lascia passare la corrente solo se premuto) tramite Arduino creando un semplice contatore, se il pulsante viene premuto il contatore viene aumentato di

Quindi

Se tengo premuto non succede niente. Se non premo non succede niente. Se tengo premuto (quanto tempo voglio) e poi rilascio il pulsante il contatore si incrementa.

SOLUZIONE SOFTWARE: ============================================

Si crea il classico semplice circuito sulla breadboard inserendo una resistenza da 270Ohm per limitare la corrente nel circuito e una resistenza di pull-down per far si che l'ingresso di Arduino sia basso.

Il tasto da problemi di bounce qualche volta quando premo e rilascio il pulsante ci sono 2 tre incrementi alla volta allora tramite software controllo che tra una pressione (reale) e la successiva (dovuta presumibilmente al bounce) sia passato un adeguato tempi di debounce trovato sperimentalmente in 150ms.

direttamente sulla breadboard.

SOLUZIONE HARDWARE 1: ============================================

Implemento questo circuito:

formatting link

ingresso ad Arduino.

Arduino quando non viene premuto il pulsante.

- Il condensatore C1 elimina il bounce "scaricando a terra" le

individuata sperimentalmente.

Il trucco del condensatore l'ho letto su internet e pare plausibile.

io non vedo)?

La costante di tempo in questo caso sarebbe proprio R2*C1=150ms Centra Qualcosa?

Non contento e perplesso ho deciso di realizzare un curcuito passa basso classico:

SOLUZIONE HARDWARE2: ============================================

formatting link

R1 abbassa la corrente nel cuircuito. R2 fa da pull-down R3 e C1 formano il circuito passa basso.

stavolta era troppo, il contatore non si incrementava nemmeno se premevo e rilasciavo il pulsante in rapida successione, il valore giusto era di

1 microfarad.

Esiste un rapporto con il tempo di debounce usato nella soluzione via software (150ms)?

Grazie a Tutti.

Reply to
watanabe
Loading thread data ...

e solitamente il fronte deve essere ripido, mettendo il condensatore hai una lenta scarica e il circuito potrebbe non considerarlo o leggerlo male. Devi invertire il circuito, resistenza di pullup con un condensatore in parallelo per eliminare i rimbalzi e pulsante verso massa.

Reply to
John Doez

Usai l'aggettivo "banale" in un elaborato di elettrotecnica e ritrovai un segno con la matita blu e punto esclamativo.

Reply to
ramundo

Il 03/10/2015 15:16, ramundo ha scritto:

Banale per un esperto , non certo per me!

Reply to
watanabe

watanabe ha usato la sua tastiera per scrivere :

Non solo, R2 serve far scaricare C1 quando il pulsante viene rilasciato; in caso contrario Arduino continuerebbe a vedere un ingresso a livello logico alto, fin quando la tensione ai capi di C1 non scendesse al di sotto della tensione di soglia bassa.

C1 mantiene alto il livello logico dell'ingresso di Arduino per un tempo sufficiente a far esaurire il transitorio del rimbalzo dei contatti del pulsante.

Immagina che il pulsante non ci sia e che R1 invece che a +5V sia

circuito si riduce ad un partitore resistivo. All'aumentare della frequenza oltre un certo valore (che dipende da R1, R2, C1) l'effetto di C1 si fa sentire, e l'ampiezza del segnale di uscita diminuisce.

R1 va dimensionato per limitare la corrente di carica di C1, quando il

R2 deve essere >> R1, per trasmettere ad Arduino un livello logico alto a pulsante premuto. C1 deve essere tale che R2*C1 = constante di tempo di scarica desiderata.

R1 e R3 definiscono il circuito di carica di C1, R2 e R3 quello di scarica.

  • R3)*C1.

Reply to
Luigi C.

watanabe ha usato la sua tastiera per scrivere :

No.

Il condensatore C1 si carica quando premi il pulsante e mantiene detta carica per qualche microsecondo al rilascio del pulsante.

(imprecisa) del contatto per poi scaricarsi tramite r2, creando una transizione netta sotto alla soglia di tensione che arduino considera "pulsante premuto".

Non confondere mele e pere, stiamo ragionando in CC, non in CA.

Si, per calcolare il tempo in cui il condensatore si scarica.

[cut]

Anche qua stai caricando il condensatore quando premi il pulsante, solo che l'hai polarizzato AL CONTRARIO !

Reply to
Franz_aRTiglio

Il 03/10/2015 15:45, Luigi C. ha scritto: > Non solo, R2 serve far scaricare C1 quando il pulsante viene rilasciato; > in caso contrario Arduino continuerebbe a vedere un ingresso a livello > logico alto, fin quando la tensione ai capi di C1 non scendesse al di > sotto della tensione di soglia bassa. OK

condensatore il livello logico rimane alto per quel tempo necessario a

Io credevo che si potesse vedere la tensione come una componente

frequenza >0 il condensatore avrebbe permesso il passaggio verso terra solo dei secondi non facendoli arrivare adarduino. Ma evidentemente mi ero fatto un film.

E a questo punto il filtro passa basso non serve a niente.

Ma avevo visto questi:

formatting link

formatting link

Intendevo dire visto che via software ho bisogno di un tempo di debounce di 150ms potevo prevedere un tempo di scarica pari a questo e dimensionare adeguatamente c1 ed r2, giusto?

In fase di carica ho (R1+R3)*C1= 15ms In fase di Scarica ho (R3+R2)*C1= 75ms

Comunque sempre meno di 150ms della soluzione software, ma molto probabilmente li vanno contati anche i tempi necessari della comunicazione seriale per vedere il valore del contatore a schermo.

Comunque Grazie sei stato chiarissimo (dovrei pagarti la lezione)

Reply to
watanabe

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.