Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Abweichung zur Netzfrequenz auf https://www.netzfrequenzmessung.de/ #1

Open
JsBergbau opened this issue May 22, 2021 · 7 comments
Open

Comments

@JsBergbau
Copy link

Hallo,

erstmal danke für diesen sehr interessanten Ansatz die Netzfrequenz zu messen.
Wie groß waren deine gemessenen Abweichungen? Hast du sie mal aufgezeichnet? Könnte es einfach daran gelegen haben, dass die Netzfrequenz übers Internet etwas zeitverzögert übermittelt wird?

@ratopi
Copy link
Owner

ratopi commented Jun 16, 2021

Hi,

ich denke nicht, daß es am Zeitverzug lag. Ich weiß nicht mehr exakt wie groß die Abweichung war, sie war aber ziemlich klein, was aber sichtbar. Ich hatte damals die Annahme, daß das an der ungenauen Taktfrequenz des Arduino lag.

Ich müsste das nochmal aktivieren um mir das dann nochmal genau anzusehen.

Falls Du weitere Ideen oder Erfahrungen hast, sehr gerne.

@Radulfur
Copy link

Moin,
vielen Dank für die Anregung. Ich bin zufällig auf Deinen Ansatz gestoßen. Vielen Dank dafür!

Die Abweichung liegt m.E. nicht an der Taktfrequenz des Arduino. Der Algorithmus kann aber im schlimmsten Fall eine ganze erste Halbwelle des Signals verpassen. Das würde dann schon allein etwa 1% Fehler bedeuten. Dazu kommt, daß das Signal kein sauberer Sinus ist. Damit werden u.U. zu kurze Perioden gemessen.
Die serielle Ausgabe der Frequenz sollte außerhalb der Zeitmessung liegen.

Ich habe noch die Antenne über eine Diode mit Masse verbunden, um nur die positive Halbwelle zu bekommen. Nach diesen Änderungen liegt meine Abweichung gegenüber den Internetwerten im Normalfall unter 0,01Hz. Platform ist bei mir eine NodeMCU.

main.txt
.

@JsBergbau
Copy link
Author

Hallo Radulfur,

vielen Dank, dass du die den Code verbesserst. Ich sehe, du bist ganz neu bei Github. Vielen Dank, dass du dich extra registriert hast um deine Verbesserungen uns mitzuteilen.
Damit andere Nutzer leicher etwas davon haben, kannst du oben auf "Fork"
grafik
klicken. Du hast dann eine eigene Kopie des Quellcodes. Dort nimmst du dann die Änderungen vor, insbesondere auch an der Readme.md bezüglich der Diode.
Anschließend kannst du davon auf "Pullrequests" klicken und dann auf den Button "New pullrequest"
grafik

ratopi kann dann deine Änderungen übernehmen. Wenn sie übernommen sind, bietet Github dir an, dass du die Kopie bei dir wieder löscht. Sollte er die Änderungen nicht übernehmen, wird irgendwann deine Version primär bei Google gefunden werden.
Wenn du noch weitere Fragen zur Benutzung von Github hast, erstelle einfach hier https://github.com/JsBergbau/Verschiedenes/issues ein neues Thema, dann können wir dort diskutieren und hier bleibt die Übersichtlichkeit für andere gewahrt.

@ratopi
Copy link
Owner

ratopi commented Jan 23, 2022

Hi @Radulfur ,
vielen Dank für Deine Hinweis. Ich hatte noch keine Zeit das zu verfizieren. Klingt aber sehr gut. Der Ansatz mit der Diode halte ich auch für sehr sinnvoll.

@ratopi
Copy link
Owner

ratopi commented Jan 23, 2022

@Radulfur. Ich habe mal Deine Änderungen im Branch "fix/messung" abgelegt. Ich versuche das mal zeitnah bei mir zu verfizieren..

PS: War das eine Schottky-Diode oder eine gewöhnlich Silizium-Diode? Schottky habe ich gerade nicht da, könnte mir aber vorstellen, daß es eventuell Vorteile bringen würde.

@Radulfur
Copy link

Moin Ratopi,
ich habe eine gewöhnliche 1N400x benutzt, die ich gerade zur Hand hatte. In Sachen Elektronik bin ich nicht so bewandert, aber theoretisch wäre Schottky wohl besser. Da meine Antenne in unmittelbarer Nähe eines Stromkabels lag, war es beim Testen evtl. nicht so relevant.
Mit der Diode sind die Nulldurchgänge etwas leichter aufzulösen. Trotzdem kam es noch zu Fehlmessungen. Daher habe ich ein paar (SecSamples) Sicherheitmessungen eingeführt, die den Ausgabewert von analogread quasi ignorieren, um die Leseschleifen nicht versehentlich vorzeitig abzubrechen und zu starten. Der Wert 100 paßte zu meinem Prozessor. Für einen Atmega muß er evtl. angepaßt werden. Ein entsprechend langes sleep würde sicher das Gleiche leisten. Insgesamt muß ich den Code noch etwas aufräumen, spätestens dann, wenn ich noch MQTT zur Anbindung an FHEM einbauen will.
P.S. Bei meiner NodeMCU hängt A0 ja an einem Spannungteiler. Insofern könnte die Schaltung bei einem echten Arduino geringfügig anders ausfallen.

@fractalwalkr
Copy link

Hallo zusammen

Auch von mir danke für diesen Ansatz und die Anregungen.

Ich konnte ebenfalls grössere Abweichungen feststellen bei Verwendung von Arduino-Boards. Ich habe mit einem Orginal-Uno, einem Uno-Clone und einem Arduino Nano Clone getestet. Alle drei hatten Abweichungen. Die grössten hatte ich mit dem Original Uno und zwar bis 0.1 Hz zu hoch, selbst mit den Codeanpassungen von Radulfur.

Der Grund dafür ist wohl, dass die Boards keinen Quarz sondern einen ungenaueren Resonator verwenden. Daher habe ich den Aufbau standalone mit dem Atmega328P-Chip und einem Quarz probiert. Tatsächlich hat sich die Genauigkeit stark verbessert. Der Messfehler ist bei mir damit ebenfalls bei nur 0.01 Hz.

Ich vermute, dass die NodeMCU-Platform auch einen Quarz nutzt.

Zusätzlich habe ich noch paar Anpassungen für die Anzeige auf einem TTF-Display gemacht. Code dazu ist in meinem Fork. Falls interesse besteht, kann ich einen Pull Request machen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants