Comportamento fade LED

Ho fatto una banale funzione che dovrà simulare l'alba ed il tramonto per delle luci led dimmerabili dell'acquario. La funzione incrementa/decrementa in modo lineare il valore da 0 a 255 (e viceversa) un pin pwm di arduino che collegato ad un circuito opportuno gestirà le luci come descritto. Il punto è che nonostante la funzione abbia un comportamento lineare, come rappresentato qua:

La luce led invece mi sembra avere un comportamento del genere: Portando come esempio l'alba, in pratica ho osservato che già dai primi valori prossimi allo zero i led incrementano la luminosità in modo repentino e sembra subito che siano al massimo. Non so se questo comporamento è così perchè è come lo percepisce il nostro occhio o se è una effettiva caratteristica dei led e cioè che anche non lavorando alla massima corrente, questi forniscono già la massima intensità (o quasi).

Ad ogni modo secondo voi sarebbe corretto creare una funzione che incrementi il valore secondo questo grafico: in modo da compensare il comportamento dei led e rendere il più lineare possibile il loro fadein (come vorrei nel primo grafico)?

Ciao mechrekt Visto che il PWM lavora con tempi diversi di on e off il rapporto dei due é sicuramente il numro che dai alla funzione anaogWrite() nel senso se programmi 150 vuol dire che il led sará acceso per 150 parti di tempo dei i 255 parti di tempo del ciclo di 490Hz. La funzione PWM-luce LED é lineare. Come hai collegato il led? Ciao Uwe

uwefed: Ciao mechrekt Visto che il PWM lavora con tempi diversi di on e off il rapporto dei due é sicuramente il numro che dai alla funzione anaogWrite() nel senso se programmi 150 vuol dire che il led sará acceso per 150 parti di tempo dei i 255 parti di tempo del ciclo di 490Hz. La funzione PWM-luce LED é lineare. Come hai collegato il led? Ciao Uwe

Ciao, forse mi sono spiegato male. Il problema non è certo nel funzionamento del pin pwm. Il led (in questo momento per fare dei test) è banalmente collegato con una resistenza ad un pin pwm di arduino (successivamente sullo stesso principio di funzionamento, dovrò collegare delle strisce di led con alimentatore esterno e probabilmente un amplificatore operazionale o qualcosa del genere).

Il problema che volevo esprimere è proprio insito nella fisica dei led (credo): quello che ho notato è che se alimenti un led al massimo della corrente supportata o se lo alimenti che ne so all'80%, la luminosità "non cambia". Mi sembra di capire che la risposta della luce rispetto alla corrente in ingresso non sia lineare, tutto qua. a mio avviso il secondo grafico esprime la risposta dei led.

Ammesso che quello che ho dedotto sia giusto, il quesito di questo post è creare una funzione non lineare in modo da compensare il comportamento del led.

Attenderei quindi una conferma sul comportamento dei led prima di addentrarmi su come risolvere la cosa con la funzione adatta.

Buona sera a tutti, scusate se riesumo questo vecchio post ma sono capitato nella stessa situazione(credo).
Il problema è nato quando ho voluto variare la luminosità di un led con lo sketch di esempio Fade.
Appena montato e collegato il tutto noto che la luminosità del led non varia in modo lineare seppur la funzione incrementi l’analogWrite linearmente di 5 in 5, ma il led presenta quasi da subito una piena luminosità.

All’inizio pensai che fosse un problema intrinseco del funzionamento dei diodi cioè che la caratteristica V-I produceva questo effetto, ma poi ricordai che non è un uscita analogica vera, ma simulata in PWM e quindi quando il led è acceso(in Ton) emette sempre la stessa luminosità, cioè il diodo lavora sempre nello stesso punto della sua caratteristica V-I. Variando poi i tempi Ton e Toff l’occhio percepisce una variazione della luce emessa e quindi si doveva trattare di un altro fenomeno.

Ho così preso uno strumento (il luxmetro) e ho fatto delle prove in una “camera oscura” sempre con lo stesso led di prima, dapprima incrementando l’uscita analogica di 5 in 5 da 0 a 255 e in seguito prendendo come riferimento questo: http://www.instructables.com/community/linear-PWM-LED-fade-with-arduino/

Ecco i risultati (si commentano da soli)

Legenda:

  • in blu scuro la variazione dell’uscita a step di 5

  • in marroncino la relativa variazione di illuminamento (la pendenza contraria è dovuta al collegamento del led, attivo a livello basso)

  • in verde la variazione di illuminamento tra 2 step

  • i risultati segnati con un ’ sono invece quelli ottenuti con la successione illustrata nel sito linkato sopra

Si nota quindi che variando LINEARMENTE l’uscita PWM la luce emessa dal led varia anch’essa in modo LINEARE, è quindi l’occhio che non ci fa percepire le variazioni quando si supera una determinata soglia di luminosità. Con la successione’ invece si corregge leggermente il problema.
A sto punto la soluzione da adottare dipende da che cosa si vuole fare: l’acquario è allestito per un puro tornaconto oppure si cerca, con queste strategie di migliorare la vita dei pesci? L’occhio dei pesci reagisce allo stesso modo nostro? Buona fortuna.

Sono ben accette critiche e commenti, grazie.
(in allegato i file della prova)

Ste.

Immagine.png

prova illuminamenti.xlsx (17.5 KB)

Ciao spero di esserti d'aiuto poi magari dico solo cavolate, però quello che ho capito è:

allora intanto se gli step sono di 5 è difficile che ci sia una visuale lineare del fade se tu provi ad abbassare il tempo di delay a 20 e metti gli step a 1 vedrai che bel fade ti viene fuori

altra cosa che credo sia vera, ma da verificare è questa

Colore infrarosso 1,3 Colore rosso 1,8 Colore giallo 1,9 Colore verde 2,0 Colore arancio 2,0 Flash blu/bianco 3,0 Colore Blu 3,5 V Colore Ultravioletto 4 ÷ 4,5 V

nell'esempio fade ti fa usare una resistenza da 220 ohm ma questo valore può andare bene per una colorazione di led che sfrutta tutto il range da 0 a 255, ma per un altra colorazione fornisce una tensione limitata e quindi magari quel colore usa il 70% della luce che può fare. di fatto fosse il contrario raggiungerebbe in anticipo il 100% e per il rimanente tempo la sua intensità non variarebbe

Grazie della risposta, ti rispondo al volo. Ho preso gli step di 5 perchè erano gia nello sketch, di certo prendendoli pari ad 1 la variazione sarebbe stata piu fluida.. ma comunque prendendoli pari ad un valore fisso (che sia 1,2 o 5) la variazione dell'uscita PWM nel tempo è sicuramente lineare (con lineare è inteso che tutti i punti delgrafico possono essere congiunti con una linea retta), la cosa che cambia è la pendenza di questa retta. Nei grafico che ho postato infatti è lineare sia PWM Brightness(linea blu scuro) che Illuminance(linea marroncina). Le altre due curve sono ottenute con step sempre minori. Ricordo che, per come ho collegato il led (acceso a livello basso, quindi quando il PWM è 0 il led è al massimo) bisogna invertire le curve degli illuminamenti(illuminance) rispetto a quelle degli step PWM (PWM brightness). Il delay l'ho impostato a 10 secondi per avere il tempo di prendere la lettura delle luminosità del LED.

La seconda cosa che dici è vera, se la resistenza da 220 non va bene per il led o, al contrario, il led non è quello giusto, la luce emessa si limita ad una percentuale di quella emissibile se la resistenza è più elevata del necessario. Se la resistenza è insufficiente invece è TEORICAMENTE possibile che il led si bruci al primo impulso dato dall'uscita in PWM, che è di 5V

Bellissima prova sperimentale! :) Poi si poteva anche dedurre direttamente la cosa... i led a queste frequenze di PWM si accendono e spengono "istantaneamente" (si guardi un datasheet qualsiasi). Per cui la caratteristica "incurvata" intrinseca del led è approssimabile a un gradino, il quale è (come già verificato) a sua volta controllato dalla sequenza del pwm. Ovvero, sequenza lineare = fade lineare. :)

Di fatto tutto questo porta anche, in un led RGB, ad avere una possibilità cromatica inferiore a livello di colorazioni

per riuscire a produrre tutta la gamma di colorazioni perfettamente si dovrebbero tarare le resistenze in questo modo supponendo comunque di utilizzare 20mA come corrente sul led:

rosso = 160 ohm verde = 150 ohm blu = 75 ohm

ma le limitazioni ci vendono date dalle taglie commerciali di resistenze. in questo modo tutte avrebbero la gamma completa e avrebbero un fade veramente fluido