Forum: Mikrocontroller und Digitale Elektronik Frequenzmessung für Radar-Geschwindigkeitsmessung


von Philipp (Gast)


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

von Matthias L. (Gast)


Lesenswert?

>Übrigens verwende ich den Int0 als Signaleingang.

Du solltest ICP und einen Timer nutzen.

von STK500-Besitzer (Gast)


Lesenswert?

>Übrigens verwende ich den Int0 als Signaleingang.

Ungünstige Wahl, da der Mega16 eine InputCaptureUnit hat.
Die würde dir 80% der Arbeit abnehnem...

von Philipp (Gast)


Lesenswert?

aba für eine Interrupt Service Routine müsste der int0 ja reichen oda?

von Karl H. (kbuchegg)


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.

von Philipp (Gast)


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?

von Matthias L. (Gast)


Lesenswert?

>Datenblatt das Blockschaltbild des

Geh mal auf die Seite des entsprechenden Timers und gucke dir dort den 
ICP an.

von Karl H. (kbuchegg)


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.

von Philipp (Gast)


Lesenswert?

ok vielen dank, ungefähr kann ich mir jez vorstellen worum es geht.
ich werde mal mein glück im avr studio versuchen

von Sash u. (sashm)


Lesenswert?

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?

von Bastler (Gast)


Lesenswert?

Benutzt du die neuen 12€ Radarmodule vom großen blauen C?
Wie hasst du den Verstärker hinter dem Mischer realisiert?

von D. S. (schulleavr)


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

von STK500-Besitzer (Gast)


Lesenswert?

1. Leichenschänder!
2. Zeig den Schaltplan und den Code.

von D. S. (schulleavr)


Lesenswert?

Leichenschänder???

von STK500-Besitzer (Gast)


Lesenswert?

D. S. schrieb:
> Leichenschänder???

Guck dir mal an, wann zuletzt gepostet wurde und wann der Thread 
gestartet wurde.

von D. S. (schulleavr)


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

von STK500-Besitzer (Gast)


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.

von spess53 (Gast)


Lesenswert?

Hi

Nachfrage: Hast du dir das Ausgangssignal schon mal mit einem Oszi 
angesehen?

MfG Spess

von D. S. (schulleavr)


Lesenswert?

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.

von D. S. (schulleavr)


Angehängte Dateien:

Lesenswert?

Habe mal versucht den Code den Code zuveröffentlichen...
mfg schulle

von D. S. (schulleavr)


Lesenswert?

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

von D. S. (schulleavr)


Lesenswert?

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

von Willi (Gast)


Lesenswert?

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?

von STK500-Besitzer (Gast)


Lesenswert?

D. S. schrieb:
> Radarmessgereat_vs3__f.ino (4,5 KB, 2 Downloads)

Womit soll man das denn öffnen?

von zagge (Gast)


Lesenswert?

.ino

ich tipp mal auf Arduino

von D. S. (schulleavr)


Lesenswert?

Ja genau ArduinoUNO. ich mach den Code nochmal in eine txt-Datei.

von D. S. (schulleavr)


Angehängte Dateien:

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

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.