Controllo scarica e carica di una batteria

Share

Ecco un esempio di codice Arduino che controlla la scarica e la carica di una batteria utilizzando un sensore di tensione e un relè per controllare il carico:

// Dichiarazione dei pin utilizzati
const int pinSensoreTensione = A0; // Pin analogico per il sensore di tensione
const int pinRelay = 2; // Pin digitale per il relè

// Costanti per la soglia di carica e scarica
const float sogliaCarica = 4.2; // Tensione massima di carica della batteria
const float sogliaScarica = 3.6; // Tensione minima di scarica della batteria

// Variabili per la lettura della tensione
float tensioneBatteria = 0.0;
float tensioneLetta = 0.0;

void setup() {
  // Inizializzazione del pin del relè come output
  pinMode(pinRelay, OUTPUT);
  // Apertura del relè (carico spento)
  digitalWrite(pinRelay, LOW);
  // Avvio della comunicazione seriale
  Serial.begin(9600);
}

void loop() {
  // Lettura della tensione
  tensioneLetta = analogRead(pinSensoreTensione);
  // Conversione della tensione letta in volt
  tensioneBatteria = tensioneLetta * (5.0 / 1023.0);
  // Stampa della tensione letta
  Serial.print("Tensione batteria: ");
  Serial.print(tensioneBatteria);
  Serial.println(" V");

  // Controllo dello stato della batteria
  if (tensioneBatteria > sogliaCarica) {
    // Spegni il carico
    digitalWrite(pinRelay, LOW);
    Serial.println("Batteria completamente carica");
  } else if (tensioneBatteria < sogliaScarica) {
    // Accendi il carico
    digitalWrite(pinRelay, HIGH);
    Serial.println("Batteria scarica, accensione del carico");
  }

  // Ritardo tra una lettura e l'altra
  delay(1000);
}

Assicurati di collegare il sensore di tensione all’ingresso analogico A0 dell’Arduino e il relè al pin digitale 2 (puoi modificare questi pin nel codice se necessario). Inoltre, il codice suppone che il sensore di tensione restituisca una tensione proporzionale a quella della batteria nell’intervallo da 0 a 5V. Assicurati di adattare il codice se il tuo sensore restituisce una tensione diversa.

Questo codice controlla continuamente la tensione della batteria e accende o spegne il carico tramite il relè a seconda della tensione letta. Se la tensione supera la soglia di carica, il carico viene spento. Se la tensione scende al di sotto della soglia di scarica, il carico viene acceso. La lettura della tensione e lo stato del carico vengono stampati sulla porta seriale per il monitoraggio.