1) nella lettura dei pin analogici, se ne scarta sempre una o due.. ad ogni lettura perciò il tuo ciclo deve essere:
~~ -scarto~~
~~ -scarto~~
~~ -LETTURA BUONA~~
i cavi devono essere schermati per non captare disturbi esterni, per esempio prendi un cavo con calza e collega la calza a GND
nella lettura dei pin analogici, se ne scarta sempre una o due.. ad ogni lettura perciò il tuo ciclo deve essere:
-scarto
-scarto
-LETTURA BUONA
Scusa Matteo ma questa da dove salta fuori?
Capisco, in particolari condizioni (impedenza di ciò che è collegato sul pin analogico > 10KΩ), lo scarto di una misura nel passaggio da un pin analogico all'altro .... ma se l'impedenza è rispettata non c'è alcun motivo di fare quanto dici.
fishwolf:
... la cosa che non capisco è la grande differenza di letture senza nessun oggetto davanti.
il valore oscilla da 15 a 120
Invece se collego il sensore direttamente ai pin il valore risulta piu' stabile (70-80) con qualche raro valore a 100.
.... mi spieghi cosa intendi? Che vuol dire "Invece se collego il sensore direttamente ai pin..." ? ... perché, di solito come lo colleghi? Dai un po' più di dettagli ...
chiedo perdono per l'inesattezza delle info date... ma siamo qui per imparate ho comunque modificato il mio post...
Comunque penso che lui intenda che se collega il sensore direttamente ai pin legge "giusto", ma se lui lo allontana dalla scheda, con una scheda "prototipale filata"... le misure variano notevolmente... almeno questo è quello che ho interpretato da questo :
fishwolf:
tramite una arduino collegato a una scheda prototipale filata per estrarre i connettori.
Invece se collego il sensore direttamente ai pin il valore risulta piu' stabile (70-80) con qualche raro valore a 100.
MatteoDerrico:
Comunque penso che lui intenda che se collega il sensore direttamente ai pin legge "giusto", ma se lui lo allontana dalla scheda, con una scheda "prototipale filata"... le misure variano notevolmente...
Aha ... se è questo che intende è ovvio che la filatura porta dentro distubi ...
gpb01:
Aha ... se è questo che intende è ovvio che la filatura porta dentro distubi ...
Guglielmo
si intendevo questo, la schedina prototipale è passiva, serve solo per portare i vari pin (positivo, negativo e segnali) a dei connettori su cui sono collegati i 6 sensori, per adesso il software ne gestisce solo uno.
i 6 sensori sono connessi con cavi di lunghezza diversa, max 60 cm.
posso ovviare in qualche maniera a questi disturbi?
cavo schermato OK, ma se la cosa persiste, pensa di mettere un carico sulla linea, per abbasarne l'impedenza, se metti un 4k7 tra uscita e massa abbassi molto l'impedenza senza caricare eccessivamente l'usita, che sembra regge bene
ah, e prima di questo metti un bel condensatore tra +1 massa, dritto sull'ingresso del sensore, quei sensori consumano a impulsi "violenti", facile che la tensione di alimentazione sia ballerina, di quel poco, ma tutto fa brodo
ho rimosso la scheda filata e collegato i sensori direttamente ad arduino.
Il problema si presenta quando alimento il secondo sensore.
Utilizzando una scheda Adafruit che gestisce anche un LIPO con la relativa ricarica ho collegato la scheda sia alla usb che al una LIPO da 2000mA pensando di sopperire a problemi di alimentazione
Ma il problema persiste anche se il sensore consuma solo 30 mA
Procedo con l'insimento del condensatore da 10ùf tra VCC e GOUND consigliato anche nel datasheet
Mancherebbero ancora due dati importanti: la distanza reale che dovrebbe essere misurata e la distanza a cui quei valori corrispondono (spero che la differenza si colga). Una volta visti questi due dati sarà più facile fornire indiazioni circa l'attendibilità dei valori.
Chiederei comunque più prove, visto che nella prima i numeri erano distanti l'uno dall'altro in maniera sensata, mentre nella seconda erano molto più ravvicinati con incluso un valore immensamente maggiore, e i due tipi di errori hanno diverse soluzioni software (ammesso che hardware non possa essere fatto nulla)
Silente:
Mancherebbero ancora due dati importanti: la distanza reale che dovrebbe essere misurata e la distanza a cui quei valori corrispondono (spero che la differenza si colga). Una volta visti questi due dati sarà più facile fornire indiazioni circa l'attendibilità dei valori.
Chiederei comunque più prove, visto che nella prima i numeri erano distanti l'uno dall'altro in maniera sensata, mentre nella seconda erano molto più ravvicinati con incluso un valore immensamente maggiore, e i due tipi di errori hanno diverse soluzioni software (ammesso che hardware non possa essere fatto nulla)
i valori riportati corrispondono a nessun oggetto davanti ai sensori.
Io dovrei fare un'applicazione piu' semplice della misurazione della distanza, devo semplicemente rivelare un oggetto che passa davanti al sensore a una distanza minore di 50 cm.
Il valore a 50 cm corrisponde a circa 150-200, il problema è che tale valore viene rilevato anche senza nessun oggetto davanti ai sensori, mentre con un sensore solamente corrisponde a 70-80 stabile nel tempo.
In pratica con 2 sensori non ho dei valori stabili senza nessun oggetto davanti ai sensori, per cui diventa impossibile impostare una soglia per rilevare il passaggio senza avere falsi positivi.
Hai calcolato bene i tempi dei due sensori per fare in modo che non interferiscano tra di loro?
Perchè uno potrebbe rilevare il ritorno del segnale dell'altro.
Poi ho letto che ne vuoi mettere fino a 6.
Vanno ben gestiti per non farli interferire tra di loro.
maubarzi:
Hai calcolato bene i tempi dei due sensori per fare in modo che non interferiscano tra di loro?
Perchè uno potrebbe rilevare il ritorno del segnale dell'altro.
Poi ho letto che ne vuoi mettere fino a 6.
Vanno ben gestiti per non farli interferire tra di loro.
ho allegato il codice sopra,
li leggo serialmente ogni secondo,
prima uno e poi l'altro,
ognuno lo leggo 5 volte di seguito per poi fare una media dei valori o prendere il valore centrale.
Allora, inizialmente pensavo fossero sensori a ultrasuoni, ora ho visto che sono infrarossi.
L'unico problema è che un impulso di un sensore venga recepito da un altro sballandogli la lettura.
Per evitarlo va solo schermato il sensore in modo da non ricevere i segnali di rimbalzo a forti angoli di inclinazione.
Non so quanto possa essere reale questo problema, ma quadrerebbe con il fatto che se usi un solo sensore hai stabilità se ne usi due no.
Da quel che vedo i sensori fanno letture a raffica e ci mettono 38,3 + o - 9,6 mS a fare una singola lettura.
Quindi se fai più letture dentro questo lasso di tempo dovrebbe darti sempre lo stesso valore in uscita.
Leggendo a raffica in un for senza temporizzazione potresti incappare e fare tutte le letture nel transitorio, se sufficientemente rapide rispetto al transitorio.
Sarebbe un caso sfigato ma possibile.
Dici di fare letture a distanza di 100mS ma non vedo questa cosa nel software che hai postato, vedo solo un delay(1000) alla fine di un ciclo completo.
Dai risultati che hai postato, vedo 4 valori su 5 tendenzialmente stabili e uno differente, magari è proprio il valore nel transitorio.
Ultima cosa che non ho capito è: Se hai un solo sensore senza nulla di fronte, misura 200 se metti due senso e sempre nulla di fronte misurano 80? E non propriamente stabili?
Io inizierei con il verificare che non ci siano interferenze ottiche tra i sensori, cioè che non si diano fastidio a vicenda.