Forum: Projekte & Code Messung von Geschwindigkeiten


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Projekt Geschwindigkeitsmessung (Gast)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Neues Projekt für eine Messung der Geschwindigkeit von Autos.
Das Projekt nutzt den Radarsensor 165 zur Messung von Speed und Anzahl 
von Autos in 15 min Abstand.
Weitere Angaben folgen.

von SuperMann (Gast)


Bewertung
-6 lesenswert
nicht lesenswert
Hi,
ist das eine gymnastische Fingerübung oder warum schreibt Mann in 2020
in Assembler solch ein langes Programm?
Das schaut sich wohl kaum einer an, weil so eine lange ASM Tapete zu 
anstrengend ist.

Versuche es doch mal in C und wenn ASM dein Herz gehört, dann kannste 
auch nur einzelne Funktionen in ASM schreiben zum Wohlgefühl.

ABER Respekt, dass du in dem Code noch den Über-/Durchblick hast, - hast 
du?

von Projekt Geschwindigkeitsmessung (Gast)


Angehängte Dateien:

Bewertung
3 lesenswert
nicht lesenswert
Ups, bei der langen Tapete fehlen noch die .inc Dateien. ASM deshalb, 
weil 1. eine optimale Ausnutzung des Speichers ist, 2. Die Messung der 
Frequenz vom Sensor sehr zeitkritisch ist, 3. viele Routinen hatte ich 
schon aus anderen Projekten. Das nächste Ziel ist, das Modul an einen 
Raspberry anzukoppeln, so dass die Daten auch online zu sehen sind.
Schaltplan folgt noch. In PIN_ATmega8.inc stehen die Anschlüsse drin. 
Die Hauptteile sind Atmege8, LCD Display 2 x 16, Bluetoothmodul BTM-222 
und der Radarsensor IPM-165-24 GHz.

von SuperMann (Gast)


Bewertung
0 lesenswert
nicht lesenswert
... lcd "kmh"? vom Platz passt da auch zweimal "km/h" hin!

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
SuperMann schrieb:
> ... lcd "kmh"? vom Platz passt da auch zweimal "km/h" hin!

Vorschlag :)
    ldi    temp1, 0x20
    rcall   LCD_Data
    ldi    temp1, 'k'
    rcall   LCD_Data
    ldi    temp1, 'm'
    rcall   LCD_Data
    ldi    temp1, '/'
    rcall   LCD_Data
    ldi    temp1, 'h'
    rcall   LCD_Data
    ldi    temp1, 0x20
    rcall   LCD_Data
    ret
;---end---

von Warum nur? (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Welche Autos?

Welches Koordinatensystem?

Warum immer diese Salamitaktik?

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Projekt Geschwindigkeitsmessung schrieb:
> 2. Die Messung der Frequenz vom Sensor sehr zeitkritisch ist
Deshalb überlasse ich solche Dinger der Timerhardware im µC ;-)

von Peter R. (peter_r689)


Angehängte Dateien:

Bewertung
2 lesenswert
nicht lesenswert
Umgesetzt ;-)

Der Code ist noch nicht optimiert. Dieser enthält auch noch kleine 
Differenzen bei den Kommentaren. Aber Funktion ging erstmal vor ;-)
Ich stelle den hier zur Verfügung, weil ich selber auch nach Lösungen im 
Netz gesucht habe... und jeder weis, wie hilfreich sowas ist. Diese 
Kultur muss erhalten bleiben, und deshalb behalte ich den Code auch 
nicht für mich, sondern stelle den hier für jeden bereit ;-)
Auch wenn das mit der Zeit ein ganz schöner Bandwurm geworden ist.
- erst war nur Anzeige
- dann kam Uhrzeit und Datum dazu
- dann musste es gespeichert werden -> da gibt es einen Hacken: Die 
Daten werden hier noch im EEprom alle Viertelstunde gespeichert. Nach 
Angabe maximal 100.000 Schreibzyklen, wäre der Chip nach 3 Jahren im 
Ar***. Pro Tag maximal 96 Zyklen. Das wird aber noch in den RAM verlegt 
und Spannungserkennung erst bei Wegfall in den EEprom gespeichert.
- dann Übertragung per Blue-tooth
- dann Steuerung über Blue-tooth
- es es kommen mir bestimmt noch mehr Ideen, weil "Wir bleiben Zuhause" 
und gucken eben nicht nur in die Glotze.
Also es ist noch Platz im Chip. Der Speicher ist wegen ASM nur mit 40 % 
belegt ;-)

von HansImGlück (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wolfgang schrieb:
> Deshalb überlasse ich solche Dinger der Timerhardware im µC ;-)

Wenn das in ASM umgesetzt wurde, dann gibt es einen Punktabzug!
HW Timeranwendung ist Pflicht und nicht Kür!

Peter R. schrieb:
> maximal 100.000 Schreibzyklen,

Das lässt sich verbessern, wurde im Forum breit diskutiert via 
Ringbuffer.
EEProm Endurance ...

von Steffen H. (steffenh)


Bewertung
3 lesenswert
nicht lesenswert
Warum nur? schrieb:
> Warum immer diese Salamitaktik?

HansImGlück schrieb:
> Wenn das in ASM umgesetzt wurde, dann gibt es einen Punktabzug!
> HW Timeranwendung ist Pflicht und nicht Kür!


Ich verstehe ja, wenn jemand mit dem Code nicht zurecht kommt und Fragen 
stellt. Aber hier bekommt man den Eindruck, man schaue gerade einer 
Wettbewerbsjury zu ("Punktabzug") und die Preisrichter melden gerade 
ihren Anspruch auf eine ordnungsgemäße Dokumentation an 
("Salamitaktik")!

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
Peter R. schrieb:
> Die
> Daten werden hier noch im EEprom alle Viertelstunde gespeichert. Nach
> Angabe maximal 100.000 Schreibzyklen, wäre der Chip nach 3 Jahren im
> Ar***. Pro Tag maximal 96 Zyklen. Das wird aber noch in den RAM verlegt
> und Spannungserkennung erst bei Wegfall in den EEprom gespeichert

alles machbar auch ein externes I2C EEPROM 8-beiner gesockelt, das 
wechselt sich leichter "i2c eeprom DIL8"

von Max (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Anstatt EEPROM nimmt SPI F-RAM (Ferroelectric RAM), die Ansteuerung ist 
sehr ähnlich und es schafft Trillionen Zyklen. Leider kostet als 
Eizellenstück um die 5€.

von Zweizelle (Gast)


Bewertung
0 lesenswert
nicht lesenswert

von Hugo H. (hugohurtig1)


Bewertung
0 lesenswert
nicht lesenswert
Steffen H. schrieb:
> HansImGlück schrieb:
>> Wenn das in ASM umgesetzt wurde, dann gibt es einen Punktabzug!
>> HW Timeranwendung ist Pflicht und nicht Kür!
>
> Ich verstehe ja, wenn jemand mit dem Code nicht zurecht kommt und Fragen
> stellt. Aber hier bekommt man den Eindruck, man schaue gerade einer
> Wettbewerbsjury zu ("Punktabzug") und die Preisrichter melden gerade
> ihren Anspruch auf eine ordnungsgemäße Dokumentation an
> ("Salamitaktik")!

Den musst Du einfach ausblenden :-)

von Hugo H. (hugohurtig1)


Bewertung
0 lesenswert
nicht lesenswert
Ich habe die Geschwindigkeit / die Frequenz vor 2 Jahren aus Spaß und 
weil ich es ausprobieren wollte mal mit Elm Chan's FFT-Routinen 
ausgewertet. War dann in Summe etwas "Speicherhungriger" - habe aber 
auch die FFT (bzw. später dann  erkannte Bewegungen mit deren 
Maximalgeschwindigkeit) grafisch dargestellt. Musste deshalb auf einen 
ATMega2560 "upgraden".

Und ja - ich weiß - in ASM passt das auch auf einen Tiny etc. :-)

: Bearbeitet durch User
von SuperMann (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hugo H. schrieb:
> Den musst Du einfach ausblenden :-)

Ja, und am besten den Hugo gleich mitausblenden für sein Geschwafel!
Oder suchst du noch solche Freunde?

Wenn ein uC Timer hat, - und die hat jeder, dann werden die selbstredent 
verwendet, ohne wenn und aber!

Wo sind wir denn?! Natürlich geht es immer um die eigene Ehre oder um 
Leben und Tot, sprich Kapitalismus! :-)

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
Zweizelle schrieb:
> Max schrieb:
>> Leider kostet als
>> Eizellenstück um die 5€.
>
> Ostern ist vorbei.

der 1.4. auch
was kostet der mit Porto als Einzelstück?

evtl. wird noch eine Adapterplatine zu DIL8 fällig :P

von Zweizelle (Gast)


Bewertung
0 lesenswert
nicht lesenswert
80ct bei Ali.
Es geht aber auch mit Radkurier, gegen Aufpreis. Wer besonders 
unorganisiert ist, bestellt 100 x Eizelle einzeln.

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
Zweizelle schrieb:
> 80ct bei Ali.

und warum schreibst du dann "https://www.reichelt.de";?

von Zweizelle (Gast)


Bewertung
0 lesenswert
nicht lesenswert
second source. Schon mal gehört?

von Peter R. (peter_r689)


Angehängte Dateien:

Bewertung
2 lesenswert
nicht lesenswert
Hallo zusammen,

eigentlich dachte ich, man bekommt hier ein wenig Unterstützung oder 
Anregungen, welche zum Projekt passen. Das scheint leider nicht der Fall 
zu sein :-(
Hier noch einmal die grundlegende Motivation:
- ich hatte noch ein paar Bauteile zu liegen
- Parties sind zur Zeit leider schwer zu finden ;-)
- wie bereits geschrieben, hat es klein begonnen und es wurde immer mehr 
erweitert...
- umgesetzt ist es jetzt so, dass nur noch im RAM gesaved wird. Mit der 
Menüauswahl kann man into EEProm saven oder später per 
Spannungserkennung.
- Warum ASM??? Ich kann 
C,C++,Java,ASM,Pascal,Java,Javascript,PHP,HTML...and so on... Es gibt 
für jedes Projekt Prämissen, und genau dass, ist auch die Wahl der 
Programmiersprache!
Ich kann jetzt nach einigen Wochen sagen... jeder Test resultierte 
Ergebnisse und Wünsche, wie es noch besser werden kann. Die agile 
Arbeitsweise ist genau dass, was derzeit in der Wirtschaft zu finden ist 
und umgesetzt wird. In den seltensten Fällen wird ein Produkt von Vorne 
bis Hinten durchgesteilt.

Ok, genug! mein Ziel ist es, hier Ideen und Lösungen bereitzustellen, 
welche von allen genutzt werden können. Kritik ist immer gut, solange 
diese auch die  Motivation fördert!

Und es ist schön das der komische Flashspeicher nach Ostern nicht mehr 5 
€ kostet ;-) geschweige mal abgesehen vom Fahrradkurier!

genau... das war es... MfG Peter ;-)

von Peter R. (peter_r689)


Bewertung
0 lesenswert
nicht lesenswert
Achso... und noch ganz vergessen,
na klar, wir der Zähler der Frequenz von Radarsensor per Hardware
gemessen:

;***********************************************************
;  RadarCounter
;  The interupt-routine to count the frequency of doppler-effect
RadarCount:
    adiw  FreqCountH:FreqCountL,1
    reti
;*** end ***

Die Anzahl wird per Timer (Quarz) dann ausgezählt! Und ich hatte vorher
auch Bedenken über Toleranzen. Das ist bei 55 Impulsen pro 1 km/h in
einer Sekunde aber vernachlässigbar! Wenn der sich um 10 Impulse
verzählt (ich meine der MC), dann ist maximal 1 km/h davon betroffen.
Ich fahre ab jetzt noch mehr ordentlicher ;-)

MfG Peter

von Zweizelle (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Peter R. schrieb:
> eigentlich dachte ich, man bekommt hier ein wenig Unterstützung oder
> Anregungen, welche zum Projekt passen.

Das scheitert aus meiner Sicht daran, dass du in Assembler programmiert 
hast. Mag ja alles nett und schnell sein, aber man sieht den Wald vor 
lauter Bäumen nicht. Somit gibt es keinen Ansatz, Sinn und Zweck des 
Programmes nachzuvollziehen geschweige denn, noch Anregungen dazu zu 
geben.

Peter R. schrieb:
> Also es ist noch Platz im Chip. Der Speicher ist wegen ASM nur mit 40 %
> belegt ;-)

Was für dich eine gute Leistung sein mag, ist für mich die völlig 
falsche Priorität. Die programmierten 4KB machen bei dem aktuellen 
ATmega328 nur 12,5% der verfügbaren 32KB aus. ASM aus Platz oder 
Geschwindigkeitsgründen? Die Zeiten sind vorbei.

Ich muß SuperMann zustimmen 
Beitrag "Re: Messung von Geschwindigkeiten"

von Johannes S. (jojos)


Bewertung
0 lesenswert
nicht lesenswert
Funktioniert bestimmt prima, aber was ist mit der Winkelkorrektur wenn 
schräg zum Objekt gemessen wird?
In Assembler? Nein Danke.
Dazu fehlende Portabilität, auf einem modernen μC fängt man wieder bei 
Null an.
Aber schön wenn man das beherrscht und die Grundlagen versteht.

von Hugo H. (hugohurtig1)


Bewertung
0 lesenswert
nicht lesenswert
Johannes S. schrieb:
> Funktioniert bestimmt prima, aber was ist mit der Winkelkorrektur wenn
> schräg zum Objekt gemessen wird?

Zu dem Zweck misst die Polizei die Teile auch ein :-)

Spielt das bei einer "Spaß-Messung" denn auch eine Rolle? Die "Du fährst 
xx km/h"-Schilder habe sicher auch keine Korrektur.

Ich sehe hier auch nur den "Spaß", die Radarsensoren mal auszuprobieren, 
um die Möglichkeiten auszuloten. Ich habe auch ein wenig mit Abschirmung 
(Alu-Folie auf Klopapier-Rolle etc. probiert) um mir ein Bild davon zu 
machen. Wir sind hier "oft" Hobbyisten - keine Profis.

von Peter R. (peter_r689)


Bewertung
0 lesenswert
nicht lesenswert
Hugo H. schrieb:
> Ich sehe hier auch nur den "Spaß", die Radarsensoren mal auszuprobieren

Genau, hier hat jetzt einer den richtigen Ansatz entdeckt ;-)
Das Teil eignet sich nicht als Kontrollgerät. Aber zur Anzeige "Sie 
fahren" ist die Sache gar nicht so schlecht.

"ASM ist nicht mehr zeitgemäß"
mag sein, dass heute moderne Sprachen zum Einsatz kommen. Aber ich habe 
eben noch nostalgische Atmega und Attinys rumzuliegen. Und in der 
jetzigen Zeit, wo "Wir bleiben Dahaim" kann man doch der Nostalgie etwas 
Renaissance aufleben lassen. Und wem dieser Bandwurm zu viel ist... kann 
ja nach anderen Lösungen suchen. Warum nicht?
Die Tafeln "Sie fahren" kann man ab ca. 1000 € kaufen. Da machen meine 
uralten Teile eben einen ähnlichen Job.
Noch was zu der Winkelberechnung: sowas ist in dem Programm nicht 
enthalten. Warum... umso steiler der Winkel um so weniger ist die 
Dopplerfrequenz. Aber das ist bei 55 Impulse per km/h pro Sekunde 
vernachlässigbar.
Ich nutze das, um hier in einer 30 km/h Zone mal zu gucken. Die Meisten 
sind um die 30, aber morgens, um 4:15 hatte ich in der Aufzeichnung auch 
einen mit 102 km/h. War bestimmt ein Messfehler ;-) oder ein 
Motorradfahrer.

von Der müde Joe (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Auf wieviel Meter Abstand fängt es an zu reagieren? Ich habe mir auch 
mal so etwas gebaut und komme auf eine effektive Entfernung von ca. 15 
Metern.

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
Peter R. schrieb:
> Die Meisten
> sind um die 30, aber morgens, um 4:15 hatte ich in der Aufzeichnung auch
> einen mit 102 km/h. War bestimmt ein Messfehler ;-) oder ein
> Motorradfahrer.

oder ein Vogel, der tauchte mal auch auf Blitzerbilder auf!

von Hugo H. (hugohurtig1)


Bewertung
0 lesenswert
nicht lesenswert
Der müde Joe schrieb:
> Ich habe mir auch
> mal so etwas gebaut und komme auf eine effektive Entfernung von ca. 15
> Metern.

Da kommt drauf an ... mit meiner Alu-Röhre und fft konnte ich geschätzt 
bis max. 20 m plausible Werte bekommen. Aber nur, wenn die Autos mit 
Abstand kamen und kein Gegenverkehr war. Max. 10 m liegen im "sicheren" 
Bereich. Für die Spielerei aber vollkommen ausreichend. Wenn man mit 
solch einem Schild "beeindrucken" will muss man den Sensor halt 30 - 50 
m vor dem Schild postieren und per Funk oder Kabel die Geschwindigkeit 
an die Schild-Anzeige übermitteln.

von Peter R. (peter_r689)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Hallo, wie oben angekündigt, hier noch der Schaltplan. Es wurden auch im 
Programm noch einige Routinen angepasst.
Also ist somit hier erstmal der Endstand erreicht. Gespeichert wird nur 
noch im Ram, man kann aber im Menü den Ram in den Eprom sichern. Es 
lassen sich auch alle Daten über die serielle Schnittstelle versenden, 
z. B. Blue-Tooth-Modul.
Es ist eine schöne Spielerei. Nach einigen Tests sind kleine, unförmige 
Autos (Mini) weniger zur Erfassung geeignet ;-) aber die Transporter 
werden sehr gut gemessen. Es gab auch einige mathematische Differenzen 
zwischen Internet und der Wirklichkeit. Als Messwinkel habe ich jetzt 
25° mit aufgenommen, aber wie schon bereits geschrieben, ist das 
marginal, jedenfalls in den unteren Geschwindigkeiten. Ab ca. 80 km/h 
ändert sich das.
Und für alle Nichtassemblerprogrammierer... auch ASM wird in kleinen 
Unterprogrammen (Funktionen geschrieben). Der Vorteil in C und co ist, 
man braucht sich nicht mehr mit den Registern und Speicher rum quälen 
und die Portierung auf andere Systeme ist der entscheidende Vorteil.
Aber mir macht das eben Spaß ;-)
https://www.mikrocontroller.net/wikifiles/f/fc/BTM222_DataSheet.pdf

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.

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