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.