scrematura valori volume II... media "analogica" di fotoresistenze?

Oggi ero sul tram e mi è venuta un’idea. :slight_smile:
Da un po’ sto provando a fare una media dei valori in sequenza di un sensore, una fotoresistenza, per pulirli dal rumore.
Qualche risultato l’ho ottenuto grazie ai consigli del forum.

C’è anche un’altro aspetto però, il fatto di poter ottenere il valore che poi sia andrà a scremare non da una ma da più fotoresistenze in contemporanea, facendone la media.
Questo lo so fare, il problema è che mi ci vuole un pin analogico a resistenza, e sono solo 6.

Dunque ho pensato: se cablassi più resistenze in sequenza facendole finire su un solo pin, questo non darebbe una sorta di media analogica?
Ho disegnato qui lo schema.
Ditemi voi se è molto stupido o soltanto stupido.

Se il rumore deriva dal rumore termico o da una componente della luce che ha un andamento non costante nel tempo non ci fai niente. Anche errori di campionamento del A/D non elimini in questo modo. Puoi fare una media su una superfice irradiata dal sole. Quello funziona. Ciao Uwe

Non ne capisco il senso! Secondo la mia logica se fai così fai entrare ancora più rumore...poi boh...ma di sicuro non stai facendo la media.

dunque se sono fotoresistenze, allora si comportano come resistenze variabili in base alla luce giusto? quindi seguono il principio di funzionamento delle resistenze, che messe in serie vengono sommate tra loro. Quindi sì, otteresti una specie di media, credo.

però credo che rischi di andare fuori range: in pratica più resistenze ci sono più un cambiamento della luce fa "sbalzare" il valore, fino a diventare una lettura digitale (luce/buio)

poi magari dico baggianate :grin:

Ho anche pensato che forse in questo modo il valore finale sarebbe solo quello della resistenza col valore più basso, può essere?

Una piccola premessa, le fotoresistenze sono dispositivi molto lenti, sopratutto quelle che si reperiscono facilmente in rete o in qualche negozio, al massimo hanno una banda di un centinaio di Hertz, inoltre sono dispositivi quasi esenti dal rumore, quel poco che c’è dovuto all’agitazione termica è inferiore ai 5 mV della risoluzione massima di Arduino.
In pratica non hai bisogno di filtrare il rumore e se proprio vuoi farlo è molto meglio inserire un resistenza da 5k in serie all’uscita del partitore con la fotoresistenza e un condensatore da 100 nf tra l’ingresso ADC e GND, in pratica un semplice filtro passa basso con taglio a poco meno di 300 Hz.
Però c’è un secondo problema che non hai preso in considerazione, cioè l’impedenza in ingresso dell’ADC e la frequenza di sampling standard di Arduino, per la prima viene consigliato un valore =< 10k mentre la seconda vale 10kHz, questa si può modificare ma tocca “giocare” direttamente con i registri del 328p.
Una fotoresistenza ha un valore ohmmico tipico compreso tra un 100 ohm e 20-30k (dipende dal modello e comunque la tolleranza è enorme) quando è illuminata in modo ottimale, mente ha un valore ohmmico compreso tra qualche centinaio di k e 100 mega quando è al buio.
Per risolvere la questione impedenza d’ingresso o si usa una resistenza per il partitore di valore massimo 10k, ma questo limita molto il range di misura, oppure si mette una resistenza che sia almeno 10 volte maggiore il valore minimo della fotoresistenza dopo di che si manda il segnale (tensione) su un amplificatore operazionale con guadagno unitario, o con una certa amplificazione se si vuole aumentare la sensibilità a discapito della dinamica.
C’è pure da dire che la curva variazione resistenza in funzione della luminosità non è lineare, segue una legge logaritmica, cioè hai grandi variazioni di resistenza passando dal buio verso il chiaro che diventano sempre più piccole, a parità di variazione lux, avvicinandosi alla condizione di massima illuminazione.
Per farla breve, se con le fotoresistenze vuoi misurare piccole variazioni di luce in condizioni di forte illuminazione non vanno bene, se devi rilevare variazione di luminosità rapide, anche solo centinaia di Hertz, non vanno bene, se devi solo rilevare la condizione di buio/chiaro o l’intensità luminosa su un punto, a patto che non cambi troppo rapidamente e che la variazione non sia piccolissima, vanno bene.
Tieni presente che le fotoresistenze captano le variazioni di luminosità delle lampadine ad incandescenza sotto forma di un segnale sinusoidale a 100 Hz sovrapposto alla tensione tensione corrispondente alla luminosità ambientale, in questo caso per eliminarlo tocca ricorrere ad un filtro attivo passa basso molto ripido non semplicissimo da realizzare.

Oddio, molto mi sfugge e servirà che vada a studiarmi un po’ di cose.
Fino ad ora le ho usate senza grandi problemi, in pratica mi servono per rilevare la luce dentro il modello di un padiglione le cui “finestre” saranno aperte o chiuse da diaframmi, per ottenere la luce desiderata.
Al padiglione non sono arrivato, per ora c’è sta scatola col diaframma sul coperchio, ma funziona abbastanza bene.

Ho individuato il sensore che fa al caso mio, questo:
http://www.robot-italy.com/product_info.php?cPath=15_161&products_id=995

Presenta però due inconvenienti.
Il primo è che mi costa più la spedizione che il sensore in se.
Il secondo è che se in un secondo momento volessi studiare la luce separatamente in diverse zone del padiglione per separare le reazioni, costando 10 volte più di una fotoresistenza andrei in rovina per comprarne un po’.
In sostanza, come diceva Napoleone, le tre questioni sono: l’argent, l’argent e l’argent.

sommi anche gli errori di ogni singola resistenza....

@astrobeed Il problema del carico troppo alto e percui il falsificare del valore letto sulla LDR non susiste. La impedenza del entrata analogica é tipicamente 100MOhm. pagina 232, 28.8 ADC Characteristics, Table 28-7. ADC Characteristics. http://www.atmel.com/dyn/resources/prod_documents/doc8161.pdf Ciao Uwe

I data sheet vanno letti in tutte le loro parti e non solo parzialmente, in particolare per quanto riguarda l'ADC è vero che la sua impedenza d'ingresso tipica è 100 Mohm, ma prima dell'ADC vero e proprio c'è la parte di sample and hold, cioè uno switch che viene aperto e chiuso alla frequenza di campionamento dell'ADC e un condensatore che viene caricato dalla tensione che vogliamo misurare. Sul data sheet è chiaramente scritto che tutto l'insieme dell'ADC, cioè ADC e Sample and Hold, è ottimizzato per un'impedenza di 10 kohm, ovvero l'impedenza vista in ingresso, o se preferisci in uscita dal generatore di tensione collegato all'ADC, deve essere al massimo 10 kohm per garantire un corretto funzionamento.

Estratto dal data sheet paragrafo 21.6.1


The ADC is optimized for analog signals with an output impedance of approximately 10 k? or less. If such a source is used, the sampling time will be negligible. If a source with higher impedance is used, the sampling time will depend on how long time the source needs to charge the S/H capacitor, with can vary widely. The user is recommended to only use low impedance sources with slowly varying signals, since this minimizes the required charge transfer to the S/H capacitor.


E' anche vero che è possibile collegare generatori di tensione con impedenza maggiore di 10 kohm a patto di ridurre il sample time, ma Arduino campiona a 10 kHz (100 us) e a meno di non essere capaci di riprogrammare l'ADC agendo sui vari registri così rimane e di conseguenza rimangono anche i 10k consigliati. In linea di massima se si collega un solo ingresso ADC ad una sorgente con alta impedenza la misura rimane esatta, ma servono diversi sample prima che raggiunga il valore giusto, e si presuppone che la tensione da misurare vari lentamente altrimenti non avrai mai letture precise. Però se vengono usati più ingressi ADC collegati a sorgenti ad alta impedenza diventa impossibile leggere valori corretti perchè il condensatore non fa in tempo ad adeguarsi alla nuova tensione ogni volta che lo switch cambia l'ingresso da leggere.