Controllo PWM di Led con Potenziometro inefficace

Salve.
Ho utilizzato questo semplice programma per regolare l'intensità di un Diodo Led con un potenziometro, il programma funziona bene e regola senza problemi la luminosità del Led a livelli "accecanti" Led HI bianco. Il mio scopo vero però è quello di regolare la luminosità dei led back light di un Display LCD da 40X2 che se collegati con una semplice resistenza di 10 ohm illuminano correttamente il Display, con un assorbimento di circa 20 mA (30 senza alcuna resistenza).
Ho provato ad effettuare il collegamento ma mentre il Led (in parallelo) si accende come prima senza problemi il Display produce un'illuminazione bassa ben al di sotto di quella ottenuta con la resistenza, in pratica è inutilizzabile.
Penso si tratti di un problema di larghezza di impulso, come faccio a configurare il tutto per ottenere maggiore luminosità e regolare il duty cycle?
come devo modificare il codice? quali linee devo aggiungere? (sempre se è possibile questa particolare applicazione (l'assorbimento rientra nelle capacità delle uscite max 30mA.)
Saluti.

int ledPin = 9; // LED connected to digital pin 9
int analogPin = 3; // potentiometer connected to analog pin 3
int val = 0; // variable to store the read value
void setup()
{
pinMode(ledPin, OUTPUT); // sets the pin as output
}
void loop()
{
val = analogRead(analogPin); // read the input pin
analogWrite(ledPin, val / 4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
}

Perchè non piloti il led direttamente dal potenziometro senza cercare eventuali problemi del software che potresti evitare ? :slight_smile:

Per me questo è un esercizio didattico ovvio che va anche bene il collegamento alla Vcc 5V con una R di protezione di circa 10 Ohm, volevo solo capire perchè con un semplice Led va bene mentre con quelli interni del Display la regolazione avviene ma con luce "cimiteriale" decisamente al di sotto di quella ottenibile con la resistenza, anche se il Display assorbe in c.c. max 30mA / 5V.
e se via soft si può agire (anche in modo fisso / preset) sul duty cycle.
Saluti.

potresti postare una foto dei collegamenti ? perchè il sw mi pare apposto...

Non ho possibilità di postare una foto comunque è connesso in parallelo ad un led Hi (con R da 330 ohm) che si illumina bene mentre il Display si illumina poco ma la regolazione agisce.
Ritengo che di default il PWM in uscita sia del 50% (On Off) io chiedo se si può variare es. al 90% (90 On 10 Off) e come fare, cioè quale riga di istruzione aggiungere.
Probabilmente il Display richiede 5V Full o quasi, mentre il Led Hi si accontenta di poco..... ed accende comunque con buona luminosità anche con valori di Vu inferiori ai 5V max.
Saluti.

Ho paura che te stia facendo un poca di confusione :slight_smile:
la PWM non ha nulla di default.... te puoi dare un valore compreso tra 0 e 254 che poi corrisponde a 0 e 100%....
Il discorso di LED Hi non lo capisco ... te la logica del display la devi alimentare a 5V se no non funziona, il LED del display puoi controllarlo in PWM cosa che non vale per la logica, controlla questa cosa e poi dimmi...

ratto93:
Perchè non piloti il led direttamente dal potenziometro senza cercare eventuali problemi del software che potresti evitare ? :slight_smile:

Non si fa (quasi) mai perché servono potenziometri di potenza. e quelli costano subito tanto.
Ciao Uwe

Concordo pienamente con uwefed non ci penso proprio a regolare direttamente dei Led con un potenziometro che mal sopporta i mA.. In effetti nella fretta di trovare una soluzione, non ho riflettuto bene sul fatto che in realtà il duty cycle è strettamente legato al valore della resistenza del potenziometro e quindi se regolo al max mi trovo vicino al 100%. Quindi considerato che dispongo di un'Oscilloscopio digitale che misura di tutto, ho potuto rilevare che il duty cycle max (che sono riuscito a leggere) è del 94% mentre al centro si ottiene un ovvio 50%.
Allora perchè non funziona?
E' molto semplice un Led comune bianco ha una soglia di circa 2 / 2,4V è evidente che nel Display LCD sono presenti almeno due diodi collegati in serie per un totale (V. di soglia di 4 / 4,8 V). Ora il mio oscilloscopio mi da una Vp. max dell'onda quadra pari a 4,1 V. (causa caduta di tensione interna del driver di uscita) per cui questo valore è insufficiente a far illuminare i Led sufficientemente.
Morale della favola non si può fare!! direttamente, salvo utilizzo di un driver esterno alimentato almeno a 6/7 V. Ovviamente la cosa più semplice è rinunciare e alimentare in modo fisso il display con una resistenza di protezione di pochi ohm 2,2 max 10 vanno bene.
Ma in realtà il display si può connettere anche direttamente con un assorbiment minimo di 30mA, con le resistenze si può scendere a 20 / 25 mA corrente più che sufficiente per un utilizzo generico, e che ci garantisce una lunga vita ai Led.
Saluti.