
Wer möchte nicht gerne wissen, wie schnell das getunte und mit alles Schikanen versehene RC Auto denn wirklich ist? Hat der neue Motor die Erwartungen erfüllt? Wie weit weichen die Angaben in der Werbung von der Wirklichkeit ab?
Antwort auf diese Fragen kann der mobil einsetzbare Geschwindigkeitsmesser geben.
Wie wird nun die Geschwindigkeit gemessen? Am einfachsten für den Hobbybereich wohl mittels 2 Lichtschranken, die in einer bekannten Entfernung zueinander aufgestellt sind. Beim durchfahren der Lichtschranken werden Impulse geliefert. Wird jetzt die Zeit zwischen dem durchfahren der ersten und zweiten Lichtschranke gemessen, kann dies in die gefahrene Geschwindigkeit umgerechnet werden.
Der Lichtschranke selbst kommt dabei in mehrfachem Sinn eine
entscheidende
Rolle zu:
1. Sie muss eine ausreichend große Strecke
überbrücken, damit man mit dem Auto in voller Fahrt auch die
Lücke trifft ;-)
2. Der Auslösebereich muss möglichst klein
sein (also kein großer Lichtkegel), und vom Tageslicht nicht
beeinflusst
werden.
3. Die Auslösung muss ausreichend schnell
erfolgen
4. Beide Lichtschranken sollten sich weitgehend
identisch verhalten.
Als Ergebnis der obigen Punkte habe ich mich für eine Lösung mit profesionellen Infrarot Reflexlichtschranken entschieden. Die angegebenen Daten erschienen mir ausreichend, und der Preis war auch OK (erstanden bei Ebay). Angaben zum Typ bei der Bauteilebesprechung.
Nachdem dieser Punkt geklärt war, bleibt noch die Aufgabe die Zeit zwischen den Lichtschrankenimpulsen genügend genau zu messen, und unter Einbeziehung des gefahrenen Weges in Kilometer pro Stunde umzurechnen. Das Ergebnis muss dann nur noch angezeigt werden.
Da die Hardwareanforderungen nahezu identisch mit denen des mobilen Servosignaltesters sind, habe ich lediglich die dort benutzte Schaltung etwas angepasst und ergänzt. Ausserdem kam bei dieser Anwendung eine größere 7Segment Anzeige zum Einsatz.
Hier der Schaltplan des
Geschwindigkeitsmessers

Funktionsweise
Über die beiden Darlington-Transistoren Tr4 und Tr5 werden die
Signale der beiden Lichtschranken invertiert, auf TTL Pegel angepasst
und
an die Interrupts /INT0 und /INT1 geleitet. Die errechnete
Geschwindigkeit
wird an den 7 Segmentanzeigen sichtbar gemacht. In dem Layout verwendet
wurden Anzeigen mit 20 mm Symbolhöhe. Da die Anzeigen gemultiplext
werden, müssen zum erreichen der vollen Helligkeit gegebenenfalls
die Vorwiderstände R1-R8 noch etwas geringer ausfallen. Allerdings
sollte
der maximale Strom, den der Mikrocontroller gegen Low liefern kann
(20mA)
nicht überschritten werden.
Der von mir verwendete Quarzoszillator soll für möglichst
konstante und genaue Messergebnisse sorgen. Natürlich tut es auch
ein Standard Quarz. Diese Variante ist im Schaltbild dargestellt, und
auch
im Platinenlayout vorhanden.
Achtung: seit ein paar Monaten liefert
Reichelt bei den 24Mhz
Standartquarzen nur noch Oberwellenquarze. Zur ordnungsgemässen
Funktion in dieser Schaltung werden aber Grundwellenquarze
benötigt.
Also NICHT den 24-HC18 von Reichelt benutzen!
Der Schaltungsteil, der mit der gestrichelten Linie gekennzeichnet ist, befindet sich auf einer kleinen Zusatzplatine. Rund um das IC2, das als Taktgeber geschaltet ist, befindet sich ein Spannungsverdoppler, wie er auch schon als Ladungspumpe bei meinen RC-Fahrtreglern verwendet wird. Genutzt habe ich ihn hier, um die für die Lichtschranken benötigten ca. 12Volt (10mA) zu erhalten. Natürlich hätte ich auch eine größere Anzahl Akkus vorsehen können, ich wollte jedoch meine Senderakkus (8 Zellen) dafür benutzen. Ausserdem passen die 8 Akkus gerade so schön in das vorhandene Gehäuse. Je nach verwendeten Stromquellen und Lichtschranken kann dieser Schaltungsteil wegfallen oder anders ausfallen.
Folgende Funktionen sind in der Software implementiert:
Noch ein Wort zu den 7 Segmentanzeigen: Da der Geschwindigkeitsmesser
typischerweise im Freien verwendet wird, ist es zu empfehlen sehr
lichtstarke
Anzeigen zu wählen (21000 mcd o.ä.) Die sind nicht wesentlich
teurer als normale und man kann sie besser sehen. Zu erhalten wie alle
anderen Bauteile z.B. bei Reichelt oder Conrad. (siehe auch die Linkliste)
Messaufbau
Um ein einigermaßen genaues Ergebnis der Messungen zu erhalten,
darf die Messstrecke nicht zu kurz sein, eine zu lange Messstrecke hat
wiederum Nachteile, da Fehler z.B. durch schräges durchfahren
entstehen.
Getestet habe ich den Geschwindigkeitsmesser mit 50cm Messstrecke.
Mehr als 1m dürfte nicht sinnvoll sein. Für eine kurze
Messstrecke
sind die Verzögerung der Lichtschranke (1ms) und die kleinste
messbare
Zeit (100µS = 0,0001S) ausschlaggebend. Hierzu ein
Beispiel:
Ein Auto das mit 100Km/h fährt, legt pro Sekunde 27,77 Meter, pro
ms also eine Strecke von 2,77 cm zurück. Ist die kleinste messbare
Einheit, wie in dieser Software realisiert 0,1ms, so ändert das
letzte
"Digit" der Messung bei einem Messweg von 2,77 cm also 10%, bei einem
Messweg
von 27,77 cm nur 1%. Sinnvolle Längen des Messweges starten also
ab
etwa 27 cm. Die Ungenauigkeiten betreffen übrigens auch z.B.
unterschiedliche
Auslöseverzögerungen der beiden Lichtschranken durch
Fertigungstoleranzen.
Die genaue (gemessene) Länge wird als einziger einzustellender Parameter in den Assembler Sourcecode eingegeben. (Variable "Messweg", Eingabe in mm)
Software
Wie berechnet die Software jetzt die Geschwindigkeit?
Es gilt immer die Formel Geschwindigkeit=Weg/Zeit. Da wir die Geschwindigkeit in Km/h angezeigt haben möchten, die Wegstrecke aber in mm eingeben, und die Zeit in 0,1ms messen, können wir schon mal folgendes vorrechnen:
Km/h= Strecke in Km / Stunden
Km/h= Strecke in Km *3600 / Sekunden
Km/h=Strecke in m * 3600 / Sekunden *1000
Km/h=Strecke in mm * 3600/ Sekunden *1000 *1000
Km/h=Strecke in mm * 3600/ milliSekunden *1000
Km/h=Strecke in mm * 3600/ 0.1milliSekunden *100
Km/h=Strecke in mm * 36/ 0.1milliSekunden
Da 0.1 ms genau unserer minimalem Messzeit entspricht, ergibt sich
für
die Errechnung mit dem Mikrocontroller also:
Die Variable Messweg * 36. Dieses Ergebnis bleibt für alle
Rechnungen
gültig, solange der Messweg nicht verändert wird.
Dieses Ergebnis wird dann durch den gemessen Zählerstand, der
in 0.1 ms Schritten misst, dividiert. Die Anzeige erfolgt danach in
Km/h.
Die Matheroutinen habe ich aus der Mathematiklibrary von Dr. W.G.Marshall der Loughborough University entnommen, gefunden habe ich sie bei www.8052.com/codelib.phtml
Die Software selbst sorgt im Normalbetrieb ausschließlich für das Multiplexen der Anzeige, alle Aktionen zum Messen werden durch Interrupts ausgelöst und in den Interruptroutinen bearbeitet.
Der Sourcecode für den 89c2051, wie immer im RAD51 Format, ist ausführlich dokumentiert. Dazu wird noch das Definitionsfile mod51.h benötigt. Die Software und alles andere gibt es im Downloadbereich nochmals.
Bauteile und Aufbau
Als Gehäuse hatte ich ein vorhandenes Messgerätegehäuse
mit Batteriefach zur Verfügung, die Abmessungen der Platine sind
jedoch
so, dass auch Handelsübliche Gehäuse ohne Probleme passen.
Der
Signalpegel der Lichtschranke wird über zwei Darlington
Transistoren
auf TTL Level gebracht. Diese habe ich wegen der höheren
Stromverstärkung,
eingesetzt. Beim eventuellen Austausch gegen normale Transistoren die
Pinbelegung
beachten!
Die Anschlüsse der Lichtschranken sind über 6,3mm Klinkenstecker nach außen geführt. Für die Lichtschranken selbst habe ich mir höhenverstellbare Aluminiumhalter aus einem Aluwinkel gebaut, die Reflektoren sind auf zwei im Winkel verschraubten Spanplatten befestigt. Es ergibt sich eine maximale Distanz von Lichtschranke und Reflektor von gut 3 Meter, was absolut brauchbar ist.
Es handelt sich bei der Lichtschranke um den Typ Visolux Serie 18 (R18-6-3000), aber es gibt bestimmt mehrere geeignete Artikel, die immer mal wieder z.B. bei eBay günstig angeboten werden. Achten sollte man auf kurze Auslöseverzögerungen (bei diesem Typ 1ms), und eine hohe Reichweite.
Hier
ein Foto der bestückten Platinen. Die bei der 7 Segmentanzeige
mehrfach
vorhandenen Anode Anschlüsse habe ich abgezwickt, um eine
günstigere
Leiterbahnführung zu erreichen. Den linken Dezimalpunkt habe ich
übrigens
nicht zum leuchten gebracht, er ist allerdings auch nicht wirklich
erforderlich.
Im Bild noch nicht zu sehen ist der Summer. Es handelt sich dabei um
einen
Schallwandler, der mit einer Rechteckfrequenz angesteuert werden muss.
Diese Frequenz wird per Software erzeugt und ist im Source entsprechend
dokumentiert.
![]() |
|||
| Widerstände: R1-R8,R18 = 220 R19 = 1K R17 = 470 R9-R11 = 2,2K R13,R14,R20 = 4,7K R12,R15,R16 = 10K |
Kondensatoren: C1 = 470µF Elko 25V C2 = 220µF Elko C3 = 100nF Kondensator C4 = 10µF Elko C7 = 4,7nF Kondensator C5,C6 = 22µF Elko 25V |
Halbleiter: IC1 = AT89C2051 IC2 = NE555 UR1 = 7805 Spannungsregler 1A Tr1-Tr3 = BC560 PNP-Transistor Tr4,Tr5 = BC875 NPN-Darlington LED1 = LED 5mm rot D1,D2 = 1N4148 |
Sonstiges: OSC1 = 24Mhz Quarz Oszillator K1 = Akku Anschluss K2,K3 = Klinkenstecker 6,3mm 7Seg. = SA 08-11 gem. Anode T1 = Taster Su1 = Summer |
Hier noch einmal gesammelt alle Files. Zum einzeldownload
Shift+rechte
Maustaste, oder das komplette File: TachoV10.zip
Sourcecode, die kompilierten Files im
Intel
Hex und Binärformat, der Bestückungsplan
und die
Stückliste. Das Platinenlayout
folgt demnächst.