Forum: Mikrocontroller und Digitale Elektronik Frequenzmessung mit Ausgabe über LCD-Anzeige


von Patrick B. (patrick_b87)


Lesenswert?

Hallo zusammen! Ich bin neu, deshalb erstmal vorab mein Name ;) ist zwar 
vermutlich auch so zu lesen, aber ich heiße Patrick :D!

Zurzeit habe ich mit einem Klassenkameraden eine Projektaufgabe. Unser 
Job ist es, mit dem ATmega8 eine Spannung zu erfassen, die Frequenz zu 
messen und im Anschluss auszugeben.

Nun treten bei mir, bzw. bei uns, mehrere Fragen auf. Zu Beginn 
ersteinmal wäre es gut zu wissen, ob unsere Richtung denn schonmal 
stimmt. Wir haben vor, die externe Referenzspannung an PC0 "einzulesen". 
Nun müssen wir den höchsten Punkt der Sinuskurve erfassen (oder aber 
auch die steigende Flanke?) um ab diesem Zeitpunkt, bis zum nächsten 
höchsten Punkt (also eine Phasenlänge) den Counter1 mitlaufen zu lassen, 
um im Anschluss die Frequenz zu berechnen und dann auszugeben. Mit der 
Ausgabe haben wir uns bisher recht wenig beschäftigt, da die ersten 
beiden Schritte wichtiger sind.

Nun wäre ich auf eure Meinung gespannt, ob wir da auf dem richtigen 
Dampfer sind, oder ob ihr uns jetzt schon Verbesserungen vorschlagen 
könntet, bevor wir Zeit verschleudern.

Wenn dieser Weg dann geklärt wäre, kommen von mir sicher noch sehr viel 
mehr Fragen, speziell zum A/D-Wandler (da dies mein Part in der Gruppe 
ist).

Patrick

von Patrick B. (patrick_b87)


Lesenswert?

Super Antwort :D

Unser Job ja, aber wir bitten um Hilfe ;)

der liebe Lukas ist übrigens mein Kollege aus meiner Gruppe.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Warum sprecht ihr euch nicht ab, wer hier den Entwicklungsauftrag 
einstellt?

von spess53 (Gast)


Lesenswert?

Hi

Vielleicht gebt ihr mal ein paar Eckdaten preis:

-Controllertyp
-Programmiersprache
-Spannung
-Frequenz
....

MfG Spess

von Patrick B. (patrick_b87)


Lesenswert?

Weil wir das zufälliger Weise zeitgleich gemacht habe. Aber jetzt haben 
wir das ja auch geklärt, wir fixieren uns auf diesen einen Thread hier.

von Helmut L. (helmi1)


Lesenswert?

Das mit dem ADC die Frequenz des Signales festzustellen ist viel zu 
aufwendig.
Schau dir mal die Input Capture Funktion des Timers an. Das ist genau 
das was du brauchst. Bei jeder Flanke deines Signales loest du einen 
Capture Interrupt aus. In diesem Interrupt liest du den abgespeicherten 
Zaehlerzustand im Captureregister aus. Dann ermittels du die Differenz 
der beiden letzten Zaehlerstaende und du hast deine Periodendauer. Dann 
den Reziprokwert davon nehmen und du hast deine gesuchte Frequenz unter 
beruecksichtigung deiner aktuellen Taktfrequenz.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Zum Thema:
Was ist das für ein Signal? Rechteck, Sinus, Sägezahl, Dreieck, komplex?
Dann solltest Du dir mal einen Schwellwertschalter (Schmidt-Trigger; 
Vegleicher) ansehen. Dann denke mal über einen flankengetriggerten 
Interrupt und den bereits erwähnten Counter nach.

von Patrick B. (patrick_b87)


Lesenswert?

Aber natürlich!

Also wir arbeiten mit dem ATmega8, und programmieren in Assembler. Die 
externe Referenzspannung liegt bei ca. 5V (wäre aber auch einstellbar, 
nur nicht gerade höher als 5V). Die Frequenz wird mit einem 
Funktionsgerät vorgegeben (kann an diesem eingestellt werden) und soll 
dann gemessen werden.

von Patrick B. (patrick_b87)


Lesenswert?

Achja und es ist ein Sinussignal.

von Helmut L. (helmi1)


Lesenswert?

Patrick B. schrieb:
> Achja und es ist ein Sinussignal.

Dann geh ueber den Analogcomparator und lass denn den Captureinterrupt 
ausloessen.

von Patrick B. (patrick_b87)


Lesenswert?

Wir haben jetzt auch nochmal mit unserem Lehrer gesprochen. Ihm ist es 
wohl egal ob wir es mit dem Inputcapture Pin oder dem A/D-Wandler machen 
(A/D-Wandler wäre halt für Lernzwecke gedacht, auch wenn es 
komplizierter ist). Aber wir Schüler wollen es natürlich möglichst 
einfach :D. Dann werden wir uns mit dem Inputcapture Pin 
auseinandersetzen.

von Helmut L. (helmi1)


Lesenswert?

Patrick B. schrieb:
> Diese Funktion ist also im Counter selber enthalten?

Ja.  Und jetzt nemmt ihr euch mal das Datenblatt zur Hand und studiert 
die Funkionen des Timers und des Analogcomparators mal.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Patrick B. schrieb:
> Achja und es ist ein Sinussignal.

Stimmt, hattest Du ja auch bereits geschrieben - nur ich nicht gelesen.

Also:

Du brauchst nicht den höchsten Punkt, sondern nur einen definierten.
Du musst aber bedenken, dass es dann mehrere Triggerpunkte pro Periode 
gibt.

Zur Unterscheidung bietet sich ein Flankentrigger an.

von Lukas (Gast)


Lesenswert?

Hi Community,
habe jetzt in unserem lieben lernheft was dazu gefunden und muss sagen 
schnell klar geworden das Prinzip !

Danke für die schnelle Hilfe
MfG Lukas

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
Noch kein Account? Hier anmelden.