Frequenzmessung für Radar-Geschwindigkeitsmessung

Gast #1618947
Lesenswert?

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
#1618993
Lesenswert?

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.
Gast #1619002
Lesenswert?

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?
#1619006
Lesenswert?

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.
#2593781
Lesenswert?

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
#2593964
Lesenswert?

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
Gast #2593985
Lesenswert?

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.
#2600614
Lesenswert?

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
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren