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
Super Antwort :D Unser Job ja, aber wir bitten um Hilfe ;) der liebe Lukas ist übrigens mein Kollege aus meiner Gruppe.
Warum sprecht ihr euch nicht ab, wer hier den Entwicklungsauftrag einstellt?
Hi Vielleicht gebt ihr mal ein paar Eckdaten preis: -Controllertyp -Programmiersprache -Spannung -Frequenz .... MfG Spess
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.
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.
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.
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.
Patrick B. schrieb: > Achja und es ist ein Sinussignal. Dann geh ueber den Analogcomparator und lass denn den Captureinterrupt ausloessen.
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.