Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Chargeur de batterie intelligent multiplexé avec affichage digital

Composants nécessaires

Outils

Problématique

L'auteur possède plusieurs véhicules (voiture classique, pickup, bateau, générateur) avec batteries 12V qui restent inutilisés l'hiver. Au lieu d'acheter 5 chargeurs intelligents (~150€), il conçoit un chargeur unique qui commute automatiquement entre 6 batteries, chargeant chacune 1 heure en rotation. Le système détecte automatiquement les batteries connectées (seuil > 8V) et adapte le cycle.

Principe de fonctionnement

L'Arduino Uno dispose de seulement 6 entrées analogiques, mais A4/A5 sont utilisées pour l'I²C du LCD. Le MCP3008 ajoute 8 entrées analogiques via SPI. Chaque entrée batterie passe par un diviseur de tension (2 × 1kΩ) pour ramener 0-15V dans 0-5V. Trois modules relais 2 canaux (6 relais total) commutent la sortie du chargeur (LM2596 réglé à ~13.8V) vers la batterie active. Un capteur HC-SR04 détecte la présence de l'utilisateur devant l'appareil pour allumer le rétroéclairage du LCD (économie d'énergie).

Fonctions principales du firmware

Code Arduino (extrait principal)

#include 
#include 
#include 
#include 

auto timer = timer_create_default();
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

int chargeTime = 10 * 1000; // 10s pour test, mettre 3600000 pour 1h
int charge_time_counter = 0, charge_time_max = 60;
int relayPins[] = {3, 4, 5}; // 3 relais dans l'exemple (extensible à 6)
int current_relay = 0, max_relays = 3;
float volts[3];
int min_volts = 1; // seuil détection batterie (en V après diviseur)
UltraSonicDistanceSensor distanceSensor(11, 12); // Trig=11, Echo=12

void all_change_to(int level) {
  for (int r : relayPins) digitalWrite(r, level);
}

void toggle_relays(int idx) {
  lcd.setCursor(0, 0);
  lcd.print("Relay on:"); lcd.print(idx + 1);
  all_change_to(HIGH);
  digitalWrite(relayPins[idx], LOW); // relais actif à LOW (optocoupleur)
}

void checkRelays() {
  charge_time_counter++;
  if (charge_time_counter >= charge_time_max) {
    current_relay++;
    if (current_relay >= max_relays) current_relay = 0;
    toggle_relays(current_relay);
    charge_time_counter = 0;
  }
}

void read_show_volts() {
  for (int i = 0; i < 3; i++) {
    volts[i] = analogRead(i) * 0.016; // calibration à ajuster
    // affichage LCD 2 par ligne...
  }
  // détection batteries actives
  int cnt = 0;
  for (int i = 0; i < 3; i++) {
    if (volts[i] > min_volts) relayPins[cnt++] = relayPins[i];
  }
  max_relays = cnt;
  // heartbeat LCD
  read_distance();
}

void read_distance() {
  int dist = distanceSensor.measureDistanceCm();
  if (dist < 80) { lcd.backlight(); time_on_counter = 0; }
  else if (++time_on_counter > time_on_count) { lcd.noBacklight(); time_on_counter = 0; }
}

void setup() {
  Serial.begin(19200);
  lcd.begin(16, 2); lcd.backlight();
  for (int r : relayPins) { pinMode(r, OUTPUT); digitalWrite(r, HIGH); }
  read_show_volts(); checkRelays();
  timer.every(chargeTime, checkRelays);
  timer.every(500, read_show_volts); // mise à jour tension toutes les 500ms
}

void loop() { timer.tick(); }

Schéma de câblage

Voir le schéma dans la section "Schematics" : diviseurs de tension vers MCP3008 (SPI: D10=CS, D11=MOSI, D12=MISO, D13=SCK), relais sur D3-D5, LCD I²C sur A4/A5, HC-SR04 sur D11/D12.

Personnalisation

Processus de fabrication

  1. Stores intelligents : contrôle automatisé de la lumière avec Arduino et énergie solaire
  2. Construire une Tirelire Intelligente : Contrôler un Accepteur de Pièces avec Arduino Nano
  3. Moniteur de Température et Horloge Temps Réel Arduino avec Écran TFT 3.2"
  4. Contrôler une LED par Bluetooth avec Arduino et MIT App Inventor
  5. Solutions d'alimentation optimisées pour projets Arduino
  6. Station météo interactive Nextion HMI avec Arduino Mega et capteurs
  7. Construire un voltmètre DIY avec Arduino et écran Nokia 5110
  8. Kit de Formation Arduino Complet : Mega 2560, Capteurs, Moteurs et PCB Personnalisé
  9. Construire l'application Fridgeye avec un écran Nextion : guide étape par étape