Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. PWM Steuerung mit Fade

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    PWM Steuerung mit Fade

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @Aphofis last edited by

      @Aphofis sagte:

      Sprich wenn Pumpe 1 und 2 die 0,56 sek welle starten müssen pumpe 2 und 3 die welle 1,16 sek später starten mit 0,56 sek

      Das ist aber etwas anderes: Jeweils 2 Pumpen wechseln sich periodisch ab.

      Aphofis 1 Reply Last reply Reply Quote 0
      • Aphofis
        Aphofis last edited by

        sind denn die Datenpunkte richtig gesetzt ???

        var delta, inc, Intervall, wellen, dec, spannung, hold, holdcnt;
        
        /**
         * Beschreibe diese Funktion …
         */
        function Welle() {
          delta = inc;
          Intervall = setInterval(function () {
            if (Math.abs(delta) < 70) {
              spannung = (typeof spannung == 'number' ? spannung : 0) + delta;
            } else if (spannung >= 100) {
              spannung = 30;
            } else {
              spannung = 100;
            }
            setState("sonoff.0.Aqua_Wave.Channel1"/*Aqua_Wave_Pump_1*/, spannung);
            setState("sonoff.0.Aqua_Wave.Channel2"/*Aqua_Wave_Pump_2*/, spannung);
            setState("sonoff.0.Aqua_Wave.Channel3"/*Aqua_Wave_Pump_3*/, spannung);
            setState("sonoff.0.Aqua_Wave.Channel4"/*Aqua_Wave_Pump_4*/, spannung);
            if (spannung >= 100) {
              delta = dec;
            }
            if (spannung <= 30) {
              if (hold) {
                if (holdcnt <= 0) {
                  holdcnt = hold;
                  delta = 0;
                } else {
                  holdcnt = (typeof holdcnt == 'number' ? holdcnt : 0) + -1;
                }
              } else {
                holdcnt = 0;
              }
              if (holdcnt <= 0) {
                (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
                if (wellen) {
                  Welle();
                }
              }
            }
          }, 25);
        }
        
        
        on({id: 'Aqua_Control.0.Tunze_Steuerung.Tunze_Wellen_Auswahl', change: "ne"}, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          if ((obj.state ? obj.state.val : "") == 1) {
            // Sequenzial
            inc = 1.75 / getState("Aqua_Control.0.Tunze_Steuerung.Sequenzial_Wave_Up").val;
            dec = -1.75 / getState("Aqua_Control.0.Tunze_Steuerung.Sequenzial_Wave_Down").val;
            hold = 0;
          } else if ((obj.state ? obj.state.val : "") == 2) {
            // Intervall
            inc = 70;
            dec = -1.75 / getState("Aqua_Control.0.Tunze_Steuerung.Intervall_Wave_Down").val;
            hold = 40 * getState("Aqua_Control.0.Tunze_Steuerung.Intervall_Wave_Hold").val;
          } else if ((obj.state ? obj.state.val : "") == 3) {
            // Pulse
            inc = 1.75 / getState("Aqua_Control.0.Tunze_Steuerung.Pulse_Wave_Up").val;
            dec = -70;
            hold = 0;
          } else {
            // Wellengang
            inc = 1.75 / getState("Aqua_Control.0.Tunze_Steuerung.Wellengang_Wave_Up").val;
            dec = -70;
            hold = 40 * getState("Aqua_Control.0.Tunze_Steuerung.Wellengang_Wave_Hold").val;
          }
          if ((obj.state ? obj.state.val : "") > 0) {
            wellen = true;
            spannung = 30;
            setState("sonoff.0.Aqua_Wave.Channel1"/*Aqua_Wave_Pump_1*/, spannung);
            setState("sonoff.0.Aqua_Wave.Channel2"/*Aqua_Wave_Pump_2*/, spannung);
            setState("sonoff.0.Aqua_Wave.Channel3"/*Aqua_Wave_Pump_3*/, spannung);
            setState("sonoff.0.Aqua_Wave.Channel4"/*Aqua_Wave_Pump_4*/, spannung);
            Welle();
          } else {
            wellen = false;
          }
        });
        schedule("51 23 * * *", function () {
          setState("Aqua_Control.0.Tunze_Steuerung.Tunze_Wellen_Auswahl"/*Tunze Wellen Auswahl*/, 1);
        });
        schedule("52 23 * * *", function () {
          setState("Aqua_Control.0.Tunze_Steuerung.Tunze_Wellen_Auswahl"/*Tunze Wellen Auswahl*/, 2);
        });
        schedule("53 23 * * *", function () {
          setState("Aqua_Control.0.Tunze_Steuerung.Tunze_Wellen_Auswahl"/*Tunze Wellen Auswahl*/, 3);
        });
        schedule("54 23 * * *", function () {
          setState("Aqua_Control.0.Tunze_Steuerung.Tunze_Wellen_Auswahl"/*Tunze Wellen Auswahl*/, 4);
        });
        

        Bildschirmfoto 2019-09-17 um 15.39.59.png

        paul53 1 Reply Last reply Reply Quote 0
        • Aphofis
          Aphofis @paul53 last edited by

          @paul53 sagte in PWM Steuerung mit Fade:

          @Aphofis sagte:

          Sprich wenn Pumpe 1 und 2 die 0,56 sek welle starten müssen pumpe 2 und 3 die welle 1,16 sek später starten mit 0,56 sek

          Das ist aber etwas anderes: Jeweils 2 Pumpen wechseln sich periodisch ab.

          Genau! sie müssen einfach gegenläufig arbeiten damit eine Welle entsteht! sind bei mir ca 4-5 cm im Becken nur so am Rande.

          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @Aphofis last edited by

            @Aphofis sagte:

            sind denn die Datenpunkte richtig gesetzt ???

            Ja.

            Aphofis 1 Reply Last reply Reply Quote 0
            • Aphofis
              Aphofis @paul53 last edited by

              @paul53 sagte in PWM Steuerung mit Fade:

              @Aphofis sagte:

              sind denn die Datenpunkte richtig gesetzt ???

              Ja.

              Kannst du mir vielleicht die Zeiten erklären wie die werte zustande kommen wenn ich die Datenpunkte mit sek habe wie wird dann errechnet?

              Bildschirmfoto 2019-09-17 um 15.43.45.png

              1 Reply Last reply Reply Quote 0
              • Aphofis
                Aphofis last edited by Aphofis

                aslso wie ist der zusammenhang mit delta und spannung
                zB Sequenzial
                inc 1,75 / 2 = 0,875 wave up
                dec -1,75 / 1,9 = -0,921 wave down
                wie ist jetzt der zusammenhang mit dem intervall 25 ms

                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @Aphofis last edited by paul53

                  @Aphofis sagte :

                  inc 1,75 / 2 = 0,875 wave up

                  Das sind 0,875 % pro step. 70 % / 0,875 % = 80 steps. 80 * 25 ms = 2000 ms.
                  Wenn die Zykluszeit auf 50 ms verdoppelt wird, ergibt sich folgende Rechnung:
                  3,5 / 2 = 1,75 % pro step. 70% / 1,75 % = 40 steps. 40 * 50 ms = 2000 ms.

                  Aphofis 1 Reply Last reply Reply Quote 0
                  • Aphofis
                    Aphofis @paul53 last edited by

                    @paul53
                    OK verstanden!
                    Also Test ist durchgelaufen!
                    Die Pumpen werden gesteuert also anhand der Datenpunkte kann man es sehen.
                    Tunze Wellen Auswahl der Datenpunkt wird von aus (0) auf intervall (2) gesetllt man sieht nur diese stellung
                    Die pumpen rasseln weiter im Datenpunkt.
                    Iobroker bleibt stehen die Pumpen Datenpunkte laufen weiter.
                    Nach einer Zeit wenn Tunze Wellenb Auswahl dann wieder auf aus (0) geschaltet wird ist der Iobroker wieder erreichbar.
                    Ich glaube da muss ganz dringend ein Pi 4 mit 4 GB RAM her!!!

                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @Aphofis last edited by

                      @Aphofis sagte:

                      Ich glaube da muss ganz dringend ein Pi 4 mit 4 GB RAM her!!!

                      Hast Du es mal mit der doppelten Zykluszeit von 50 ms versucht ?

                      Aphofis 1 Reply Last reply Reply Quote 0
                      • Aphofis
                        Aphofis @paul53 last edited by

                        @paul53
                        meinst du das entlastet den iobroker ?

                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @Aphofis last edited by

                          @Aphofis sagte:

                          meinst du das entlastet den iobroker ?

                          Ja, aber ob es ausreichend ist ???

                          Aphofis 1 Reply Last reply Reply Quote 0
                          • Aphofis
                            Aphofis @paul53 last edited by

                            @paul53
                            I try

                            1 Reply Last reply Reply Quote 0
                            • Aphofis
                              Aphofis last edited by

                              Läuft mit Sequenzial los wenn Intervall dran kommt bleibt der datenpunkt aud Sequenzial stehen nach ein paar sekunden wechselt der datenpunkt zu Intervall dann bleibt iobroker stehen aber pumpen datenpunkte laufen weiter!

                              paul53 1 Reply Last reply Reply Quote 0
                              • Aphofis
                                Aphofis last edited by

                                Ich denke mit allen anderen adaptern und allen anderen Steuerungen ist iobroker überlastet und 1 GB Ram ist nun mal sehr wenig!
                                Würde alles über ESP8266 laufen könnte ich einen Linux Server nehmen der ka 16 GB Ram hat und einen Leistungsstarken CPU dann wäre das sicherlich kein Problem. Aber einen Einplatinen Computer zu finden der auch in den Controller kasten passt ist nicht so einfach

                                1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @Aphofis last edited by

                                  @Aphofis sagte:

                                  aber pumpen datenpunkte laufen weiter!

                                  Was heist das ? Die Rampe (zwischen 30 % und 100 %) läuft weiter ?

                                  @Aphofis sagte in PWM Steuerung mit Fade:

                                  ist iobroker überlastet

                                  Rampen im Bereich von 0,55 bis 3 s sind für eine Skriptsprache wohl eine zu große Herausforderung.

                                  Aphofis 2 Replies Last reply Reply Quote 0
                                  • Aphofis
                                    Aphofis @paul53 last edited by

                                    @paul53
                                    Das ist gut möglich!
                                    Ja die Ramp Steuerung sieht man in den Datenpunkten der Pumpen das es weiter läuft
                                    Schade das die Steuerung in ms so aufwendig ist!!!

                                    1 Reply Last reply Reply Quote 0
                                    • Aphofis
                                      Aphofis @paul53 last edited by

                                      @paul53
                                      Heute ist das PWM Steuermodul gekommen.
                                      Am ESP an Pumpe 1 angeklemmt. Steuerung läuft zeitgesteuert los Der Datenpunkt wird auf null geschaltet nach dem die Zeitsteuerung den Datenpunkt Tunze Wellen Auswahl aus geschaltet hat aber die datenpunkte des ESP mit den vier Pumpen läuft fröhlich weiter. Auch ein Abschalten der Steuerung und ein Neustart des ESP Controllers bringt keinen Erfolg. Hab auch nur Sequemzial 1 für 1 min laufen lassen und danach soll Der Datenpunkt auf null gesetzt werden. Wird er auch aber die Steuerung bekommt es nicht mit.

                                      paul53 2 Replies Last reply Reply Quote 0
                                      • paul53
                                        paul53 @Aphofis last edited by

                                        @Aphofis sagte:

                                        aber die datenpunkte des ESP mit den vier Pumpen läuft fröhlich weiter.

                                        Füge mal einen Debug-Block ein an der Stelle, an der der Zyklus mit wellen = false beendet werden soll.

                                        Blockly_temp.JPG

                                        1 Reply Last reply Reply Quote 0
                                        • paul53
                                          paul53 @Aphofis last edited by paul53

                                          @Aphofis
                                          Habe das Skript mal auf meinem PC (i7) getestet mit allen 4 Wellenformen (dazwischen immer "Aus"(0)): Es macht das, was es soll. Also ist wahrscheinlich der RasPi mit den kurzen Zeiten überfordert, denn selbst im PC sind die tatsächlichen Zykluszeiten erheblich länger, als die eingegebenen Zeiten.

                                          Aphofis 1 Reply Last reply Reply Quote 0
                                          • Aphofis
                                            Aphofis @paul53 last edited by Aphofis

                                            @paul53
                                            Danke für den Test bei dir auf dem PC
                                            Dann muss wohl tatsächlich ein raspi 4 her

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            855
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            2
                                            97
                                            5516
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo