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.
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?
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.
SuperMann schrieb: > ... lcd "kmh"? vom Platz passt da auch zweimal "km/h" hin! Vorschlag :)
1 | ldi temp1, 0x20 |
2 | rcall LCD_Data |
3 | ldi temp1, 'k' |
4 | rcall LCD_Data |
5 | ldi temp1, 'm' |
6 | rcall LCD_Data |
7 | ldi temp1, '/' |
8 | rcall LCD_Data |
9 | ldi temp1, 'h' |
10 | rcall LCD_Data |
11 | ldi temp1, 0x20 |
12 | rcall LCD_Data |
13 | ret
|
14 | ;---end--- |
Welche Autos? Welches Koordinatensystem? Warum immer diese Salamitaktik?
Projekt Geschwindigkeitsmessung schrieb: > 2. Die Messung der Frequenz vom Sensor sehr zeitkritisch ist Deshalb überlasse ich solche Dinger der Timerhardware im µC ;-)
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 ;-)
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 ...
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")!
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"
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€.
Max schrieb: > Leider kostet als > Eizellenstück um die 5€. Ostern ist vorbei. https://www.reichelt.de/fram-4-kb-512-x-8-4-5-5-5-v-so-8-fm-24c04b-g-p146568.html?&trstct=pos_0&nbc=1
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 :-)
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
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! :-)
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
80ct bei Ali. Es geht aber auch mit Radkurier, gegen Aufpreis. Wer besonders unorganisiert ist, bestellt 100 x Eizelle einzeln.
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 ;-)
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
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"
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.
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.
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.
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.
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!
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.
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
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.