PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Geschwindkeitsmessung mit MEGA32



MelMan
01.01.2009, 21:20
Nabend zusammen,

Erst mal frohes Neues:). Also folgendes ich möchte für mein Motorrad die Geschwindigkeit erfassen. Dafür hab ich schon nen Fahrradtacho besorgt und den Magnet und den Sensor an den AT32 gebastelt. Wenn ich jetzt die Geschwindigkeit ermitteln will muss ich doch die Impulse des Sensors in einer bestimmten Zeit messen und dann die Anzahl der Impulse mit dem Radumfanf multiplizieren richtig? Wenn ich dann also jede Sekunde messe, bekomme ich meine zurückgelegte Strecke in m/s !? Die Erfassung würd ich einfach über nen Port machen. Das einzige Problem was ich sehe ist vllt die Reaktionszeit des Sensors. Weis nicht wie der bei Geschwindigkeiten über 100km/h reagiert bzw. überhaupt noch geht. Kennt sich jemand ein bisschen damit aus? 8-[ ?

Mfg

thewulf00
01.01.2009, 21:25
Würde ich schätzen müssen, wäre meine Antwort: Nein.
Ein Fahrradtacho wird wohl die 100 km/h oder mehr eher nicht mehr oder nicht mehr sauber mitmachen/messen.

MelMan
01.01.2009, 21:30
Hmm also müsste ich mal nach was geeigneterem suchen. Aber von der Programmierweise her würde das funktionieren oder?

Besserwessi
01.01.2009, 22:31
Ganz auszuschließen ist nicht das das noch geht. Immhin ist die Geschwindigkeit nur etwa 3 mal höher als beim Fahrrad. Für einen Elektronischen Sensor wäre das keine so unmöglich große Reserve. Hängt sicher auch davon ab wie Sensor und magnet montiert sind.

36 m/s sind schließlich nur rund 15 Umderhungen je Sekunde, das ist gar nicht so viel. Mit dem einfachen Zählen der Pulse in 1 Sekunde wird das bei 1 Puls je Umdrehung folglich auch nicht ganz reichen. Da wird man schon eher die Zeit zwischen 2 Pulsen messen müssen.

wkrug
01.01.2009, 23:21
Welche Art von Sensor ist denn in deinem Fahrradtacho verbaut ?
Ein Halbleiter Magnetfeldsensor sollte eigentlich kein Problem mit der Schaltfrequenz haben.
Ein normaler Reed Relaiskontakt eher schon.
Eventuell bringt es ja schon was, wenn die Magnet / Sensor Anordnung näher bei der Nabe angebracht ist.
Der Magnet läuft dann langsamer am Sensor vorbei und der hat somit mehr Zeit zu reagieren.
So eine Drehzahl / Geschwindigkeitsabfrage würde ich aber eher in einem Controller Interrupt ansiedeln, weils damit genauer und im Prinzip auch einfacher geht.

Gut anbieten würde sich dafür der Input Capture Interrupt, weil der im Timer auch gleich mit einem Register ausgestattet ist.

Die Interrupt routine ermittelt nur die Zeitwerte und setzt ein Flag.
Dieses Flag wird in der Hauptroutine ausgewertet, die neue Geschwindigkeit berechnet und das Flag wieder resettet.

Vitis
02.01.2009, 10:07
Hallgeber oder Reed-Kontakte

Rofo88
02.01.2009, 10:37
Mein alter Fahrad/Motorrad-Computer ging bis über 200 Km/h danach stieg der Computer aus. Der Sensor wird aber noch Daten geliefert haben nur die Elektronik hat da aufgehört. Welches Fahrrad fährt denn auch so schnell. Ich bin mir jetzt nicht Sicher aber es sollte ein Reed-Kontakt gewesen sein.

MelMan
02.01.2009, 10:41
Also der Kontakt den ich hier habe ist einfach ein normaler Schließer, der reagiert wenn ich den Magneten dicht dran vorbeiführe. Ist ein Billigtacho gewesen (6€) vllt sollte ich was teureres bevorzugen;)

Besserwessi
02.01.2009, 12:19
Eher dicht an der Nabe kann auch der Reed kontakt noch gehen. Wenn es so ein mechanischer schalter ist, wird man in der Software aber was zum Entprellen haben müssen, sonst kriegt man völlig fasche Werte.

MelMan
02.01.2009, 12:33
Ja das hab ich auch grad gemerkt...bekomme da leider keine guten werte. Hab jetzt folgendes ausprobiert um erst mal die Impulse zu zählen:


$regfile = "m8def.dat"
$framesize = 128
$swstack = 64
$hwstack = 64
$crystal = 8000000
$baud = 9600

Dim Umfang As Byte
Dim Geschwindigkeit As Byte
Dim Cnt As Integer


Config Int1 = Falling
Enable Interrupts
Enable Int1
On Int1 Count



Do
Print Cnt
Cnt = 0
Wait 1
Loop
End


Count:
Cnt = Cnt + 1
Return


Der int1 hängt an nem Pullup und ich verbinde ihn dann immer gegen Massen aber die Werte die ich bekomme sind viel höher als die Anzahl der Berührungen...

Besserwessi
02.01.2009, 12:55
Das wird dann wohl das Tastenprellen sein.
Wenn da kein anderer Interrupts im Hintergrund laufen soll, könnte man da entprellen auf die eher unsaubere Wiese machen, mit eimem Wait (ca. 10 ms) im der ISR zum Zählen. Normlaerweise solle man in ein ISR ja nicht warten.

MelMan
02.01.2009, 13:57
ja genau so hab ichs bis jetzt auch gemacht;). Ich fahr mal los und erkundige mich mal nach verschiedenen kontakten ob ich da vllt noch was besseres kaufen kann

wkrug
03.01.2009, 19:59
ja genau so hab ichs bis jetzt auch gemacht;). Ich fahr mal los und erkundige mich mal nach verschiedenen kontakten ob ich da vllt noch was besseres kaufen kann
Wenn Du den Magneten schon hast, wäre meine Antwort TLE 4905 L.

Das ist ein Magnetfeldsensor mit integriertem SchmitT Trigger.
Er kennt kein prellen und ist zudem sehr klein.

Jetzt musst Du nur noch schauen, wie dein Magnet eingebaut ist.
Für einen Reed Kontakt sollten die Pole Oben und Unten sein.

Beim Magnetfeldsensor wäre vorne und hinten besser.

MelMan
04.01.2009, 13:11
Stimmt das klingt gut. Hab grad gelesen dass der Abstand zwischen Magnet und Sensor nich größer als 2mm betragen sollte...wird vllt das einzige Problem:). Im Moment hab ich aber ein Problem mit den Interrupts. Sobald ich diese einschalte, bekomme ich immer ein total verzerrtes Bild auf meinem 128x64 Display ausgegeben. sobald ich die Interrupts weglasse geht alles wieder wunderbar aber dann kann ich natürlich keine Geschwindigkeit ermitteln

hunni
05.01.2009, 16:09
ich würds wie bei modellturbinen machen. Über eine Fotozelle und einer Lichtquelle. Beim Motorad haste ja zum gblück nich so viele speichen, dann nimm die anzahl der speichen geteilt durch den ausgegebenen wert. Geht bis 250.000 U/MIN