Pilotaggio PWM 5V di lampade con grande assorbimento!

Buongiorno a tutti,
sto lavorando ad un progetto in cui devo comandare una batteria di lampade led a 24V. Per l'accensione e spegnimento faccio uso di un relè mediante dei fotoaccoppiatori. Queste lampade ammettono anche un PWM a 5V con un assorbimento di circa 5mA. Il problema è che ce ne sono collegate 12 insieme perché devono svolgere la stessa funzione contemporaneamente, quindi richiederanno un assorbimento di corrente di almeno 60mA. Ovviamente vorrei fare tutto con un solo pin dell'Arduino e lo sto facendo usando la funzione analogWrite.
Inizialmente si era pensato di utilizzare il medesimo fotoaccoppiatore 5v->24v che andava a pilotare un relè a stato solido il quale pilotava un segnale 5V, ma con scarse speranze non si è avuto il risultato sperato.

Vi elenco le varie componenti:

Potete istruirmi sulla soluzione più efficace per pilotare un segnale PWM a 5V con assorbimento di almeno 60mA con un solo pin di Arduino.

Ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta è stato spostato nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato ::slight_smile:

Guglielmo

gpb01:
Ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta è stato spostato nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato ::slight_smile:

Guglielmo

Errore di distrazione. Mea culpa. Grazie

Visto la frequenza del PWM di Arduino credo che puoi gestire la cosa con un banalissimo transistor (Es. TIP120, BC337, 2N2222, ecc.) una resistenza e dovresti risolvere con semplicità, se l'ingresso è adibito al solo PWM non credo sia necessario disaccopiarlo con un opto

fabpolli:
Visto la frequenza del PWM di Arduino credo che puoi gestire la cosa con un banalissimo transistor (Es. TIP120, BC337, ecc.) una resistenza e dovresti risolvere con semplicità, se l'ingresso è adibito al solo PWM non credo sia necessario disaccopiarlo con un opto

Si in effetti gestisco questo terzo filo delle lampade led per il solo PWM, è quella la sua funzione. Quindi l'opzione più logica è un transistor che ammetta quell'assorbimento? E il segnale 5V sul collettore lo prelevo direttamente dal pin 5V dell'arduino? Rischio di far assorbire la corrente direttamente a lui. Il massimo valore di corrente erogabile da Vin quando collegata a USB è 500mA vero?

Domanda dentro domanda: sto facendo appunto delle prove con analogWrite. Voglio gestire con la stessa frequenza (30Hz poichè ho usato il prescaler dei timer4 e 2) due pin differenti con Duty Cycle differenti. Il tutto semplicemente con due istruzioni nel Loop. Il risultato è che mi esegue solo un segnale pwm, il primo. Invece prendendo l'esempio "Fading" della libreria Analog, il for riesce a gestire due duty cycle insieme. Dove sbaglio, o cosa non gli va a genio alla scheda?

Ecco il piccolo codice del test:

#define led6 6
#define led9 9

void setup() {
  TCCR4B = TCCR4B & B11111000 | B00000101;              //prescaler 1024 su Timer4 = 30,64Hz
  TCCR2B = TCCR2B & B11111000 | B00000111;              //prescaler 1024 su Timer2 = 30,64Hz
}

void loop(){
  analogWrite(led6, 170);
  analogWrite(led9, 20);
}

Kelly1094:
Quindi l'opzione più logica è un transistor che ammetta quell'assorbimento?

Direi di si

Kelly1094:
E il segnale 5V sul collettore lo prelevo direttamente dal pin 5V dell'arduino? Rischio di far assorbire la corrente direttamente a lui. Il massimo valore di corrente erogabile da Vin quando collegata a USB è 500mA vero?

Puoi prelevarlo dal pin EDIT: 5V di Arduino (non da Vin che è un ingresso) FINE EDIT che, se connesso tramite USB, può dare fino a 500mA (ma da questo valore devi sotrarre la corrente assorbita dalla MCU e dai pin, ma se stiamo parlado dei 60mA iniziali dovresti essere abbastanza lontano dal limite massimo.

Kelly1094:
Il massimo valore di corrente erogabile da Vin quando collegata a USB è 500mA vero?

La corrente a 5V si preleva dal pin +5V e NON dal pin Vin che è praticamete lo stesso che il Jack nero di ingresso, prima del regolatore di tensione !!!

Guglielmo

gpb01:
La corrente a 5V si preleva dal pin +5V e NON dal pin Vin che è praticamete lo stesso che il Jack nero di ingresso, prima del regolatore di tensione !!!

Guglielmo

In realtà questo lo so bene, ma in pratica ho scritto na fesseria.
Andrò di transistor allora.

Kelly1094:
Domanda dentro domanda: sto facendo appunto delle prove con analogWrite. Voglio gestire con la stessa frequenza (30Hz poichè ho usato il prescaler dei timer4 e 2) due pin differenti con Duty Cycle differenti. Il tutto semplicemente con due istruzioni nel Loop. Il risultato è che mi esegue solo un segnale pwm, il primo. Invece prendendo l'esempio "Fading" della libreria Analog, il for riesce a gestire due duty cycle insieme. Dove sbaglio, o cosa non gli va a genio alla scheda?

Ecco il piccolo codice del test:

#define led6 6

#define led9 9

void setup() {
 TCCR4B = TCCR4B & B11111000 | B00000101;              //prescaler 1024 su Timer4 = 30,64Hz
 TCCR2B = TCCR2B & B11111000 | B00000111;              //prescaler 1024 su Timer2 = 30,64Hz
}

void loop(){
 analogWrite(led6, 170);
 analogWrite(led9, 20);
}

Un parere su questo invece?