Ausgänge direkt am GPIO Steuern

Überwachung der Solaranlage per eMail oder Pushover und Steuerung von Geräten mit Smart Home Zentralen. PV-Monitoring und Geräten mit Tasmota Firmware

Moderator: Ulrich

Kelomat
Beiträge: 16
Registriert: So 5. Mai 2019, 16:12

Ausgänge direkt am GPIO Steuern

Beitrag von Kelomat »

Hallo Leute!
Ein Frund hat einen MPI Hybrid 10kW 3PH Wechselrichter laufen und wir wollen eine Steuerung für einen Heizstab bauen. Ist es möglich das GPIO Ausgänge vom Raspberry direkt von der Solaranzeige gesteuert werden (am gleichen Raspberry wo die Solaranzeige läuft)?

Am besten wenn x kW Überschuss ins Netz gehen Ausgang 1 ein
Sollte noch immer überschuss vorhanden sein, den nächsten Ausgeng usw...

Benutzeravatar
Ulrich
Administrator
Beiträge: 2180
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 5 Mal
Danksagung erhalten: 76 Mal
Kontaktdaten:

Re: Ausgänge direkt am GPIO Steuern

Beitrag von Ulrich »

Möglich wäre das schon, nur gibt es elegantere Lösungen.
Z.B. mit einem Shelly oder Sonoff WLAN Schalter.
--------------------------------------
Ulrich [Admin]

Kelomat
Beiträge: 16
Registriert: So 5. Mai 2019, 16:12

Re: Ausgänge direkt am GPIO Steuern

Beitrag von Kelomat »

Danke für den Tipp!

Wie würde das jetzt funktionieren? Ich muss ja dem Raspi irgendwie beibrngen das er den Shelly ein oder ausschaltet?
Muss ich das im Setup irgendwo einstellen?

Benutzeravatar
Ulrich
Administrator
Beiträge: 2180
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 5 Mal
Danksagung erhalten: 76 Mal
Kontaktdaten:

Re: Ausgänge direkt am GPIO Steuern

Beitrag von Ulrich »

Nein, dafür gibt es noch keine fertige Lösung. Da musst Du selber einen Script schreiben, der das Ein- und Ausschalten übernimmt. Es ist halt nur etwas einfacher, da man nicht in die Hardware eingreifen muss.
--------------------------------------
Ulrich [Admin]

Kelomat
Beiträge: 16
Registriert: So 5. Mai 2019, 16:12

Re: Ausgänge direkt am GPIO Steuern

Beitrag von Kelomat »

So ih hab mal mit Python ein wenig herumgespielt und jetzt wird mein Heizstab in Stufen je nach eingespeister PV Leistung per MQTT geschaltet.

Ich würde jetzt noch gerne die Batteriespannung mit als Bedingung dazunehmen aber ich bekomme es irgendwie nicht hin das ich die verschiedenen Nachrichten auseinanderhalte...

Hier mal mein Code:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-

import paho.mqtt.client as mqtt
import RPi.GPIO as GPIO
import time

GPIO.setwarnings(False)

GPIO.setmode(GPIO.BOARD)

chan_list = [29,31,33,35,37]

GPIO.setup(chan_list, GPIO.OUT)

GPIO.output(chan_list, GPIO.HIGH)


Schwelle1 = -1700 #  Die Schwelle ab der die Heizungsstufe
Schwelle2 = -2000 #  eingeschalten wird in Watt
Schwelle3 = -3700
Schwelle4 = -4500
Schwelle5 = -7200

Heizleistung1 = -1200
Heizleistung2 = -1500
Heizleistung3 = -3200
Heizleistung4 = -4000
Heizleistung5 = -6700

Stufe1 = [33] #gpio Pins zu den Stufen
Stufe2 = [33,35]
Stufe3 = [29,35]
Stufe4 = [29,33,35]
Stufe5 = [29,31,35]

def on_message(client, userdata, message):
    global kompenser
    msg = int(message.payload)
    print msg
#   print kompenser
    if msg + kompenser < Schwelle5 :
        GPIO.output(chan_list, GPIO.HIGH)
        GPIO.output(Stufe5, GPIO.LOW)
        kompenser = Heizleistung5
    elif msg + kompenser  < Schwelle4 and msg + kompenser > Schwelle5:
        GPIO.output(chan_list, GPIO.HIGH)
        GPIO.output(Stufe4, GPIO.LOW)
        kompenser = Heizleistung4
    elif msg + kompenser < Schwelle3 and msg + kompenser > Schwelle4:
        GPIO.output(chan_list, GPIO.HIGH)
        GPIO.output(Stufe3, GPIO.LOW)
        kompenser = Heizleistung3
    elif msg+ kompenser < Schwelle2 and msg + kompenser > Schwelle3:
        GPIO.output(chan_list, GPIO.HIGH)
        GPIO.output(Stufe2, GPIO.LOW)
        kompenser = Heizleistung2
#   elif msg + kompenser < Schwelle1 and msg + kompenser > Schwelle2:
#                   GPIO.output(chan_list, GPIO.HIGH)
#                   GPIO.output(Stufe1, GPIO.LOW)
#       kompenser = Heizleistung1
#       print kompenser
    else:
        GPIO.output(chan_list, GPIO.HIGH)
        kompenser = 0


def on_connect(client, userdata, flags, rc):
    client.subscribe('solaranzeige/panta10/ac_eingangsleistung')

msg = 0
kompenser = 0

Broker_address = "localhost"

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect(Broker_address)
print ("Verbunden mit:"+ Broker_address)

client.loop_forever()
Hat jemand eine Idee wie ich das machen könnte?

Heiner
Beiträge: 20
Registriert: Di 17. Nov 2020, 23:58

Re: Ausgänge direkt am GPIO Steuern

Beitrag von Heiner »

Hallo Kelomat,

Dein Beitrag ist zwar schon über ein Jahr alt, mich interessiert aber doch ob und wie Du die Heizstab Steuerung in Stufen gelöst hast.
Sowas will ich nämlich auch machen, habe allerdings von dieser Programmierung keine Ahnung (Bin selbst Hardware-Elektroniker).
Was hängt denn an Deinen 5 GPIO Ausgängen eigentlich für eine Leistungssteuerung dran?
Ich hatte mir gedacht, dass die einfachste und eleganteste Lösung wäre, wenn man einen GPIO Ausgang als PWM programmiert,
und das Tastverhältnis entsprechend regelt. Den Heizstab kann man dann ganz einfach über einen Power-MOSFET proportional ansteuern.

... nun werde ich aber erst einmal abwarten, ob es Dich hier überhaupt noch gibt ... :?:

Kelomat
Beiträge: 16
Registriert: So 5. Mai 2019, 16:12

Re: Ausgänge direkt am GPIO Steuern

Beitrag von Kelomat »

Ja mich gibt es noch... :D

Am Raspi hab ich eine Relaisplatine https://www.pollin.de/p/relaiskarte-day ... nal-810273 denn die GPIOs darf man nicht wirklich belasten. Damals hatte ich dann an der Relaisplatine nochmal Leistungsschütze die in Stufen die Leistung schalten.
Der Heizstab hat 3x3kW und mit dem hab ich so ähnlich wie bei einer 7-Takt Schaltung die Leistungsstufen realisiert.

Mittlerweile hab ich das anders gelöst...
Am Solaranzeigen-Raspi läuft auch noch Node-Red. Die Solaranzeige schickt per MQTT die PV Netzeinspeisung, Akkuspannung usw... vom Hybridwechselrichter zu Node-Red, Node-Red schickt die Leistung dann aufbereitet weiter (per LAN) zu einer Simens Logo8 und die schaltet dann die Heizungsstufen auch abhängig von der Akkuspannung usw...

Am Raspi selbst hab ich jetzt noch die Steuerung vom Zusatzlader an den GPIOs der mir die Energie von einer 5kWp PV in den Akku bringt. Diese PV steht am anderen Ende vom Grundstück und ist per AC am Hybridwechselrichter. Der hat aber mit seiner PV alle hände voll zu tun und so würde die Energie ins Netz gehen... deshalb die Lösung mit dem Zusatzlader.

Deine Idee mit der PWM regelung ist auch gut aber da brauchst du noch einen Thyristorsteller der einen PWM Eingang hat. Wollte ich auch so machen, war mir aber zu teuer für meine Leistung....

Heiner
Beiträge: 20
Registriert: Di 17. Nov 2020, 23:58

Re: Ausgänge direkt am GPIO Steuern

Beitrag von Heiner »

Ist ja schön, dass es Dich noch gibt - und danke für die ausführliche Antwort.

Wie ich sehe, hast Du ja eine ganz schöne Monster-PV-Anlage.
Bei mir sieht es dagegen viel bescheidener aus:
Auf unserem Dach haben wir 12 Heckert Paneele mit 3,9kWp und im Keller einen Hybrid-Wechselrichter der 3. Generation SPC III 5000-48 mit 3x US2000 Lithium Akkus = 7,2kWh. Trotzdem haben wir im Sommer mindestens 2...3x so viel Energie, als wir verbrauchen können. Deshalb die Idee: Warum im Sommer Warmwasser mit der Gasheizung machen ... Also habe ich in unseren Warmwasser-Kessel erstmal einen 1,5kW-Heizstab für 12,-€ eingebaut und mit meiner bisherigen Monitoring-Software Lucibus (läuft auf einem Win10 Tablet) die Surplus-Steuerung per Sonoff realisiert. Das hat aber den Nachteil, dass ich in der Übergangszeit nur selten 1,5kW übrig habe, und das System dann ständig Ein- und Ausschaltet.

Hier bei Solaranzeige hatte ich nun gelesen, dass Ulrich eine adaptive Überschussregelung kreiert hat - aber leider nur für eine WallBox.
Und die HomeMatic Steuerung kann, soviel ich weiß, auch nur Ein- und Ausschalten.

Nun endlich zu meiner Idee:
Bild
Das ist erstmal nur das Prinzip-Schaltbild. Sehr viel mehr wird's aber nicht.
Man braucht also keinen Thyristorsteller nur einen, oder bei sehr hohen zu schaltenden Leistungen, mehrere Power-MOSFETs und die kosten heute keine 2 € mehr. Das ganze wird sicher für <20 € machbar sein. Und das beste daran: Keine klappernden und funkenden Relais oder gar Schütze und quasi analoge bzw. stufenlose Regelung!
Sowas könnte ich leicht bauen (bin Dipl.Ing.Elektronik Entwickler).

Falls Du an sowas interessiert wärst und die Software dafür entwickeln könntest, würde ich Dir im Gegenzug so eine - oder auch mehrere - dieser PWM- Leistungsschalteinheiten bauen.
Möglicherweise sind ja auch noch andere hier im Forum an sowas interessiert...
P.S.:
Thyristorsteller mit Phasenanschnittssteuerung hatte ich auch schon im Sinn, die sind aber offenbar nicht für Leistungen >200W erlaubt: https://www.ta.co.at/news/es-ist-nicht- ... verwenden/
... und dem WR wird das auch nicht gefallen...

Kelomat
Beiträge: 16
Registriert: So 5. Mai 2019, 16:12

Re: Ausgänge direkt am GPIO Steuern

Beitrag von Kelomat »

Ich denke deine Schaltung wird aber auch einige Störungen verursachen... Da hast du dann ja z.B. 10kHz Spitzen am Netz bzw am WR. Sollte da nicht noch eine entstörung eingebaut werden?

Ja bei der Software kann ich dir gerne helfen...

1. Node Red installieren https://nodered.org/docs/getting-started/raspberrypi

Dann müssen wir uns überlegen wie wir die Geschichte regeln.... Welcher Wert vom WR soll das PWM Signal regeln? Bei mir ist es die Einspeiseleistung vom Hybrid WR - also wenn der einspeist ist der Akku voll und der Überschuss kann verbraucht werden.

Bei deiner Solaranzeige muss MQTT auch aktiviert sein. Das kann man in Node Red empfangen und die GPIO ausgänge steuern.

Heiner
Beiträge: 20
Registriert: Di 17. Nov 2020, 23:58

Re: Ausgänge direkt am GPIO Steuern

Beitrag von Heiner »

Zu den EMV-Störungen: Du hast da schon fast richtig vermutet. Ich gedenke die PWM mit 20kHz schalten zu lassen, damit man es nicht piepen hört. Die Flanken eines solchen Rechtecksignals repräsentieren aber viel, viel höhere Frequenzen wobei wir dann geschätzt einen Mittelwellen- bis Kurzwellensender haben. Je nachdem wie dann die angeschlossene Verkabelung aussieht, hat man dann mehr- oder weniger EMV-Störungen.
Lange Rede, kurzer Sinn: Ich werde deswegen höchstwahrscheinlich noch eine Induktivität und eine Freilaufdiode einbauen. Damit wird die Leistungsstufe quasi zu einem DC-DC-Wandler, und aus ist es mit den Sörungen. Dem WR wird das auch „besser gefallen“ – obwohl ich auch schon mal eine Thyristor-Phasenanschnittssteuerung drangehängt hatte, die keine Probleme verursachte…

Mein bisheriges Monitoring LUCIBUS startet die Verbraucher über SONOFFs, wenn die Batterie voll ist (ins Floating kommt) und wenn der Batterie-Entladestrom einen einstellbaren Entladestrom nicht überschreitet. Die Umschaltungen erfolgen in einer auch einstellbaren Hysterese-Zeit. Leider funktioniert das aber überhaupt nicht mehr, weil seit einem Firmwareupdate die Lithium-Batterien kein Floating mehr melden (ist bei Lithium wohl auch Nonsens).

Wenn man keine Netzeinspeisung hat sollten folgende Kriterien funktionieren:
1. Batterie-Spannung. Bei Lithium z.B. >52V (53,2V = ganz voll)
2. Batterie-Entladestrom z.B. < 3A
3. Hysterese-Zeitvorgabe z.B. 20…180s

Für eine Regelung der PWM, proportional zur Verfügung stehenden PV-Leistung, könnte man diese wahrscheinlich von Ulrichs WallBox-Regelung großteils übernehmen. Nur wird dann hier nicht mehr der einzustellende Ladestrom per Netzwerk ausgegeben, sondern eben direkt als PWM an eine GPIO.

Mein WR läuft übrigens mit $Regler = 26 und am besten mit dem Dashboard „Wechselrichter AX-Serie und Baugleiche + Steuerung“
http://heiner-1.bplaced.net/2020.12.08% ... rafana.png

Und danke für Deine konstruktive Mitarbeit!

Antworten