Pubblicato il

Monitorare in Tempo Reale Livello Batteria Litio Indicatore di Carica Arduino e Raspberry Pi

Premessa: Le batterie al litio da 3,7 V sono comunemente utilizzate in molti progetti. Tuttavia, la potenza rimanente e la tensione della batteria al litio sono altamente non lineari. Possiamo solo giudicare approssimativamente se la batteria è piena o quasi scarica in base alla sua tensione. La batteria al litio da 3,7 V a gravità Fuel Gauge utilizza l’interfaccia Gravity I2C, una corrente di funzionamento estremamente bassa e il monitoraggio in tempo reale dello stato di carica relativo (SOC) della batteria tramite l’algoritmo brevettato di Maxim, eliminando la necessità di riapprendimento da pieno a vuoto e errori di accumulo di offset. Plug and play per misurare con precisione la tensione e la carica residua della batteria.Il modulo dispone anche di una funzione di interruzione dell’avviso di batteria scarica.Quando la carica della batteria scende al di sotto della soglia specificata, il pin ALR genera un impulso discendente per attivare l’interruzione esterna di il controllore.Troverai un grande aiuto per stimare la durata della batteria imparando il consumo energetico del sistema con questo modulo.Nei progetti ad energia solare, aiuta a registrare lo stato del cambiamento di potenza della batteria in un giorno o addirittura mesi, il che avvantaggia comprendere il bilancio energetico di carica e scarica del sistema solare.

CARATTERISTICHE TECNICHE:

  • Algoritmo brevettato di Maxim, letture accurate della tensione e della potenza residua della batteria al litio
  • Nessun processo di riapprendimento di carica-scarica, nessun errore di accumulo di offset, plug and play
  • Ampia tensione di ingresso, compatibile con controller da 3,3 V e 5 V
  • Soglia di interruzione dell’avviso di bassa potenza programmabile
  • Protezione da connessione inversa della batteria
  • Tensione di ingresso (VCC): 3,3 V~6,0 V
  • Tensione di ingresso della batteria (BAT IN): 2,5 V~4,2 V
  • Tipo di batteria (BAT IN): batteria ai polimeri di litio/Li-ion da 3,7 V
  • Corrente di esercizio: 50 uA
  • Interfaccia: Gravity I2C (livello logico: 0-3.3V)
  • Dimensione: 22.0mm*30.0mm
  • Stazione meteorologica solare, lampione stradale
  • Caricabatteria al litio
  • Robotica

LISTA MATERIALI:

Etichetta Nome Descrizione

  • VCC Alimentazione VCC (3.3~6.0V)
  • GND Potenza GND
  • C SCL Segnale orologio I2C
  • D SDA Segnale dati I2C
  • ALR ALT* Interruzione avviso batteria scarica (attivo basso)
  • BAT IN Ingresso batteria Porta di connessione della batteria al litio da 3,7 V
  • REV BAT Indicatore di inversione della batteria Quando il collegamento della batteria è invertito, REV BAT si accende.

SCHEMA DI COLLEGAMENTO:

Leggi la tensione della batteria, la potenza rimanente e imposta l’avviso di interruzione a bassa potenza

Collegare il modulo ad Arduino secondo lo schema di collegamento.La batteria può essere collegata al terminale 2P o al connettore JST-PH2.0 2P. Questi due connettori sono collegati internamente in parallelo.L’indirizzo I2C è fisso su 0x36.
Installa la libreria DFRobot_MAX17043.
Apri Arduino IDE, carica il seguente codice di esempio su Arduino UNO.
Aprire il monitor seriale dell’IDE Arduino e impostare la velocità di trasmissione su 115200. Il modulo stampa la tensione della batteria, la percentuale di carica residua della batteria e il messaggio di avviso di interruzione tramite la porta seriale.

CODICE DI ESEMPIO:

Librerie:

  • DFRobot_maX17043 LGPL: github.com/DFRobot/DFRobot_MAX17043
  • Wire LGPL: arduino.cc/en/Reference/Wire
#include "DFRobot_MAX17043.h"
#include "Wire.h"

#ifdef __AVR__
  #define ALR_PIN       2
#else
  #define ALR_PIN       D2
#endif

#define PRINT_INTERVAL        2000
#define BAT_PERCENTAGE        32

DFRobot_MAX17043        gauge;
uint8_t       intFlag = 0;

void interruptCallBack()
{
  intFlag = 1;
}

void setup()
{
  Serial.begin(115200);
  while(!Serial);
  Serial.println();
  Serial.println();
  pinMode(ALR_PIN, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(ALR_PIN), interruptCallBack, FALLING);  //default alert is 32%

  while(gauge.begin() != 0) {
    Serial.println("gauge begin faild!");
    delay(2000);
  }
  delay(2);
  Serial.println("gauge begin successful!");
  //gauge.setInterrupt(BAT_PERCENTAGE);  //use this to modify alert threshold as 1% - 32% (integer)
}

void loop()
{
  static unsigned long lastMillis = 0;
  if((millis() - lastMillis) > PRINT_INTERVAL) {
    lastMillis = millis();
    Serial.println();

    Serial.print("voltage: ");
    Serial.print(gauge.readVoltage());
    Serial.println(" mV");

    Serial.print("precentage: ");
    Serial.print(gauge.readPercentage());
    Serial.println(" %");
  }

  if(intFlag == 1) {
    intFlag = 0;
    gauge.clearInterrupt();
    Serial.println("Low power alert interrupt!");
    //put your battery low power alert interrupt service routine here
  }
}

INDICATORE DI CARICA RASPBERRY PI

1.Avvia l’interfaccia I2C del Raspberry Pi. Se è già aperto, salta questo passaggio. Apri Terminale, digita il seguente comando e premi Invio:

pi@raspberrypi:~ $ sudo raspi-config
Quindi utilizzare i tasti su e giù per selezionare “5 opzioni di interfaccia” -> “P5 I2C” e premere Invio per confermare “SI”. Riavviare il Raspberry Pi.

2.Installazione delle librerie Python e git (necessario collegamento in rete). Se è già installato, saltare questo passaggio. Nel Terminale, digitare i seguenti comandi e premere Invio:

pi@raspberrypi:~ $ sudo apt-get update
pi@raspberrypi:~ $ sudo apt-get install build-essential python-dev python-smbus git
3.Scarica la libreria dei driver ed eseguila.In Terminale, digita i seguenti comandi e premi Invio:

pi@raspberrypi:~ $ git clone https://github.com/DFRobot/DFRobot_MAX17043.git
pi@raspberrypi:~ $ cd ~/DFRobot_MAX17043/RaspberryPi/python
pi@raspberrypi:~/DFRobot_MAX17043/RaspberryPi/python $ python DFRobot_MAX17043.py
Leggi la tensione della batteria, la potenza rimanente e imposta l’avviso di interruzione a bassa potenza
Collegare il modulo al RaspberryPi secondo lo schema di collegamento. La batteria può essere collegata al terminale 2P o al connettore JST-PH2.0 2P. Questi due connettori sono collegati internamente in parallelo. L’indirizzo I2C è fisso a 0x36.
Installa la libreria DFRobot_MAX17043 RaspberryPi.
Nel Terminale, digita i seguenti comandi e premi Invio per eseguire il codice di esempio:
pi@raspberrypi:~/DFRobot_MAX17043/RaspberryPi/python $ cd readAndInt
pi@raspberrypi:~/DFRobot_MAX17043/RaspbeeryPi/python/readAndInt $ python readAndInt.py

COSTRUISCI UN SISTEMA DI GESTIONE DELL’ENERGIA SOLARE:

Gravità: l’indicatore del livello di carica della batteria da 3,7 V Li può essere utilizzato con il Solar Power Manager 5 V per costruire un sistema di gestione dell’energia solare. L’indicatore del livello di carica della batteria può essere utilizzato per monitorare la carica della batteria con un pannello solare in tempo reale durante il giorno, e il consumo energetico del sistema durante la notte. Gli utenti possono scrivere il proprio codice per registrare o stampare la tensione della batteria e i dati sulla potenza residua, che possono essere utilizzati per valutare il “bilancio energetico” del sistema solare in un giorno o anche diversi mesi Questi dati aiutano gli utenti a determinare se la potenza nominale del pannello o quella della batteria al litio è sufficientemente grande da supportare completamente l’intero sistema durante il giorno e la notte.c

L’avviso di interruzione di bassa potenza dell’indicatore del livello del carburante e l’alimentazione 5V controllabile del modulo di gestione dell’energia solare possono essere utilizzati per risparmiare energia quando la carica della batteria è inferiore a una soglia specificata.Il pin ALR invierà un segnale di interruzione per attivare il controller per spegnere l’alimentazione a 5 V. Ciò interrompe l’alimentazione dei moduli esterni collegati al modulo di alimentazione solare e quindi consente di risparmiare energia.

Buon progetto.