Stai visualizzando 7 post - dal 1 a 7 (di 7 totali)
  • Autore
    Post
  • #9825
    gvsoft
    Partecipante

    Cari E.A.
    sono di nuovo a chiedervi aiuto: io con l’elettronica analogica faccio a pugni. Di solito certi problemi riesco a risolverli via software.
    Allora: ho la necessità di utiizzare gli interrupt di Arduino per generare un certo tipo di casualità. La routine di IRQ viene innescata a seguito della pressione di un pulsante in pull-up che chiude a massa quando premuto. Ma un semplice pulsante crea una serie di rimbalzi (ovvio !!) che producono l’effetto di innescare più volte la routine di interrupt vanificando l’effetto casualità che vorrei creare. Provare per credere: Un contatore nella routine di interrupt conta quante volte viene innescata: 3,5,6,7 volte. Occorre creare quindi un sistema di DEBOUNCING HARDWARE in modo che la stessa routine venga innescata solo UNA VOLTA per ogni pressione del pulsante. Dopo l’innesco disabilito gli interrupt di arduino per poi riattivarli completato l’evento).
    Ho cercato nel web circuiti antirimbalzo ma a parte quelli CHE NON FUNZIONANO PROPRIO (o sono solo teorici) ne ho trovato uno che utilizza il classico FLIP/FLOP con un deviatore che porta massa in molto alternato i due ingressi del flil/flop. Il sistema funziona ma non è ancora affidabile: viene rilevato un conteggio pari a 1 innesco ma non sempre come dimostra quanto segue:

    IRQ_1 count: 2 (Dopo ogni innesco della routine di interrupt gli IRQ di arduino vengono disabilitati e riabilitati quando deve riprendere il ciclo)
    IRQ Enable
    Attesa da IRQ
    IRQ_1 count: 1
    IRQ Enable
    Attesa da IRQ
    IRQ_1 count: 3

    Mi occorre quindi un sistema di debouncing HW affidabile altrimenti la casualità che mi serve nel mio progetto va a farsi benedire !!!.
    Mi potete dare qualche suggerimento ??
    Grazie
    gvsoft

    #9827
    Amilcare
    Amministratore del forum
    ++++ Caricamento immagine FidoCad ++++
    vedi sorgente fidocadJ Zoom fidocad

    Questa è la più sicura e semplice che conosco in quanto è il diodo stesso ad impedire che avvengano inneschi indesiderati.
    Inizialmente Ct è stato scaricato da Rt e la uscita finale è ad uno come se il circuito non fosse presente.
    Alla pressione del pulsante il condensatore attraverso il diodo si carica immediatamente e rimane in quella condizione fino a che non si rilascia il pulsante. Eventuali rimbalzi vengono ignorati perchè il diodo impedisce al condensatore di scaricarsi.
    Dopo un tempo determinato dalla formula T=0.8Ct*Rt (in secondi), il condensatore si scarica e lo stato di uscita da zero ritorna ad uno fino alla prossima pressione del pulsante

    #9829
    Picmicro675
    Partecipante

    Il semplice 555 è l’opzione più spiccia. Ovviamente se il rilevamento del ingresso è considerato valido, si mette Arduino a controllare il 555 sul reset, in modo che non ripeta l’innesco fino al momento successivo programmato.

    ++++ Caricamento immagine FidoCad ++++
    vedi sorgente fidocadJ Zoom fidocad

    Altrimenti si può fare con un CD4011

    ++++ Caricamento immagine FidoCad ++++
    vedi sorgente fidocadJ Zoom fidocad

    Scusate ma alcune parti delle librerie fidocad non sono rapprensentabili, solo con il programma si potrà incollare il sorgente e vedere bene.

    #9831
    Amilcare
    Amministratore del forum

    Ho pensato ad una ulteriore semplificazione ma la cosa è solo teorica ed andrebbe sperimentato nei valori di R e C per la migliore tempistica di anti rimbalzo

    ++++ Caricamento immagine FidoCad ++++
    vedi sorgente fidocadJ Zoom fidocad
    #9833
    Amilcare
    Amministratore del forum

    Picmicro675 per una corretta e fedele visualizzazione di Fidocadj andrebbe usata la libreria standard

    • Questa risposta è stata modificata 2 anni, 4 mesi fa da Amilcare.
    • Questa risposta è stata modificata 2 anni, 4 mesi fa da Amilcare.
    #9836
    Just4Fun
    Partecipante

    Questo è lo schema per il debouncing che normalmente uso:

    Ovviamente devi usare come ingresso delle porte con trigger (aggiungerei degli esempi di circuiti ma non è possibile inserire più di 2 link/immagini esterne).

    Trovi qui la trattazione teorica.

    • Questa risposta è stata modificata 2 anni, 4 mesi fa da Just4Fun.
    • Questa risposta è stata modificata 2 anni, 4 mesi fa da Just4Fun.
    • Questa risposta è stata modificata 2 anni, 4 mesi fa da Just4Fun.
    #9840
    gvsoft
    Partecipante

    Ragazzi, Vi ringrazio siete stati cortesi e solleciti… adesso vedrò cosa fare… grazie ancora
    Salutissimi
    gvsoft

Stai visualizzando 7 post - dal 1 a 7 (di 7 totali)
  • Devi essere connesso per rispondere a questo topic.