Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Intelligenter Multi-Batterielader mit Multiplexing & Digitalanzeige

Komponenten und Materialien

Bauteil Menge
Arduino UNO 1
Arduino Proto Shield 1
Ultraschallsensor HC-SR04 1
Adafruit MCP3008 8-Kanal 10-bit ADC 1
5V Relais 2-Kanal Optokoppler 3
LM2596 DC/DC Buck Modul 3A einstellbar 1
Widerstand 1kΩ 12
6-polige Klemmleiste 1

Benötigte Werkzeuge

Projektbeschreibung

Im Nordosten der USA hat man oft mehrere Fahrzeuge (Oldtimer, Boot, Rasenmäher, Generator), die im Winter nicht genutzt werden. Für jede Batterie ein Erhaltungsladegerät zu kaufen wird teuer (5× 30$ = 150$).

Die Idee: Ein einziges Smart-Ladegerät, das automatisch zwischen bis zu 6 Batterien wechselt und jede einige Stunden am Tag lädt.

Funktionsweise

Variablen für Ladezeit, Anzeigedauer, Entfernungs-Schwellen etc. anpassbar.

Arduino-Code

#include <Wire.h>
#include <LiquidCrystal_I2C.h> // v1.2.1
#include <timer.h>
#include <HCSR04.h>

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

int chargeTime = 10 * 1000;        // Ladezeit pro Batterie (ms)
int charge_time_counter = 59;
int charge_time_max = 60;          // Anzahl Zyklen pro Stunde

int relay1 = 3, relay2 = 4, relay3 = 5;
int current_relay = 0;
int max_relays = 3;

float volts1, volts2, volts3;
int min_volts = 1;
int volts_update_count = 5;
int volts_update_counter = 0;
int volts_update = 500;
int read_distance_update = 500;
int time_on_counter = 0;
int time_on_count = 100;
int heart_beat = 0;

UltraSonicDistanceSensor distanceSensor(11, 12);
int distance;
int relays[] = { relay1, relay2, relay3 };
int is_live[] = { 0, 0, 0 };
int debug = 5;

void all_change_to(int which) {
  digitalWrite(relay1, which);
  digitalWrite(relay2, which);
  digitalWrite(relay3, which);
}

void toggle_relays(int whichOne) {
  lcd.setCursor(0, 0);
  lcd.print("Relay on:"); lcd.print(current_relay + 1);
  all_change_to(HIGH);
  digitalWrite(relays[current_relay], LOW);
  lcd.print(" "); lcd.print(++acnt);
}

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_distance() {
  distance = distanceSensor.measureDistanceCm();
  if (distance < 80) {
    lcd.backlight(); time_on_counter = 0;
  } else {
    time_on_counter++;
    if (time_on_counter > time_on_count) {
      time_on_counter = 0; lcd.noBacklight();
    }
  }
}

void read_show_volts() {
  volts1 = analogRead(0) * 0.016;
  lcd.setCursor(11, 0); lcd.print(volts1);
  volts2 = analogRead(1) * 0.0164;
  lcd.setCursor(4, 1); lcd.print(volts2);
  volts3 = analogRead(2) * 0.0166;
  lcd.setCursor(11, 1); lcd.print(volts3);

  int temp_cnt = 0;
  relays[0] = relays[1] = relays[2] = 0;
  if (volts1 > min_volts) { relays[temp_cnt++] = relay1; }
  if (volts2 > min_volts) { relays[temp_cnt++] = relay2; }
  if (volts3 > min_volts) { relays[temp_cnt++] = relay3; }
  max_relays = temp_cnt;

  lcd.setCursor(0, 1);
  lcd.print(heart_beat ? "<>" : "><");
  heart_beat = !heart_beat;
  lcd.print(charge_time_counter);
  read_distance();
}

void setup() {
  Serial.begin(19200);
  lcd.begin(16, 2); lcd.backlight();
  pinMode(relay1, OUTPUT); pinMode(relay2, OUTPUT); pinMode(relay3, OUTPUT);
  all_change_to(HIGH);
  read_show_volts(); checkRelays();
  timer.every(chargeTime, checkRelays);
  timer.every(volts_update, read_show_volts);
}

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

Schaltplan

Intelligenter Multi-Batterielader mit Multiplexing & Digitalanzeige

Herstellungsprozess

  1. Intelligente Jalousien: Automatische Lichtsteuerung mit Arduino & Solarenergie
  2. Smartes Sparschwein: Münzprüfer mit Arduino Nano steuern
  3. Arduino Temperaturoverwachung & Echtzeituhr mit 3,2″ TFT-Display
  4. LED per Bluetooth mit Arduino steuern – Einfache DIY-Anleitung
  5. Optimierte Stromversorgungslösungen für Arduino-Projekte
  6. Interaktives Nextion HMI Projekt mit Arduino Mega und Sensoren
  7. DIY-Voltmeter mit Arduino und Nokia 5110 Display – Schritt-für-Schritt-Anleitung
  8. Umfassendes Arduino-Trainingskit mit Mega 2560, Sensoren, Motoren & Custom PCB
  9. Fridgeye-App mit Nextion-Display bauen: Schritt-für-Schritt-Anleitung
  10. Präzise Solareinstrahlungsmessung mit Arduino UNO & Ethernet Shield