Hacking Phocos CXN

Ich mag Daten. Ich kann Ewigkeiten damit verbringen, aus Zahlenkolonnen bunte Diagramme zu basteln, um mir und anderen Zusammenhänge zu visualisieren.

Deshalb kam für meine Solaranlage auch nur ein Laderegler in Frage, der seine Betriebsdaten über eine Datenschnittstelle zur Verfügung stellt. Beim Phocos CXN10 kann ich solche Betriebsdaten, wie z.B. die Batteriespannung, PV- und Laststrom, Ladezustand, uvm. über eine serielle Schnittstelle auslesen.

Um die Daten auszulesen, erwartet der Hersteller allerdings vom Anwender, dass er sich ein wahnsinnig teures Adapterkabel kauft, das mehr kostet als der Laderegler selbst. Deshalb beschloss ich, die Sache selbst in die Hand zu nehmen (Disclaimer: seid euch im klaren, dass man beim unvorsichtigen Herumbasteln das Gerät schnell zerstören kann).

Dabei waren mehrere Probleme zu lösen:

Problem 1: Die vierpolige Steckverbindung der Schnittstelle besitzt ein relativ selten genutztes Format. Nach mehreren Fehlkäufen diverser Batterie-Steckverbindern und anderen Kuriositäten bin ich letztendlich auf den passenden Stecker gestoßen: JST-Stecker

Problem 2: Serielle Schnittstelle ist nicht gleich serielle Schnittstelle. Zwar nutzen die meisten Geräte den UART-Standard zur Kommunikation, allerdings muss man immer auf den Spannungspegel achten. Der Phocos ist besonders hinterhältig. Statt für die Bezugsspannung (GND) den Minuspol der Batterie zu benutzen, benutzt er den Pluspol (+12V). Versorgt man nun das Auslesegerät (Arduino – s.u.) mit dem Lastausgang des Ladereglers und verbindet die Bezugsspannungen der beiden Geräte, gibt es einen Kurzschluss zwischen 0V und 12V. Glücklicherweise bemerkte ich diesen Fauxpas noch rechtzeitig, bevor eines der Geräte Schaden nahm (das Kabel war allerdings schon sehr verschmort).

Abhilfe schafft eine galvanische Trennung der seriellen Verbindung mit einem ADUM1201-Baustein:

Problem 3: Wie spreche ich überhaupt mit dem Phocos? Das ist das einfachste Problem gewesen. Der Arduino Uno, das Mikrocontroller-Board schlechthin, bietet mit der SoftwareSerial-Funktion die Möglichkeit, den Laderegler auszulesen, weiterzuverarbeiten (z.B. umrechnung der Daten, bilden von Mittelwerten, etc.) und über die USB-Schnittstelle weiter an die einen Computer, z.B. den Raspberry Pi, zu schicken.

Problem 4: Welche Sprache spricht der Phocos überhaupt? Das war schon ein wenig mehr kompliziert. Nach langer Recherche stieß ich in einem französischen LabView-Forum auf die Protokollbeschreibung der seriellen Schnittstelle. Darin steht, dass man dem Laderegler nur ein Leerzeichen schicken muss, dann fängt er an zu quatschen.
Das sieht dann z.B. so aus:

024 022 000 112 147 160 000 000 255 010 090 017 -002 -002 000 0000 0003 000 000

Diese Zahlen bedeuten z.B., dass die Batterie eine Spannung von 12,6V besitzt und gerade 73% “Füllstand” (SOC) hat.

Meinen kleinen Beispiel-Arduino-Sketch kann man hier betrachten (ohne Gewähr).

6 Gedanken zu „Hacking Phocos CXN

  • 25. August 2014 um 11:10
    Permalink

    Hi:
    Congratulations for your job… I was testint your scope and woks fine. I tested with Phocos CX. I work with 24 volts and i changed some dates, but i want add two parameters more. I write de lines in scope but checking i have this error..
    „recordl was not declared in this scope“

    in function ‚void loop()‘:
    error: ‚recordl‘ was not declared in this scope

    Can you help me?

    Many thanks and god job.

    Antwort
  • 25. August 2014 um 13:44
    Permalink

    Hi nasked,

    The variable that is used to read the data from the charge controller was named „record1“ and you used „recordl“

    I updated the Arduino sketch with better names for the variables.

    Please let me know if that is working for you.

    Regards,
    Jonas

    Antwort
  • 8. September 2014 um 19:29
    Permalink

    WOW – SUPER!!!
    Leider zu spät …… ich hab meinen Laderegler vor 2 Jahren zerstört. Hab versucht einen Laptop (im Batteriebetrieb) mit 3 Stecknadeln an die 3 PINs des CXN zu koppeln. Erst ging nix (mit dem CX-I Software) und mit einer anderen …..
    Naja, obs die war oder ob ich einen KURZSCHLUSS fabriziert habe weiss ich nicht. SCHADE – war wirklich der Geilste Laderegler den ich hatte!

    Habe anschliessend mehrer billige gekauft ….
    Der SOLAR30 ist ok aber nicht so gut wie ein CXN + CXM-Display. Eigendlich schade das die Phocos so wenig verbreitet sind im gegesatz zu den Steca PR1010.

    Antwort
  • 6. September 2020 um 14:33
    Permalink

    That’s great! I was looking for this for a while. But arduino sketch link is down. Could you please update the link sir.

    And is it possible to make some detailed diagram to show the connections between Phocos and Arduino (especially ADUM1201 connections) ? I don’t want to burn my Phocos 🙂

    Antwort
  • 1. August 2023 um 15:42
    Permalink

    Hallo, ich habe einen CXN erworben und würde gerne den Sketch benutzen wollen, nur ist dieser Link nicht mehr nutzbar.
    Ich hoffe es kann mir jemand den Sketch zur Verfügung stellen.

    Antwort
    • 1. August 2023 um 20:15
      Permalink

      Ich habe den Link aktualisiert. Falls es nicht klappt, gib noch mal bescheid!

      Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.