Victron MPPT Regler mit VEdirect

Nochmal:

Das ist Dein gesuchtes else.
Es gibt kein geschriebenes if, also gibt es kein geschriebenes else.
Auflösung

ja jetzt ist mir auch beim 10mal lesen aufgefallen. Sorry.

Alles gut. Ich stifte ja auch mal gerne Verwirrung :slight_smile:

noch mal getestet. Wenn ich das System längere Zeit laufen lasse, dann zeigt er mit meinem kompletten Sketch keine Werte mehr an. Wenn ich den Arduino dann an den PC hänge läuft es wieder.

Versorgungs-
-spannung
-strom
?

Nein. Daran liegt es nicht. Mit meinem alten Sketch klappt es auch mehrere Tage ohne Probleme.

Hast Du was an Pin13 dran zu hängen?
Wenn nicht, könntest Du da einen Herzschlag laufen lassen.


void setup()
{
  pinMode(LED_BUILTIN, OUTPUT);
}

void  loop()

{
  heartbeat(500);
}

void heartbeat(const uint32_t intervall)
{
  static uint32_t lastblink = 0;
  if (millis() - lastblink > intervall)
  {
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    lastblink = millis();
  }
}

Dann siehst Du, ob der einfriert, oder nur was anderes macht.
Und dann könntest mal schaun, ob das nur mit dem mppt läuft.
Und dann nur den shunt laufen lassen.

Dazu jeweils eine der Funktionen

/*
void serialevent1()
{
}
*/

ausklammern...

OK. Teste ich. Der arduino friert nicht ein. Temperatur und Alarm funktioniert ja alles. Der Sketch vom ersten Versuch nur mit MPPT hat auch funktioniert.

Dann las nur den Shunt laufen.
Ich überleg grad....
Sag mal, ist der Shunt nicht mit einer 3,3V Schnittstelle ausgerüstet?

Q4:

ja, da bin ich mir nicht zu 100% sicher. Der Shunt läuft mit dem Arduino aber eher zuverlässiger als der MPPT, der sicher mit 5V arbeitet.

Klemm mal die rx-pins am mppt und am shunt ab.
Die werden
a) eh nicht gebraucht
b) nicht das da was ausgelöst wird....

Die mppt können mindestens mit angelegtem Potential ausgeschaltet werden und die anderen können wohl ein anderes Nachrichtenformat....

Die hab ich schon ziemlich am Anfang wieder abgeklemmt. Ist nur tx und gnd angeschlossen.
Ich vermute das ist Software technisch. Ich befürchte eben, das mein Code evtl. Irgendwo überläuft und dann deinen blockiert.

Kabel sind angekommen und passen.

Na mal sehen, was mir einfällt. Der Tag ist relativ vollgepackt.
Du sagst, dass die Uhr auf dem Display und alles andere weiter läuft?

Schick.
In #94 ist ein Code.
Den bitte nehmen und auf den NANO spielen.

Dann musst Du die Zeile:

constexpr uint8_t RXPin {7};

für Dich anpassen - oder den Regler da anpinnen :slight_smile:

und die Zeile:

#define VeSerial Serial1                  // Schnittstelle auf der gelesen werden soll (Serial1, [...], mySerial wenn SoftwareSerial aktiv)

ändern in:

#define VeSerial mySerial                  // Schnittstelle auf der gelesen werden soll (Serial1, [...], mySerial wenn SoftwareSerial aktiv)

aufspielen und einmal durchlaufen lassen.
drauf achten, dass Du dem seriellen Monitor die 115200 einstellst.
Die Ausgabe sollte dann zeigen, was der Regler ausgibt.

Ja. Wenn ich auf den Temperatur Screen Wechsel funktioniert alles ganz normal, nur bekomme ich von den victron Geräten keine Daten oder die checksumme passt nicht ??

Ich denke, dass Du mindestens 1 Timingproblem hast.
Du darfst u.a. KEIN delay() verwenden.
Und dann muss ich mal sehen, was sich da tatsächlich abspielt.

hab doch eigentlich nur so gut wie kein delay drin die stören könnten oder? Hab noch kurz geprüft. Die 2 mal delay werden ja nur für 1sec. gebraucht, wenn ich die Heizung schalte, sprich den Button drücke. Ich mache jetzt mal einen Versuch mit deinem Sketch, den ich nur um die TFT Geschichte erweitert habe.

wo liegt deiner Meinung nach das Timing Problem?

Ich habe schon gesehen, dass Du den DS18x mit jedem Umlauf abfragst. Das bricht Dir das Genick.
Mach mal: DATEI - BEISPIELE - DallasTemperature - WaitForConversation (Den Pin nur anpassen)
Das mit dem Display versuche ich gerade noch aufzulösen.