Go Down

Topic: Discriminare ingresso analogico (Read 1 time) previous topic - next topic

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 (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.

Sono a corto di idee, voi ne avete qualcuna?

Grazie.  :)
Se ritieni che la mia risposta ti abbia aiutato a risolvere il problema non esitare! ringraziami dandomi il Karma! ;)
_-_-_-_-_-_-_-_-_-_-_-

astrobeed


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.

leo72


Buongiorno a tutti!

Vi descrivo il mio problema: ho un sensore infrarosso che leggo in analogico attraverso il pin0 di Arduino...
Grazie.  :)

Pin A0, immagino.. Il pin 0 è digitale.

fardox

Il 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.

chiedo scusa per essermi espresso male  :P
Se ritieni che la mia risposta ti abbia aiutato a risolvere il problema non esitare! ringraziami dandomi il Karma! ;)
_-_-_-_-_-_-_-_-_-_-_-

leo72


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.

uwefed

Non capisco perché devi fare una lettura analogica.
Ciao Uwe

fardox

Parlando di soluzioni in codice @Leo potresti indicarmi un esempio?
Grazie.
Se ritieni che la mia risposta ti abbia aiutato a risolvere il problema non esitare! ringraziami dandomi il Karma! ;)
_-_-_-_-_-_-_-_-_-_-_-

leo72


Magari se ci dici di quale sensore stiamo parlando e perché ti stai ponendo un problema che non c'è riusciamo a dirti come procedere.


fardox

#8
Feb 16, 2013, 12:03 pm Last Edit: Feb 16, 2013, 02:04 pm by leo72 Reason: 1

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.

chiedo scusa per essermi espresso male  :P
Se ritieni che la mia risposta ti abbia aiutato a risolvere il problema non esitare! ringraziami dandomi il Karma! ;)
_-_-_-_-_-_-_-_-_-_-_-

leo72

Scusa non mi ricordavo che lo avevi già scritto.
D'altronde, quando sei a seguire 100 discussioni differenti, poi qualcosa te la dimentichi...

ma non c'è bisogno di URLARE.


sciorty

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!



fardox

A me serve solamente determinare se l'oggetto posto davanti al sensore è da li da più di 100ms ed incrementare un contatore.  :D
Se ritieni che la mia risposta ti abbia aiutato a risolvere il problema non esitare! ringraziami dandomi il Karma! ;)
_-_-_-_-_-_-_-_-_-_-_-

leo72


A me serve solamente determinare se l'oggetto posto davanti al sensore è da li da più di 100ms ed incrementare un contatore.  :D

1) leggo il sensore
2) se il sensore non "vede" niente, torno al punto 1)
3) se il sensore "vede" qualcosa, inizio a contare
4) se il sensore non "vede" più nulla e sono passati meno di 100 ms, torno al punto 1)
5) se giungo qui, sono passati di 100 ms ed il sensore continua a "vedere" qualcosa, per cui eseguo l'operazione X
6) torno ad 1)

sciorty

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?

fardox

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.  :)
Se ritieni che la mia risposta ti abbia aiutato a risolvere il problema non esitare! ringraziami dandomi il Karma! ;)
_-_-_-_-_-_-_-_-_-_-_-

Go Up