Quindi hai dei disturbi sui pin relativi agli ingressi dei pulsanti, giusto?
Prova ad abbassare il valore della resistenza di pull-up fino ad 1K, se puoi, non hai problemi di consumi e se non hai qualcuno che si diverte a tenere premuto il pulsante di continuo puoi spingerti anche oltre ;-)
Inoltre se questo non bastasse devi rivedere la routine di antirimbalzo (l'hai messa vero ?) , allungando il tempo in cui il micro aspetta per essere sicuro che sia un tasto valido (ovviamente senza esagerare).
Mi ritrovo con un problema che vorrei evitare di risolvere andando per infiniti tentativi, quindi mi rivolgo a voi che di sicuro vi ci siete già scontrati :-)
Ho una scheda con un PIC16F877 a bordo, e che, semplificando molto, controlla 8 utenze 220V (tramite 8 relè) ricevendo i comandi attraverso una CAN, oppure in "locale" tramite un quadretto con 8 pulsanti collegati direttamente alla scheda.
Il fatto è che le utenze che vengono comandate sono elettricamente "sporche" (tubi fluorescenti con starter classico), e gli ingressi del PIC, spesso e volentieri, all'accensione di una delle luci, leggono delle inesistenti pressioni degli altri pulsanti, accendendo o spegnendo altri canali che nulla centrano col pulsante premuto.
Ora, il problema è di sicuro sui segnali in ingresso (se disattivo i pulsanti locali tramite apposito jumper, posso accendere e spegnere a raffica tutti i canali via CAN e non succede niente di strano)
Lo stadio di ingresso è banale: resistenze di pull-up da 4.7K e pulsanti che chiudono verso massa.
Domanda: come posso intervenire sullo stadio di ingresso per limitare quanto più possibile questo fenomeno?
"Salvatore" wrote in news:49fc95cb$0$1119$ snipped-for-privacy@reader3.news.tin.it:
Oh yes...
No non ho problemi di consumo e dubito che qualcuno abbia così tanta voglia di tenere premuti i pulsanti oltremodo, dato che la scheda gestisce diversamente i "click" più lunghi di un secondo :-)
No, devo dire che inizialmente non l'avevo messa, anche perchè i pulsanti sono dotati di antirimbalzo meccanico (avevo verificato personalmente che dando il segnale in pasto ad un contatore, non avevo doppi conteggi neanche a cercare di farlo apposta)
Dopo aver visto questo problema con la scheda in produzione (**OVVIAMENTE** in test non ha fatto niente di strano, se no non c'era gusto :-) ) e dopo aver mandato il messaggio, siccome la scheda è in produzione e doveva funzionare per forza o erano guai :-) ho patchato il programma al volo (santissima connessione ICD) filtrando via software tutti gli impulsi più corti di un tot, e risolvendo del tutto (almeno finora) il problema.
Il discorso del software comunque lo vedo più come un workaround che non come una soluzione. Lo dico perchè mentre patchavo per l'antirimbalzo ho anche inserito un contatore degli eventi che vengono filtrati, che mi viene trasmesso periodicamente via CAN. Ad ogni accensione partono fino a
4 eventi spuri... attualmente il software li filtra tutti, però ci sono.
Mi domandavo, e domando tuttora agli esperti, se c'è un modo "pulito" per fare uno stadio di ingresso del genere, il più possibile immune a disturbi di questo tipo.
Come e' possibile che durante i test non si avevano di questi problemi? forse c'e' qualcosa nello stampato definitivo che "amplifica" il fenomeno, oppure sono cambiati i test?
"Salvatore" wrote in news:49fcb970$0$830$ snipped-for-privacy@reader5.news.tin.it:
Beh si che lo è, almeno in questo caso. L'antirimbalzo per quel che ne so serve per eliminare un fenomeno ben preciso, e questo è tutt'altro: tieni conto che i disturbi in sè non sono causati da un rimbalzo e non centrano niente con i pulsanti, perchè si verificano in corrispondenza dell'attivazione dei canali di uscita, non di quelli di ingresso.
Voglio dire che se io stacco di brutto il connettore del quadro pulsanti, lasciando quindi solo uno spezzone di flat cable lungo si e no 10 cm collegato alla porta del micro, e attivo un canale via CAN, il PIC registra lo stesso queste attivazioni "fantasma".
Questo, a prescindere dal mio problema, è molto interessante...
Axeman wrote in news:Xns9C007073EC19Fteruietrunoiunwerogh@194.177.97.96:
Rettifico, in effetti anche qui si parla di uso della routine di debounce per "schermare" le interferenze...
(non so come mai ma lo stupido acrobat reader la prima volta mi ha interrotto il documento a pagina 16 e non avevo visto il resto, adesso l'ho riaperto per salvarlo ed era completo!)
"diego" wrote in news:49fdcee8$0$713$ snipped-for-privacy@news.tiscali.it:
Uhm di quei diodi ne ho a chili in giro per casa. La prossima settimana, sul nuovo esemplare della scheda (servivano pochi esemplari, quindi non ho fatto un PCB) posso provare...
il principio fondamentale e' abbassare l'impedenza della linea, e questo =
lo fa la R da 1k, filtrare eventuali rapide variazioni di tensione, e=20 questo lo fa il condensatore, i diodi proteggono poi l'ingresso=20 dell'integrato da tensioni positive e negative superiori=20 all'alimentazione (ma solo se la R da 10..100k e' in serie alla linea).
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.