Rendiamo autonoma la scheda Arduino Esplora.

arduino_esplora_battery_title

Dopo aver presentato la scheda Arduino Esplora, aver visto come istallarla e programmarla, è arrivato il momento di utilizzare la nostra scheda. Vedremo in quest’articolo come alimentare la scheda con una batteria permettendoci di scollegarla dal PC e di renderla autonoma.

La scheda Arduino Esplora, per il suo funzionamento deve essere alimentata tramite la porta USB.

Come visibile nello schema, la linea XUSB collegata al pin P1 della presa USB, è protetta dal fusibile resettabile F1 che, nel caso di un assorbimento superiore ai 500 mA, interromperà automaticamente la connessione finché non sarà rimosso il corto o il sovraccarico.

Il terminale GND è invece connesso al terminale P5 della presa USB.

Contrariamente agli altri modelli di schede Arduino, non è previsto un connettore polarizzato connesso ad un circuito regolatore che possa fornire la tensione stabilizzata a +5V per il funzionamento della scheda.

In questo articolo vedremo invece come poter alimentare la scheda con una batteria da 3,7V di tipo Li-Ion connessa ad un circuito convertitore DC/DC che fornirà la tensione di 5V.

Altre informazioni sulla scheda possono essere trovate nell’articolo: Scopriamo la nuova scheda Arduino Esplora.

Descrizione

Per realizzare l’alimentazione a batteria della scheda Arduino Esplora, utilizzeremo questi componenti:

  • Una batteria ricaricabile di tipo Li-Ion
  • Un modulo caricabatteria
  • Un modulo convertitore DC/DC del tipo Step Up
  • Un deviatore a slitta unipolare
  • Un fusibile resettabile da 500 mA
  • Una mini breadboard
  • Cavetti assortiti maschio/maschio per cablaggi su breadboard

Il circuito è stato realizzato su breadboard, poiché la versione definitiva sarà poi integrata da una parte TX/RX basata su un modulo bluetooth che renderanno la scheda Arduino Esplora una stazione di comando completamente autonoma e completamente wireless.

Schema del circuito

Lo schema del circuito, realizzato con il programma Fritzing è riportato sotto.

La batteria è connessa al caricabatteria e da qui la tensione tramite l’interruttore e il fusibile resettabile arriva al convertitore DC/DC che eleva il valore della tensione da 3,7V a 5V.

Per alimentare la scheda utilizzeremo uno dei connettori Tinkerkit, l’ingresso INA, i cui pin 5V e GND sono connessi al resto del circuito.

La scheda ESPLORA ha quattro connettori compatibili con il sistema Tinkerkit: due per gli ingressi di colore bianco e due di uscita di colore arancio.

Utilizziamo anche il pin d’ingresso che in questo caso monitora il valore della tensione della batteria.

Passiamo adesso all’analisi in dettaglio dei componenti principali.

La Batteria

La batteria ricaricabile scelta è un accumulatore agli ioni di litio (a volte abbreviato in Li-Ion).

Per maggiori informazioni si può fare riferimento all’articolo Batterie al Litio: scegliamo le migliori.

Per questa applicazione viene utilizzata una batteria Li-Ion con una tensione di 3,7 e una corrente di 184 ma/h prodotta dalla ENIX Energies.

Il caricabatterie

Per la carica della batteria Li-Ion, si è scelto un piccolo circuito prodotto dalla SparkFun codice PRT-10161.

Questo permette, utilizzando un alimentatore da 5V, oppure direttamente la presa USB del PC, di caricare la batteria con una corrente selezionabile tra 100 e 500 mA.

Con la stessa schedina è altresì possibile caricare batterie single-cell LiPo o Li-Polymer.

La scheda incorpora un circuito di carica basato sull'integrato prodotto dalla Microchip tipo MCP73831/2

Il dispositivo è contenuto in un piccolo package SOT-23 a 5 pin e per il suo funzionamento sono necessari un basso numero di componenti esterni: è stato creato appositamente per quelle applicazioni portatili che necessitano di ricarica da una porta USB.

L'integrato utilizza un algoritmo di carica con corrente e tensione costante con precondizionamento e fine della carica selezionabile.

La tensione costante è fissata a quattro valori disponibili: 4.20V, 4.35V, 4.40V e 4.50V.

La corrente costante è impostata tramite il valore di una resistenza esterna.

L'integrato limita la corrente di carica in base alla sua temperatura e alle condizioni ambientali. Questa regolazione termica consente di ottimizzare il tempo del ciclo di carica pur mantenendo l'affidabilità del dispositivo.

Sono disponibili diverse opzioni, per impostarle si può fare riferimento al data sheet.

La scheda proposta dalla SparkFun ha un LED di stato, ed un jumper a saldare per selezionare il valore della corrente di carica a scelta tra 500mA o 100 mA.

Dispone poi, della presa USB per l’alimentazione e di due connettori; una per collegare la batteria "BAT IN" e una di un'uscita “SYS OUT ", che consente di collegare il circuito di carica direttamente al progetto in modo che non è necessario scollegare il caricabatterie ogni volta che si desidera utilizzarlo.

Convertitore DC/DC

Per elevare la tensione dal valore di 3,7V fornita dalla batteria a quello di 5V necessario ad alimentare la scheda Arduino Esplora, la scelta è andata ad un piccolo convertitore DC/DC prodotto dalla Pololu con codice 791.

Ha dimensioni particolarmente ridotte (10,7 x 22,4 x 5,8 mm), ed è in grado di convertire una tensione continua compresa tra 1,5 e 16 volt in una tensione di uscita da 2,5 a 9,5 volt.

La massima corrente disponibile è di circa 1600 mA.


La scheda si basa su un integrato SC4501 prodotto dalla Semtech, un regolatore switching di tipo step-up current-mode ad alta frequenza di commutazione con un transistor di potenza integrato da 2A. La sua frequenza di commutazione elevata (programmabile fino a 2 MHz) consente l'utilizzo di piccoli componenti passivi esterni a montaggio superficiale. Dispone di un Soft-start programmabile che elimina l’alta corrente di spunto in fase di avviamento.

La tensione di uscita può essere regolata ruotando il piccolo trimmer presente sulla scheda.

Fusibile autoripristinante

Per la protezione del circuito si è utilizzato un fusibile autoripristinante chiamato PTC (polyfuse o polyswitch): si tratta di termisistori non-lineari che nel caso del loro surriscaldamento (dovuto ad un elevato assorbimento) diventano non conduttori, ritornando ad esserlo dopo la rimozione del problema e consentendo al circuito di funzionare di nuovo senza aprire il telaio o sostituire nulla.

Assemblaggio

Come già detto, attualmente il circuito è stato assemblato su una basetta bread-board, ma in futuro è prevista la costruzione di un apposito circuito stampato.

Per il cablaggio occorre riferirsi allo schema riportato precedentemente nell'articolo.

Per il collegamento con la scheda occorre realizzare un apposito cavo utilizzando due connettori a tre pin femmina passo 2,54 mm tipo Molex 22-1-3037 (codice RS 679-5375P).

 

Taratura e collaudo.

L’unica regolazione da compiere è quella della tensione di uscita del modulo switching, per cui con la batteria collegata e l’interruttore su ON, si collegherà un multimetro digitale all’uscita e si regolerà tramite un piccolo cacciavite il trimmer presente sul modulo elevatore sino a leggere il valore di 5V.

Si potrà a questo punto, considerare conclusa la taratura del circuito.

Programma di test.

Per verificare il funzionamento del circuito, è presente un piccolo programma che mostrerà sul display TTF il valore fornito dalla batteria.

Nel programma, la sezione inerente la lettura del pin Analogico è derivata da un programma scritto da Mike Barela che potrete trovare a questo link.

L’operazione preliminare sarà quella di eseguire un collegamento, in modo da portare la tensione tramite un cavo al pin centrale del connettore IN-A.

Per caricare il programma, che è presente in allegato, utilizzeremo la scheda Arduino Esplora collegata normalmente tramite il solo cavo USB alla porta del PC.

Se non avete ancora configurato la scheda potrete leggere l’articolo Programmiamo la scheda Arduino Esplora.

// Include le librerie necessarie
#include <Esplora.h> 
#include <TFT.h>       // Libreria per LCD ArduinoLCD library
#include <SPI.h>

//Definizione variabile di servizio
int BatteryValue = 0;
char tensione1 [50];
String BatteryValue1;
char batteryPrintout[5];
char valuePrintout[5];
float fBattVoltage = 0;
int iBattVoltage = 0;

/Programma derivato dal sito di Mike Barela per la lettura delle porte analogiche 
// http://21stdigitalhome.blogspot.it/2013/03/reading-arduino-esplora-tinkerkit-inputs.html

const byte CH_TINKERKIT_INA = 8;   // Add values missing from Esplora.
const byte CH_TINKERKIT_INB = 9;
const byte INPUT_A          = 0;
const byte INPUT_B          = 1;
unsigned int readTinkerkitInput(byte whichInput) {  // return 0-1023 from Tinkerkit Input A or B
return readChannel(whichInput+CH_TINKERKIT_INA);
}   //   as defined above
unsigned int readChannel(byte channel) {        // as Esplora.readChannel is a private function

digitalWrite(A0, (channel & 1) ? HIGH : LOW); //  we declare our own as a hack
digitalWrite(A1, (channel & 2) ? HIGH : LOW); //
digitalWrite(A2, (channel & 4) ? HIGH : LOW); // digitalWrite sets address lines for the input
digitalWrite(A3, (channel & 8) ? HIGH : LOW);
return analogRead(A4);                        // analogRead gets value from MUX chip
}
void setup() {
   Serial.begin(9600);
  // Inizializzazione del display grafico
  EsploraTFT.begin();

  // cancella lo schermo con uno sfondo nero
  EsploraTFT.background(0,0,0);
  // Imposta il colore del testo a viola
  EsploraTFT.stroke(255,0,255);
  // Imposta altezza testo a 2
  EsploraTFT.setTextSize(2);
  // Scritturadel testo nella parte superiore sinistra dello schermo
  // Questo testo rimarra' statico
  EsploraTFT.text("Tensione: \n ",0,0);

  // Imposta altezza testo per il loop a 5
  EsploraTFT.setTextSize(5);
}

void loop() {
  // lettura valore della tensione e inserimeto valore in
  // una variabile
  unsigned int BatteryValue= readTinkerkitInput(INPUT_A);

  // Calcolo del valore della tensione della batteria
  float fBattVoltage = ((BatteryValue*5.0)/1023)*1000.0;

  iBattVoltage = (int)fBattVoltage; // Conversione del valore float in integer
  char battVoltageStr[50]; //Asseganzione a char
  sprintf(battVoltageStr,"%d",iBattVoltage); // Copia intero char come stringa
  // Utilizzando gli argomenti indicizzati viene messo ogni numero al posto giusto
  // nota il punto decimale e' inserito manualmente.
  sprintf(tensione1,"%c.%c%cV",battVoltageStr[0],battVoltageStr[1],battVoltageStr[2]);
 
// Conversione valore letto da porta analogica in stringa
  BatteryValue1= String (BatteryValue);
  BatteryValue1.toCharArray (valuePrintout, 6);
  
// imposta il colore del testo a rosso
  EsploraTFT.stroke(255,0,0);
  // stampa su LCD valore letto e di quello in volt
  EsploraTFT.text(tensione1, 0, 80);
  // imposta il colore del testo a verde
  EsploraTFT.stroke(0,255,0);
  // stampa su LCD valore letto dall' ADC
  EsploraTFT.text(valuePrintout, 0, 30); 
 
 //Pausa di un secondo per la prossima lettura
  delay(1000); 
  
// cancella il testo per la prossima lettura
  EsploraTFT.stroke(0,0,0);
  EsploraTFT.text(tensione1, 0, 80);
  EsploraTFT.text(valuePrintout, 0, 30);
}

Filmato illustrativo

Conclusioni

Nella prossima puntata vedremo come collegare un modulo bluetooth alla scheda e con questo comanderemo un dispositivo connesso ad una scheda Arduino UNO.

Per cui, non perdetevi la prossima puntata.

3 Comments

  1. Marven 21 ottobre 2013
  2. adrirobot adrirobot 22 ottobre 2013
  3. Piero Boccadoro Piero Boccadoro 22 ottobre 2013

Leave a Reply