Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Druckmessung

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Druckmessung

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators last edited by

      Dein V3 zeigt jetzt:

      Gestartet
      Analogwert = 198
      Druckwert in 0.1bar = 10
      Binärwert = 00001010
      
      Analogwert = 158
      Druckwert in 0.1bar = 0
      Binärwert = 00000000
      
      Analogwert = 229
      Druckwert in 0.1bar = 10
      Binärwert = 00001010
      
      Analogwert = 250
      Druckwert in 0.1bar = 20
      Binärwert = 00010100
      
      Analogwert = 237
      Druckwert in 0.1bar = 10
      Binärwert = 00001010
      
      Analogwert = 174
      Druckwert in 0.1bar = 10
      Binärwert = 00001010
      
      Analogwert = 183
      Druckwert in 0.1bar = 10
      Binärwert = 00001010
      
      Analogwert = 250
      Druckwert in 0.1bar = 20
      Binärwert = 00010100
      
      

      @Thisoft:

      dass in deinem Test die Binär- nicht zu den Analogwerten passten `
      Das sieht jetzt schon mal besser aus.

      aber die Werte sind trotzdem IMHO nicht brauchbar.

      da gibt es nur 10 (0001010) und 20 (00010100), keine Werte dazwischen 😞

      Ich bau das Teil erst mal nicht ein, sondern lass es hier auf dem Schreibtisch (und versuche in der Zwischenzeit mal den Sketch zu verstehen)

      EDIT:

      Mutig ich bin 😉

      Wäre es nicht besser statt

      DruckValue = (int) DruckValue / Messfaktor * 10;
      

      zu machen:

      DruckValue = (int) DruckValue * 10 / Messfaktor;
      

      nee, hier gilt das Kommutativgesetz 😞

      Aber wie bekommt man die Stufen raus?

      Gruß

      Rainer

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

        Ja - natürlich :oops: Das kommt davon wenn man das schnell nebenher zusammenschreibt ohne zu Testen. Hoffentlich hab ich jetzt keine neuen Faselfehler drin… Ist jetzt nicht der gesamte Sketch sondern nur die Loop-Routine, bekommst du hin - oder?

        void loop() {
          // read the value from the sensor:
          sensorValue = analogRead(sensorPin)*10; 
          Serial.println("Analogwert = " + (String) sensorValue);
          DruckValue = (sensorValue - (Nullpunkt * 10));
          if (DruckValue < 0) DruckValue = 0;
          DruckValue = (int) DruckValue / Messfaktor / 10;
          Serial.println("Druckwert in 0.1bar = " + (String) DruckValue);
          sendValue(DruckValue);
          delay(Zykluszeit*1000);
        }
        

        Übrigens - wenn der Arduino seltener senden soll kannst du das ganz einfach machen indem du im Sketch die Variable "Zykluszeit" änderst (steht ziemlich am Anfang…)

        1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators last edited by

          @Thisoft:

          bekommst du hin - oder? `
          Denke ich schon - Danke!

          @Thisoft:

          Übrigens - wenn der Arduino seltener senden soll kannst du das ganz einfach machen indem du im Sketch die Variable "Zykluszeit" änderst (steht ziemlich am Anfang…) `
          Habe ich gesehen, aber das könnte man auch über das Sendemodul konfigurieren, dann müssten aber die Signale im Arduino negiert werden, da es nicht alle Varianten für high oder low active gibt.

          ~~![](</s><URL url=)<link_text text="download/file.php?id=30636&mode=view">https://forum.iobroker.net/download/file.php?id=30636&mode=view</link_text>" />

          habe bisher Mode5 und jetzt auf Mode 7 gestellt

          ggf dann aber doch über den D030 des Moduls, der mit dem D10 des Arduino verbunden ist, dann kann man triggern.

          Im MOment ist der DC der CCU auf 97% 😞

          Die neuen Werte sehen so aus:

          Gestartet
          Analogwert = 9990
          Druckwert in 0.1bar = 13
          Binärwert = 00001101
          
          Analogwert = 6520
          Druckwert in 0.1bar = 8
          Binärwert = 00001000
          
          Analogwert = 6670
          Druckwert in 0.1bar = 8
          Binärwert = 00001000
          
          Analogwert = 7340
          Druckwert in 0.1bar = 9
          Binärwert = 00001001
          
          Analogwert = 8920
          Druckwert in 0.1bar = 11
          Binärwert = 00001011
          
          Analogwert = 9510
          Druckwert in 0.1bar = 12
          Binärwert = 00001100
          
          Analogwert = 9840
          Druckwert in 0.1bar = 12
          Binärwert = 00001100
          
          

          in der CCU steht immer noch 255, kann aber am DC liegen, oder dasss mode7 eben wegen high active nichts bringt

          Gruß

          Rainer~~

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

            Mit Mode 7 kann momentan normalerweise nichts übertragen werden deshalb wäre mir die 255 jetzt schon plausibel.

            Allerdings ist der DC von 97% überhaupt nicht plausibel 😞

            Ich hab jetzt mal die Unterstützung für den Dateneingang an D10 mit eingebaut. Außerdem sollte beim Starten erstmal eine 0 übertragen werden.

            Die Werte innerhalb des Arduino sehen ja jetzt gut aus…

            ! ````
            int sensorPin = A7;
            int firstDigitPIN = 2;
            int sendPIN = 10;
            int sensorValue = 0;
            int DruckValue = 0;
            ! const int Zykluszeit = 10; //Messintervall in Sekunden
            const int Nullpunkt = 102; //dieser Analogwert entspricht 0 bar
            const int Messfaktor = 68; //durch diesen Wert wird der Analogwert geteilt
            ! void sendValue(int intVal){
            String binZahl;
            byte aktBit;
            for (int b = 0; b < 8; b += 1){
            aktBit = bitRead(intVal, b);
            binZahl = aktBit + binZahl;
            digitalWrite(firstDigitPIN + b,!(boolean) aktBit);
            }
            digitalWrite(sendPIN, HIGH);
            delay(100);
            digitalWrite(sendPIN, LOW);
            Serial.println("Binärwert = " + binZahl);
            Serial.println("");
            }
            ! void setup() {
            Serial.begin(9600);
            for (int digitPIN = firstDigitPIN; digitPIN <= firstDigitPIN + 7; digitPIN += 1){
            pinMode(digitPIN, OUTPUT);
            digitalWrite(digitPIN,LOW);
            }
            pinMode(sendPIN, OUTPUT);
            digitalWrite(sendPIN, HIGH);
            delay(100);
            digitalWrite(sendPIN, LOW);
            Serial.println("Gestartet");
            }
            ! void loop() {
            // read the value from the sensor:
            sensorValue = analogRead(sensorPin)/4; //weil der Arduino mit 10 bit Auflösung misst, wir aber nur 8 bit übertragen können
            Serial.println("Analogwert = " + (String) sensorValue);
            DruckValue = (sensorValue - Nullpunkt);
            if (DruckValue < 0) DruckValue = 0;
            DruckValue = (int) DruckValue / Messfaktor * 10;
            Serial.println("Druckwert in 0.1bar = " + (String) DruckValue);
            sendValue(DruckValue);
            delay(Zykluszeit*1000);
            }

            1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators last edited by

              Habe jetzt einiges herumgespielt und für mich ist für heute erst mal Schluss.

              Ich bin erst einmal zu folgendem Schluss gekommen:

              • der erhöhte DC hat aktuell wohl nichts mit dem Sensor zu tun, ich habe diesen jetzt an eine Testumgebung gehängt, an der ich allerdings den DC nicht monitoren kann 😞

                • ob das Gerät der Auslöser (wie auch immer) war kann ich nicht nachvollziehen, ich hoffe nur dass sich der DC in meiner produktiven Umgebung irgendwann einbekommt. Gestartet ist er exakt mit den Problemen mit dem Sensor. ab da stieg er stetig bis auf 97.
              • du scheinst die Negierung der Pins gemacht zu haben, also führt mein Setting mit erneuter Negierung zu 255 statt 0 😉

              • in deinem letzten Sketch hast du die Änderung, die ich mit deinem Snippet in dem vorletzten eingebaut hab nicht drin gehabt, da kamen wieder nur 0, 10 und 20 raus.

              • im angeschlossenen Zustand kam nur noch 0; da muss ich wohl noch mit den Faktoren spielen.

                • und mit den verschiedenen Modi.
                • einerseits soll ziemlich schnell ein Leck/Luft detektiert werden, andererseits brauche ich bei minimalen Abweichung nicht alle 10 Sec. einen Wert.

              Danke nochmals bis hier hin

              Rainer

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

                @Homoran:

                Habe jetzt einiges herumgespielt und für mich ist für heute erst mal Schluss.

                Ich bin erst einmal zu folgendem Schluss gekommen:

                • der erhöhte DC hat aktuell wohl nichts mit dem Sensor zu tun, ich habe diesen jetzt an eine Testumgebung gehängt, an der ich allerdings den DC nicht monitoren kann 😞

                  • ob das Gerät der Auslöser (wie auch immer) war kann ich nicht nachvollziehen, ich hoffe nur dass sich der DC in meiner produktiven Umgebung irgendwann einbekommt. Gestartet ist er exakt mit den Problemen mit dem Sensor. ab da stieg er stetig bis auf 97. `

                Ja - wäre gut zu wissen was da los war…

                ` > - du scheinst die Negierung der Pins gemacht zu haben, also führt mein Setting mit erneuter Negierung zu 255 statt 0 😉

                • in deinem letzten Sketch hast du die Änderung, die ich mit deinem Snippet in dem vorletzten eingebaut hab nicht drin gehabt, da kamen wieder nur 0, 10 und 20 raus. `

                Stimmt - das war eher aus Versehen mit passiert :roll:

                ` > - im angeschlossenen Zustand kam nur noch 0; da muss ich wohl noch mit den Faktoren spielen.

                  • und mit den verschiedenen Modi. `

                Die Modi sollten m.E. jetzt gar nicht mehr so entscheidend sein wo der D10 mit angesteuert wird..

                Um die Werte bzw. Faktoren in dir richtige Richtung zu rücken wäre es gut wenn du erstmal den Seriellen Monitor auf einem Lappi oder so mitlaufen lassen könntest…

                > - - einerseits soll ziemlich schnell ein Leck/Luft detektiert werden, andererseits brauche ich bei minimalen Abweichung nicht alle 10 Sec. einen Wert.
                Ich habe jetzt noch einen Parameter "MeldeDifferenz" eingebaut. Um diesen Wert (in Zehntelbar) muss sich der neue Messwert vom letzten übertragenen unterscheiden damit der neue Wert gesendet wird.

                ! ````
                int sensorPin = A7;
                int firstDigitPIN = 2;
                int sendPIN = 10;
                int sensorValue = 0;
                int DruckValue = 0;
                int lastValue = 0;
                int MeldeDifferenz = 5;
                ! const int Zykluszeit = 10; //Messintervall in Sekunden
                const int Nullpunkt = 102; //dieser Analogwert entspricht 0 bar
                const int Messfaktor = 68; //durch diesen Wert wird der Analogwert geteilt
                ! void sendValue(int intVal){
                String binZahl;
                byte aktBit;
                for (int b = 0; b < 8; b += 1){
                aktBit = bitRead(intVal, b);
                binZahl = aktBit + binZahl;
                digitalWrite(firstDigitPIN + b,!(boolean) aktBit);
                }
                digitalWrite(sendPIN, HIGH);
                delay(100);
                digitalWrite(sendPIN, LOW);
                Serial.println("Binärwert = " + binZahl);
                Serial.println("");
                }
                ! void setup() {
                Serial.begin(9600);
                for (int digitPIN = firstDigitPIN; digitPIN <= firstDigitPIN + 7; digitPIN += 1){
                pinMode(digitPIN, OUTPUT);
                digitalWrite(digitPIN,LOW);
                }
                pinMode(sendPIN, OUTPUT);
                digitalWrite(sendPIN, HIGH);
                delay(100);
                digitalWrite(sendPIN, LOW);
                Serial.println("Gestartet");
                }
                ! void loop() {
                // read the value from the sensor:
                sensorValue = analogRead(sensorPin)10;
                Serial.println("Analogwert = " + (String) sensorValue);
                DruckValue = (sensorValue - (Nullpunkt * 10));
                if (DruckValue < 0) DruckValue = 0;
                DruckValue = (int) DruckValue / Messfaktor / 10;
                Serial.println("Druckwert in 0.1bar = " + (String) DruckValue);
                if (abs(DruckValue - lastValue) > MeldeDifferenz){
                sendValue(DruckValue);
                lastValue = DruckValue;
                };
                delay(Zykluszeit
                1000);
                }

                
                Dann für morgen viel Erfolg!
                
                Und - nichts zu Danken, du hast hier schon so viel geholfen, da hast du alle Hilfe verdient…
                
                Gruß
                
                Thilo
                1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators last edited by

                  Damit ich schon mal nicht schlafen sondern grübeln kann:
                  @Thisoft:

                  wo der D10 mit angesteuert wird.. `

                  Wie passiert das?

                  • was löst das aus?

                  • wie ist er active? (high/low)

                  Bis morgen

                  Rainer

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

                    Das passiert indem der D10 jeweils kurz auf HIGH und 100ms später wieder auf LOW gesetzt wird:

                      digitalWrite(sendPIN, HIGH);
                      delay(100);
                      digitalWrite(sendPIN, LOW);
                    

                    das passiert erstmal in der void setup() und dann wieder in void sendValue() nachdem die 8bit auf den neuen Wert gesetzt wurden.

                    Somit ist der D10 also im Normalfall auf LOW und wird nach einer Aktualisierung des Wertes kurz auf HIGH und dann wieder auf LOW gesetzt so dass da jeweils eine steigende und eine fallende Flanke ausgelöst wird.

                    1 Reply Last reply Reply Quote 0
                    • Homoran
                      Homoran Global Moderator Administrators last edited by

                      Gut, aber dann wird im MOde 2 (oder1) immer alle 10 Sekunden gesendet, oder?

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

                        Prinzipiell ja, aber in der neuen Version nur wenn der gemessene Wert mehr als 0,5 bar vom letzten übertragenen abweicht.

                        1 Reply Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators last edited by

                          Hallo Thilo,

                          Habe deinen Rat beherzigt
                          @Thisoft:

                          den Seriellen Monitor auf einem Lappi oder so mitlaufen lassen könntest… `

                          Arduino IDE auf einem Pentium Läppi installiert Kabel drangehängt und den letzten Sketch geflasht (die anderen sind au dem PC).

                          Natürlich ist so ein Kabel immer zu kurz -)

                          Der "Live-Log" wie folgt:

                          Gestartet
                          Analogwert = 1570
                          Druckwert in 0.1bar = 0
                          Analogwert = 1560
                          Druckwert in 0.1bar = 0
                          Analogwert = 1560
                          Druckwert in 0.1bar = 0
                          Analogwert = 1560
                          Druckwert in 0.1bar = 0
                          Analogwert = 1560
                          Druckwert in 0.1bar = 0
                          Analogwert = 1560
                          Druckwert in 0.1bar = 0
                          Analogwert = 1560
                          Druckwert in 0.1bar = 0
                          Analogwert = 1570
                          Druckwert in 0.1bar = 0
                          Analogwert = 1560
                          Druckwert in 0.1bar = 0
                          Analogwert = 970
                          Druckwert in 0.1bar = 0
                          Analogwert = 970
                          Druckwert in 0.1bar = 0
                          Analogwert = 970
                          Druckwert in 0.1bar = 0
                          Analogwert = 970
                          Druckwert in 0.1bar = 0
                          Analogwert = 970
                          Druckwert in 0.1bar = 0
                          Analogwert = 1570
                          Druckwert in 0.1bar = 0
                          Analogwert = 1570
                          Druckwert in 0.1bar = 0
                          Analogwert = 1560
                          Druckwert in 0.1bar = 0
                          Analogwert = 1560
                          Druckwert in 0.1bar = 0
                          Analogwert = 1560
                          Druckwert in 0.1bar = 0
                          
                          

                          Pumpe an mit ziemlich exakt 1bar laut Manometer -> 1560

                          Pumpe aus -> 970

                          Pumpe an -> 1560

                          Das ist schon mal reproduzierbar. Mal sehen ob ich die Formel geändert bekomme.

                          @Thisoft:

                          wenn der gemessene Wert mehr als 0,5 bar vom letzten übertragenen abweicht. `
                          Da muss ich auch mal ran. Die Idee ist super, allerdings sind 0,5 bar, bei etwa 1 bar maximalem Druck (naja auch 1,3 könnte sein, üblich ist aber 0,8 bis 1,1) etwas zu hoch. Mal sehen ob ich den Wert finde und erst einmal auf 0,2 ändern kann.

                          Dann muss ich noch immer die Ursache für 95% DC finden, der Sensor hängt im Moment an einem anderen System.

                          Gruß

                          Rainer

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

                            @Homoran:

                            Das ist schon mal reproduzierbar. Mal sehen ob ich die Formel geändert bekomme. `
                            Wiedermal ein einfacher Faselfehler. Such mal die folgende Zeile im Sketch:

                              DruckValue = (int) DruckValue / Messfaktor / 10;
                            

                            Da muss das "/10" weg - das ist sozusagen "doppelt verfaktoriert" 😉

                            ` > @Thisoft:

                            wenn der gemessene Wert mehr als 0,5 bar vom letzten übertragenen abweicht. Da muss ich auch mal ran. Die Idee ist super, allerdings sind 0,5 bar, bei etwa 1 bar maximalem Druck (naja auch 1,3 könnte sein, üblich ist aber 0,8 bis 1,1) etwas zu hoch. Mal sehen ob ich den Wert finde und erst einmal auf 0,2 ändern kann.

                            Das ist ganz einfach - 5. Zeile von oben:

                            int MeldeDifferenz = 5;
                            

                            > Dann muss ich noch immer die Ursache für 95% DC finden, der Sensor hängt im Moment an einem anderen System.
                            Ja - ich fürchte da kann ich dir im Moment nicht wirklich helfen…

                            Gruß

                            Thilo

                            1 Reply Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators last edited by

                              Hallo Thilo,

                              ich wollte gerade den aktuellen Sketch vermelden - es läuft.
                              144_pressuresensor.jpg

                              ! ````
                              int sensorPin = A7;
                              int firstDigitPIN = 2;
                              int sendPIN = 10;
                              int sensorValue = 0;
                              int DruckValue = 0;
                              int lastValue = 0;
                              int MeldeDifferenz = 2;
                              ! const int Zykluszeit = 10; //Messintervall in Sekunden
                              const int Nullpunkt = 97; //dieser Analogwert entspricht 0 bar
                              const int Messfaktor = 60; //durch diesen Wert wird der Analogwert geteilt
                              ! void sendValue(int intVal){
                              String binZahl;
                              byte aktBit;
                              for (int b = 0; b < 8; b += 1){
                              aktBit = bitRead(intVal, b);
                              binZahl = aktBit + binZahl;
                              digitalWrite(firstDigitPIN + b,!(boolean) aktBit);
                              }
                              digitalWrite(sendPIN, HIGH);
                              delay(100);
                              digitalWrite(sendPIN, LOW);
                              Serial.println("Binärwert = " + binZahl);
                              Serial.println("");
                              }
                              ! void setup() {
                              Serial.begin(9600);
                              for (int digitPIN = firstDigitPIN; digitPIN <= firstDigitPIN + 7; digitPIN += 1){
                              pinMode(digitPIN, OUTPUT);
                              digitalWrite(digitPIN,LOW);
                              }
                              pinMode(sendPIN, OUTPUT);
                              digitalWrite(sendPIN, HIGH);
                              delay(100);
                              digitalWrite(sendPIN, LOW);
                              Serial.println("Gestartet");
                              }
                              ! void loop() {
                              // read the value from the sensor:
                              sensorValue = analogRead(sensorPin)10;
                              Serial.println("Analogwert = " + (String) sensorValue);
                              DruckValue = (sensorValue - (Nullpunkt * 10));
                              if (DruckValue < 0) DruckValue = 0;
                              DruckValue = (int) DruckValue / Messfaktor;
                              Serial.println("Druckwert in 0.1bar = " + (String) DruckValue);
                              if (abs(DruckValue - lastValue) > MeldeDifferenz){
                              sendValue(DruckValue);
                              lastValue = DruckValue;
                              };
                              delay(Zykluszeit
                              1000);
                              }

                              
                              ~~@Thisoft:~~ 
                              
                              > Da muss das "/10" weg - das ist sozusagen "doppelt verfaktoriert" `  
                              Hab ich schon gefunden ;-)
                              
                              ~~@Thisoft:~~ 
                              
                              > Das ist ganz einfach - 5\. Zeile von oben: `  
                              Dito!
                              
                              ~~@Thisoft:~~ 
                              
                              > Ja - ich fürchte da kann ich dir im Moment nicht wirklich helfen… `  
                              nee, nich wirklich, aber du hast schon genug geholfen.
                              
                              Danke dafür
                              
                              Gruß
                              
                              Rainer
                              1 Reply Last reply Reply Quote 0
                              • Thisoft
                                Thisoft last edited by

                                Freut mich dass es jetzt läuft 😄

                                Jetzt überlege ich schon, ob ich mir auch noch so ein Dingens in meinen Poolkreislauf reinhänge… Aber dann wäre ja der nächste Schritt auch gleich noch phWert-Messung... und Chlorgehalt... Nein, hör auf jetzt.. 😉

                                Und siehst Du, jetzt hast du nebenbei auch gleich noch Arduino programmieren gelernt 😉

                                Gruß

                                Thilo

                                1 Reply Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators last edited by

                                  @Thisoft:

                                  jetzt hast du nebenbei auch gleich noch Arduino programmieren gelernt `
                                  Nee, da gehört mehr zu. Ist wie mit Fremdsprachen: geschriebenen Text entziffern ist eins, fließend sprechen was ganz anderes.

                                  Ich hätte da noch eine Frage, da es doch nicht ganz so läuft, wie es soll.

                                  Ich fürchte er misst die differen nur > und nicht >=. Wenn ich also 2 eingestellt habe muss der druck sich mindestens von messung zu messung um 0,3 bar ändern.

                                  Bei dem normaldruck von etwa 0,95bar ist das schon viel.

                                  Dazu scheint zu kommen, dass beim an oder abschalten der Pumpe, je nach zufälligem messzeitpunkt es anscheinend vorkommen kann, dass der druck in jeweils 10 sekunden jeweils nur um 0,2 bar (0.9….0,7....0.5....0.3) sinkt oder steigt. Dann wird keine Änderung angezeigt, auch wenn der Druck in der Summe jetzt 0,6 bar gefallen ist.

                                  Was passiert wenn luft drin ist kann ich noch nicht abschätzen.

                                  Ist eine höhere Auflösung möglich, also zweistellig?

                                  Ich hatte beim läppi nur auf die serielle Konsole geachtet, nicht auf die Werte in der ccu.

                                  Gruß Rainer

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

                                    @Homoran:

                                    Nee, da gehört mehr zu. Ist wie mit Fremdsprachen: geschriebenen Text entziffern ist eins, fließend sprechen was ganz anderes. `
                                    Naja, fließend kann ich auch nur .NET. Die ganzen C-Dialekte sind für mich genau wie Javascript auch nur 2. Fremdsprachen wo ich hin und wieder im Wörterbuch nachschlagen muss 😉

                                    ` > Ich hätte da noch eine Frage, da es doch nicht ganz so läuft, wie es soll.

                                    Ich fürchte er misst die differen nur > und nicht >=. Wenn ich also 2 eingestellt habe muss der druck sich mindestens von messung zu messung um 0,3 bar ändern. `
                                    Wenn du möchtest kannst du das ja in der folgenden Zeile von ">" in ">=" ändern. Oder eben den Grenzwert in 1 ändern…

                                    if (abs(DruckValue - lastValue) > MeldeDifferenz){
                                    

                                    ` > Bei dem normaldruck von etwa 0,95bar ist das schon viel.

                                    Dazu scheint zu kommen, dass beim an oder abschalten der Pumpe, je nach zufälligem messzeitpunkt es anscheinend vorkommen kann, dass der druck in jeweils 10 sekunden jeweils nur um 0,2 bar (0.9….0,7....0.5....0.3) sinkt oder steigt. Dann wird keine Änderung angezeigt, auch wenn der Druck in der Summe jetzt 0,6 bar gefallen ist. `
                                    Nö - stimmt nicht. Der aktuelle Messwert wird immer mit dem zuletzt gesendeten Wert verglichen.

                                    ` > Was passiert wenn luft drin ist kann ich noch nicht abschätzen.

                                    Ist eine höhere Auflösung möglich, also zweistellig? `
                                    Naja, wir könnten schon auf Hunderstelbar gehen. Dann musst du dir aber bewußt sein dass bei einem Wert über 2,55bar der übertragene Wert in der CCU nicht richtig ist (bzw. eben wieder bei 0 anfängt). Andere Möglichkeit wäre noch sowas krummes wie Fünfzigstelbar …

                                    Gruß Thilo

                                    1 Reply Last reply Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators last edited by

                                      @Thisoft:

                                      wo ich hin und wieder im Wörterbuch nachschlagen `
                                      bei mir wäre das eher …bis auf ganz weniges NICHT im Wörterbuch... 😉

                                      @Thisoft:

                                      in der folgenden Zeile von ">" in ">=" ändern. Oder eben den Grenzwert in 1 ändern. `
                                      letzteres hatte ich vor, ersteres war ich mir nicht sicher ob die Syntax das kennt.

                                      @Thisoft:

                                      Der aktuelle Messwert wird immer mit dem zuletzt gesendeten Wert verglichen. `
                                      Das ist gut zu hören, dann muss ich die Ursache woanders suchen 😞

                                      @Thisoft:

                                      Naja, wir könnten schon auf Hunderstelbar gehen. Dann musst du dir aber bewußt sein dass bei einem Wert über 2,55bar der übertragene Wert in der CCU nicht richtig ist `
                                      Damit könnte ich leben. So hoch geht ja auch das Manometer nicht.

                                      Solange da nichts zerschossen wird.

                                      Danke mal wieder

                                      Rainer

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

                                        @Homoran:

                                        @Thisoft:

                                        Naja, wir könnten schon auf Hunderstelbar gehen. Dann musst du dir aber bewußt sein dass bei einem Wert über 2,55bar der übertragene Wert in der CCU nicht richtig ist `
                                        Damit könnte ich leben. So hoch geht ja auch das Manometer nicht.

                                        Solange da nichts zerschossen wird. `

                                        Was das Zerschießen betrifft kann ich mir das zwar nicht vorstellen dass da ein Zusammenhang bestehen soll. Es würden ja dann eben nur die niedersten 8 bit des Wertes übertragen, also nach der 255 käme einfach wieder eine 0…

                                        Aber solange du noch nicht aufgeklärt hast wo der astronomische DC auf deiner CCU herkam...???

                                        Ansonsten müsstest du dann lediglich in der void loop() die beiden "*10" durch "*100" ersetzen. Wobei zu bedenken ist, dass die durch den Sensor und die Auflösung des Analogeingangs gegebene Auflösung nur bei ca. 60/bar liegt!

                                        1 Reply Last reply Reply Quote 0
                                        • Homoran
                                          Homoran Global Moderator Administrators last edited by

                                          @Thisoft:

                                          Aber solange du noch nicht aufgeklärt hast wo der astronomische DC auf deiner CCU herkam…??? `
                                          Sorry!

                                          Hab ich, ein HM-SW1-PBU-FM hat sich im Millisekundenbereich gemeldet; habe ihn ausgetauscht jetzt ist Ruhe.

                                          Der Sensor war aber inzwischen an einer eigenen Testumgebung mit dem neuen Funkmodul

                                          @Thisoft:

                                          ediglich in der void loop() die beiden "*10" durch "*100" ersetzen. `
                                          ich denke, das bekomme ich hin 😉

                                          @Thisoft:

                                          dass die durch den Sensor und die Auflösung des Analogeingangs gegebene Auflösung nur bei ca. 60/bar liegt! `
                                          Hä?

                                          also 60 Stufen statt 100?

                                          Das ist besser als nix

                                          Mach ich demnächst mal.

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

                                            Ich zitiere mal aus einem meiner Posts ein Stück weiter vorn:
                                            > Nun mal theoretisch: lt. Datenblatt misst der Sensor von 0-1,2Mpa, also 0-12bar und gibt dementsprechend eine Spannung von 0,5-4,5V aus das bedeutet letztlich 4V/12bar = 0,333V/bar. Der gelesene Wert im Arduino entspricht 1024/5V = 204/V. Dementsprechend 68/bar.

                                            Somit wirst du bei der Messung auf 0,01bar letztlich trotzdem nur eine Auflösung in Schritten von ca. 0,02 bar erhalten. Aber das ist schon mal besser als nix, oder eben als 0,1.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            383
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            118
                                            14104
                                            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