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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    PWM Steuerung mit Fade

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

      Hi Leute, ich habe zu einem meiner Projekte wo ich nicht wirklich weiter komme
      Förderpumpen Ansteuerung
      eine andere Idee.
      Ich habe 4 Strömungspumpen die per eigenem Controller gesteuert werden. Den ich aber nur schwer ansprechen kann da ich nicht weiß in welcher Form die Steuer Programme per usb übertragen werden.
      Man kann es aber komplett anders machen.
      Die Pumpen sind am eigenen Controller auch per externen Anschluss verbunden.
      Ich muss nun nur die DIN 5 Pol Stecker mit +/- und der Steuer Leitung an eine pwm Karte mit 0-8 Volt verbinden die ich über einen stepdown hole.
      Dazu muss eine Blockly Steuerung her die so zu sagen einen fade und Stoß macht.
      Es gibt die Steuer Programme Impuls und Wellengang die normale Strom Stöße machen also Wellen Stöße.
      Dann gibt es Intervall und sequenziell die in einer fade Funktion laufen also zb muss ein Strom Fluss von 30% bis 100% hoch und wieder runter laufen in einer Intervall Zeit von x Sekunden.
      Die Steuer Zeiten kann ich mir aus den original Programmen für mein Becken raus holen.
      Das wäre spitze wenn da einer eine Idee hätte.
      Damit kann ich dann zb Zeit gesteuert verschiedene strömungs Programme laufen lassen. Die pwm Karte kommt an einen Tasmota geflashten ESP8266 ran. in dem dann die PWM Steuerungen für die vier Strömungspumpen laufen.
      Danke schon mal im Voraus.

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

        Ich habe mir mal ein Script gebastelt für eine Sequenzial Steuerung aber ob das so funktioniert, weiß ich nicht.
        Also die Pumpe die per PWM angesteuert ist von 0-8 volt 0%-100%
        Soll mit 100% = 8V starten und in 2 sek runter gehen auf 30 % = 2,4V in 1% Schritten
        dann in 1,9 sek rauf auf 8V in 1 % schritten.
        Die Steuerung soll für eine halbe Std laufen.

        var Sequenz_Zeit, Pulsflu_C3_9F;
        
        
        schedule("* * * * *", function () {
          on({id: "sonoff.0.Aqua_Float_Pumps.Strömung_1"/*Strömung_1*/, change: "ne"}, function (obj) {
            var value = obj.state.val;
            var oldValue = obj.oldState.val;
            if (getState("sonoff.0.Aqua_Float_Pumps.Strömung_1").val == true) {
              setState("sonoff.0.Aqua_Float_Pumps.Strömung_1"/*Strömung_1*/, 100);
            }
            Sequenz_Zeit = setTimeout(function () {
              for (Pulsflu_C3_9F = 100; Pulsflu_C3_9F >= 30; Pulsflu_C3_9F--) {
                setState("sonoff.0.Aqua_Float_Pumps.Strömung_1"/*Strömung_1*/, 30);
              }
            }, 2000);
          });
        });
        
        <xml xmlns="http://www.w3.org/1999/xhtml">
          <variables>
            <variable type="undefined" id="Sequenz_Zeit">Sequenz_Zeit</variable>
            <variable type="" id="S8AcSYCl*E*o9yQ=|/SS">Pulsfluß</variable>
          </variables>
          <block type="schedule" id="Dtv}fhBKHt{I|o51EtNV" x="-962" y="-662">
            <field name="SCHEDULE">* * * * *</field>
            <statement name="STATEMENT">
              <block type="on" id="RSx=||JpCm;AwOM#uW~m">
                <field name="OID">sonoff.0.Aqua_Float_Pumps.Strömung_1</field>
                <field name="CONDITION">ne</field>
                <field name="ACK_CONDITION"></field>
                <statement name="STATEMENT">
                  <block type="controls_if" id="hCU;D9G8L@WHd9(P/HAh">
                    <value name="IF0">
                      <block type="logic_compare" id="x*WvEPqLjb9t:p:1Eflt">
                        <field name="OP">EQ</field>
                        <value name="A">
                          <block type="get_value" id="u!fur-2nr@qk[9wCV%sS">
                            <field name="ATTR">val</field>
                            <field name="OID">sonoff.0.Aqua_Float_Pumps.Strömung_1</field>
                          </block>
                        </value>
                        <value name="B">
                          <block type="logic_boolean" id="mt-4jE--8;^kM:]{=r%H">
                            <field name="BOOL">TRUE</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <statement name="DO0">
                      <block type="control" id="DT](/MAfj:n2yb~o3zqF">
                        <mutation delay_input="false"></mutation>
                        <field name="OID">sonoff.0.Aqua_Float_Pumps.Strömung_1</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="math_number" id="n5{eF!aA2NpfCG^Oy;+~">
                            <field name="NUM">100</field>
                          </block>
                        </value>
                      </block>
                    </statement>
                    <next>
                      <block type="timeouts_settimeout" id="a6oJNxG;3KBYZ-%=%-I|">
                        <field name="NAME">Sequenz_Zeit</field>
                        <field name="DELAY">2000</field>
                        <field name="UNIT">ms</field>
                        <statement name="STATEMENT">
                          <block type="controls_for" id="ol$Alo69a-Wed)Nt/7mv">
                            <field name="VAR" id="S8AcSYCl*E*o9yQ=|/SS" variabletype="">Pulsfluß</field>
                            <value name="FROM">
                              <shadow type="math_number" id="yugI!!Eh#;=6}L5({7Hg">
                                <field name="NUM">100</field>
                              </shadow>
                            </value>
                            <value name="TO">
                              <shadow type="math_number" id="*pVKLKz#NG)`PD~3$p^b">
                                <field name="NUM">30</field>
                              </shadow>
                            </value>
                            <value name="BY">
                              <shadow type="math_number" id="cA.78r;}Vg0S`$$@G69Z">
                                <field name="NUM">1</field>
                              </shadow>
                            </value>
                            <statement name="DO">
                              <block type="control" id="yl.2/3pSm;C*oh[JCpO;">
                                <mutation delay_input="false"></mutation>
                                <field name="OID">sonoff.0.Aqua_Float_Pumps.Strömung_1</field>
                                <field name="WITH_DELAY">FALSE</field>
                                <value name="VALUE">
                                  <block type="math_number" id=")e._WEbOs0{|op+?:o52">
                                    <field name="NUM">30</field>
                                  </block>
                                </value>
                              </block>
                            </statement>
                          </block>
                        </statement>
                      </block>
                    </next>
                  </block>
                </statement>
              </block>
            </statement>
          </block>
        </xml>
        

        Bildschirmfoto 2019-09-07 um 01.53.45.png

        @paul53 vielleicht, magst du mir bei dieser Steuerung helfen.
        Es müssen dann noch drei weitere Steuerungen gebastelt werden.
        Intervall soll dann von 100% in 3,2 sek runter auf 30% da 1 sek halten dann wieder rauf auf 100%
        Dann Puls Only Soll von 30% rauf auf 100% in 2,5 sek dann sofort runter auf 30%
        Dann Wellengang soll für 0,53 sek bei 100% gehalten werden dann sofort runter auf 30% für 0,6 sek dann wieder 0,53 sek 100% halten.

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

          @paul53
          Also es sollen doch 1-10 volt sein und PWM Steuerung. nur welche Pins es im Stecker sind muss ich noch raus messen.
          Dazu muss dann auch eine Steuerung gebastelt werden, die die nachabsenkung übernimmer und den 29 Tage Mondlicht LED Zyklus muss ich dann auch über eine Steuerung über PWM Karte Steuern.
          Ok jetzt lese ich analog Steuerung. Ich weiß nun nicht ob Analog auch über PWM gesteuert werden kann.
          Da ja nun die Pumpen auch im Fade laufen müssen bei zwei Steuerungen.

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

            @Aphofis sagte:

            Ich habe mir mal ein Script gebastelt

            Du kannst nicht den selben Datenpunkt "Strömung_1" mal mit boolschen Werten (false/true) und mal mit Zahlenwerten (30...100) verwenden.

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

              @Aphofis sagte :

              Soll mit 100% = 8V starten und in 2 sek runter gehen auf 30 % = 2,4V in 1% Schritten
              dann in 1,9 sek rauf auf 8V in 1 % schritten.

              1 % in 2 s oder 70 % in 2 s ?

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

                @paul53
                Es soll
                mit 8 volt also 100% starten und in 2 sek runter gehen auf 30% in 1% schritten
                dann von 30% in 1,9 sek wieder hoch auf 100% in 1% schritten.

                var Sequenz_Zeit;
                
                
                schedule("*/2 * * * * *", function () {
                  if (getState("sonoff.0.Aqua_Float_Pumps.Strömung_1").val == true) {
                    setState("sonoff.0.Aqua_Float_Pumps.Stroemung_1_Float"/*Stroemung_1_Float*/, 30);
                    Sequenz_Zeit = setTimeout(function () {
                      setState("sonoff.0.Aqua_Float_Pumps.Stroemung_1_Float"/*Stroemung_1_Float*/, 100);
                    }, 1900);
                    (function () {if (Sequenz_Zeit) {clearTimeout(Sequenz_Zeit); Sequenz_Zeit = null;}})();
                  }
                });
                

                hierbei bleibt die steuerung pulsend auf 30% stehen.
                gibt dann einen neuen Datenpunkt Stroemung_1_Float die den PWM Fluß steuert als Zahl mit min 0 und max 100%
                und Stroemung_1 steuert die steuerung ein oder aus

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

                  @Aphofis sagte:

                  100% starten und in 2 sek runter gehen auf 30%

                  Also den Bereich 100 % bis 30 % innerhalb von 2 s durchlaufen ?

                  Blockly_temp.JPG

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

                    @paul53
                    Ja der Bereich soll von 100-30 durchlaufen innerhalb von 2 sek.
                    und wieder hoch von 30-100 in 1,9 sek.

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

                      Steuerung läuft mehrmals durch und bleibt dann auf 100% stehen.
                      die ganze steuerung soll ja in einer schleife laufen. bis Strömung_1 abgeschaltet wird und eine andere Strömung aktiviert wird.

                      Ist es so korrekt?

                      var spannung, Intervall, Intervall2;
                      
                      
                      on({id: 'sonoff.0.Aqua_Float_Pumps.Strömung_1', val: true}, function (obj) {
                        var value = obj.state.val;
                        var oldValue = obj.oldState.val;
                        spannung = 100;
                        setState("sonoff.0.Aqua_Float_Pumps.Stroemung_1_Float"/*Stroemung_1_Float*/, spannung);
                        Intervall = setInterval(function () {
                          spannung = (typeof spannung == 'number' ? spannung : 0) + -1;
                          setState("sonoff.0.Aqua_Float_Pumps.Stroemung_1_Float"/*Stroemung_1_Float*/, spannung);
                          if (spannung <= 30) {
                            (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
                            Intervall2 = setInterval(function () {
                              spannung = (typeof spannung == 'number' ? spannung : 0) + 1;
                              setState("sonoff.0.Aqua_Float_Pumps.Stroemung_1_Float"/*Stroemung_1_Float*/, spannung);
                              if (spannung >= 100) {
                                (function () {if (Intervall2) {clearInterval(Intervall2); Intervall2 = null;}})();
                              }
                            }, 27);
                          }
                        }, 29);
                      });
                      
                      1 Reply Last reply Reply Quote 0
                      • Aphofis
                        Aphofis last edited by

                        Hab die intervalle mal langsamer gemacht um zu sehen was passiert also die steuerung geht von 100 runter auf 30 und dann wieder hoch auf 100 und bleibt dann stehen. normal soll sie dann wieder von vorne anfangen also in einer schleife.

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

                          wie entstehen 29 und 27 millisekunden !?
                          wenn die steuerung von 100 auf 30 runter soll in 2 sek und rauf in 1,9 sekunden !?

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

                            @Aphofis sagte:

                            wie entstehen 29 und 27 millisekunden !?
                            wenn die steuerung von 100 auf 30 runter soll in 2 sek und rauf in 1,9 sekunden !?

                            Ja, sind allerdings nicht genau 2 s und 1,9 s.

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

                              @paul53
                              Ja nur was sagen die 29 und 27 sek aus !? wie lange bis auf 30 und wie lange bis auf 100 laufen soll !?
                              Ich versuche es nur zu verstehen um dasnn das script abzuwandeln für andere steuerungen

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

                                Hab mich bei der Steuerung auch etwas vertan es muss von 30 rauf auf 100 dann runter auf 30 und wieder hoch auf 100 und wieder runter auf 30
                                Die Steuerungen die abruppt starten sind Wellengang und impuls
                                Sequezial und intervall laufen normal rauf runter

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

                                  @Aphofis
                                  2000 : 70 = 28,57 (ca. 29)
                                  1900 : 70 = 27,14 (ca. 27)

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

                                    @paul53
                                    OK bauchlöchern
                                    also 70 entspricht den schritten 30 bis 100 also 70% die gezählt werden.
                                    entspricht 1% schritt bei 2 sek dann 28,57 ms und bei 1,9 sek 27,14 ms

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

                                      @Aphofis sagte:

                                      also 70 entspricht den schritten 30 bis 100 also 70% die gezählt werden.
                                      entspricht 1% schritt bei 2 sek dann 28,57 ms und bei 1,9 sek 27,14 ms

                                      Exakt.

                                      @Aphofis sagte in PWM Steuerung mit Fade:

                                      es muss von 30 rauf auf 100 dann runter auf 30 und wieder hoch auf 100 und wieder runter auf 30
                                      normal soll sie dann wieder von vorne anfangen also in einer schleife.

                                      Blockly_temp.JPG

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

                                        @Aphofis

                                        Spitze!
                                        Mal eine Persöhliche Frage, hast du sowas gelernt?
                                        Also programmieren oder angeeignet?
                                        Das echt der Hammer was du an Steuerungen aus dem Zauberhut holst. 👍 👍 👍

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

                                          @paul53
                                          ist es so Korrekt?

                                          var sequenzial, Intervall, spannung, Intervall2;
                                          
                                          /**
                                           * Beschreibe diese Funktion …
                                           */
                                          function Welle() {
                                            Intervall = setInterval(function () {
                                              spannung = (typeof spannung == 'number' ? spannung : 0) + 1;
                                              setState("sonoff.0.Aqua_Float_Pumps.Sequenzial_Float"/*Sequenzial_Float*/, spannung);
                                              if (spannung >= 100) {
                                                (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
                                                Intervall2 = setInterval(function () {
                                                  spannung = (typeof spannung == 'number' ? spannung : 0) + -1;
                                                  setState("sonoff.0.Aqua_Float_Pumps.Sequenzial_Float"/*Sequenzial_Float*/, spannung);
                                                  if (spannung <= 30) {
                                                    (function () {if (Intervall2) {clearInterval(Intervall2); Intervall2 = null;}})();
                                                    if (sequenzial) {
                                                      Welle();
                                                    }
                                                  }
                                                }, 29);
                                              }
                                            }, 27);
                                          }
                                          
                                          
                                          on({id: 'sonoff.0.Aqua_Float_Pumps.Sequenzial', change: "ne"}, function (obj) {
                                            var value = obj.state.val;
                                            var oldValue = obj.oldState.val;
                                            sequenzial = (obj.state ? obj.state.val : "");
                                            if (sequenzial) {
                                              spannung = 30;
                                              setState("sonoff.0.Aqua_Float_Pumps.Sequenzial_Float"/*Sequenzial_Float*/, spannung);
                                              Welle();
                                            }
                                          });
                                          
                                          1 Reply Last reply Reply Quote 0
                                          • paul53
                                            paul53 @Aphofis last edited by

                                            @Aphofis sagte:

                                            angeeignet?

                                            Ja.

                                            @Aphofis sagte in PWM Steuerung mit Fade:

                                            ist es so Korrekt?

                                            Sieht gut aus.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            506
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            2
                                            97
                                            5251
                                            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