/de/wiki/ Firmware ArduinoBMS

Firmware: ArduinoBMS

Die ArduinoBMS-Firmware ist das Gehirn von Akku-Craft und die technische Grundlage unseres Grundpfeilers „Dezentral". Sie verwaltet den Ladezustand (State of Charge, SoC), den Gesundheitszustand (State of Health, SoH) und alle Sicherheitsprotokolle in Echtzeit.

Software-Architektur

Die Firmware ist in C++/Arduino geschrieben und folgt einer modularen Struktur, die unser Hardware-Design widerspiegelt. Sie übernimmt die Echtzeit-Datenerfassung und autonome Entscheidungsfindung.

Kernfunktionen

  • Zellspannungsmessung — Rauschgefilterte Messungen für präzise zellenindividuelle Daten.
  • Über-/Unterspannungsschutz — Sofortige Abschaltung, wenn eine Zelle ihren sicheren Betriebsbereich verlässt.
  • Thermisches Throttling — Der Strom wird automatisch reduziert, wenn die Temperaturen definierte Schwellenwerte überschreiten.

Abhängigkeiten & Bibliotheken

Zum Kompilieren von ArduinoBMS wird Folgendes benötigt:

  • Arduino IDE oder PlatformIO
  • ADC-Bibliotheken passend zum in den Schaltplänen verwendeten Chip
  • Kommunikationsbibliotheken für den internen Bus (I²C oder CAN)

Hauptschleifen-Struktur

Die Firmware arbeitet auf drei Prioritätsstufen: einer hochprioritären Sicherheitsschleife, einer mittelprioritären Logikschleife und einer niedrigprioritären Telemetrieschleife.

void loop() {
  unsigned long currentMillis = millis();

  // HOHE PRIORITÄT: Sicherheitsprüfung (alle 10 ms)
  if (currentMillis - lastSafetyCheck >= 10) {
    checkVoltages();
    checkTemperatures();
    lastSafetyCheck = currentMillis;
  }

  // MITTLERE PRIORITÄT: SoC & Balancing-Logik (alle 500 ms)
  if (currentMillis - lastLogicTick >= 500) {
    calculateSoC();
    manageBalancing();
    lastLogicTick = currentMillis;
  }

  // NIEDRIGE PRIORITÄT: Telemetrie-Übertragung (alle 1000 ms)
  if (currentMillis - lastCommTick >= 1000) {
    broadcastStatus();
    lastCommTick = currentMillis;
  }
}