Problema I/O shield con Arduino Yun

Salve,
da qualche mese ormai ho cominciato a lavorare con Arduino Yun e adesso sto creando un piccolo progetto con la I/O shield. Ho creato una pagina web con l'aiuto di una guida in cui dal telefono con una connessione wi-fi in comune posso controllare i pin digitali e i 5 relè a 5v della shield. Io uso questi pin soprattutto per accendere dei led e mi accorgo che probabilmente ho sovraccaricato la scheda (i led non si accendono mai contemporaneamente). Il progetto è una sorta di casa domotica (solo una stanza a dire il vero), ed è composto da 7 led bianchi (attaccati ad un solo relè, sono le luci della stanza), altri 2 led bianchi (attaccati a 2 differenti relè), un motore dc (controllato da un ponte H, i cui 3 pin-2 di rotazione e un enable pin- sono collegati ad altri 3 relè) e infine 7 Led RGB a catodo comune collegati a 3 uscite PWM che posso controllare dalla pagina web. Premetto che tutti i led hanno delle resistenze di 220 ohm (3 nel caso dei led RGB) e che il motore dc è alimentato da un pacco batterie a sè stante.
Il problema è proprio questo: posso accendere solo una di queste cose alla volta e, adesso, non so perchè il motore dc non si accende nemmeno (l'ho provato da solo e funziona).
Sicuramente ho esagerato a caricare arduino con tutte queste cose. C'è qualcosa che posso fare per risolvere il problema?

Ogni pin di Arduino può dare al massimo, a Vcc, 40 mA (... ma quello è veramente un limite, nel normale funzionamento occorre stare al 60-70% di detto valore) ed inoltre la somma di tutti i pin e dell'assorbimento del chip, non deve MAI superare al massimo i 200 mA (... e anche qui massimo va considerato come valore limite, ma nel normale funzionamento occorre stare al 60-70% di detto valore).

Assorbimenti oltre detti limiti possono danneggiare irrimediabilmente il chip.

Quindi ... vedi tu ...

Guglielmo

Grazie per la veloce risposta. Ho capito che era veramente molto sovraccaricato. Vorrei però sapere se c’è un modo per realizzare il progetto senza comprare un’altra scheda Arduino e senza creare diverse pagine web (magari usaando i pin solo per dare input e alimentando tutto il resto dall’esterno). Si potrebbe fare una cosa del genere?

SE la MCU non si è danneggiata, la cosa miglioe è quella di NON collegare mai le cose direttamente ai pin di Arduino, ma usare dei driver (bastano dei semplici transistor o, dove serve maggior corrente, dei MOSFET) ed usare un alimentatore esterno per alimentare le varie cose.

Guglielmo

Per vedere se la scheda Arduino Yun è danneggiata potresti provare tutti i pin di output ad uno ad uno caricando l'esempio del led lampeggiante. Nell'esempio, di volta in volta, cambia il pin a cui è connesso il led (resistore + led!) e vedi se "blinka".
Così provi tutti i pin uscita digitale. Non conosco Yun, ma penso che i pin analogici (A0 - A5) possono essere usati come digitali (14 - 19), così provi anche quelli.
Se funzionano in output è molto probabile che funzionino anche in input. Comunque per fare anche questa prova usa un esempio con un pulsante e un led. Sposta il pulsante sui diversi pin, modificando anche lo sketch di esempio, e vedi se ti accenda il led.
Ciao,
P.

Grazie per le risposte, I pin di Arduino funzionano tutti (penso che si sia danneggiato solo un relè della I/O shield).
Sto cercando di utilizzare un transistor ma essendo completamente inesperto non so come usarlo (quali resistenze mettere o se usare un NPN o un PNP). Al momento possiedo dei transistor S8050 (NPN) e dei S8550 (PNP), presenti nello starter kit.
Sapreste al limite indicarmi una guida semplice per imparare ad utilizzarli come interruttori con una alimentazione esterna?

Dario

Questa pagina web è una miniera di notizie riguardanti Arduino e l'elettronica pratica. In particolare queste sono una serie di schede che ti consentono di connettere in sicurezza ogni sorta di dispositivo al tuo Arduino. Ci sono anche esempi di come usare transistor e mosfet come interruttori. Se poi hai altri dubbi chiedi pure.
Ciao,
P.

Salve, ho cercato qualche modo per usare un transistor. In allegato c’è il progetto che ho utilizzato, i led sembrano funzionare correttamente. Devo cambiare qualcosa o è tutto corretto?

Che cosa intendi per "funzionare correttamente"? Il secondo led non è connesso a niente, devi aver sbagliato lo schema. I led sembrano connessi verso massa, ma se vedi gli schemi che ti ho consigliato i led sono connessi al positivo (SEMPRE con la loro resistenza). Se il transistor utilizzato è lo S8050, la base del transistor va connessa al pin di Arduino attraverso una resistenza di 1kOhm e non con un filo (verde).
Che sketch hai caricato sull'Arduino?
Ciao,
P.

Il transistor è lo S8050, e lo sketch è un semplice blink e i led si accendono come da sketch. Tutti e 3 i led sono collegati all’emettitore del transistor ognuno con una sua resistenza da 220 Ohm. Per quanto riguarda la base ho provato a collegarla al pin 13 di Arduino sia con una resistenza da 1kOhm si senza e il funzionamento era corretto in entrambi i casi. Il secondo led è stato un errore mio, anche quello è collegato all’emettitore.
Non trovo invece tra le schede che mi hai consigliato quella che riguarda transistor e led (che significa … venno connessi al positivo sempre con la loro resistenza? Intendi il positivo dell’alimentazione esterna? E in questo caso cosa dovrei collegare all’emettitore?)
Grazie per la disponibilità.
Dario

Lo schema del led + transistor (uno o più) è quello a destra di pag 3. Comunque, sai leggere gli schemi elettrici? Nell’allegato TreLedTuo c’è lo schema che hai realizzato tu, mentre nell’allegato TreLedStandard c’è lo schema che si usa abitualmente. Il tuo schema funziona perché tu stai utilizzando il transistor nella configurazione a collettore comune, mentre l’uso migliore in questi casi è quello a emettitore comune dello schema standard.
Ciao,
P.

Ho seguito il tuo consiglio (in allegato c’è il progetto, è corretto?), ma ho notato che con i led rossi funziona perfettamente mentre i led bianchi si accendono con pochissima luce (tra l’altro la luce parte ad una media intensità e mentre il led rimane acceso va spegnendosi). Devo cambiare qualcosa per i led bianchi?

Dario

I led rossi hanno una caduta di tensione ai capi di circa 1,8-2V per cui per far scorrere una corrente di 10mA (luminosità media, ma dipende dal tipo) hanno bisogno di una resistenza da (5-2)/0,01=300Ohm, oppure (5-1,8)/0,01=320Ohm. Per far scorrere una corrente di 20mA (luminosità massima) hanno bisogno di una resistenza da (5-2)/0,02=150Ohm, oppure (5-1,8)/0,02=160Ohm. Ma le resistenze con tolleranza 5% (fascia oro) hanno valori “standard” che nel range indicato sono: 150, 180, 220, 270, 330. Ecco perché con i led rossi alimentati a 5V si consigliano resistenze da 220Ohm, che fanno scorrere una corrente di circa 14-15 mA.
I led bianchi hanno una caduta di tensione ai capi più alta, pari a circa 3,3-3,4V e necessitano quindi di una resistenza di valore inferiore. Nelle formule di sopra sostituisci a 1,8 e 2 rispettivamente 3,3 e 3,4 e ricalcola il valore delle resistenze. Per sicurezza scegli il valore standard più vicino più alto.
Piuttosto non capisco perché la luminosità dei led bianchi tende ad abbassarsi. Con le resistenze da 220Ohm può essere bassa, ma deve rimanere costante. Il fatto che si abbassi denota qualcosa che non va. O sta soffrendo Arduino, o sta soffrendo il transistor. Con cosa alimenti il tutto? Non con le pile dello schema, spero.
Ciao,
P.

P.S. In allegato ti giro una tabella sull’alimentazione dei led gentilmente fornita da Guglielmo.

Led_Res.pdf (13.5 KB)

Arduino è alimentato con un caricabatterie portatile per telefono (5V), mentre l'alimentazione esterne è un pacco batterie da 4 AA (dovrebbe essere 6 V in totale ma io uso delle ricaricabili da 1,2 l'una per un totale di 4,8V). Il led bianco va diminuendo sia quando la resistenza è di 220 Ohm sia senza resistenza (al momento non ho resistenze minori di 220 Ohm, per cui faccio prove brevissime senza resistenza).

Dario

se metti resistenze in paralello diminuisci anche il valore totale. 2 da 220 Ohm in paralello sono 110 Ohm.
Ciao Uwe

Segui il consiglio di Uwe e collega UN SOLO led bianco. Sempre con un solo led bianco, elimina l'alimentazione esterna e prendi i 5V dal pin 5V di Arduino. Ultima prova: elimina il transistor e collega il solo led bianco + resistenza da 110 Ohm fra un pin diverso dal 13 (cambiando il riferimento nello sketch blink) e GND, perché su quel pin è già attestato il led interno di Arduino. La luminosità del led non deve cambiare con lo sketch blink, ma con lo sketch fade.
Ciao,
P.

Graze dei consigli. Allora, ho provato a togliere l’alimentazione esterna ed alimentare 1 led bianco con resistenza da 110 Ohm con i 5V di arduino. Ho collegato il transistor al pin 12 con la resistenza da 1 kOhm e funziona correttamente. con un blink di 10 secondi la luminosità è buona e non diminuisce nel tempo.
Il problema è quindi nell’alimentazione esterna, come posso intervenire?

mentre l'alimentazione esterne è un pacco batterie da 4 AA (dovrebbe essere 6 V in totale ma io uso delle ricaricabili da 1,2 l'una per un totale di 4,8V)

Non è che sono scariche o ce n'è qualcuna difettosa ?

I GNDli hai collegati insieme, spero .

Le batterie erano appena state caricate quando la luminosità del led diminuiva. I Gnd sia di arduino che dell'alimentazione esterna sono tutti collegati ad un'unica linea.

Evidentemente le ricaricabili non erano state caricate a dovere, oppure ce n'è una che sta morendo. A me succedeva con il pacco da 4 che mettevo nella macchina fotografica. ce n'era una difettosa e si scaricava quasi subito, e la macchina smetteva di funzionare. Prova a mettere 4 batterie AA alcaline nuove. Tutto dovrebbe funzionare senza affievolimenti.
Ciao,
P.