sabato 5 dicembre 2015

Power for Arduino!

Domanda da un milione di dollari, come alimento Arduino?
Classica risposta, tramite USB.


Nel caso volessimo fare di più, controllare carichi più "pesanti"?
Alimento da jack? ma brucio qualcosa? stacco o non stacco la USB?
... e Vin.... cos'è? .... dov'è?!?

Questa piccola guida vuole fare un po' di chiarezza su come Arduino, sotto la scocca, mangia e smista l'energia data da una qualunque fonte.

Cliccami che sono piccola!
Qui in alto, con qualche nota aggiunta da me - lo so scrivo malissimo - ho provato a segnarmi i punti salienti riguardanti l'alimentazione d'Arduino.

Legenda:
il componente in basso a sinistra - ATMEGA16U2 - è il componete che gestisce la USB ( per poter scrivere e leggere Arduino ), mentre in basso a destra - ATMEGA328p - è il nostro micro controllore Arduino.
Per ultimo il regolatore di tensione in alto a destra, NCP1117 .


Alimentazione da USB:

Tradizionalmente alimentiamo il nostro Arduino con la porta USB.
Partendo dal connettore in basso a sinistra, USB 5V e proviamo a risalire il percorso in XUSB.

Il primo componente che incontriamo è "F1", un fusibile di protezione per non bruciare la porta USB.
Successivamente, il circuito continua con l'etichetta "USBVCC", che va ad alimentare direttamente il micro controllore ATMEGA16U2 al pin 31 "UVCC".

Questo passaggio attiva il trasferimento dati USB, ma non abilita il nostro micro controller ATMEGA328p Arduino.

Riprendendo più in alto, sopra alla scritta Rev3, ritroviamo USBVCC.

Ora incontriamo un transistor Pmos che ci lascerà passare solo se acceso.
Il transistor è come una valvola, la tensione Vgs deve essere '-Vcc' per accenderlo e far passare la corrente che arriva da USBVCC.

Ok, ma DEVE essere acceso il transistor, altrimenti l'alimentazione non arriverebbe al micro controllore Arduino.

Guardiamo il circuito appena sopra il transistor, quel triangolo U5A, chiamato comparatore.
Il suo funzionamento è il seguente:
Vs+ = +Vcc & Vs- = -Vcc
In questo caso abbiamo in uscita dal comparatore Vs- che è uguale a -Vcc, esattamente il valore per far accendere il nostro transistor e far passare corrente dalla USBVCC.

A questo punto andiamo ad alimentare tutti i punti +5V cerchiati in rosa, tra cui il nostro Arduino micro controller.


Alimentazione con jack/batteria:

Il jack/batteria è il connettore in alto a destra con su scritto Jack, collegato a Vin, a sua volta collegato all'NCP117.

Dalle note sul sito è consigliata una batteria minima di 7V. Come mai?
Semplicemente perchè il nostro controllore di tensione, NCP1117, funziona con un ingresso minimo di 7V.

Garantendo 7V minimi accenderemo il nostro NCP1117, accendendo sulla sua uscita tutti i +5V.

Torniamo al nostro triangolo comparatore, al pin CMP abbiamo un partitore di tensione, la formula è riportata in alto a sinistra.


Utilizzando un'alimentazione Vin = 7V :
CMP = [10k / (10k+10K)] * 7V = 3,5 V
che secondo la tabella del comparatore, CMP > +3V3 e quindi l'uscita del comparatore è '+Vcc' .
Il transistor si spegne.
Ora non ho più disponibili i +5V da USBVCC ?
Si è giusto, ora è l'NCP1117 a fornirli.

Ricapitolando,
se il transistor è spento, i +5V sono forniti dall'uscita del nostro NCP1117.

L'ultimo punto, è accesa la USB? altrimenti non posso scrivere ne leggere su Arduino da PC.
La risposta è si, ricordate che 'USBVCC' non va solamente al transistor, ora spento, ma anche direttamente al nostro ATMEGA16U2 USB.

Tutto è perfettamente funzionante.


Alimentazione jack/batteria compresa tra 5.5 e 6.5 V :

Cosa succede se il nostro jack/batteria è si sopra i 5V della USB, ma sotto la soglia minima d'accensione del nostro NCP1117?

Caso con Vin = 5.5V :
[10k / (10k+10K)] * 5,5V = 2,75 V
non abbastanza per superare +3V3, l'uscita resta a '-Vcc'. Transistor ON.

Caso con Vin  = 6.5 V :
[10k / (10k+10K)] * 6.5V = 3,27 V
non abbastanza per superare +3V3, l'uscita resta a '-Vcc'. Transistor ON.

Il transistor si spegne solo da 7V in avanti.
Se così non fosse, cioè il transistor si spegnesse già a 5,5V, l'NCP1117 non si accenderebbe facendo mancare l'alimentazione +5V a tutto il circuito.


Collegamento diretto a Vin:

Come abbiamo notato sullo schematico, Vin è tutta l'alimentazione proveniente dal nostro jack/batteria.
Tramite l'NCP1117 andiamo a garantire la corretta alimentazione +5V necessaria ad Arduino.

Tuttavia si nota un pin d'uscita, tra quelli di power, chiamato Vin.

Collegandoci direttamente a questo pin Vin, con applicato jack/batteria, si avrà accesso diretto al voltaggio ed amperaggio della batteria SENZA protezione.

Questo può essere utile per alimentare carichi che richiedono più dei tradizionali +5V ( 20mA ) forniti d'Arduino.


Alimentazione d'un eventuale carico/shield:

Sfrutto questo schema per illustrare i diversi casi d'alimentazione d'uno shield.

Lo stato del jumper non è da sottovalutare.

In questo caso si prende in considerazione l'alimentazione d'Arduino ed una motor shield, ma il concetto è sempre uguale:
alimentazione d'Arduino e dello shield.

Ricordo che l'alimentazione esterna ad Arduino deve essere compresa tra 7 to 12 Volt, tipicamente sfruttando il comodissimo jack.

  • Alimentazione unica, tramite jack, Arduino e shield:
    Il jack andrà ad alimentare Arduino e tramite il pin Vin anche lo shield.

    Soluzione buona se lo shield non richiede grande potenza ( corrente e tensione ).

    NB: in questo caso, motor shield, collegare il jumper indicato nello schema.
  • Alimentazione separata Arduino e shield:
    In questo caso si può utilizzare per Arduino l'alimentazione USB ( solo 5V ) oppure jack.
    Mentre per lo shield, controllare dov'è situato il connettore d'alimentazione proprio della shield e collegare l'alimentazione esterna adeguata.

    Soluzione buona se lo shield ha bisogno di potenza diversa o maggiore rispetto ad Arduino.

    NB: in questo caso, motor shield, il jumper indicato nello schema va lasciato aperto.

Nessun commento:

Posta un commento