Italy
Offline
Full Member
Karma: 0
Posts: 149
Arduino = Tecnologia
|
 |
« on: February 16, 2013, 04:20:32 am » |
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. 
|
|
|
|
|
Logged
|
Se ritieni che la mia risposta ti abbia aiutato a risolvere il problema non esitare! ringraziami dandomi il Karma! 
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7382
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #1 on: February 16, 2013, 04:52:53 am » |
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.
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16546
Don't know what I do
|
 |
« Reply #2 on: February 16, 2013, 04:59:40 am » |
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.
|
|
|
|
|
Logged
|
|
|
|
|
Italy
Offline
Full Member
Karma: 0
Posts: 149
Arduino = Tecnologia
|
 |
« Reply #3 on: February 16, 2013, 05:10:37 am » |
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 
|
|
|
|
|
Logged
|
Se ritieni che la mia risposta ti abbia aiutato a risolvere il problema non esitare! ringraziami dandomi il Karma! 
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16546
Don't know what I do
|
 |
« Reply #4 on: February 16, 2013, 05:16:01 am » |
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.
|
|
|
|
|
Logged
|
|
|
|
|
BZ (I)
Offline
Brattain Member
Karma: 162
Posts: 15760
+39 349 2158303
|
 |
« Reply #5 on: February 16, 2013, 05:24:43 am » |
Non capisco perché devi fare una lettura analogica. Ciao Uwe
|
|
|
|
|
Logged
|
|
|
|
|
Italy
Offline
Full Member
Karma: 0
Posts: 149
Arduino = Tecnologia
|
 |
« Reply #6 on: February 16, 2013, 05:30:49 am » |
Parlando di soluzioni in codice @Leo potresti indicarmi un esempio? Grazie.
|
|
|
|
|
Logged
|
Se ritieni che la mia risposta ti abbia aiutato a risolvere il problema non esitare! ringraziami dandomi il Karma! 
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16546
Don't know what I do
|
 |
« Reply #7 on: February 16, 2013, 05:39:24 am » |
Magari se ci dici di quale sensore stiamo parlando e perché ti stai ponendo un problema che non c'è riusciamo a dirti come procedere.
|
|
|
|
|
Logged
|
|
|
|
|
Italy
Offline
Full Member
Karma: 0
Posts: 149
Arduino = Tecnologia
|
 |
« Reply #8 on: February 16, 2013, 06:03:05 am » |
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 
|
|
|
|
« Last Edit: February 16, 2013, 08:04:19 am by leo72 »
|
Logged
|
Se ritieni che la mia risposta ti abbia aiutato a risolvere il problema non esitare! ringraziami dandomi il Karma! 
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16546
Don't know what I do
|
 |
« Reply #9 on: February 16, 2013, 08:06:28 am » |
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.
|
|
|
|
|
Logged
|
|
|
|
|
Capo d'Orlando
Offline
God Member
Karma: 2
Posts: 652
|
 |
« Reply #10 on: February 16, 2013, 01:21:12 pm » |
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!
|
|
|
|
|
Logged
|
|
|
|
|
Italy
Offline
Full Member
Karma: 0
Posts: 149
Arduino = Tecnologia
|
 |
« Reply #11 on: February 17, 2013, 10:27:07 am » |
A me serve solamente determinare se l'oggetto posto davanti al sensore è da li da più di 100ms ed incrementare un contatore. 
|
|
|
|
|
Logged
|
Se ritieni che la mia risposta ti abbia aiutato a risolvere il problema non esitare! ringraziami dandomi il Karma! 
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16546
Don't know what I do
|
 |
« Reply #12 on: February 17, 2013, 10:30:27 am » |
A me serve solamente determinare se l'oggetto posto davanti al sensore è da li da più di 100ms ed incrementare un contatore.  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)
|
|
|
|
|
Logged
|
|
|
|
|
Capo d'Orlando
Offline
God Member
Karma: 2
Posts: 652
|
 |
« Reply #13 on: February 17, 2013, 11:59:09 am » |
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?
|
|
|
|
|
Logged
|
|
|
|
|
Italy
Offline
Full Member
Karma: 0
Posts: 149
Arduino = Tecnologia
|
 |
« Reply #14 on: February 17, 2013, 12:05:58 pm » |
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. 
|
|
|
|
|
Logged
|
Se ritieni che la mia risposta ti abbia aiutato a risolvere il problema non esitare! ringraziami dandomi il Karma! 
|
|
|
|
|