Vi descrivo il mio problema: ho un sensore infrarosso che leggo in analogico attraverso il pin0 di Arduino...Vorrei discriminare le letture "spurie" come quelle che vengono attuate per i pulsanti (in buona sostanza vorrei escludere le letture ingannevoli per arduino tenendo solamente quelle che superano la soglia dei 100ms)
Insomma una specie di debounce analogico, il problema è però che essendo analogico mi risulta difficile da manovrare il segnale.
fardox:
Buongiorno a tutti!
Vi descrivo il mio problema: ho un sensore infrarosso che leggo in analogico attraverso il pin0 di Arduino...Vorrei discriminare le letture "spurie" come quelle che vengono attuate per i pulsanti
Un sensore ir non ha letture spurie dovute ai rimbalzi, è una caratteristica tipica dei contatti meccanici e non dei componenti elettronici.
Magari se ci dici di quale sensore stiamo parlando e perché ti stai ponendo un problema che non c'è riusciamo a dirti come procedere.
...forse mi sono espresso male io, non è il sensore che legge "male" ma voglio essere io ad evitare fisicamente di leggere degli oggetti che passano troppo velocemente davanti al sensore, ovvero:
Se l'oggetto passa troppo velocemente e non permane per almeno 100ms la lettura appena fatta è da scartare, al contrario se permane per più di 100ms la lettura è da memorizzare.
fardox:
Se l'oggetto passa troppo velocemente e non permane per almeno 100ms la lettura appena fatta è da scartare, al contrario se permane per più di 100ms la lettura è da memorizzare.
Questo è un problema che risolvi lato software.
Al passaggio dell'oggetto fai partire un timer e controlli se il segnale dal sensore dura più di 100 m. In caso affermativo,consideri il passaggio come "buono", altrimenti lo ignori.
fardox:
l sensore è un tcrt5000
...forse mi sono espresso male io, non è il sensore che legge "male" ma voglio essere io ad evitare fisicamente di leggere degli oggetti che passano troppo velocemente davanti al sensore, ovvero:
Se l'oggetto passa troppo velocemente e non permane per almeno 100ms la lettura appena fatta è da scartare, al contrario se permane per più di 100ms la lettura è da memorizzare.
Uhmm ma quello in sé non è un sensore di movimento, semplicemente un led ir ed un fototransistor. L'uscita che ottieni dal transistor è proporzionale alla quantità di luce emessa dal led che gli torna indietro rimbalzando su di un oggetto..
Poi dipende che fai nel tuo codice!
E allora per capire se effettivamente c'è qualcosa davanti (retta) e non vuoi sapere a che distanza, devi prendere un range di valori di riferimento che indicano la condizione di normalità. Ora nel tuo caso è una questione un po' più delicata visto che parliamo di luce, il sensore come e dove sarà posizionato?
Il range di valori è ormai ben noto, si tratta di valori oscillanti tra 600 e 800.
Per cui il problema dei valori da tenere in considerazione non si pone.