erstellt 03.04.2018
50 Hz Frequenzmesser
Warum 50 Herz messen ?
Grundprinzip der Frequenzmessung
Messmethoden
Schaltplan
Funktion
Programm
Fotos
Programm Download
Warum 50 Herz messen ?
Unser Stromnetz arbeitet mit einer Frequenz von 50 Herz, diese 50 Herz schwanken um maximal Plus/Minus 2 Herz.
Die Schwankung ist ein Maß für unserer Versorgungsqualität und wird im Tausendstel Herz Bereich von den Energie-Konzerne geregelt.
Unsere Energieversorgung ist so aufgebaut das die Energie die aktuell vom Kunden entnommen wird auch zum gleichen Zeitpunkt vom
Versorger zu Verfügung gestellt werden muss, es muss somit zu jedem Zeitpunkt für ein Gleichgewicht gesorgt werden.
Ist dieses Gleichgewicht mal nicht 100 Prozentig hergestellt, so äußert sich das in eine Frequenzänderung, bei einer zu hohen Entnahme durch
den Kunden verringert sich die Frequenz, und bei zu hoher Bereitstellung durch die Versorgungsunternehmen erhöht sich die Frequenz.

Die Regelung findet statt indem ständig die Frequenz gemessen wird, und je nach Höhe der Frequenz die Energie erzeugt wird, oder aber Lasten abgeschaltet werden.
Beispielsweise  werden bei  einer kleinen Abweichungen der Frequenz die Wasserschaufeln der Wasserkraftwerke etwas verdreht so das etwas mehr oder weniger an Energie erzeugt wird.
Bei großen Abweichungen, und groß heißt ca. 1 Herz, werden zum Beispiel Gaskraftwerke aktiviert oder aber deaktiviert , und "oder" es werden Pumpwasserkraftwerke
aktiviert bzw deaktiviert.

Durch die in letzter Zeit immer mehr hinzugekommenen erneuerbaren Energien , sprich Photovoltaik, Windkrafträder usw, und auch durch die vielen Privaten hinzugekommenen
Blockheizkraftwerke wird immer mehr Energie von sogenannten Kleinbetreiber eingespeist die von den Energieversorger nur sehr schwer kontrolliert bzw beeinflusst werden können.
Dadurch werden immer mehr Probleme verursacht weil viele dieser Energiequellen beispielsweise wenn bei plötzliche Windstille alle Windräder ausfallen oder wenn die Wolkendecke
aufreißt plötzlich alle Solarpaneele ihr Energie einspeisen .

Diese Differenzen  müssen  dann kurzfristig und sehr flexibel durch andere Energieträger ausgeglichen werden, was aber durch die Vielfalt immer schwieriger wird.
Die Energieregulierung funktioniert natürlich nicht mehr manuell, sondern wird durch Rechner kontrolliert und gesteuert, und diese nehmen bei Bedarf automatisch Kraftwerke vom Netz
oder schaltet Kraftwerke ein.

Für die Regelung gibt es genaue Europäische Richtlinien  die als Maß für die Regelungen dienen und zwingend eingehalten werden müssen weil sonst der sogenannte Blackout droht.
Blackout nennt man einen  Flächenmäßig großen Stromausfall , der von vielen Menschen völlig unterschätzt wird, weil er noch nie da war, und viele es sich deshalb auch nicht vorstellen können.
Aber es ist sicher , er wird kommen, wir wissen nur noch  nicht wann ?

Wenn ich den genauen Frequenzwert messe, und mit genau ist die dritte Stelle hinter dem Komma gemeint also Tausendstel Herz, kann ich mir einen Überblick über die aktuelle Stromlage in Deutschland machen.
nach oben
Grundprinzip der Frequenzmessung
Das Grundprinzip einer Frequenzmessung beruht darauf das die Anzahl der eingehenden Schwingungen idealerweise eine Sekunde lang Zeit gezählt werden um dann
das Ergebnis direkt als Frequenz zu Verfügung zu haben.
Die Messzeit kann aber auch variieren , dann muss das Ergebnis aber umgerechnet werden damit wir auf die Einheit Herz ( Schwingung pro Sekunde) kommen.
Wenn möglich sollte man darauf verzichten weil das Umrechnen die Ressource des Mikroprozessor beansprucht und daher nicht mehr für andere Funktionen zur Verfügung
steht, außerdem wird durch Rundungsfehler beim berechnen die Genauigkeit immer etwas verfälscht.
So könnte man beispielsweise die eingehenden Impulse nicht nur eine, sondern zehn Sekunden lang messen , und das Ergebnis dann durch 10 Teilen um auf das gleiche Ergebnis zu kommen.
Wobei die Messgenauigkeit mit der Länge der Messzeit zu nimmt.
Dieses Messverfahren wendet man oft bei Messungen von kleinen Frequenzen an, wenn wir beispielsweise eine Frequenz von 0,1 Hz messen wollen würden wir immer das Ergebnis Null
angezeigt bekommen wenn die Messzeit eine Sekunde betragen sollte.
Es kann  also die Messzeit verlängert werden auf beispielsweise 10 Sekunden. Es wird dann in 10  Sekunden ein Impuls gemessen, dieser Messwert
durch 10 geteilt um dann auf den Wert von 0,1 zu kommen.
Das hat allerdings den Nachteil das immer eine relativ lange Zeit nämlich 10 Sekunden auf das Messergebnis gewartet werden muss.
Genauso gut kann aber auch die Messzeit verringert werden um sehr hohe Frequenzen zu messen.
Die Messzeit sollte bei sehr genauen Messungen also immer der zu erwartenden Frequenz angepasst werden um einerseits relativ genau zu messen, und
andererseits nicht zu lange auf das Ergebnis warten zu müssen.

nach oben
Messmethoden
Hier einige Messmethoden :



Hier wird die Methode angewandt in der mit Hilfe von Timer 1 ein Sekundentakt erzeugt
wird, während nach jeweils jeder Sekunde eine Routine angesprungen wird in welcher dann
die eingehenden Impulse mit Timer Null gezählt und anschließend angezeigt werden.
Anschließend werden die gezählten Impulse wieder gelöscht, und der Vorgang beginnt von vorne.



Kleine Frequenzen misst man am besten indem man beispielsweise bei der ansteigende
Flanke des zu messenden Signales einen Taktgenerator startet und dann die Impulse des
Taktgenerators bis zur nächsten ansteigen der Flanke zählt , wenn ich zuvor weiß wie viele
Takte mein Generator pro Zeit abgibt , kann ich daraus die zu messende Frequenz berechnen.
Je höher die Taktfrequenz des Taktgenerators umso genauer das Messergebnis.
Beispiel: Ich habe einen Taktgenerator mit 100 KHz Frequenz und möchte zum Beispiel ein Signal
von 50 Hz messen.
Ich starte also beim eintreffen der aufsteigende Flanke meinen 100 KHz Taktgenerator ,
und stoppe den Taktgenerator wieder mit der nächsten aufsteigende Flanke.
Die Impulse des Taktgenerators  werden gezählt und ergeben den Wert von 2000.
Da eine Periode eines 100 KHz Signal 0,00001 Sekunden dauert, multipliziere ich diese Zeit
mit Anzahl der Impulse und komme auf 0,02 Sekunden und 0,02 Sekunden sind 50 Herz.

Die Pulsmessung ist eine Möglichkeit von vielen um eine Frequenz zu messen.
Unter Bascom gibt es den Befehl "Pulsein" mit dem  man einen bestimmten Portanschluss definiert
an dem dann das zu messende Signal angelegt wird.
Der Atmega selber hat einen integrierten  16 Bit Zähler der also bis 65535 zählen kann,
das macht er völlig unabhängig vom laufenden Programm somit wird der Rest des Programms nicht
beeinflusst.
Es wird  je nach Konfiguration bei einer ansteigenden oder absteigende Flanke ein interner
Zähler gestartet der alle 10 Mikrosekunden seinen Wert um Eins erhöht um dann bei der
nächsten absteigende oder ansteigende Flanke das Ergebnis aus zu geben.
Anschließend wird der Zählwert automatisch gelöscht, um dann bei der nächsten Flanke
wieder erneut zu zählen.
Der Zähler allerdings ist abhängig vom Prozessor Takt, somit werden auch die
10 Mikrosekunden nicht sehr genau sein.


nach oben

Schaltplan


nach oben
Funktion
Funktion:
Das zu messende Signal wird dem aufgefangenen Elektrosmog entnommen und einen Cmos Schmitt Trigger zugeführt.
vom Ausgang des Schmitt Trigger geht das Signal auf Pin 4 vom Atmega
Es wird an jeder ansteigende Flanke an Pin 4 ein interner Zähler aktiviert der alle 10 Mikrosekunden ein Wert von 1 auf addiert.
Dieser Wert in der Variable "Pulszeit" wird dann mit dem Faktor 2 multipliziert um auch die zweite Halbwelle mit zu erfassen.
Dann wird durch die Zeit von 10 Mikrosekunden geteilt, weil der Prozessor aber nur eine Rechnung pro Schritt vollziehen kann wird erst durch 10 und anschließend noch mal
durch 1000000 geteilt.
In der Berechnung kommt ein Wert von 2000 heraus, in der Praxis sind es aber 2090 und damit eine angezeigte Frequenz von 47,8469 Herz.
Diese Ungenauigkeiten können durch anpassen des Wertes 1000000 ausgeglichen werden.
Wird der Wert von 1 000 000 durch den Wert 1 044 999 angepasst ergibt sich die
Frequenz von  50,000 Hz.
Das bedeutet das die Zeit pro Zählwert nicht wie im Datenblatt angegeben bei 10 Mikrosekunden liegt sondern in der Praxis bei 9,56 Mikrosekunden.
nach oben
Programm
$regfile "m8def.dat" Definiert den Controller als Atmega 8
$crystal = 16000000 16 MHZ Quarz als Taktgeber
$hwstack = 32 Reservierter Speicher
$swstack = 10 Resevierter Spaeicher
$baud = 9600 Übertragungsgeschwindigkeit für Seriel
Config Lcd = 20 * 4 LCD Festlegen mit 20 Zeichen a 4 Zeilen
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , Rs = Portc.5 , E = Portc.4 LCD Anschlüsse festlegen
Ddrd.5 = 1                                                                                                             
Ausgang Für Led Gelb setzen
Ddrd.0 = 1
Ddrb.2 = 1                                                                                                             
Ausgang für Display Beleuchstung
Ddrd.7 = 1                                                                                                             
Ausgang für Rote Led setzen
Dim Pulszeit As Integer
Dim Zeit As Single
Dim Frequenz As Single
Dim Freq As String * 8
Dim Zeit_format As String * 8
Cls
Portb.2 = 1                                                                                                            
Display beleuchstung einschalten
Locate 1 , 1
Lcd " 50 Hz Zaehler"
Locate 2 , 1
Lcd "Pulsmessung"
Locate 3 , 1
Lcd "23.04.2018"
Wait 1
Cls                                                                                                                    
Display löschen
Do
Pulsein Pulszeit , Pinb , 0 , 0                                                                                        
Zeit für eine Halbwelle wird gemessen
Pulszeit = Pulszeit * 2                                                                                                
Verdoppeln um beide Halbwellen zu haben
Zeit = Pulszeit * 10                                                                                                   
10 us mal Pulszeit
Zeit = Zeit / 1188000
'Zeit = Zeit / 1044999                                                                                                 
durch Million weil Mikrosekunden
Frequenz = 1 / Zeit                                                                                                    
Kehrwert der Zeit um auf Frequenz zu kommen
Freq = Fusing(frequenz , "#.##")                                                                                       
Ausgangsanzeige  formatieren
Zeit_format = Fusing(zeit , "#.######")
Gosub Anzeige

Toggle Portd.7
Waitms 999
 Loop
 Anzeige:
Portd.5 = 1     

Sendeleuchte   an
Print Freq
Waitms 200
Portd.5 = 0       

Sendeleuchte aus
Cls
Locate 1 , 1
Lcd "Pulse=" ; Pulszeit
Locate 2 , 1
Lcd "Zeit=" ; Zeit_format
Locate 2 , 17
Lcd "Sek."
Locate 3 , 1
Lcd "Frequenz=" ; Freq
Locate 3 , 17
Lcd "Hz"
Waitms 1000
Return
nach oben
Fotos

nach oben

Genauigkeit
Um die Messgenauigkeit zu erhöhen wird soll später noch die Frequenz 5 mal hintereinander gemessen werden und daraus dann der Mittelwert berechnet werden.
Fragen , Anregeungen und Kritik bitte hier





Aktualsisiert 07.02.2019