Hi
Wir haben hier in der Uni einen kleinen Wettbewerb, bei dem die
Studenten ein Modellauto modifizieren müssen. Am Ende werden dann in
mehreren Disziplinen kleine Wettbewerbe gefahren.
Eine Disziplin ist das Beschleunigungsrennen. Bisher wurde das per Hand
mit einer Stoppuhr gemessen - was natürlich entsprechend ungenau ist.
Also messen schon drei Leute und man nimmt die Mitte. Naja, alles nicht
optimal, also wollte ich (bin selbst Student und als HiWi an dem Projekt
beteiligt) eine automatische Zeiterfassung bauen.
Daten der Strecke:
- ca. 2-3m breit
- ca. 15m lang
Anforderung an die Messerfassung:
- möglichst wenig Kabel ziehen, am besten aufstellen, ausrichten, läuft
- Messgenauigkeit von unter 50ms Pflicht, unter 10ms wäre schön, 1ms
wäre top
- Zusätzlich eine grobe Messung der Geschwindigkeit bei Zieleinfahrt
- zuverlässige Erfassung des Fahrzeugs, soll ja niemand mehrfach fahren
müssen, weil die Messung versagt hat.
Wie ich denke es zu lösen:
- 3 Infrarotsender bestehend aus IR-Diode (940nm, 30° Abstrahlwinkel) in
einem kleinen Plastikrohr zum Abschirmen, einem "Frequenzgenerator" der
die LED mit z.B. 30kHz pulst und einer kleinen Stromversorgung (3xAA
Batterien)
- 3 Empfängerplatinen bestehend aus TSOP34830 als IR-Empfänger,
beschaltet wie im Datenblatt und ebenfalls im Plastikrohr zum
Abschirmen, einem Atmega Mikrocontroller und einem RFM70 Funkchip,
wieder versorgt mit 3xAA Batterien
- 1 "Auswerter" mit RFM70 Funkchip, Atmega, MAX232 Pegelwandler, 3xAA,
per serieller Schnittstelle mit dem PC verbunden
Dann die drei Sender links am Fahrbahnrand aufstellen, einen am Start,
einen am Ziel und einen z.B. 1m vorm Ziel um die Geschwindigkeit auf dem
letzten Meter messen/errechnen zu können. Die drei Empfänger jeweils auf
der anderen Seite der Fahrbahn. Per Funk werden dann die drei
Lichtschranken ihr Signal an den "Auswerter" schicken, über den ich die
Daten in den PC bringe und dort auswerte.
So, habe ich dabei irgendwas ganz wichtiges übersehen? Oder könnte das
so was werden? Muss ich noch irgendwas wichtiges beachten?
Oder hat jemand 'ne bessere Idee?
Klingt grundsätzlich nicht schlecht.
Ich würde am Mega selber noch ein LCD anbringen und auf den Funk würde
ich verzichten (eh schon wissen: Wer Funk kennt nimmt Kabel).
15 Meter sind doch noch keine Distanz. Da ist ein Kabel genauso schnell
ausgeworfen und an die Einzelbaugruppen angesteckt. Dafür gibts dann
aber auch keine Probleme mit Funkstörungen.
Da du einen PC in der Nähe hast, hast du wahrscheinlich auch 230V
Netzspannung. Womit für mich die Batterien raus sind und ein kleines
Netzteil her muss. Per Trafo erst mal runter auf so um die 9V und dann
mit einem 7805 auf den einen (!) Mega.
die 9V schick ich per Kabel raus zu den Lichtschranken, die über andere
Adern ihre Pulse an den einen Mega zurückmelden. 9V deswegen, weil mich
dann auch der Spannungsabfall nicht weiter interessiert (obwohl, bei 15m
hast du da sowieso noch keinen nennenswerten Abfall).
Ein Kabel vom Mega zur ersten Lichtschranke, von dort ein Kabel zur
2.ten und von dort zur 3.ten. Macht minimum 5 Adern, die einfach an
jeder Lichtschrankenplatine vom Eingang zum Ausgang durchgeschleift
werden bzw. die jeweilige Platine holt sich eine Ader für ihr eigenes
Signal raus.
Vorteil: Ich hab die Unterbrechungen der Lichtschranken direkt am
Auswerte-Mega und muss mir da kein Multi-Prozessor System mit
Kommunikation von 4 Megas überlegen. Und die 2 Minuten zum Ziehen bzw.
Einholen der Kabel hab ich allemal bei einem Wettkampf.
Einziger Nachteil: Ich hab eine potentielle Stolperfalle.
Aber das hängt jetzt auch wieder vom Gelände ab, auf dem die Rennen
stattfinden.
Ach ja. Denk drann:
IR siehst du nicht. D.h. du brauchst eine optische Hilfe, wie du Sender
und Empfängerröhrchen aufeinander ausrichtest. Und der Sender muss ja
auch (da auf der anderen Seite der Bahn) mit Strom versorgt werden,
womit die Batterien wieder im Spiel sind (ich mag Batterien nicht, weil
sie dazu tendieren immer leer zu sein, wenn man sie braucht und keine
Ersatzbatterien verfügbar sind :-)
Müsste man mal probieren, ob das geht, dass man Sender und Empfänger in
ein gemeinsames Gehäuuse einbaut und auf die gegenüberliegende Seite
sowas wie ein Katzenauge stellt. (d.h. 2 Lichtstrahlen quer über die
Bahn).
Karl Heinz Buchegger schrieb:> sowas wie ein Katzenauge stellt. (d.h. 2 Lichtstrahlen quer über die>> Bahn).
Das hast du Dir wohl bei den Bullen abgeschaut?
@Jojo: Mit dem Radargerät messe ich aber doch erstmal nur die
Geschwindigkeit, oder? Die Zeitmessung ist wichtiger, Geschwindigkeit
ist nur ein netter Zusatz.
@Karl: Danke für deine Meinung dazu. Dann werde ich mal anfangen die
Teile zu besorgen und zu basteln. Erstmal als Kabellösung und mal
schauen, ob ich später nicht doch noch auf Funk ausbauen kann :)
So, ich habe gerade angefangen zu basteln. Erst einmal mit ein paar
Testkomponenten, die ich gerade "rumfliegen" hatte bzw. auf die schnelle
zum Testen besorgen konnte.
Prozessor: ATmega32
IR-Empfänger: TSOP31240 (40kHz Carrier)
IR-Diode: Osram LD 271 L (950 nm, +-25°)
Damit wollte ich erst einmal die Lichtschranke testen bzw. überhaupt die
Reichweite ausprobieren.
Der ATmega32 läuft auf 8MHz, mit folgendem Code toggle ich den Ausgang
OC0 80.000x pro Sekunde, so dass ein Signal mit 40kHz entsteht, bei 50%
an und 50% aus.
1
//Timer initialisieren
2
TCCR0|=(1<<WGM01)|(1<<COM00)|(1<<CS00);//Timer bei Compare Match zurücksetzen, OC0 bei Compare Match togglen, Vorteiler auf 1
3
OCR0=99;//Bei jedem 100. Schritt togglen
Das funktioniert auch. Wenn ich die IR-Diode auf den Empfänger richte,
fällt dessen Ausgangsspannung auf ca. 0V, wenn ich die Diode "zuhalte",
steigt die Spannung sofort wieder auf ~5V (=Eingangsspannung). Genau so
soll es ja auch sein.
Dann habe ich die Reichweite getestet. Im Fernseher o.ä. hat eine solche
Kombination ja durchaus einige Meter. Ich komme maximal auf ca. 30cm.
Bei ca. 28-30cm ist die Ausrichtung schon ziemlich empfindlich, ab 30cm
kommt dann auch bei guter Ausrichtung nichts mehr an und die
Ausgangsspannung vom TSOP liegt wieder bei 5V. Mache ich noch irgendwas
falsch? Oder brauche ich so leistungsfähige Dioden als Sender? Ich
betreibe sie derzeit an einem 150Ohm Widerstand bei 5V
Versorgungsspannung. Gemessen fließen dann ca. 21mA, wenn sie dauerhaft
an ist und ca. 9,6mA wenn sie bei 40kHz in 50% Zyklen betrieben wird.
Fernbedienungen ziehen doch nicht so viel Strom und senden mit >100mA
Strom an der Diode, um solche Reichweiten zu erzielen - oder doch? Was
mache ich falsch?
Ergänzung: halber Vorwiderstand, knapp 16mA Strom fließen nun effektiv
durch die Diode. Jetzt komme ich ca. 60cm weit. Muss der Diodenstrom
also wirklich so enorm hoch liegen, um am Ende Reichweiten von ein paar
Metern wie beim Fernseher zu erreichen bzw. die ca. 2m, die für meine
Anwendung nötig sind?
Tobias schrieb:> Was mache ich falsch?
Du hast das Datenblatt des TSOP34830 nicht beachtet. Der Empfänger hat
eine AGC und verträgt keine Dauer-40kHz-Signal, weil er dann
runterregelt. Probier es mal mit 50% Duty Cycle, d.h. z.B. 600µs lang
40kHz Rechteck, dann 600µs aus (cf Fig.3 Output Function im Datenblatt)
Stimmt, kurz vorm Schlafengehen war ich via Google auch noch drauf
gestoßen und hab die letzte Seite im Datenblatt endlich "begriffen".
Damit lässt sich die Reichweite schon mal deutlich erhöhen. Leider wird
die Übertragung gleichzeitig instabiler. Bei Reichweiten größer als ein
paar Dutzend Zentimeter scheint mir die AGC trotzdem wieder einen Strich
durch die Rechnung zu machen. Es ist, als würde die Übertragung
abbrechen. Dann muss ich erst einmal tatsächlich den optischen Weg
unterbrechen oder wieder einmal kuz nah ran gehen, um wieder eine
Verbindung hinzubekommen.
Je länger ich die Pausen wähle, desto stabiler wirds. Sende derzeit 50
Pulse, dann folgt eine Pause. Wirklich stabil wird es aber erst, wenn
ich die Pausen auf ca. 100ms (!) verlängere. Für den Tastendruck einer
Fernbedienung mag das ok sein, für die Detektion eines Modellautos aber
wohl eher nicht ;)
Gibt es noch Alternativen zu den TSOPs, die sich auch für Dauerfeuer
eignen oder zumindest Pausen von max. 10ms für einde stabile Übertragung
brauchen?
Tut´s da nicht auch einfach eine simple IR-Fotodiode?
Die Sendediode mit kurzen, kräftigen Stromstößen befeuern, dass du
Reichweite erzielst. Die Empfängerseite triggert dann mit diesen Pulsen
ein Monoflop nach, welches dann bei Unterbrechung der Lichtschranke
abfällt.
@Tobias
Was machst Du eigentlich, wenn zwei "Fahrzeuge" fast gleichzeitig
ankommen?
Sind die ordentlich auseinander, so kann man ja, via Augenmaßlehre,
festlegen, wer denn vorne war. Es bleibt aber die Tatsache, dass dann
zwei "Autos" nur eine Unterbrechung, von was auch immer, liefern.
Ist das Ergebnis noch knapper, musst Du den Dienstwürfel rausholen oder
ein Zielfoto machen.
Tobias schrieb:> Messgenauigkeit von unter 50ms Pflicht, unter 10ms wäre schön
Die gängigen, bezahlbaren Zeitmeßanlagen im Motorsport schaffen 1/100
Sekunde und die sind schon recht ausgefeilt. Lichtschranken eignen sich
ohnehin nur für Einzelfahrzeuge, im Rennbetrieb kommst du um Transponder
nicht herum. Die Frage nach Selbstbau solcher Systeme kam hier schon
öfters, aber m.W.n. hat es noch keiner zufriedenstellend hinbekommen.
Ich würde mich nach einer gebrauchten Zeitmeßanlage von AMB umsehen.
Gelegentlich sind die -relativ- günstig zu haben, wenn wieder eine
Kartbahn Pleite ist.
Es ist immer nur ein Auto auf der Bahn. Das kann ich also ausschließen.
So ein Transpondersystem habe ich auch noch da, aber noch nicht mal
ausgepackt. Habe auch nur einen Transponder, aber da ja nur ein Auto zur
Zeit auf der Bahn ist, reicht das ja. Für den Rundkurs alles wunderbar
(naja wobei hab es noch nicht getestet, aber als Fertigprodukt wird das
wohl klappen). Da kann ich Rundenzeiten und Rundenzeiten wohl zählen.
Was mir fehlt, sind halt die Zeiten für ein Beschleunigungsrennen.
Startzeit, Geschwindigkeit, Zielzeit.
Aber wie gesagt, immer nur ein Auto pro Bahn.
Was ich jetzt getan habe:
- meine 40kHz Modulationssignal habe ich jetzt von 50/50 auf 25% on und
75% off umgestellt, um kürzere aber stärkere Peaks auf die Diode geben
zu können. Dafür steuere ich die PWM jetzt selbst mit einer
Interruptroutine.
- Taktfrequenz auf 16MHz erhöht, da sonst die Länge der Interruptroutine
kritisch war (bei 8MHz nur 50 Taktzyklen Zeit für die Abarbeitung)
- "Verstärker" mit einem BC337-40 in Emitterschaltung, um den
Diodenstrom weiter zu erhöhen
- Basiswiderstand am BC337 von 220 Ohm. Bei Konstant-Ein direkt an 5V
fließen dann 18mA, hatte auch mit 20mA kalkuliet, bei meiner 25/75-PWM
fließen interessanterweise nur knapp 1mA durch den µC. Evtl. aber auch
ein Messfehler, da nur mit Multimeter gemessen. Egal - so lange es
funktioniert :)
- Widerstand vor der LED am Collector: 6,8 Ohm. Damit hatte ich
eigentlich ganz grob Peaks von ca. 520mA erwartet, so dass ich die LED
im Mittel eben mit ihrem Maximum von 130mA betreibe. Effektiv erreiche
ich ca. 82mA. Vielleicht durch den knappen Basisstrom, wobei der
Verstärkungsfaktor eigentlich deutlich höher ist, vielleicht auch weil
die Diode nun mal kein lineares Bauteil ist. Evtl. auch durch den
höheren Widerstand von meinem mehrfach verlängerten Kabel und dem schon
etwas älteren Steckbrett. Da kommt mindestens 1 Ohm dazu. Naja, immerhin
eine mehr als Vervierfachung des Stroms gegenüber meinen Werten vorher
bzw. dem, was ich direkt aus dem µC bekam
- 600µs Pulse schicken, so wie im Datenblatt als Beispiel beschrieben.
Entspricht 24 Pulsen.
- 9,4ms nichts tun, Pause. Entspricht 376 Pulsen.
Damit kann ich Modellautos von ca. 30cm Länge detektieren, so lange sie
nicht schneller als 115kmh sind. Evtl. muss ich die Pausen aber noch
runtersetzen, schließlich detektiere ich ja evtl. nur die Räder, die
deutlich kleiner sind. Bei dem jetzt hohen Diodenstrom scheint aber auch
die im Datenblatt beschriebene 600µs-Pause noch zu einigermaßen stabilen
Ergebnissen zu führen, das sollte dann locker reichen.
Die Verbindung ist jetzt einigermaßen stabil. Wenn sie abbricht, weil
der Empfänger mich "rausfiltert", hilft nur einmal die Übertragung
komplett zu beenden bzw. kurz abzudunkeln. Das muss auch für mind. 100ms
erfolgen, daher kann ich es nicht dauerhaft im Signal einbinden. Mit den
aktuellen Einstellungen und dem deutlich höheren Diodenstrom scheint das
ganze aber einigermaßen stabil zu sein. Abbrüche habe ich eigentlich
nur, wenn ich die Ausrichtung komplett verdrehe und dann zurück auf den
Empfänger ausrichte.
Werde das also mal weiter testen, aber das könnte funktionieren so!
@Tobias
- Wie wär’s mit einem Laser?
- Die gibt's für 'nen Appel und 'nen Ei.
- Lassen sich auch bei Tageslicht recht gut ausrichten.
- Den Empfänger am Boden eines kleinen Röhrchens und das Umgebungslicht
ist abgeharkt.
- Waagerecht, maximal tief und nur die harmlose Gefahrenklasse und das
Ganze ist fast Narrensicher. Es sei denn, es liegt jemand auf der
Ziellinie.
- Ein paar Zentimeter vor dem Ziel eine zweite Lichtschranke und Du
kannst sogar recht einfach die Geschwindigkeit, beim Zieleinlauf,
messen. Koppelst Du die zwei Laser und Empfänger noch mechanisch, so
erhöhst Du gleichzeitig die Genauigkeit und kannst die Messstrecke an
die maximale Fahrzeug- und Prozessorgeschwindigkeit anpassen.
- Da Du ja sowieso senden willst, kannst Du die Emitter sogar
zwischenzeitlich per Funk ausschalten um Strom zu sparen. So das ein
Problem ist.
Den Vorschlag von Karl-Heinz, Triple-Spiegel ("Katzenauge") auf der
einen Seite aufzustellen, um Sender und Empfänger nur auf einer Seite zu
haben, wäre die einfachste Lösung. Da braucht dann gar nichts mehr
ausgerichtet zu werden! Nur hinstellen und fertig.
Auswertung, Spannungsversorgung vereinfacht sich auch noch (alles auf
einer Seite). Wenn die beiden Sender (Laser ist eine gute Idee) nur
wenige Zentimeter auseinander sind, so hat man eine ziemlich präzise
Ziel- UND Geschwindigkeitsanzeige. Die gesamte Auswertung erfolgt dann
in diesem Teil, die Start-Lichtschranke ist abgesetzt und sendet (per
Funk oder Kabel) nur den Startpunkt.
Am Ziel spielt das Leben, nicht am Start.
Blackbird