www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Geschwindigkeitserfassung


Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

hat schon mal jemand irgendwas zur Geschwindigkeitserfassung aufgebaut? 
Ich meine so in der Richtung: 2 Lichtschranken, Impulse zählen zwischen 
der Auslösung von beiden, das dann umrechnen und auf einem LCD ausgeben. 
Vor allem die Umrechnung würde mich interessieren. Mir geht es um 
Objekte bis maximal 100km/h.

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
in der vorletzten Elektor ist genau das was du beschreibst für 
Modellautos realisiert worden!!! (ist sogar auf dem Titelbild)

mfg
Christian

Autor: Axel(ojojo) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jo,

da muss man sich aber der ihre Software kaufen, oder ?

warum sind eigentlich platinen so teuer ?

jo
Axel

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
welche Software???

Die Software für den MC kannst du dir kostenlos von elektor.de 
runterladen!!!

Das Platinen Layout wird auch zur verfügung gestellt - ist gar nicht so 
teuer!!!

mfg

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jo, danke schon mal, aber ich wollte das so halbwegs verstehen was ich 
da mache. Aber bei dem Assemblercode von der Elektor-Site verstehe ich 
nicht sonderlich viel. Ist wohl einfach etwas zu viel mit der 
Umschaltung zwischen Geschwindigkeit, Zeit und Strecke oder was auch 
immer da alles dabei ist. Jetzt versuche ich erstmal den Timer1 zum 
Laufen zu bekommen.
Wenn ich das geschafft habe überlege ich mir weiter wie man die 
gezählten Takte dann auswerten kann. Aber ich bekomme nur den Timer0 in 
Gang. Wer kann mir sagen wie das bei Timer1 funktioniert und wie ich ihn 
dann wieder stoppen kann?

Autor: Sepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weis leider nichts Sepp

Autor: Josef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfache Lösung der Geschwindigkeitsmessung:

Du musst dir mal überlegen, wie lange ein Fahrzeug für die Zurücklegung
eines Meters bei 100 KM/h benötigt. 1 Stunde hat 3600 sec. Das Auto
fährt in dieser Zeit also 100 KM, das sind 100 000 Meter/Stunde.
Das heißt, dass es 27,77 m je sec zurücklegt. Was wiederum bedeutet, 
dass es für 1 m 36 Millisekunden bei 100 KM/h benötigt (1 sec hat 
1000ms).
Wenn das Auto mit 1 KM/h fahrt, benötigt es also 3600 ms für diesen 
Meter.

Wir stellen also die 2 Lichtschranken in einer Entfernung von genau 1 
Meter auf und messen die Zeit vom Ausl. des ersten Schrankens bis zum
Ausl. des 2. Lichtschrankens.

Wir nehmen  einen Timerinterrupt, der genau alle ms eine
Routine abarbeitet. In dieser Routine wird einfach ein 16-Bit Register 
erhöht
(zB addw XL,1).
Beim Auslösen des 1. Lichtschrankens wird diese Register einfach auf 0
gesetzt. Beim Ausl. des 2. Lichtschranken wird der Timerinterrupt 
gestoppt
oder die X-Register ins RAM "gerettet". Fortsetzung folgt.

Autor: Josef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fortsetzung von Josef

Jetzt müssen wir nur noch die Zahl 3600 durch diesen Wert in X 
dividieren
und wir haben die Geschwindigkeit. ZB.: gemessener Wert 56.
Also folgt: 3600/56=64KM/h. Die Auflösung ist so aber  mit ca 3 KM/h
beschränkt. Für den Anfang aber leicht genug.
Will man eine größere Auflösung, ist etwas mehr "Mathematik" notwendig.
Das Ergebniss (zB. 64 KM/h) müßen wir nun mit einer Routine
(auf ATMEL-Homepage) von Binär auf BCD umrechnen. Zu diesen
BCD-Werten müssen wir noch einen Ascii-Offset dazu addieren (0x30H)
und schon können wir die Geschwindikeit in KM/h in einer LCD-
Anzeige anzeigen.

Schöne Grüße Josef

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke schon mal für die Antwort, aber das ist nicht genau das Problem 
das ich habe. Wie ich das berechnen kann weiss ich schon, aber wie 
dividiere ich mit einem MC, in der Befehlsliste für den 90S8515 finde 
ich bei den arithmetc instructions auf jeden Fall keinen Befehl dafür.
Ausserdem müsste ich das ganze etwas abändern weil ich nicht den Platz 
habe um den Abstand von 1m zu realisieren. Das soll bei mir auf 5 bis 10 
cm ablaufen. Damit ist also die Routine mit 1ms auch gestorben weil es 
zu ungenau wird. Die Genauigkeit sollte schon bei 1km/h liegen.

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe mich jetzt dafür entschieden die Lichtschranken im Abstand von 10cm 
aufzustellen. Bei 4MHz und CK/64(Timer1) bekomme ich eine ausreichende 
Genauigkeit zustande. Die Berechnung ist dann 3600/((Zählwert 
Timer1)*10/62.5).  Aber momentan habe ich NULL Ahnung wie ich das in 
Assemblercode umsetzen kann. Falls da jemand eine Idee hat wäre das echt 
klasse.

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier gibt's die nötigen Mathe-Routinen:
http://users.i.com.ua/~birua/math32.asm
Falls ich mich jetzt nicht verrechnet habe musst du einfach 22500 durch 
den Timer-Wert dividieren. Oder, wenn's genauer sein soll, 225000/Timer 
(und dann halt noch das Komma an der richtigen Stelle anzeigen).

MfG
Andreas

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Damit hast Du schon mal vollkommen recht, 22500 durch den Timerwert ist 
richtig. Diese Variante ist zwar wesentlich einfacher als meine ;) aber 
der Assemblercode von der Site die Du mir genannt hast geht irgendwie 
nicht.
Habe mir den Code einfach rauskopiert und dann mal in die register für 
dividend und divisor (jeweils das niederwertigste) 8 und 16 reingeladen, 
aber da kommt niemals nicht zwei raus.

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach's mal umgekehrt, dann kommt 2 raus!

Andreas

Autor: Marc (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das hatte ich auch schon ausprobiert, aber bei mir kam da keine 2 raus.
Im Anhang ist der Code den ich verwendet habe. Vielleicht siehst Du ja 
was bei mir nicht passt.

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.