Moin, ich weiß, dass ein ähnliches Thema schon zu genüge hier im Forum diskutiert wurde, aber irgendwie helfen mir die anderen Beiträge nicht weiter... Ich möchte folgendes bauen: Einen externen Frequenzmesser (im Bereich von 0 bis 300 Hz) für den PC. Der soll einfach ein Rechtecksignal zu einer Zahl umwandeln und dann zum Rechner schicken, so dass ich ihn da weiterverwenden kann... Ich hab mir schon einige Gedanken gemacht, aber ich weiß nicht ob ich umbedingt noch Bauteile vor den Controllereingang bauen muss... Und dann bin ich mir noch nicht ganz sicher, wie ich bei meinem Controller (ATmega 8) einen so "großen" Timerwert zur Auswertung erzeugen kann. Mache ich das so, dass ich den Counter immer bis max. hochzählen lasse und dann wieder zurücksetzte? greetz
Für die Messung so niedriger Frequenzen nimmt man am besten den ICP Eingang. Über die Input Capture Funktion kann dann der Zählerstand von Timer 1 (16 Bit) für die Flanken gemessen werden. Der Timer1 läuft dabei die ganze Zeit durch. Die Periodendauer egibt sich dann aus der Zeitdifferenz zwischen 2 Flanken der selben Sorte. Wenns einfach sein soll wählt man den Prescaler so, das sich die Zeitdifferenz noch als 16 Bit Wert darstellen läßt. Bei 0 Hz geht das natürlich nicht mehr.
> Moin, ich weiß, dass ein ähnliches Thema schon zu genüge hier im Forum > diskutiert wurde, aber irgendwie helfen mir die anderen Beiträge nicht > weiter... Wieso denn nicht? > Ich möchte folgendes bauen: Einen externen Frequenzmesser (im Bereich > von 0 bis 300 Hz) für den PC. Der soll einfach ein Rechtecksignal zu > einer Zahl umwandeln und dann zum Rechner schicken, so dass ich ihn da > weiterverwenden kann... Am simpelsten wär es, wenn dein Frequenzzähler jede volle Sekunde den Wert in einen String verpackt per UART verschickt. Hat dein PC denn noch eine serielle Schnittstelle? Falls ja nimm einen MAX232 (siehe Tutorial) und gut ist. Falls nicht besorg dir noch einen USB-Seriell-Wandler. Wenn du nur periodisch Strings an den Rechner sendest sollte hier sogut wie jeder Wandler (10€ Digitus Dongle) funktionieren. > Ich hab mir schon einige Gedanken gemacht, aber > ich weiß nicht ob ich umbedingt noch Bauteile vor den Controllereingang > bauen muss... Tja, kommt drauf an wie dein Signal aussieht (Signalpegel) und mit welcher Betriebsspannung du deinen Atmega8 betreiben willst/musst. Wo kommt dein zu messendes Signal her? Welche Spannung ist zu erwarten? Falls dein Controller mit +5V läuft und das Signal ebenfalls 5V-Pegel hat würde ich am Eingang einfach eine 5.6V Z-Diode gegen Masse und Betriebsspannung vorsehen. Das reicht als einfache Schutzbeschaltung. > Und dann bin ich mir noch nicht ganz sicher, wie ich bei meinem > Controller (ATmega 8) einen so "großen" Timerwert zur Auswertung > erzeugen kann. Mache ich das so, dass ich den Counter immer bis max. > hochzählen lasse und dann wieder zurücksetzte? Wieso, der 16-Bit Timer kann immerhin bis 65535 zählen, falls du ihn mit dem zu messenden Signal takten magst. Der 8-Bit Timer sorgt (per Interrupt) dann für eine Torzeit für 1s. Sobald die Torzeit rum ist startet gleich die nächste Messung und die letzte wird umgerechnet und verschickt.
@Hans Krabe Hier eine Minimalversion bis 5MHz mit Tiny2313 und serieller Schnittstelle. http://cappels.org/dproj/30MHzfmeter/30MhzFmtr.html
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.