Stromnetz-Frequenz-Messung mit ESP8266

Begonnen von JoWiemann, 16 Juni 2021, 15:23:51

Vorheriges Thema - Nächstes Thema

Papa Romeo

Zitat von: Papa Romeo am 17 Juni 2021, 19:10:55
... so einen aufwendigen Aufbau mit eigenem Atmega ...

...muß das "aufwendig" leider zurückziehen. Ich hab mir mal eben den Schaltplan des Frequenzmessers angeschaut (jetzt ist mir auch das mit dem CD4093 von frober klar)
und da ist ja ausser den beiden Opto´s, dem CD4093 und dem Atmega nicht´s dran.

Und daraus ergibt sich mir dann schon die nächste Frage. Jörg bist du dir sicher daß deine "Frequenzabweichungen" alle vom Netz kommen bzw. wie genau oder verlässlich sollen die Messergebnisse sein.
Messen heißt vergleichen und für den Vergleich benötigt man ein sehr,sehr, sehr genaue Referenz. Hier jetzt also eine sehr, sehr, sehr genaue Zeitbasis.

Ich will jetzt niemanden etwas "madig machen" würde aber behaupten, dass der Atmega, besser gesagt seine Zeitbasis mit dem 10 Mhz Quarz,
schon auch einiges dazu beisteuert.

Wie ich sehe, misst du bis auf 3 Stellen hinter dem Komma, da sollte der Quarz aber schon sehr gut ausgewählt sein. Im Idealfall sollte er eine "Accuracy ±2ppm" oder besser aufweisen und das wird er sicherlich nicht. So etwas erreichen RTC´s. Hier kann man dann auch gleich den 1 Hz SQW-Ausgang nutzen.

Ich hab´s gerade nochmal gesucht, aber ich find´s nicht mehr. Hab wahrscheinlich die ganzen Unterlagen mitgegeben. Ich hab vor Jahren für eine Firma so etwas gebaut.
Mit einem UAA1004 (Nulldurchgangsdetektor, ermöglicht die getrennte Messung beider Halbwellen), entsprechenden Teilern und dem 1Hz Ausgang eines GPS-Empfängers.
(Und da isses wieder ... Schaltplan ... wer braucht nen Schaltplan... :( ) ... ich glaube, das ist im Moment für Bastler immer noch das genaueste was geht.

LG
Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

JoWiemann

Zitat von: Papa Romeo am 17 Juni 2021, 22:31:02

Ich will jetzt niemanden etwas "madig machen" würde aber behaupten, dass der Atmega, besser gesagt seine Zeitbasis mit dem 10 Mhz Quarz,
schon auch einiges dazu beisteuert.

Wie ich sehe, misst du bis auf 3 Stellen hinter dem Komma, da sollte der Quarz aber schon sehr gut ausgewählt sein. Im Idealfall sollte er eine "Accuracy ±2ppm" oder besser aufweisen und das wird er sicherlich nicht. So etwas erreichen RTC´s. Hier kann man dann auch gleich den 1 Hz SQW-Ausgang nutzen.


Hallo Papa Romeo,

ich verlasse mich da auf die Arbeit von Jens Müller.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Papa Romeo

Klar, passt schon ... waren eben nur so meine Gedanken, da ich früher zu meiner aktiven BW-Zeit viel mit "Frequenznormalen" zu tun hatte und unter Umständen
ein paar Mikrosekunden schon fatal waren.

LG
Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

herrmannj

#18
der UAA1004 überzeugt mich von der Idee eigentlich auch mehr als die oc + schmitt trigger kombi.

@gisbert: ich hab noch eine andere Idee. Lass mich da mal virtuell löten und dann gehen wir in einen neuen thread, um den hier nicht zu kapern...

Done, ab morgen: define nf netzfrequenz

herrmannj

#19
Moin. Mag mal bitte jemand diese Schaltung bewerten? Ist ein simpler zero-crossing detector mit optokoppler: https://cdn.hackaday.io/files/1597066832861504/SimpleIsolatedZeroCrossDetector.pdf

Etwas bessere (trotzdem günstige) rtc werden +/-2ppm angegeben. Die können auch 1hz Signale ausgeben: https://wiki.seeedstudio.com/High_Accuracy_Pi_RTC-DS3231/

Hardwareseitig bräuchte man doch nicht viel mehr.

Für das oben (post dirket darüber) genannte fhem modul: da hab ich gesehen, dass das eine privat betriebene Seite ist. Ich habe den Betreiber angeschrieben und ihm mitgeteilt (um Duldung gebeten), dass ich mit einem fhem modul seine Daten abgreife. Der ist super nett, aber ein wenig skeptisch. Der Server ist wohl recht schmalbrüstig und er hat mal schlechte Erfahrungen gemacht, in der form das ihm schlecht geschriebene scripte den server so ausgelastet haben dass nix mehr ging. Kann sein, dass ich da nochmal eine neue Datenquelle suchen muss.

Dabei bin ich aber auf die Idee gekommen, dass wir das auch selber machen können. Irgendwo einen server hinstellen (geht vmtl auch über den verein), und per mqtt die Werte hochladen. Das könnte man ohnehin auch für alle anderen Sensoren machen (Wetter etc).

Hättet ihr Lust "da" (wie auch immer das dann konkret wird) Messwerte hochzuladen und mitzumachen? Hier also speziell die Netzfrequenz?

Danke, vg
Joerg

Christoph Morrison

Es gibt ja diverse Plattformen für sowas - ich beziehe z.B. Daten von OpenSenseMap. Dorthin könnte man diese Daten auch übertragen (sollte nicht all zu schwer mit FHEM-Bordmitteln sein).

Papa Romeo

Zitat von: herrmannj am 22 Juni 2021, 22:41:03
Moin. Mag mal bitte jemand diese Schaltung bewerten? Ist ein simpler zero-crossing detector mit optokoppler: https://cdn.hackaday.io/files/1597066832861504/SimpleIsolatedZeroCrossDetector.pdf

Hardwareseitig bräuchte man doch nicht viel mehr.


Hallo Joerg,

ist im Prinzip das Gleiche wie der UAA1004. Eventuell sogar idealer, da der Aufbau gegenüber dem UAA1004 keine eigene Spannungsquelle benötigt. Ich weiß noch, dass ich damals einen Trafo verwendt habe (Ausgangsspannung weiß ich leider nicht mehr, hab ich ausgetestet) da ich nicht unbedingt einen 15 kOhm/5 Watt Widerstand verbauen wollte.
Der Vorteil war natürlich dann die galvanische Trennung.

Als Zeitbasis muss es nicht unbedingt ein GPS-Empfänger sein. Ich denke der 1 Hz Ausgang eines RTC`s tut es von der Genauigkeit her auch.

Hardwaremäßig brauchst halt dann noch´n Teiler, da du ja alle 10 ms (100 Hz) einen Impuls erhältst, zum Vergleichen aber 1 Hz brauchst.

LG
Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Papa Romeo

Hab doch noch was gefunden.

Im Anhang die Schaltung und der Sketch an dem ich mich damals orientiert habe. Zur Auswertung hatte ich aber nen PIC eingesetzt, da ich zu der Zeit mit Arduino noch nicht so viel am Hut hatte. Als Eingangsstufe eben dann den UAA1004 und als Zeitbasis statt dem RTC ein ausrangierter USB-GPS-Empfänger.


#include <DS3231.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

DS3231  rtc(SDA, SCL);
LiquidCrystal_I2C lcd(0x27, 20, 4);

int led = 13;
int takt1, takt2;

// t1=Netzfrequenz, t2=Referenzfrequenz
volatile unsigned long t1a, t1b, t2a, t2b;
unsigned long dt1, dt2 = 0;
double f, df, df_mHz;

volatile int Pin2 = LOW;        // Interrupt Netz
volatile int Pin3 = LOW;        // Interrupt RTC


// Interrupt Netz
void ISR0(void)
{
  Pin2 = !Pin2;
  t1b = t1a;
  t1a = micros();
  takt1 = HIGH;
}

// Interrupt RTC
void ISR1(void)
{
  Pin3 = !Pin3;
  t2b = t2a;
  t2a = micros();
  takt2 = HIGH;
}

void lcd_z0(void) {
  //Zeile_0
  lcd.setCursor(0, 0);
  lcd.print("Netzfrequenzmessung");
}

void lcd_z1(void) {
  //Zeile_1
  lcd.setCursor(0, 1);
  lcd.print("  Messwert: ");
  lcd.print(f, 3);
  lcd.print("Hz");
  lcd.setCursor(0, 2);
  lcd.print("Abweichung:");
  if (df_mHz < 10 && df_mHz >= 0)   lcd.print("  ");
  if (df_mHz >= 10)                 lcd.print(" ");
  if (df_mHz < 0 && df_mHz > -10)  lcd.print(" ");
  lcd.print(df_mHz, 0);
  lcd.print("mHz  ");
}


void setup()
{
  Serial.begin(115200);

  rtc.begin();
  rtc.enable32KHz(true);
  rtc.setOutput(OUTPUT_SQW);
  rtc.setSQWRate(SQW_RATE_1);

  lcd.init();
  lcd.backlight();

  pinMode(Pin2, INPUT_PULLUP);
  pinMode(Pin3, INPUT_PULLUP);
  attachInterrupt(0, ISR0, RISING);
  attachInterrupt(1, ISR1, RISING);
  pinMode(led, OUTPUT);
 
  delay(2000);

  lcd_z0();
}

void loop()
{
  if (takt2) {

    // etwas rechnen
    dt1    = t1a - t1b;
    dt2    = t2a - t2b;
    f      = 50.0 / dt1 * dt2;
    df     = f - 50.0;
    df_mHz = df * 1000;

    // Ausgabe auf LCD
    lcd_z1();

    // Ausgabe auf seriellen Monitor
    Serial.print( f, 3);       Serial.print(" ");
    Serial.print( df, 3);      Serial.print(" ");
    Serial.println();

    // Takt der RTC
    digitalWrite(led, !digitalRead(led));

    // Sekundentaktmerker aus beiden ISR nullen
    takt1 = LOW;
    takt2 = LOW;
  }
}
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Christoph Morrison


herrmannj

Zitat von: Papa Romeo am 23 Juni 2021, 06:55:23
Hallo Joerg,

ist im Prinzip das Gleiche wie der UAA1004. Eventuell sogar idealer, da der Aufbau gegenüber dem UAA1004 keine eigene Spannungsquelle benötigt. Ich weiß noch, dass ich damals einen Trafo verwendt habe (Ausgangsspannung weiß ich leider nicht mehr, hab ich ausgetestet) da ich nicht unbedingt einen 15 kOhm/5 Watt Widerstand verbauen wollte.
Der Vorteil war natürlich dann die galvanische Trennung.

Als Zeitbasis muss es nicht unbedingt ein GPS-Empfänger sein. Ich denke der 1 Hz Ausgang eines RTC`s tut es von der Genauigkeit her auch.

Hardwaremäßig brauchst halt dann noch´n Teiler, da du ja alle 10 ms (100 Hz) einen Impuls erhältst, zum Vergleichen aber 1 Hz brauchst.

LG
Papa Romeo
thnx! Frage war auch Bereich Spannungsfestigkeit (Sicherheit) etc. Immerhin geht die verlinkte pdf direkt an 230v. Meiner Einschätzung nach aber unkritisch. Zur Sicherheit 'ne flinke Sicherung davor. ... Ich probiere das die Tage mal aus, hat jetzt keine Prio. Vielleicht setzt ich nen kleinen broker irgendwo in die cloud und bau eine mini webseite zur Anzeige. Keine prio ...

@christoph
das es sowas gibt ist klar. Ist ja eigentlich immer so. Wenns danach geht bräuchte man sich auch keine Netzfrequenz Mess Schaltung selber zu erstellen, zusammenzubauen, zu betreiben usw. Dann würde es diesen anregenden thread nicht geben.. ;)

Christoph Morrison

Zitat von: herrmannj am 23 Juni 2021, 17:10:49
das es sowas gibt ist klar. Ist ja eigentlich immer so. Wenns danach geht bräuchte man sich auch keine Netzfrequenz Mess Schaltung selber zu erstellen, zusammenzubauen, zu betreiben usw. Dann würde es diesen anregenden thread nicht geben.. ;)

Ich denke nicht, dass wir mit vertretbarem Aufwand eine bessere Plattform als OSM hinbekommen - eine recht überschaubare Schaltung ist auch kein guter Vergleich zu der Komplexität einer solchen Plattform. Und wenn wir keine bessere Plattform als OSM hinbekommen, wäre es reine Verschwendung eine zu bauen und zu betreiben. Aber ich möchte dich natürlich nicht aufhalten.

herrmannj

da ist meine msg falsch formuliert. Das selber bauen und nachdenken bei der Schaltung bezieht sich auf die Möglichkeit sowas fertig zu kaufen. Gibt es ja alles fertig (Netzfrequenzmessung), sicher auch gut abgehangen und getestet. Beim osm magste recht haben. Hab ja schon einige user unterstützt die Daten mit JsonMod auszulesen. Vielleicht ist es besser die Zeit in ein modul zu investieren um die Anbindung an osm zu verbessern. Hast da mglw durchaus recht

Papa Romeo

Zitat von: herrmannj am 23 Juni 2021, 17:10:49
thnx! Frage war auch Bereich Spannungsfestigkeit (Sicherheit) etc. Immerhin geht die verlinkte pdf direkt an 230v.

Hallo Joerg,

da brauchst du dir keine Sorgen zu machen. An den beiden 220 kOhm Widerständen fallen jeweils 110 Volt ab. Es reichen sogar 0,25 Watt Widerstände. Die restlichen 10 Volt verbleiben für den 22 kOhm Widerstand.(jetzt mal alles Effektiv gerechnet). Ich für meinen Teil würde, für eine noch bessere Sicherheit,  die 220 kOhm Widerstände in zwei Reihen-Widerstände mit 100 und 120 kOhm aufteilen (hohe Spannungen an hochohmigen Widerständen sollte man vermeiden). Eine weitere Option wär dann noch die 220 kOhm Widerstände und den Opto weg zu lassen und das ganze über einen Trafo zu machen. Dieser könnte dann auch gleich noch die Betriebsspannung für die Auswerte- und Anzeigeeinheit liefern.

Zu eurer Diskussion bezüglich den Plattformen sehe ich das als Elektroniker, Meß- u. Regeltechniker usw. so.
Ich habe nicht viel davon, wenn ich mir das Wetter von Gestern anschauen kann, um dann z.B. die Aussage treffen zu können "... ui gestern war´s ja schön, ich hätte an den See zum Baden fahren können".
Mag zwar ne tolle Sache sein um z.B. Statistiken erstellen zu können so nach dem Motto "Es war einmal...", aber ich kann auf die Veränderungen nicht mehr reagieren.

Bezogen auf die Netzfrequenz soll das heißen, ich will die Frequenz genau jetzt und an dem Ort an dem ich jetzt messe wissen um dann auch auf eventuelle Änderungen, wenn es denn sein muß, auch irgendwie entsprechend reagieren zu können.
(Ich nehme an, dass JoWiemann sich deswegen das Teil auch direkt in seine Unterverteilung gebaut hat und ich würd es genau so machen)

Was will ich mit einem Messwert, der von einem anderen Ort stammt und der zudem schon lange nicht mehr gültig ist. Einen Messwert aufzunehmen, nur damit ich ihn habe,
macht irgend wie keinen Sinn ... für mich zumindestens nicht und für JoWiemann denke ich auch nicht sonst hätte er bestimmt den Aufwand nicht betrieben.

LG
Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

andies

Bitte nicht falsch verstehen - aber wozu messt Ihr die Netzfrequenz? Die Temperatur ergibt ja Sinn (,,baden gehen" versus ,,ich brauche doch Handschuhe"), aber Hertz...
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

herrmannj

Die Frequenz ist ein ganz wesentlicher Indikator für die Netzstabilität. 49.8 .. 50.2 Hz liegt innerhalb dessen was ausgeglichen werden kann. Unter 50hz wird mehr Kraftwerksleistung zugeschaltet. Alles was außerhalb dieses Bandes liegt ist kritisch. Bis hin zur kompletten Abschaltung für einen dann längeren Zeitraum