Spannungsüberwachung (12V bzw. 24V) mit "Klartextanzeige"

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

RolandF
Beiträge: 122
Registriert: 22.06.2014, 19:01
Hat sich bedankt: 3 Mal
Danksagung erhalten: 5 Mal

Re: Spannungsüberwachung (12V bzw. 24V) mit "Klartextanzeige"

Beitrag von RolandF » 27.10.2018, 11:10

Hallo Jérôme,
jp112sdl hat geschrieben:
14.09.2018, 21:00
1.) Die Anzahl der Messkanäle ( 1 ... 8 ) angeben (Zeile 24)
2.) Die Messung selbst einbauen (ab Zeile 109)
Ob nun (un-)belasteter Spannungsteiler, oder externer Mess-IC... hier kann jeder seine eigene Messroutine einbauen.

Um bei mehreren Messkanälen die einzelnen Kanäle zu unterscheiden, kann man sich der Kanalnummer number() bedienen.

Code: Alles auswählen

void measure() {
      switch (number()) {
        case 1:
         ...
         voltage = ...;
        break;
        
        case 2:
         ...
         voltage = ...;
        break;
      }
 }     
Das läuft bei mir jetzt seit über einem Monat perfekt, danke noch mal für Deinen Sketch. :!:

Ich nutze zwei Kanäle, wobei ein Kanal kaum Differenzen aufweist.
Ist es möglich den Kanal mit number() 2 nur jedes zweite oder dritte mal zu übertragen?
Ist voltage so eine Art Setter, der die Übertragung auslöst, dann wäre das von mir schon selbst zu lösen.
Hättest Du einen Tipp für mich falls voltage nicht als Setter fungiert, aber nur wenn diese Anpassung nicht zu umfangreich wird.

Leider bin ich selbst nur c# und Java Entwickler und tue mir mit c++ noch etwas schwer, die AskSin Library habe ich mir auch noch nicht so richtig angesehen.

Viele Grüße
Roland

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: Spannungsüberwachung (12V bzw. 24V) mit "Klartextanzeige"

Beitrag von jp112sdl » 27.10.2018, 11:30

Hallo Roland,

es gibt den zeitgesteuerten Trigger:

Code: Alles auswählen

    virtual void trigger (__attribute__ ((unused)) AlarmClock& clock) {
      measure();
      ...
      msg.init(device().nextcount(), number(), voltage);
      device().sendPeerEvent(msg, *this);
      sysclock.add(*this);
    }
   
Als einfache Lösung würde ich vorschlagen, du baust dort einen Zähler ein.

Code: Alles auswählen

 virtual void trigger (__attribute__ ((unused)) AlarmClock& clock) {
      static uint8_t ch2cnt = 0;
      measure();
      ...
      
      bool sendMessage = true;
      if (number() == 2) {
        if (ch2cnt < 2) {
          ch2cnt++;
          sendMessage = false;
        } else {
          ch2cnt = 0;
        }
      }
           
      if (sendMessage == true) {
        msg.init(device().nextcount(), number(), voltage);
        device().sendPeerEvent(msg, *this);
      }
      sysclock.add(*this);
    }
Ungetestet und nur fix hier reingetippt.
Hilft dir aber vielleicht weiter.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

RolandF
Beiträge: 122
Registriert: 22.06.2014, 19:01
Hat sich bedankt: 3 Mal
Danksagung erhalten: 5 Mal

Re: Spannungsüberwachung (12V bzw. 24V) mit "Klartextanzeige"

Beitrag von RolandF » 27.10.2018, 12:15

Hallo Jérôme,
ich bin immer wieder überwältigt von Deiner Geschwindigkeit.

Da ich nicht so schnell bin wie wie Du, werde ich das im Laufe des Nachmittags testen und dann vom Ergebnis berichten.

Viele Grüße
Roland

Edit:Funktioniert perfekt, die Anzahl der zu überspringenden Sendungen habe ich in einer Konstanten am Programmanfang definiert, und wird immer auf den letzten Kanal angewendet:

Code: Alles auswählen

      bool sendMessage = true;
      if (number() == NUM_CHANNELS) {
		 if (ch2cnt < LAST_CHANNEL_LEAVE_COUNTER) {
		   ch2cnt++;
		   sendMessage = false;
		 } else {
		   ch2cnt = 0;
		 }
	  }
	  if (sendMessage) {
		msg.init(device().nextcount(), number(), voltage);
		device().sendPeerEvent(msg, *this);
	  }

Cybertron
Beiträge: 123
Registriert: 08.12.2014, 09:31
Hat sich bedankt: 1 Mal

Re: Spannungsüberwachung (12V bzw. 24V) mit "Klartextanzeige"

Beitrag von Cybertron » 08.04.2019, 13:07

Hallo zusammen,

ich wollte meine Netzspannung mit Hilfe eines ZMPT101B in Verbindung mit dem HB-Uni-Sen-Volt überwachen.
Leider verzweifle ich mangels Programmierwissen an der Implentierung der Messroutine.

Ich habe inzwischen einen Sketch, der mit dem ZMPT101B saubere recht genaue Werte liefert.

Code: Alles auswählen

/* This code works with ZMPT101B AC voltage sensor module and 128x32 OLED display
 * It permits you to measure any AC voltage up to 250V, BE CAREFUL !!!
 * The functions from Filters library permits you to calculate the True RMS of a signal
 * Refer to www.surtrTech.com or SurtrTech YouTube channel for more details
 */

#include <Filters.h> //Easy library to do the calculations

float testFrequency = 50;                     // test signal frequency (Hz)
float windowLength = 40.0/testFrequency;     // how long to average the signal, for statistist

int Sensor = 0; //Sensor analog input, here it's A0

float intercept = -0.04; // to be adjusted based on calibration testing
float slope = 0.0405; // to be adjusted based on calibration testing
float current_Volts; // Voltage

unsigned long printPeriod = 1000; //Refresh rate
unsigned long previousMillis = 0;


void setup() {
  Serial.begin( 9600 );    // start the serial port
}

void loop() {
  
  RunningStatistics inputStats;                //Easy life lines, actual calculation of the RMS requires a load of coding
  inputStats.setWindowSecs( windowLength );
   
  while( true ) {   
    Sensor = analogRead(A0);  // read the analog in value:
    inputStats.input(Sensor);  // log to Stats function
        
    if((unsigned long)(millis() - previousMillis) >= printPeriod) {
      previousMillis = millis();   // update time every second
            
      Serial.print( "\n" );
      
      current_Volts = intercept + slope * inputStats.sigma(); //Calibartions for offset and amplitude
      current_Volts= current_Volts*(40.3231);                //Further calibrations for the amplitude
      
      Serial.print( "\tVoltage: " );
      Serial.print( current_Volts ); //Calculation and Value display is done the rest is if you're using an OLED display

    }
  }

}
Wenn ich aus diesem Code den "loop-Teil" als Messroutine ohne die while-Schleife nutze kommt nur Mist raus.
Mit der Schleife hängt das Ganze dann ja fest.


Hat jemand ne Idee, wie ich dies in der Messroutine umsetzen kann?


Danke & Gruss
Silvio
--------------------------------------------
770 Kanäle und 3439 Datenpunkte in 223 Geräten:

MS24779
Beiträge: 45
Registriert: 18.04.2015, 15:41
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: Spannungsüberwachung (12V bzw. 24V) mit "Klartextanzeige"

Beitrag von MS24779 » 22.05.2019, 16:13

Hallo zusammen...

Möchte an dem HB-UNI-Sen-VOLT gerne einen Regensensor mit Analogausgang anschließen. Dieser liefert je nach aufgeschlagener Regenmenge 0-max. Eingangsspannug Regensensor (3,3V).

Demnach müsste er sich doch ohne weitere Beschaltung anschließen lassen.

Ich blicke allerdings die Programmierung nicht. Wie immer :-(

Welcher Pin ist durch den Sketch als Messeingang vorgegeben ?

Was muss ich an dem Sketch ändern. Dieses Voltage = random muss doch bestimmt raus, oder.

Ratlos :roll:

Wäre toll wenn mir einer helfen könnte. DANKE

TomMajor
Beiträge: 1793
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 175 Mal
Danksagung erhalten: 399 Mal
Kontaktdaten:

Re: Spannungsüberwachung (12V bzw. 24V) mit "Klartextanzeige"

Beitrag von TomMajor » 22.05.2019, 17:24

Um die Messung musst du dich selber kümmern, also das random raus und dann so was in der Art

Code: Alles auswählen

val = analogRead(A0);
Pins A0..A5 sind beim Pro Mini etc. möglich.
Siehe auch
https://www.arduino.cc/reference/en/lan ... nalogread/

val hat dann erst mal den Rohwert, den du je nach Spannungsteiler, Ref.spannung usw. in eine Spannung umrechnen kannst.
Viele Grüße,
Tom

MS24779
Beiträge: 45
Registriert: 18.04.2015, 15:41
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: Spannungsüberwachung (12V bzw. 24V) mit "Klartextanzeige"

Beitrag von MS24779 » 23.05.2019, 13:58

:mrgreen: TOP! Danke

Erbit
Beiträge: 29
Registriert: 19.03.2019, 09:19
Danksagung erhalten: 1 Mal

Re: Spannungsüberwachung (12V bzw. 24V) mit "Klartextanzeige"

Beitrag von Erbit » 01.06.2019, 01:35

Hallo Jérôme,


Can you create a pulse counting template based on HB-UNI-Sen-VOLT?

The universal pulse counter should configure:
- unit of measure
- the conversion factor (in decimal order, then the float could be entered for multiplication and division)

For example, some electricity meters give 1000 impulses per 1kWh and other counters a different number of pulses.

Uses of a universal pulse counter can be many. Water meters (in the home irrigation system and at home), electricity meters, gas meter, other counters (for example, rev counter in a simple actuator for windows and doors).

The new template could be called HB-UNI-Sen-PULSE ;)

Best regards
Robert

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: Spannungsüberwachung (12V bzw. 24V) mit "Klartextanzeige"

Beitrag von jp112sdl » 01.06.2019, 08:31

Hi,
Erbit hat geschrieben:
01.06.2019, 01:35
Uses of a universal pulse counter can be many. Water meters (in the home irrigation system and at home), electricity meters, gas meter, other counters (for example, rev counter in a simple actuator for windows and doors).
Therefore you can use the HM-ES-TX-WM.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Erbit
Beiträge: 29
Registriert: 19.03.2019, 09:19
Danksagung erhalten: 1 Mal

Re: Spannungsüberwachung (12V bzw. 24V) mit "Klartextanzeige"

Beitrag von Erbit » 01.06.2019, 16:29

jp112sdl hat geschrieben:
01.06.2019, 08:31
...
Therefore you can use the HM-ES-TX-WM.
Thank you, I'll check it.

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“