Home
Accesso / Registrazione
 di 

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.

AllegatoDimensione
Esplora_lettura_batteria.zip1.76 KB

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog
ritratto di Marven

Ciao Complimenti, impeccabile

Ciao
Complimenti, impeccabile come sempre... :-)
ho visionato con molto interesse anche gli altri progetti che ci sono sul sito ed ho preso spunto per diversi esperimenti che farò a breve.

Mi permetto solo di fare una piccola correzione:
è chiaro che si tratta solo di un errore di battitura, nella descrizione della batteria si è perso uno "zero" e così la batteria da 1840 mA è diventata da 184 mA.

Mi sono permesso solo per evitare che chi legge, magari non notando l'errore di battitura, utilizzi una batteria troppo piccola...

Aspetto la prossima puntata che leggerò con molto interesse, visto che, a breve, dovrò utilizzare un modulo bluetooth per un piccolo esperimento

Ciao
Mario

ritratto di adrirobot

Giusta correzione

Ciao Marven
Ti ringrazio per i complimenti!
Corretta la tua annotazione sulla reale capacità della batteria, in effetti, quella che ho utilizzato fornisce una corrente di 1840 mA, come visibile nella foto e dalle caratteristiche presenti nel collegamento.
Per quanto volessero però cimentarsi nella costruzione, devo dire che possono essere utilizzate anche batterie di modelli diversi e soprattutto con capacità anche inferiori che possono essere trovate a costi inferiori.
Quello che può verificarsi diminuendo la capacità in corrente è una diminuzione dell’autonomia di utilizzo, questa dipende poi in massima parte dal fatto di utilizzare nella propria applicazione display TTF.
Infatti, se per esempio, la Arduino Esplora fosse utilizzata solamente per pilotare un robot, con utilizzo dei pulsanti o del Joystick e non vi è necessità di mostrare informazioni su display, questo potrebbe essere omesso, alimentando solamente il modulo bluetooth.
Vedremo quest’applicazione nel prossimo articolo della serie Arduino Esplora.
Saluti
Adriano

ritratto di Piero Boccadoro

Ottimo lavoro! E domando

Ottimo lavoro!
E domando scusa: in fase di revisione quell'errore è sfuggito anche a me :(

Restiamo in attesa della prossima puntata. :D

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 5 utenti e 48 visitatori collegati.

Ultimi Commenti