mikrocontroller.net

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


Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Übrigens verwende ich den Int0 als Signaleingang.

Du solltest ICP und einen Timer nutzen.

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Philipp (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Datenblatt das Blockschaltbild des

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Philipp (Gast)
Datum:

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

Autor: Sash uM (sashm)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Bastler (Gast)
Datum:

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

Autor: D. S. (schulleavr)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. Leichenschänder!
2. Zeig den Schaltplan und den Code.

Autor: D. S. (schulleavr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leichenschänder???

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
D. S. schrieb:
> Leichenschänder???

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

Autor: D. S. (schulleavr)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

MfG Spess

Autor: D. S. (schulleavr)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: D. S. (schulleavr)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Habe mal versucht den Code den Code zuveröffentlichen...
mfg schulle

Autor: D. S. (schulleavr)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: D. S. (schulleavr)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: STK500-Besitzer (Gast)
Datum:

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

Womit soll man das denn öffnen?

Autor: zagge (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.ino

ich tipp mal auf Arduino

Autor: D. S. (schulleavr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja genau ArduinoUNO. ich mach den Code nochmal in eine txt-Datei.

Autor: D. S. (schulleavr)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.