Hallo, Ich arbeite an einem Projekt, indem ich mit Hilfe eines Radarmoduls die Geschwindigkeit an einem LCD Display ausgeben möchte. Das Radarmodul gibt 44 Hz pro km/h aus. Dabei arbeite ich mit einem AT MEGA 16 und einem 8MHz Quarz. Die für mich sinnvollste Lösung wäre die Periodendauer zwischen jeweils einer steigenden Flanke zu messen, in die Frequenz und dann in die Geschwindigkeit umrechnen und am Display ausgeben. Ich habe zwar schon gelsen, dass man dies mit zwei Timer realisieren könnte aba trotzdem hab ich noch Probleme das Ganze im AVR Studio zu programmieren. Übrigens verwende ich den Int0 als Signaleingang. Hätte jemand Vorschläge, wie das Programm ungefähr aufgebaut sein könnte? LG philipp
>Übrigens verwende ich den Int0 als Signaleingang.
Du solltest ICP und einen Timer nutzen.
>Übrigens verwende ich den Int0 als Signaleingang.
Ungünstige Wahl, da der Mega16 eine InputCaptureUnit hat.
Die würde dir 80% der Arbeit abnehnem...
aba für eine Interrupt Service Routine müsste der int0 ja reichen oda?
Philipp schrieb: > aba für eine Interrupt Service Routine müsste der int0 ja reichen oda? Aber der Input Capture macht dir schon fast alles von alleine. Du brauchst nur noch die Werte abholen und geeignet umrechnen (jetzt ein klein wenig vereinfacht ausgedrückt). Du bist allerdings nicht der erste, der einen Frequenzmesser bauen will. Die Suchfunktion hier im Forum und auch in der Codesammlung wird sich auf das Stichwort 'Frequenz messen' oder Abwandlungen davon, mit Ergebnissen nur so überschlagen. Auch hier http://www.mikrocontroller.net/articles/AVR_Softwarepool findet sich unter Messgeräte / Frequenzmesser sicherlich der eine oder andere brauchbare Ansatz.
wenn ich mir jedoch im Datenblatt das Blockschaltbild des AT MEGA 16 ansehe, kann ich zwischen int0 (PD2) und ICP (PD6) keinen Unterschied feststellen. Also vielleicht klingt die Frage blöd aber warum übernimmt der ICP dann so viel mehr arbeit?
>Datenblatt das Blockschaltbild des
Geh mal auf die Seite des entsprechenden Timers und gucke dir dort den
ICP an.
Philipp schrieb: > wenn ich mir jedoch im Datenblatt das Blockschaltbild des AT MEGA 16 > ansehe, kann ich zwischen int0 (PD2) und ICP (PD6) keinen Unterschied > feststellen. > Also vielleicht klingt die Frage blöd aber warum übernimmt der ICP dann > so viel mehr arbeit? Dann solltest mal nachlesen, was die Input Capture Einheit überhaupt macht. Grob gesagt: Bei Auftreten eines Flanke, speichert sie den aktuellen Zählerstand in einem extra Register und löst einen Interrupt aus. Vorteil: Da die Hardware das Wegspeichern des Zählerstandes erledigt, ist der Zeitverzug vom Auftreten der Flanke bis zum Wegspeichern konstant und minimal kurz. Du hast dann in der ISR alle Zeit der Welt, den weggespeicherten Zählerstand auszuwerten während der Timer im Hintergrund weiterläuft und auf die nächste Flanke lauert.
ok vielen dank, ungefähr kann ich mir jez vorstellen worum es geht. ich werde mal mein glück im avr studio versuchen
Philipp schrieb: > ok vielen dank, ungefähr kann ich mir jez vorstellen worum es geht. > ich werde mal mein glück im avr studio versuchen Funktioniert deine Messung mittlerweile?
Benutzt du die neuen 12€ Radarmodule vom großen blauen C? Wie hasst du den Verstärker hinter dem Mischer realisiert?
Hallo, ich bin auch an dem ziemlich gleichen Projekt am werkeln. Angefangen hatte ich mit nem Arduino zu programmieren. Ich muss dazu sagen, dass ich mich mit dem Programmieren sehr schwer tue. Ich hatte begonnen eine einfache Frequenzmessung zu programmieren. Das stellte sich auch als nicht sehr schwierig dar. Die Visualisierung erfolgte bei mit auf einem LCD 16x2 Standartdisplay - dies war auch nicht die Hürde gewesen. Das Problem bei dem Radarmodul bzw. bei dem zumessenden Signal ist, dass man aus dem auftretenden Signal die maximalste Frequenz bestimmen muss. Wenn ich das richtig aufgenommen habe, dann ändert sich die Periodendauer bei der Frquenzerfassung eines Objekts. Genau bei der Erfassung/Auswertung dieser max. Frequenz, welche dann ja nur noch in die Geschwindgkeit umgerechnet werden muss, hänge ich seit geraumer Zeit fest. Ich bin gerade auf das MyAVR EinsteigerSet umgestiegen, weil ich mit dem Arduinoboard irgentwie nicht weiter gekommen bin. Mit dem will ich nach dem Abschluss meines Studiums weiter beschäftigen... :) Hat jemand eine Idee wie man aus einem sich änderden Signal die max. Frequenz bestimmen kann, eine Herangehensweisen o.Ä.... Der Analogteil sprich Vorverstärker ist bei mir durch einem normalen opv realisiert worden, da das Signal vom Radar zu klein(~300µV) ist. Mit einem nachgeschalteten Komparator kann ich festlegen ab wann ein Signal ausgewertet werden soll und somit Störsignale unterdrücken. mfg schulle
1. Leichenschänder! 2. Zeig den Schaltplan und den Code.
D. S. schrieb: > Leichenschänder??? Guck dir mal an, wann zuletzt gepostet wurde und wann der Thread gestartet wurde.
Spielt doch keine Rolle wann der threat gestartet wurde. Da ich mit der gleichen Schaltung Probleme habe, Brauch ich doch nicht extra einen extra threat aufmachen. Sonst hätte ich alles nochmal erklären müssen. Bin vor 2 Tagen erst auf Myavr umgestiegen und habe deshalb noch keinen Code. Dachte nur es kann mir schon mal jemand einen Rat geben wie ich das signal auswerten kann. Will im laufe der woche beginnen mit der Programmierung. MfG
D. S. schrieb: > Ich hatte begonnen eine einfache Frequenzmessung zu programmieren. > Das stellte sich auch als nicht sehr schwierig dar. Wie sieht der Code dazu aus? D. S. schrieb: > Hat jemand eine Idee wie man aus einem sich änderden Signal die max. > Frequenz bestimmen kann, eine Herangehensweisen o.Ä.... Miss erstmal überhaupt eine Frequenz bzw. Periodendauer. D. S. schrieb: > Der Analogteil sprich Vorverstärker ist bei mir durch einem normalen opv > realisiert worden, da das Signal vom Radar zu klein(~300µV) ist. Mit > einem nachgeschalteten Komparator kann ich festlegen ab wann ein Signal > ausgewertet werden soll und somit Störsignale unterdrücken. Du kannst auch einfach den OPV so vertärken lassen, dass er ein Rechteck ausgibt.
Hi Nachfrage: Hast du dir das Ausgangssignal schon mal mit einem Oszi angesehen? MfG Spess
spess53 schrieb: > Hi > > Nachfrage: Hast du dir das Ausgangssignal schon mal mit einem Oszi > angesehen? > > MfG Spess Ja habe ich und es ist bei mir ein sauberes Rechtecksignal, welches sich in der Frequenz verändert je nach dem wie schnell der Gegenstand ist.
Habe mal versucht den Code den Code zuveröffentlichen... mfg schulle
Ich weiss auch schon, dass es hier mit dem Timer/Counter nicht ganz funktioniert wie ich das eigentlich brauche. So wie in dem Code kann man es ganz gut zum Messen von Frequenzen benutzen, die länger bzw. dauerhaft anliegen. mfg schulle
Die Lösung wird sicher im Bereich INTERRUPT, für eine positive und der nächsten negativen Flanke, liegen. Ich habe davon leider noch nicht soviel "Peilung" :/ mfg schulle
D. S. schrieb: > Habe mal versucht den Code den Code zuveröffentlichen.. Der sieht aus, wie eine abgewickelte Klopapierrolle. Was sind denn "mHz" oder "gHz"? Schon mal was vom Wertebereich einer long Variable gehört?
Ja genau ArduinoUNO. ich mach den Code nochmal in eine txt-Datei.
Moin, ich habe jetzt mal meinen Code in ein Textdatei gepackt, sodass ihn jetzt auch lesen können. da ich aber die Platform von Arduino auf MyAVR MK2 gewechselt habe, werden mir Ratschläge zu diesem Code erstmal nix helfen. Im großen und ganzen funktioniert, der Quellcode als reiner Frequenzzähler für ein ständig anliegendes Signal sehr gut. Er hat auch eine hohe Genauigkeit. Für meine Anwendung hier aber unbrauchbar. Ich werde mich jetzt der Programmierung widmen, wo ich ein Interrupt ausgelöst wird, wenn eine positive Flanke kommt. Und dann gleich die nächste negative auch einen Interrupt auslöst. In der ISR (positive Flanke) wird der Zählerstand von Timer0 abgefragt, und in der ISR (negative Flanke) wird der gleiche Zählerstand noch mal ausgelesen. Aus den beiden Zählerständen ermittle ich dann die Periodendauer des Signals. Und wenn ich bis dahin gekommen bin..., bin ich auch erstmal ein ganzes Stück weiter. Theoretisch ist es auch nich das Problem nur dies in die Praksis umzusetzen ist für mich nicht ganz leicht, weil Anfänger in µC-Programmer... mfg schulle
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.