{"id":122,"date":"2015-03-15T17:26:28","date_gmt":"2015-03-15T17:26:28","guid":{"rendered":"http:\/\/techblog.auchmonoabspielbar.de\/?p=122"},"modified":"2016-06-06T19:28:00","modified_gmt":"2016-06-06T19:28:00","slug":"frequenzzaehler-periodenmesser-mit-einem-pic32-teil-7","status":"publish","type":"post","link":"http:\/\/techblog.auchmonoabspielbar.de\/?p=122","title":{"rendered":"Frequenzz\u00e4hler\/ Periodenmesser mit einem PIC32 \u2013 Teil 7"},"content":{"rendered":"<p>Heute habe ich mich mal hingesetzt um den Schaltplan und die Funktionsweise der Counter Teils aufzuzeichnen.<\/p>\n<p>Die Funktionsweise ist eigentlich einfach. Wenn man einfach nur die Signalimpulse \u00fcber einen definierten Zeitraum (der Torzeit) z\u00e4hlen w\u00fcrde, w\u00e4re es praktisch nicht m\u00f6glich bei niedrigen Frequenzen eine vern\u00fcnftige Aufl\u00f6sung zu bekommen. F\u00fcr eine 6-stellige Anzeige ben\u00f6tigt man 1 Millionen Takte. Bei 100 Hertz w\u00e4re daf\u00fcr eine Torzeit von 10.000 Sekunden n\u00f6tig &#8211; rund 3 Stunden.<\/p>\n<p>Alternativ dazu kann man die Periode messen. Dazu gibt das Messsignal die Torzeit vor und man z\u00e4hlt, wie viele Takte das Referenzsignal in dieser Zeit abgibt. Das ist bei 100 Hertz gut machbar, bei 1 MHz wiederum kaum mit guter Genauigkeit m\u00f6glich. <\/p>\n<p>Das hier verwendete Messprinzip ist im Wesentlichen eine Kombination der beiden Messmethoden. Bei einer Messung werden gleich zwei Z\u00e4hler aktiv. \u00dcber den Zeitraum der Torzeit z\u00e4hlt ein Counter die Takte der Referenzfrequenz und ein weiterer die Takte der Signalfrequenz. \u00dcber das D FlipFlop wird sicher gestellt, dass die tats\u00e4chliche Torzeit immer nur ganze Perioden der Signalfrequenz betr\u00e4gt. Andernfalls w\u00fcrde man bei niedrigen Frequenzen einen erheblichen Messfehler bekommen.<\/p>\n<p><a href=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2015\/03\/Schaltplan-Counter.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2015\/03\/Schaltplan-Counter.png\" alt=\"Schaltplan Counter\" width=\"1206\" height=\"957\" class=\"alignleft size-full wp-image-123\" srcset=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2015\/03\/Schaltplan-Counter.png 1206w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2015\/03\/Schaltplan-Counter-300x238.png 300w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2015\/03\/Schaltplan-Counter-624x495.png 624w\" sizes=\"auto, (max-width: 1206px) 100vw, 1206px\" \/><\/a><\/p>\n<p>Das Diagramm zeigt ein Eingangssignal von 12,5 MHz an Pin A. <\/p>\n<p>Wenn der Microcontroller eine neue Messsequenz einleiten will, setzt er Pin B auf 1. Da das D FlipFlop ein invertiertes Signal bekommt, wird mit der n\u00e4chsten fallenden Signalflanke die Torzeit beginnen, der Ausgang Q des FlipFlop springt dann auf 1 (Pin C)<\/p>\n<p>Mit dem Beginn der Torzeit werden \u00fcber die beiden UND Gatter die beiden Counter f\u00fcr Signal- und Referenzfrequenz freigeschaltet und z\u00e4hlen nun hoch (Pin D und E an Pin 2 und 4 des Microcontrollers).<\/p>\n<p>Der Microcontroller kann den Beginn der Torzeit \u00fcber seinen Input &#8211; Pin C (an Pin 3 des PIC) lesen. Jetzt wartet er die gew\u00fcnschte Zeit ab (z.B. ca. eine Sekunde) und setzt den Pin B wieder auf 0 zur\u00fcck. Die genaue Zeit ist hier nicht wichtig, sie geht nicht in das Messergebnis ein solange sie ausreichend gro\u00df f\u00fcr die gew\u00fcnschte Aufl\u00f6sung ist.<\/p>\n<p>Das Tor bleibt jetzt aber noch offen &#8211; bis zur n\u00e4chsten fallenden Flanke des Signals. Damit ist sicher gestellt, dass nur ganze Signalperioden gelesen werden. Wenn der Microcontroller feststellt, dass am Pin C wieder 0 anliegt, wei\u00df er, dass eine Messperiode abgeschlossen ist. Nun kann er die Counter einlesen und das Ergebnis berechnen.<\/p>\n<p>Im Bild sieht man die (viel zu kurze) Torzeit des Microcontrollers am Pin B von 200 nS (5 Referenz-Takte). Durch die Synchronisierung mit dem Signal wird die tats\u00e4chliche Torzeit auf 6 Takte gedehnt (Pin C). In dieser Zeit werden 3 steigende Flanken des Signals gez\u00e4hlt und 6 steigende Flanken der Referenz.<\/p>\n<p>Aus diesen Werten kann nun die tats\u00e4chliche Signalfrequenz ermittelt werden:<br \/>\nSignalfrequenz = Signal-Takte * Referenzfrequenz \/ Referenz-Takte = 3 * 25000000 \/ 6 = 12500000<\/p>\n<p>Nat\u00fcrlich ist die Torzeit in der Zeichnung viel zu kurz. Tats\u00e4chlich w\u00fcrde man hier eher eine Torzeit von ca. einer halben Sekunde w\u00e4hlen. Das kann ich nur nicht vern\u00fcnftig Zeichnen. In diesem Fall w\u00fcrde die Rechnung vielleicht so aussehen ( bei einer Torzeit 0,51 Sekunden):<br \/>\nSignalfrequenz = Signal-Takte * Referenzfrequenz \/ Referenz-Takte = 6375000 * 25000000 \/ 12750000 = 12500000<\/p>\n<p><strong><a href=\"http:\/\/techblog.auchmonoabspielbar.de\/?p=128\">Weiter zum Teil 8 und letzten Teil<\/a><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Heute habe ich mich mal hingesetzt um den Schaltplan und die Funktionsweise der Counter Teils aufzuzeichnen. Die Funktionsweise ist eigentlich einfach. Wenn man einfach nur die Signalimpulse \u00fcber einen definierten Zeitraum (der Torzeit) z\u00e4hlen w\u00fcrde, w\u00e4re es praktisch nicht m\u00f6glich bei niedrigen Frequenzen eine vern\u00fcnftige Aufl\u00f6sung zu bekommen. F\u00fcr eine 6-stellige Anzeige ben\u00f6tigt man 1 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-122","post","type-post","status-publish","format-standard","hentry","category-embedded"],"_links":{"self":[{"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/posts\/122","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=122"}],"version-history":[{"count":4,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/posts\/122\/revisions"}],"predecessor-version":[{"id":178,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/posts\/122\/revisions\/178"}],"wp:attachment":[{"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=122"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}