Thomas, schön dass du meine Messungen bestätigen konntest.
Danke für deine Mühe.
Beiträge von JuergenAC
-
-
Die +/- 12 Bit INL des Chip ESP32 erklären nicht die große Abweichung im unteren Bereich.
Die Skizze mit dem Spannungsteiler hast du selbst aufgenommen?
Dann könnte es an einem Input Offset Current (aus dem ESP) kommen, der über die Widerstände 100k/47k einen Spannungsabfall generieren.
Habe mir mal mit meiner These die obige Tabelle angesehen: wenn der Input Offset Current leicht positiv ist (Strom fließt aus dem Pin heraus), dann scheint es kausal zu sein.
Aber egal wie, ändern können wir das nicht. Aber wir können es bei Bedarf umgehen, wie ich gezeigt habe.
-
-
Einleitung
Auch bei mir bestand der Bedarf nach einer Messmöglichkeit einer DC-Insel-Solaranlage.
Konkret für eine InselPVThermie-Anlage, welche in meinem Mietshaus den Warmwasserspeicher aufheizen soll.
Als Vermieter bin ich gesetzlich gezwungen, alle Primärenergie, die dem Haus zugeführt wird, zu erfassen und dem Abrechnungsunternehmen, zur Erstellung der jährlichen Heizkostenabrechnung, zu Verfügung zu stellen.
Ein geeichtes Messsystem ist hier nicht notwendig, da die Solarenergie den Mietern kostenlos zur Verfügung gestellt wird.
Die Anforderungen an das Messsystem sind sehr wohl: hohe Linearität und einen Gesamt-Messfehler von unter 5%.Shelly Öko-System
Meine komplettes Heizungssystem wird mit Shellys überwacht.
Die zeitliche Auflösung beträgt 1 Minute. D.h., jede Minute übertragen die Shellys ihre Daten per http-Request an ein Hosting-Paket im Internet.
Auch das DC-Messsystem muss diesen Anforderungen genügen.Shelly Plus UNI
Ich hatte mich ja schon in der Vergangenheit mit dem Plus UNI beschäftigt und heraus gefunden, dass der Analog-Eingang alles andere als genau ist.
shelly_uni_plus_messfehler.jpg
D.h., den Bereich unterhalb von 3,0V kann man getrost vergessen.
Mir ist auch echt schleierhaft, wie man bei Allterco einen 12-Bit Analogeingang derart verbocken kann.Messkonzept
Der Plus UNI hat ja nur einen Eingang zum Messen einer analogen Spannung (in Volt oder Analog in Prozent).
Was der gute Shelly aber hat, sind zwei Digital Out-Kanäle!
Die kann man gut nutzen, um einen analogen Multiplexer zu steuern.Wie oben schon geschrieben, benötige ich jede Minute einen neuen Wert.
Somit habe ich eine Minute lang Zeit, den Strom und die Spannung zu messen.BTW: ich messe und übertrage mit dem Plus UNI (und auch mit den anderen Shellys) immer nur die RAW-Daten. Auswertungen, Multiplikationen, etc. erledige ich auf dem Server, weil ich da mehr Performance habe.
Also schreibe ich mir ein mJS-Script mit einer State-Machine, die zuerst die Spannung (in %) und dann den Strom (in %) misst.
Danach alle Daten zu einem Paket schnürt und dann versendet.von der Theorie zur Praxis
Tja, wenn der Shelly ordentlich messen würde, wäre es damit getan gewesen - tut er aber nicht.
Aber es gibt ja noch ein paar technische Kniffe und die Mathematik.Dann legen wir doch einfach den Nullpunkt (Offset) der Spannung/Strom höher. Konkret ausgewählt bei 3,8V.
Jetzt besteht aber die Gefahr, dass ich auf dem Server immer diese Konstante von den übertragenen Werte abziehe, obwohl die Spannung in der DC-Messbox wegen Temperatur oder Alterung schon längst bei, sagen wir 3,7Volt oder 3,9Volt ist.
Dann bauen wir halt einen 4-fach Multiplexer ein (CD4066) und benötigen dazu zur Selektion der Analog-Schalter noch etwas Digitaltechnik (CD4093).Somit ändert sich der zeitliche Ablauf in der State-Machine wie folgt:
Code
Alles anzeigenfunction FuncScheduler() { //Timer-States cycles_counter_v = cycles_counter_v + 1; if ( cycles_counter_v == 1 ) { Switch_Meas_Offset(); } else if ( cycles_counter_v == 16 ) { Get_Meas_Offset(); Switch_Meas_Voltage(); } else if ( cycles_counter_v == 26 ) { Get_Meas_Voltage(); Switch_Meas_Current(); } else if ( cycles_counter_v == 36 ) { Get_Meas_Current(); body_string_v = FuncLoadDataPlusUni(); //for Debugg only: print(body_string_v); FuncShellyCall2(body_string_v); } else if ( cycles_counter_v == 60 ) { cycles_counter_v = 0; } }
Zuerst den Schalter auf die Offset-Spannung stellen, warten, Spannung messen, warten, Strom messen, Paket bauen und versenden, warten
Schaltplan
Im Schaltplan kann man zentral den Analog-Multiplexer erkennen.
Unten die Referenzspannungserzeugung für den Offset.
Auf der rechten Seite gibt es oben die Spannungsmessung über einen Spannungsteiler direkt am Anschluss des Generator-Anschluss-Kasten (GAK).
Ich muss hier noch erwähnen, dass die Spannung dort lebensgefährlich hoch ist, dass elektrotechnische Laien daran nichts zu suchen haben.
Also Finger weg!
Die Strommessung erfolgt potenzialfrei über einen LEM LA-55P.Aufbau Elektronik
Im ersten Schritt habe ich zur Zeit dort eine Lochrasterplatine verwendet, die demnächst noch gegen eine ordentliche Leiterplatte ersetzt wird.IMG_2460.jpg
Auf dem obigen Foto kann man das vollständige DC-Messsystem sehen.
Links ist ein 30mA RCD, daneben ein B6 LSS, sowie 2 Meanwell HDR-15-15 Netzteile.
Aus den beiden 15V Netzteilen erzeuge ich auf der Leiterplatte eine +/-15V Spannungsversorgung.Server-Software / Datenbank
Wenn der http-Request auf dem Server ankommt, werden die %-Werte des Plus UNI in echte Spannung / Strom mit dem gemessenen Offset umgerechnet.
Das ist einfache Mathematik in den Grundrechenarten.
In einem weiteren Schritt werden dann die korrigierten Werte miteinander zur Leistung multipliziert.
Alle Daten, also die %-Daten, Spannung/Strom/Offset und berechnete Spannung/Strom/Leistung, lege ich dann mit dem Unix-Zeitstempel in einer Datenbank-Tabelle ab.Kalibrierung
Als die InselPVThermie-Anlage in Gänze stand und Strom produzierte, habe ich die Kalibrierung vorgenommen.
Dazu habe ich mit meinen Fluke Messsystemen an der DC-Messbox den realen Strom und die reale Spannung gemessen und protokolliert.
Gleichzeitig dazu dann in meiner APP den im Server-Script berechneten Strom, Spannung und Leistung ebenfalls protokolliert und mit den realen Werten verglichen.
Die Strommessung zeigte lediglich einen Fehler von etwa 1-1,5% auf.
Bei der Spannungsmessung hatte ich etwa konstant 10V zu viel berechnet.
Diese 10V habe ich Serverseitig wieder rausgerechnet, so dass auch die Spannungsmessung meiner Anforderung genügt.Fazit
Für technisch Visierte, die auch mit hohen Spannungen arbeiten dürfen, ist das eine feine Lösung zur DC-Leistungsmessung.
Sie passt wunderbar in mein Shelly-Öko-System und ich kann die Messdaten nach belieben auswerten.Man kann natürlich die Offset-Korrekturrechnung sowie die Multiplikation zur Leistung auch im mJS-Script auf dem Plus UNI machen.
-
Ich hatte nun wieder was Zeit gefunden, um die entworfene Schaltung an einem Prototypaufbau zu testen.
realisierte Schaltung mit Shelly Dimmer 0-10V und Shelly AddOn
IMG_2416.jpgIMG_2417.jpgIMG_2418.jpgIMG_2419.jpg
Inbetriebnahme
Tja, ich hatte da einen Tiny Micro-Current LDO von Micrel MIC5231 eingesetzt, um stabile 5V für den Schmittrigger zu versorgen, der ja dann über das RC-Glied die PWM in Analogspannung umsetzen sollte.
Hier ist die Güte der 5V wichtig, weil die halt für die Genauigkeit der Integration wichtig ist: U(t) = 5V ( 1 - e ^t/Tau)Tja, die konnte der kleine LDO nicht liefern. Der war schon mit den 1-2mA Impulsstrom vom Pull-Up des Optokopplers überfordert und fing an zu schwingen.
Also habe ich einen in der Schublade verfügbaren LM75L05 eingesetzt (im Bild oben liegt der auf dem Rücken am Platinenrand).
Der ist zwar absolut nicht so präzise, was die 5V angeht, kann aber prima mit den Impulsströmen klar kommen.Messungen
Blau ist der Ausgang per 750Ohm Pull-Up vom Shelly Dimmer 0-10V.
Gelb ist hinter dem Schmitttrigger.
Grün ist der Ausgang mit AC gemessen, um den Spannungs-Ripple besser erkennen zu können.Gleiches Bild als Zoom.
ShellyDimmer0-10V_AnalogAddOn_060524.jpg
Für die Versuche hatte ich auch ein Shelly AddOn unter dem Dimmer 0-10V geklickt und das "Voltmeter" eingerichtet.
Das Voltmeter (Analog In) habe ich an den Ausgang vom AnalogAddOn verschaltet, um direkt die erzeugte Gleichspannung zu messen.
Das kann man auch auf einem der Bilder erkennen.Genauigkeit
Jouw, da war ich doch enttäuscht. Nicht von meinem AnalogAddOn, sondern vom Shelly AddOn.
Zur Erklärung der Tabelle:
* PWM habe ich an der Weboberfläche vom Shelly Dimmer 0-10V eingestellt und die Soll Spannung errechnet.
* Die "Zeit vor RC" ist hinter dem Schmitttrigger aber vor dem RC-Glied abgenommen und dort die Impulsbreite gemessen. Ich wollte wissen, wie genau der Schmitttrigger die schlaffen Flanken vom Optokoppler gerade biegt.
* AnalogAddOn ist gemessen mit einem Fluke 179
* Shelly Voltmeter habe ich abgelesenIm kleinen PWM Bereich wird es schwierig, da sich hier die Fehler der Flankenkorrektur deutlich mehr auswirken werden, dass war mit klar.
Aber ab 3% PWM liegt der Fehler bei etwa 2%.Das Shelly Voltmeter hingegen, misst deutlich größere Fehler. Erst so ab 20% PWM kann man von einer reproduzierbaren Messung reden.
Aber als Monitor zur groben Messung des Analog-Ausganges reicht es aber dann doch.Schaltpläne
analogaddon_v1_1_analogteill.jpganalogaddon_v1_1_netzteil.jpg
Wenn jemand zum Nachbauen die GERBER-/NC-Daten & Stückliste haben möchte, soll er mir eine PN senden.
Fazit
Das AnalogAddOn funktioniert.
Den falschen LDO habe ich derweil schon korrigiert.
Für meine Zwecke reicht das vollkommen aus.
Ich werde jetzt noch dynamische Messungen, angesteuert per mJS-Script, in der nächsten Zeit durchführen.DIYROLLY : Schaue Dir mal ASKOHEAT-F+ an
[ich verlinke das Produkt hier nicht, weil ich keine Werbung dafür machen will. Kennen den Laden auch nicht.] -
Hallo Rolf,
ist etwas komplizierter geworden, deshalb stelle ich den Schaltplan mal hier zum download ein:
[Schaltplan erst einmal wieder entfernt. Projektstand wird hier aber weiter geführt 22.04.24]
Hinweise:
Der Schaltplan ist noch nicht real wie gezeichnet getestet worden.
Den Link werde ich spätestens am kommenden WE wieder entfernen. -
So, weiter gehts.
Die Idee dahinter:
Links legt man dann den Shelly Dimmer 0-10V hin und schraubt die (hier grünen) Drähten in den Klemmen fest.
Dann legt man die 24Vdc & GND an und kann an den Klemmen 0-10V & GND die Analogspannung abgreifen.
Man dann die Baugruppe nach hinten klappen und mit einem 3D-Druck Hutschienenadatpter lässt sich der auch wunderbar montieren.
Von der Größe her ist der ca. 2mm kleiner als ein Shelly, so dass auch ein eigenes 3D-Druck Gehäuse noch passen würde.
Letzteres kann ich nicht, würde aber die STEP-Daten der Baugruppe zur Verfügung stellen, wenn sie jemand benötigt.Entwicklungs-Status:
Schaltplan und Layout sind fertig.
Ich muss nun wieder Zeit finden, Bauteile und die PCB zu bestellen, für einen finalen Test. -
Ich habe den Fehler SSR-Output korrigiert und dort Optokoppler-Ausgang notiert.
Bleibe an dem Thema dran. Der OP-Ausgang wird natürlich irgendwas um die 10mA können.
Muss mir aber noch genauerer Gedanken zum Spannungsversorgungskonzept machen.
Und dann muss das Dinga ja uach noch so klein sein, dass es, wie das Plus AddOn, Huckepack am Dimmer hängen kann.Dauert ein bischen.
-
Einleitung
Inspiriert von dem Tear-Down Artikel von Thomas ( thgoebel )
ThemaTeardown Shelly plus 0-10V (Dimmer) und Messungen des PWM-Signals
Vor einigen Tagen kam mein Shelly plus 0-10V Dimmer an:
smarthome-forum.eu/attachment/48256/
Bemerkens- und lobenswert ist, daß auf vermeidbaren Kunststoff bei der Verpackung verzichtet wurde! Die Passform in der Schachtel besteht jetzt aus Papier:
smarthome-forum.eu/attachment/48255/
Öffnet man das Gehäuse, sieht man eine „übersichtliche“ Anordnung von Bauteilen:
smarthome-forum.eu/attachment/48266/
Vieles kommt uns von Generation 2 Shellies bekannt vor: Die beiden Step-Down-Regler für 12V…thgoebel18. November 2023 um 19:32 habe ich mich auch mal damit befasst.
Ursprünglich dachte ich, dass wenn da in der Artikelbeschreibung 0-10V steht, dass das Ding auch 0-10V kann.
Tja, is wohl nich.
Der Shelly Dimmer 0-10V macht an diesem Ausgang ein PWM-Signal mit der maximalen Spannungshöhe von 10V bei einer konstanten PWM-Frequenz von 500Hz.
Wobei eigentlich sogar nur ein potenzialfeier Transistor-Ausgang (Optokoppler) zur Verfügung steht.Der Thomas hat ja in seinem Artikel schon einiges dazu geschrieben, wie man da doch einen analogen Ausgang draus machen kann.
Mit den einfachen Mittel ist das ja schon mal ein Ansatz.
Ich möchte aber genau da ansetzen und die Freiheitsgrade erhöhen.
Mein Konzept sieht so aus
24V DC Netzteil (z.B. von Meanwell HDR-15-24) versorgt den Shelly Dimmer 0-10V und auch weitere Schaltungsteile.
Am SSR-Ausgang + ist ein Widerstand nach 10V verschaltet. Den Wert dessen erkläre ich weiter unten.
Dahinter folgt ein CD4093, das ist ein 4-fach NAND mit Schmitt-Trigger-Eingang zur Rekonstruktion des Signals, gefolgt von einem RC-Tiefpass zur Intergration des Signals (Signal glatt bügeln).
Die noch benötigte 10V Spannungsversorgung, werde ich über ein Schaltregler-Modul aus den 24V erzeugen.
(Im Bild unten nutze ich noch Laborgeräte.)Messaufbau
Ok, schauen wir uns auch den Messaufbau an:
messaufbau shelly dimmer 0-10_IMG_2371.jpg
Messungen
Als erstes habe ich mal die Aussage von Thomas überprüft, dass der Pull-Up Widerstand, also der Widerstand, den man zur Strombegrenzung an dem Optokoppler-Ausgang den Dimmer0-10V anschließen muss, idealer Weise 3kOhm betragen soll.
Dann sieht so eine 50% PWM so wie oben aus.
Zoomt man hinein, kann man die Signalanstiegszeit ermitteln:Naja, irgendwas um die 30us (Anstiegszeiten werden zwischen 10% und 90% des Signales gemessen).
Ich war dann so frech und habe anstatt des 3kOhm Widerstandes einen 1kOhm-Typen eingesetzt. Der dadurch fliesende Strom (10mA) ist noch im Bereich des zulässigen:
Damit sind die Flanken nochmals steiler geworden: die Anstiegszeit ist jetzt unter Brüdern bei 9usek und die Abfallzeit bei 13usek.
Der Fuchs unter euch wird aber festgestellt haben, dass sich das Spannungsniveau im "Aus"-Zustand von annähernd 0V auf 2,2V erhöht hat.
So kommt man nicht an eine ordentliche PWM, die für einen analog Ausgang geeignet ist.
(Ich meine mich zu erinnern, das dem Thomas das auch schon aufgefallen ist).Das ist aber kein Problem und mit ein bisschen Elektronik zu lösen.
In einem Schaltplan sieht das dann so aus:schaltplan_shelly_dimmer0-10V_analog.jpg
Hinter dem Optokoppler-Ausgang gibt es besagten Pull-Up (hier mit Fragenzeichen) und dahinter folgt dann die Schmitt-Trigger Schaltung zur Rekonstruktion des Signales
Hier folgen ein paar Screenshots dazu. grünes Signal ist an MP1 und blaues Signal an MP2 gemessen.
SDS2204X Plus_PNG_58.pngSDS2204X Plus_PNG_59.pngSDS2204X Plus_PNG_60.png
Wie Ihr seht, ist das blaue Signal schön rekonstruiert, von Pegel 0V nach Pegel 10V, mit scharf Flanken (aber sowas von ... ).
Das letzte Bild ist übrigens ein 1% PWM-Signal.
Hinter MP2 folgt nun das eigentliche Integrieren des PWM-Signals zu einem Analog-Signal.
Den 100nF Kondensator würde ich noch durch einen etwas größeren ersetzen wollen, um den (kleinen) Ripple noch etwas mehr zu glätten, evtl. 1uF.
Ich habe dann noch eine Messung gemacht:tabelle_pwm_vs_analog.jpg
Für einen Schnellschuss ist das ja schon mal eine Ansage.Die Spannung habe ich mit einem Fluke Multimeter gemessen.
Wenn ich wieder etwas Zeit finde, werde ich noch weitere Versuche unternehmen.
Darunter einen mit einem hinter MP3 geschaltetem Operationsverstärker zur Impedanzwandlung.
Wenn ich dem dann noch die Verstärkung V=1,02 mit auf dem Weg gebe, dann ist das Analog-Signal perfekt. -
Thomas,
danke für Dein Angebot. Komme sicher irgend wann mal auf Dich zu. Aber meine ToDo Liste ist noch sehr lang und die muss ich erst abarbeiten.
-
Der User Johann (Priamos) arbeitet ja für sowas gerne mit Tasmota.
Damit ginge es bestimmt auch. Muss aber sagen, dass ich kein „Programmier“ bin der das in C programmieren kann.Erst einmal reicht mir das Shelly mJS.
Ich meine mich zu erinnern, dass Cron-Jobs nur bis zu einer Sekunde „runter“ können ( zumindest auf Webserver).
-
Einleitung:
Mich interessierte, welche minimalen Impulse an den Outputs möglich sind, evtl. auch um dort eine eigene PWM erzeugen zu können.
Letzteres vorweg: max. 6Hz bei 1 kanaligem Betrieb und max. 3 Hz bei 2 kanaligem Betrieb.
Damit ist einem wirklich nicht geholfen, wenn mein eine PWM benötig.
Aber man könnte (evtl. werde ich das noch ergänzen) am Analogeingang ein Poti anklemmen und dann damit die "PWM" als autarke Blinklichtsteuerung nutzen.Messaufbau:
Der Messaufbau ist recht simpel: 24V Netzteil versorgt den Shelly Plus Uni und die beiden Pull-UPs mit je 1kOhm. Die andere Seite der Widerstände sind an je einem Output verschaltet.
Und natürlich noch ein Scope zum Messen.messaufbau shelly plus uni outputs_IMG_2370.jpg
Ich messe zuerst jedoch nur einen Kanal, um das grundsätzliche Verhalten zu erforschen.
Versuche mit 1 Kanal:
Als erstes habe ich es mit einem meiner üblich erstellten Scripte probiert: alles schön in Teil-Funktionen gepackt, die dann von irgendwas anderem aufgerufen werden.Da habe ich schnell gemerkt, dass wenn man da an die Grenzen will, das Plus Uni recht schnell "sensibel" wird.
Ich habe dann mal alle AddOns entfernt und alles weitere auch deaktiviert (bis auf den Websocket), den brauchte ich zum Debuggen.Dann habe ich gemerkt, dass auch diese Aufruferei der Funktionen Zeit kosten, also habe ich das Script auf das wesentliche minimalisiert:
Code
Alles anzeigen// FJG, Stand 11.04.24 // es duerfen hier nur die Peripherals integriert werden, // die der Weboberflaeche installiert worden. // Ansonsten Scriptfehler! // Konstanten definieren //=========================================== // Shelly-Type vorbesetzen const shellytyp1_c = "ShellyPlusUni"; const shellyname1_c = "Plus-Uni-SSR-Speed3 1 Kanal"; //check every seconds > < const checkInterval_c = 80; // Namensdefinitionen, Anwendungsspezifisch //=========================================== // Benennung SSR am ShellyPlusUni const switch_name0_c = "LowPegel Out1"; const switch_name1_c = "LowPegel Out2"; // Benennung Digital-Eingaenge am ShellyPlusUni const digital_name0_c = "LowPegel In1"; const digital_name1_c = "LowPegel In2"; // Analog-Eingang const analog_name0_c = "Analog-Eingang 0"; // Variablen definieren //=========================================== // Hardwarenahe Variablen let togglebit0_v = "0"; //ShellyPlusUni //======================= function FuncTimerSet() { ScheduleTimer_v = Timer.set( checkInterval_c, true, function (ud) { if ( togglebit0_v === "0" ) { Shelly.call( "Switch.Set", { id: 0, on: false }, function (response, error_code, error_message) {} ); togglebit0_v = "1"; } else { Shelly.call( "Switch.Set", { id: 0, on: true }, function (response, error_code, error_message) {} ); togglebit0_v = "0"; }; }, null ); } FuncTimerSet();
Das sich aus diesem Script ergebene minimal taugliche Timing ist in [checkInterval_c = 80;] als Millisekunden definiert, für einen Puls bzw. eine Pause.
Die Signale mit einer Pulsdauer von 79ms und Pausendauer von 80ms sehen recht passabel aus.
Warum das die minimalsten Zeiten sind, kann man am folgenden Screenshot erahnen:Ab und an kommt wohl der Sheduler des Shellys bei der hohen Scriptlast aus dem Tritt und unterbricht knallhart das Script.
Eine Timing-Inkonsistenz tritt auf, im Screenshot bei etwa 1000ms hinter der Mittenachse.Das wird umso schlimmer, wenn der Wert bei CheckInterval kleiner als 80ms wird.
Recht gut geht es, wenn auch mit geringen Einschränkungen, mit CheckInterval = 100ms.Versuche mit dem 2-Kanalige Output
OK, dass war der einkanalige Betrieb, da dürfte doch wohl beim 2 kanaligen das Gleiche rauskommen?
Der Shelly hat ja 2 gleich wertige SSR-Outputs, da könnte man doch auf die Idee kommen, die im Gegentakt zu betreiben.
Warum? Weiss ich gerade selber nicht, aber manchmal kommen mir da so Ideen ...Also, das Script von oben auf 2-kanaligem Betrieb umschreiben und damit dann die weiteren Timing-Versuche durchführen:
Code
Alles anzeigen// FJG, Stand 11.04.24 // es duerfen hier nur die Peripherals integriert werden, // die der Weboberflaeche installiert worden. // Ansonsten Scriptfehler! // Konstanten definieren //=========================================== // Shelly-Type vorbesetzen const shellytyp1_c = "ShellyPlusUni"; const shellyname1_c = "Plus-Uni-SRS-Speed3 2 Kanal"; //check every seconds > < const checkInterval_c = 150; // Namensdefinitionen, Anwendungsspezifisch //=========================================== // Benennung SSR am ShellyPlusUni const switch_name0_c = "LowPegel Out1"; const switch_name1_c = "LowPegel Out2"; // Benennung Digital-Eingaenge am ShellyPlusUni const digital_name0_c = "LowPegel In1"; const digital_name1_c = "LowPegel In2"; // Analog-Eingang const analog_name0_c = "Analog-Eingang 0"; // Variablen definieren //=========================================== // Hardwarenahe Variablen let togglebit0_v = "0"; let togglebit1_v = "0"; //ShellyPlusUni //======================= function FuncTimerSet() { ScheduleTimer_v = Timer.set( checkInterval_c, true, function (ud) { if ( togglebit0_v === "0" ) { Shelly.call( "Switch.Set", { id: 0, on: false }, function (response, error_code, error_message) {} ); Shelly.call( "Switch.Set", { id: 1, on: true }, function (response, error_code, error_message) {} ); togglebit0_v = "1"; } else { Shelly.call( "Switch.Set", { id: 0, on: true }, function (response, error_code, error_message) {} ); Shelly.call( "Switch.Set", { id: 1, on: false }, function (response, error_code, error_message) {} ); togglebit0_v = "0"; }; }, null ); } FuncTimerSet();
Das Script wird später nochmal interessant.
Bei dem Ursprünglich, vom ersten Script übernommenen Wert, von 80ms stürtzte das Scripting sofort nach Aktivierung ab.
Die Fehlermeldungen in der Script-Konsole sind ja nicht wirklich hilfreich.
Also den Wert langsam erhöhen, bis sich eine stabile Funktionalität einstellt: [checkInterval_c = 150;]
Weniger geht nicht.Ja, man kann hier auch schön die eingestellten Puls- und Pause-Zeiten erkennen und der 2. Kanal ist eine Invertierung des 1. Kanals.
Jetzt kommen wir wieder zum Script zurück.
Dort kann man in den IF-Cases sehen, dass die Shelly CALLS nacheinander erfolgen.
Dieses nacheinander ist der Grund dafür, dass die beiden Kanäle nicht wirklich exakt invertiert sind, sondern ein kleiner Versatz dazwischen ist.Ich habe dann mal den Versatz ausgemessen: dieser liegt bei 15ms.
Das bedeutet auch, dass dieser Shelly 15ms benötigt, um den Shelly CALL abzuarbeiten. -
Schön recherchiert, Johann!
Es bleibt aber das Risiko, dass die Netzbetreiber SmartMeter einbauen, die sich dann doch ungünstiger (Integrationszeit kleiner) verhalten.
Was mir persönlich nicht so gefällt, ist die Bastelei an den Shellys.
Habe gerade noch ein paar Shellys geliefert bekommen (Mini PM 3G, Dimmer 0-10V und AddOn, PlusUni).
Ich werde mal was scripten und messen, was da so mit den SSR-Ausgängen des Plus Unis geht.
Die Ergebnisse werde ich dann beim PlusUni ablegen.
-
Ok, wenn die Zähler dann nur das Leistungsintegral / Stromintegral erfassen, ist dass schon mal eine gute Ausgangslage.
Werde mal mit den Shellys experimentieren, wie schnell die die Ausgänge schalten können. Vermute aber, dass alle Shellys mir Relais zu träge sind und dann auch noch das Tastverhältnis beeinflussen. Vielleicht geht ja was mit dem Plus UNI.
-
Zitat
Und was bleibt dann über?
PWM-Modulierte Spannungserzeugung. Da liegen die Taktraten (PWM-Frequenz bei 10-20kHz).
Halt so, wie es Umrichter für 3Phasen Motoren machen: Netzspannung zur Zwischenkreispannung gleichrichten, dann MOSFET oder IGBT-Leistungsstufe, sieben, filtern fertig
Ich habe hier ein Hochleistungs-Labornetzteil, welche eine analog Eingang zur Steuerung hat. Damit werde ich demnächst mal was mit Shellys machen.
thgoebel : Thomas ich schreibe Dir die nächsten Tage mal eine PN, für die Hilfestellung zu Deinen Erkenntnissen der Shellys 2. Generation. Denke Du hast da die Infos, die mir noch fehlen.
ZitatGanz im Ernst: Die Schaltzeit (ein/aus) der Schwingungspaketsteuerung muß an die Integrationskonstante des Zählers angepasst werden. Dann geht auch nichts „verloren“! (Aus volkswirtschaftlicher Sicht gibt es ohnehin keine Verluste, lediglich aus betriebswirtschaftlicher Sicht…)
OK, die Frage bleibt: wie sieht ein Smartmeter die Stromaufnahme?
Wahrscheinlich werden die nur einen gemittelten Wert zur Abrechnung (Anzeige) nutzen. Kann man aber nur ausprobieren ...
ZitatNein, kenne auch keinen Roman B.
-
Zitat
Wenn du eine echte Regelung möchtest, wie du es andeutetest, dann bietet sich entweder eine Phasenanschnittsteuerung oder eine Schwingungspaketsteuerung an.
Nein, beides nicht.
Weil,
a) Phasenanschnittsteuerungen nur bis 200Watt Leistung abgeben dürfen
b) Schwingungspaketsteuerung immer das Problem haben, dass diese bei eingeschaltetem "Schwingungs-Paket" die volle Leistung ziehen, bzw. dass, was der Heizstab gerade ziehen will, zb 3KW oder 6KW. Nur im Langezeitmittel ist die Leistung dann wie gewünscht.
Konkret: wenn das Schwingungspaket an ist, zieht es mehr Strom als zuvor berechnet hast und Du zahlst drauf. -
-
hallo Alex,
Deinen Artikel habe ich gerade gelesen, auch die Probleme, die sich dadurch ergeben.
Da geht es aber rein um den Range Expander der WLAN mit WLAN verbindet:
Meine Frage zielte auf Shelly Uni plus WLAN -> AP Shelly Pro -> LAN -> Netzwerk.
Geht das auch oder ist das nur auf WLAN spezifiziert?
-
Die Shellys verfügen ja seit ein paar Firmware Updates die Möglichkeit als Range Expander zu dienen.
Gilt das auch als Repeater, um ein paar Plus Shellys per LAN anzubinden?
Hintergrund: am Ort wo die Plus und Unis hinsollen, habe ich keinen WLAN Empfang, kann aber eine Ethernet Leitung legen.
Die Plus und Uni Shellys sollen sich dann per WLAN beim Pro anmelden und der leitet den Trafic per LAN weiter.
-
Zur Info:
Ich musste an meiner Hausinstallation einen Gaszähler und die Kaltwassertemperatur am Hauseingang messen.
Dazu verwende ich den Shelly Plus Uni, in einer Schaltbox zusammen mit einem 24V-Meanwell Netzteil und einem LS-Schalter B10.
Als Impulskontaktgeber haben ich den Magnetkontakt ABUS FU7350W verwendet, für die Temperatur den Temperaturfühler DS18B20.
Am Ort der Verwendung stellte ich dann heraus, dass ich dort kein WLAN-Empfang habe bzw. nur ein ganz schwaches Signal.
Somit musste die Box näher zum Router und die Signalleitungen verlängert werden.
Der Reedkontakt hatte einen 2m Anschluss und der DS18B20 3m.
Für den Gaszähler benötigte ich dann aber am neuen Aufstellungsort der Schaltbox insgesamt 11,5m und für die Temperaturmessung 9,5m.
Aufgrund schlechter Erfahrung mit Schaltkontakten und langen Leitungen habe ich am Shelly die Signale gemessen, auch um zu sehen, wie gut die Eingangsbeschaltung ist.
Zu danken ist dem User thgoebel, der im Threat
projekt-regensensor-windmesser-npn-lichtschranke-pnp-an-shelly-plus-uni
die Eingangsbeschaltung ermittelt hat.
So habe ich mehrere Messungen zuerst mit den Originallängen der Sensoren durchgeführt:
Aufbau und Messung:
messaufbau shelly plus uni_200224.jpg
Messung shelly plus uni_200224.jpg
Ich will hier nicht alle Screenshots einfügen, sondern nur die entscheidenden.
Ich messe direkt am Eingang und hinter dem Transistor, um zu sehen, wie die Eingangsbeschaltung mit dem Kontakt zurecht kommt:
Blau ist der Eingang und grün am Transistor.
Soweit so gut, wenn der Magnet vorbei kommt, schließt der Reedkontakt und der Transistor gibt das Signal invertiert an den ESP32 weiter.
Upps, was zappelt den da?
Dass ist das Kontaktprellen des Reedkontaktes (in Blau). Die Eingangsbeschaltung kommt aber damit gut zurecht (grün).
Das Signal in blau ist weiterhin der Reedkontakt. Die Schwingung dort kommt von dem sich ausbildenden Schwingkeis diverser Kapazitäten und der Leitungsinduktivität. Auch hier macht der Shelly ein gutes Werk, obwohl die Schwingung bis unter -1,2 Volt geht.
Die gleichen Messungen habe ich dann auch mit der 11,5Meter lange Leitung gemacht. Zu Vollständigkeit:
Das längere Kabel (Unitronic LiYCY 4*0,14mm2), dessen Schirm einseitig am Shelly aufgelegt wurde, erzeugt nun oben stehende Schwingung. Der Spitzenwert der negativen Schwingung ist hier sogar -2,0V.
Auch hier kommt der Shelly gut damit zurecht.
Die gleichen Versuche habe ich mit dem digitalen Temperatursensor DS18B20.
Solche Schwingungen wie oben zeigten sich nicht. Die Signalflanken wurden auch nicht schlechter.
Es gibt also auch hier keinen Grund, nicht auch hier die 9,5 Meter Kabel zu verwenden.