Go Down

Topic: sensori per rilevare la luce o fotoresistenza? urge consiglio (Read 3023 times) previous topic - next topic

secondsky

Ciao a tutti, dunque: ho iniziato a lavorare sul progetto che sta alla base del perché un mesetto fa ho acquistato il mio primo arduino.
Si tratta del progetto di un piccolo padiglione che risponda agli stimoli ambientali, e nella fattispecie all'intensità luminosa esterna, oscurando i propri diaframmi e di cui vorrei realizzare una piccola maquette in scala funzionante e controllata da arduino.
Per ora non sto ancora pensando alla forma architettonica, sono solo concentrato sul fare alcuni semplici esperimenti per vedere se riesco a sviluppare e a far funzionare i concetti base.
In estrema sintesi: un sensore misura la luce e un servo motore controlla un diaframma per dosarla in base a un parametro, calibrato in questo caso da un potenziometro.

Attualmente sto lavorando con una fotoresistenza, sarebbe una buona cosa magari montarne due o tre e fare la media dei valori, e poi c'è il problema che registrano dei picchi quando la luce diretta che le colpisce diminuisce a causa dell'ombra di un oggetto  anche se la luce ambientale resta la stessa.
Dunque cercando ho visto anche questi sensori:

http://www.robot-italy.com/product_info.php?cPath=15_161&products_id=956
http://www.robot-italy.com/product_info.php?cPath=15_161&products_id=1453
http://www.robot-italy.com/product_info.php?cPath=15_161&products_id=995

Costano un po' di più ma non eccessivamente.
A me interesserebbe cogliere meglio la luce ambientale e non solo quella che colpisce il sensore, poi ho visto che uno di questi (il terzo) restituisce anche il valore in lux, che non è poca cosa.
Se riesco a ottenere i risultati che voglio in questa prima fase potrei considerare di farne la mia tesi di laurea (studio architettura).
Da vero neofita ho molto bisogno dei vostri consiglio, cosa dite?

pelletta

Ciao, a caldo ti direi che tutti i sensori che captano la luce  sono influenzati da qualsiasi fonte luminosa con cui vengono direttamente a contatto anche accidentalmente, poi se misurano la luminosità o i lux o lumen credo sia indifferente. L'argomento intressa anche a me e mi informerò molto meglio a riguardo e aggiornerò il post. Comunque credo che per piccole interferenze si possa agire via software, esempio stupidissimo inventato sul momento: mettiamo una fotoresistenza prima di chiudere il negozio o l'ambiente che vogliamo controllare, spegniamo la luce e ce ne andiamo. Se entra qualcuno, accende la luce e l'arduino tramite fotocellula e sistema gsm, ti avvisa che è entrato qualcuno. Supponendo che hai il negozio in strada e passa un'automobile, involontariamente i fari dell'auto illuminano per 2 secondi il locale e riceveresti comunque l'sms... pensa che rottura se hai il locale in tangenziale.... ecco che si può intervenire via codice dicendoci di avvisarci solo se la luce sta accesa che ne so, per più di 10 secondi.
Mi informerò comunque meglio, saluti.

secondsky

Si, hai ragione, così come per scremare le micro oscillazioni dei valori potrei fare una media ogni x rilevamenti.
Solo che ad esempio non so ancora scriverlo con arduino, molte cose le immagino come percorsi logici ma difetto molto di script.
Comunque questi sensori mi interessano abbastanza perché danno l'idea di essere un po' più affidabili, ma magari sbaglio.
Lunedì o comunque questa settimana vorrei ordinare una stazione per la saldatura e se decido entro allora posso includere quello scelto nella spedizione, che diversamente costerebbe più del sensore...

lesto

dunque, i sensori (nessuno di quelli postati) NON restituiscono il valore direttamente in LUX, ma nei datasheet trovi i dati necessari per fare la conversione...
quelli che ti hanno fornito sono semplicemente il valore minimo e massimo leggibile.

allora prima di tutto la spettro visibile va dai 380 nm ai 750 nm (fonte: http://en.wikipedia.org/wiki/Visible_spectrum)
il sensore n°1 e n°2 emettono un'onda quadra, più breve è l'onda (bassa frequenza) più piccolo è il valore letto. Per avere dei valori precisi devi usare gli interrupt, argomento non facilissimo, ma fino a 2 sensori puoi usare le funzioni precotte di arduino che semplificano un sacco la vita  :)
il sensore n°3 invece emette un segnale analogico, che quindi si può leggere con un'analogRead()


Per ovviare al problema dell'ombra/luce diretta la soluzione secondo me è di mettere il sensore sempre in ombra: per esempio lo metti all'estremo di un tubo, e l'altro estremo lo tieni un pò inclinato verso il basso (se il pavimento non riflette) o orizzontale.

Per ovviare al problema dei valori ballerini, come hai detto tu basta una media; per esempio ogni volta che leggi un valore, lo sommi agli X precedenti e poi dividi per X+1.

Se fai qualche esperimento, noterai che nel grafico risultante, anziché avere dei picchi avrà una funzione molto più "arrotondata", a seconda di quanto è grande la X. Piccolo problema:
X piccola = reazione veloce ma sensibile al rumore (letture errate)
X grande = reazione lenta ma poco sensibile al rumore
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

secondsky

#4
Feb 06, 2011, 02:42 pm Last Edit: Feb 06, 2011, 07:55 pm by secondsky Reason: 1
Ti ringrazio dei consigli, penso aprirò nuovi topic dove chiedere spiegazioni per non sovraccaricare questo di argomenti.

Circa la questione dei picchi luce ombra, che sono uno dei problemi maggiori, per il momento, ho messo sotto il diaframma un foglio di policarbonato alveolare, che diffonde la luce anche quando diretta.
Per il rumore nei rilevamenti, ho aumentato a 500 millisecondi il delay perché i valori fosser meno e quindi più uniformi, anche se so che con una madia sarebbe stato più preciso, è una delle cose che voglio chiedere con dei topic specifici.
Qui un'immagine della scatoletta che sto usando per le prove, molto cheap ma per capirci.



Poi un paio di grafici circa gli incrementi di luce interna in base all'apertura del diaframma (ruota di 80 gradi) e a diverse condizioni di luce esterna (ottenute accendendo e spegnendo una lampada tra un ciclo e l'altro).



Ora devo migliorare la mappatura e far aprire e chiudere il diaframma in base a un input di luce da stabilire, ma lo vedrò poi.

Però le domande rimangono:
Credete valga la pena comprare uno di questi 3 sensori?
L'incremento di precisione rispetto a una fotoresistenza è consistente?
Che differenza c'è ra i primi due?

Grazie

uwefed

ciao secondsky

Il TSL230R ( quello con 8 piedini) ha la sensibilitá regolabile ( 1x,10x e 100x) e diversi fattori di divisione frequenza (/1, /2,/10 e /100) e una modalitá power down.
Il TSL235R (quello a 3 piedini) é uguale al altro solo con i fattori impostati fissi e senza power down.
Tutti due danno come grandezza di uscita una frequenza che é proporzionale alla energia della luce.

Il terzo da una tensione che é proporzionale all'illuminamento.

I vantaggi rispetto a una fotoresistenza sono che sono sensori lineari. La grandezza di uscita é proporzionale alla luce. Una fotoresistenze non é lineare. Una fotoresistenza varia il valore relativamente e per arrivare a valori piccoli ci mette tanto.

Ciao Uwe


 

secondsky

Grazie mille della risposta, credo allora propenderò per l'ultimo sensore.
A quanto ho capito posso leggerlo come una normale fotoresistenza ed è molto sensibile, mentre commutare un'onda quadra in una lettura mi pare un po' complesso per le mie attuali conoscenze.
Da quel che ho visto cercando un po' in rete sarebbe più lungo lo script per leggere i dati che non quello per far funzionare il mio sistema! :-)

uwefed

per misurare la frequenza: http://arduino.cc/en/Reference/PulseIn
Blocca l' esecuzione del codice come delay().
Ciao Uwe

Go Up