Filtrare ingressi ballerini

Ho un piccolo problemino con i microinterruttori, in pratica fin che sono nuovi aprono e chiudono in modo pulito e quasi istantaneo, dopo un po il contatto diventa ballerino in apertura, risultato i motori non si fermano in tempo e vado a sbattere oppure partono a caso.

Il problema è nato quando ho aggiunto la parte seriale del progg, rallentando un po il ciclo di esecuzione non riesco + a rilevare i falsi positivi nei vari cicli del main loop, volevo evitare gli interrupt dato che mi perdono i dati seriali.

Qualche suggerimento?

Penso che il problema sia dovuto ai contatti striscianti, dovresti implementare il debouncing per evitarli

gli interrupt ti perdono i dati seriali???? mah... velocità della seriale e codice che usi per gli interrupt, grazie :slight_smile:

MarioMas:
Ho un piccolo problemino con i microinterruttori, in pratica fin che sono nuovi aprono e chiudono in modo pulito e quasi istantaneo, dopo un po il contatto diventa ballerino in apertura, risultato i motori non si fermano in tempo e vado a sbattere oppure partono a caso.

Il problema è nato quando ho aggiunto la parte seriale del progg, rallentando un po il ciclo di esecuzione non riesco + a rilevare i falsi positivi nei vari cicli del main loop, volevo evitare gli interrupt dato che mi perdono i dati seriali.

Qualche suggerimento?

Mi sembra una cosa strana che si sporcano cosí velocemente da avere problemi.
Che valore di resistenza pulldown / pullup stai usando? Stai usando valori sotto 1kOhm?
Ciao Uwe