Pages: [1] 2   Go Down
Author Topic: Discriminare ingresso analogico  (Read 1325 times)
0 Members and 1 Guest are viewing this topic.
Italy
Offline Offline
Full Member
***
Karma: 0
Posts: 158
Arduino = Tecnologia
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.  smiley
Logged

Se ritieni che la mia risposta ti abbia aiutato a risolvere il problema non esitare! ringraziami dandomi il Karma! smiley-wink
_-_-_-_-_-_-_-_-_-_-_-

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9158
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Buongiorno a tutti!

Vi descrivo il mio problema: ho un sensore infrarosso che leggo in analogico attraverso il pin0 di Arduino...
Grazie.  smiley
Pin A0, immagino.. Il pin 0 è digitale.
Logged


Italy
Offline Offline
Full Member
***
Karma: 0
Posts: 158
Arduino = Tecnologia
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-razz
Logged

Se ritieni che la mia risposta ti abbia aiutato a risolvere il problema non esitare! ringraziami dandomi il Karma! smiley-wink
_-_-_-_-_-_-_-_-_-_-_-

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Brattain Member
*****
Karma: 251
Posts: 21252
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Italy
Offline Offline
Full Member
***
Karma: 0
Posts: 158
Arduino = Tecnologia
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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! smiley-wink
_-_-_-_-_-_-_-_-_-_-_-

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Full Member
***
Karma: 0
Posts: 158
Arduino = Tecnologia
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-razz
« 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! smiley-wink
_-_-_-_-_-_-_-_-_-_-_-

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
God Member
*****
Karma: 2
Posts: 725
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Full Member
***
Karma: 0
Posts: 158
Arduino = Tecnologia
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Se ritieni che la mia risposta ti abbia aiutato a risolvere il problema non esitare! ringraziami dandomi il Karma! smiley-wink
_-_-_-_-_-_-_-_-_-_-_-

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

A me serve solamente determinare se l'oggetto posto davanti al sensore è da li da più di 100ms ed incrementare un contatore.  smiley-grin
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 Offline
God Member
*****
Karma: 2
Posts: 725
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Full Member
***
Karma: 0
Posts: 158
Arduino = Tecnologia
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.  smiley
Logged

Se ritieni che la mia risposta ti abbia aiutato a risolvere il problema non esitare! ringraziami dandomi il Karma! smiley-wink
_-_-_-_-_-_-_-_-_-_-_-

Pages: [1] 2   Go Up
Jump to: