Ciao a tutti,
mi chiamo Giovanni e sono uno studente di design, sto realizzando un progetto per la mia tesi di laurea triennale, dove includo arduino per accendere dei led secondo vari range angolari. Questi led mi servono per illuminare l'ambiente davanti a me quando sono all'aperto alla sera.
Sono a buon punto con il progetto, ho già pronto lo sketch (che allego) e ho già provato ad utilizzare arduino su una breadboard con dei led molto semplici, per vedere se il programma funzionava. Fin qui tutto bene.
Il problema nasce quando collego ad arduino i led che utilizzerò nel prototipo finale, perchè non riesce ad accenderli, mentre quelli della breadboard si illuminano senza difficoltà.
Sono un novizio per quanto riguarda arduino, quindi è probabile che mi sia perso dei dettagli importanti, ma non riuscendo a trovare una soluzione da solo ho pensato di chiedere direttamente a voi un aiuto
partiamo dalle specifiche tecniche dell'Arduino Nano.
come vedi alla voce DC current per I/O : 40mA.
il problema è che magari ai tuoi led bianchi non bastano 40 mA per "innescarsi"...
perciò ti consiglio, nel caso fosse quello il problema, di gestire i led con dei transitor per fare le cose semplici, e alimentare i led con un alimentatore a se, e non dal port di arduino.
Non ci siamo proprio. Troppa corrente assorbita dal povero Nano.
Da OGNI pin di Arduino non possono essere prelevati più di 20, massimo 30, mA. Superare questi valori può danneggiare il chip. Inoltre da TUTTI i pin non possono essere superati complessivamente i 200mA, ma è opportuno, anche in questo caso, restare sui 150-180mA.
Per fare in piena sicurezza quello che vuoi fare conviene utilizzare un transistor per ogni led da comandare singolarmente. Se più led devono essere comandati insieme si può utilizzare un solo transistor.
Inoltre è opportuno prelevare l'alimentazione per i led da una sorgente differente dal pin +5V del Nano, specialmente se l'alimentazione del tutto è prelevata dalla USB.
Ho capito, perciò collegherò un transistor per ogni led in base allo schema che MatteoDerrico mi ha gentilmente fornito.
Per quanto riguarda l'alimentazione derivante da sorgente differente rispetto ad arduino, come è meglio che la scelga? Che caratteristiche è meglio che abbia di corrente e tensione secondo voi?
Sì: a 40mA l'uno (che già è il massimo assoluto per i pin dell'atmega328p), 8 LED bianchi assorbono 320mA, che è il doppio del totale massimo assoluto che l'atmega328p può dare in uscita!
Devi usare degli amplificatori di qualche tipo: transistor, mosfet, relè (che necessitano di essere preceduti da un transistor, se non è una scheda con il transistor a bordo). Potresti anche usare gli ULN2003 o ULN2803, che contengono 8 transistor ciascuno.
Johnfrost:
... Che caratteristiche è meglio che abbia di corrente e tensione secondo voi?
Per alimentare sia i led che l'Arduino a 5V prendi un alimentatore da 5V 2A. La corrente è sovrabbondante, ma ti può servire per esperimenti più impegnativi.
Collega il Vcc dello schema di MatteoDerrico direttamente ai 5V dell'alimentatore, insieme ai +5V dell'Arduino. Ovviamente GND in comune.
La resistenza sulla base del transistor determina quanta corrente (al massimo) può scorrere nella giunzione emettitore-collettore e quindi nel led in serie.
Determinata la corrente di collettore necessaria (ad es. 40mA) bisognerebbe vedere il guadagno del transistor (hFE) che si trova sul data sheet del trasnistor stesso, ma spannometricamente possiamo dire che un valore di ALMENO 20 è comune a tutti i transistor di piccola taglia come il 2N2222 o il BC337/537.
Da questo valore si ricava la corrente che deve circolare nella giunzione base-emettitore per PORTARE IN SATURAZIONE il transistor e consentire lo scorrimento della massima corrente nella giunzione emettitore-collettore Ibe = Ic / hFE
Quindi Ibe circa 2mA. La giunzione base-emettitore lavora in conduzione come un diodo, quindi si 'mangia' circa 0,7V, mentre il pin di Arduino fornisce circa 5V. Per far circolare una corrente di 2mA nella giunzione base-emettitore occorre una resistenza (per la legge di Ohm) R(kOhm) = V/I(mA) cioè (5-0,7)/2 = 2,15 kOhm
arrotondato al valore commerciale più vicino di 2,2 kOhm.
Perché allora si trovano schemi con valori di 1k o addirittura di 470, 330 o 220 Ohm?
C'è un altro valore da tenere in considerazione ed è la massima corrente che può scorrere nella giunzione base-emettitore (IB), anche questa ricavabile dal data sheet, ma è in genere maggiore di quella erogabile da un pin di Arduino (40mA). Allora se fissiamo la corrente dal pin in 30mA, vediamo che la resistenza MINIMA da mettere fra il pin e la base è data da (sempre legge di Ohm): (5-0,7)/30 = circa 150 Ohm
Abbiamo trovato i limiti di quella famosa resistenza: non meno di 150 Ohm, o si rischia di 'bruciare' il pin di Arduino; non più di 4,7 kOhm oppure si rischia di non portare in saturazione il transistor col richio di non pilotare correttamente il carico di collettore, ma anche di 'bruciare' il transistor stesso. Perchè? Eh, no, il resto alla prossima puntata.
In realtà il guadagno di transistorini come quelli sta tra 200 e 400! La corrente di base per la saturazione, però, deve essere circa 10 volte maggiore della corrente di collettore diviso il guadagno, perciò nei calcoli per la saturazione si mettono insieme le due cose e si considera 1/10 del guadagno effettivo.