Go Down

Topic: Zeitmessanlage (Read 1 time) previous topic - next topic

cr0n0s1

Nov 16, 2012, 07:59 am Last Edit: Nov 16, 2012, 08:02 am by cr0n0s1 Reason: 1
Guten Tag Community,

ich bin neu hier und habe direkt mal ein Projekt ausgedacht, welches ich durchführen will.
Und zwar soll es um eine Zeitmessanlage gehen, welche auf verschiedenen Sportversanstalltungen zum Einsatzt kommen soll. Es soll so aus sehen, dass wenn der Sportler eine Lichtschranke unterbricht eine Uhr anfängt zu zählen. Die gemessene Zeit soll dann erstmal auf einem 16x2 LCD oder 7Segment Anzeige angezeit werden. Soweit eigentlich kein Problem ich wusste auch schon wie ich alles realisieren würde. Allerdings steh ich vor einem Gedankenproble. Was ist wenn die Lichtschranke durchbrochen wurde und nun die Zeit anfängt zu zählen. Wie kann ich nun Abfragen ob die zweite Lichtschranke am Ende durchbrochen wird und somit die Zeit stoppt.
Das zweite ist, in wie fern muss kann ich es gestallten das die Zeit möglichst genau ist? Schließlich benötigen die Rechnprozesse ja auch Zeit.

Viel Dank schonmal ;)

mkl0815

Du fragst die zweite Lichtschranke genauso ab, wie die erste. Wenn die erste Lichtschranke auslöst, kannst Du dir z.B. den aktuellen Wert von millis() in einer Variable speichern. Danach wartest Du einfach, bis die zweite Lichtschranke auslöst und speicherst wieder den aktuellen Wert von millis() in einer zweiten Variable.
Die Differenz zwischen den beiden Werten ist dann die vergangene Zeit in Millisekunden.
Zu beachten gibt es dabei mehrere Dinge.

1) Über welche Zeiten die gemessen werden reden wir?
2) Wie genau brauchst Du die Zeiten? millis() liefert Millisekunden, allerdings hängt es vom Takt des Arduino ab, wie genau die millis() zählen. Am besten ist ein Arduino mit "echtem" Quarz geeignet
3) In welcher Entfernung stehen die beiden Lichtschranken voneinander und wie willst Du das Signal der Lichtschranken übertragen? Je nach Übertragungsart mußt Du auch die Signallaufzeit mit einkalkulieren.

cr0n0s1

Danke schonmal für die Antwort.

Die Idee, die Differenz von millis() zunehmen, ist gar nicht so schlecht darauf bin ich nicht gekommen ;)

1) wir reden hier teilweis von Sekunden aber auch von Minuten kommt auf den Einsatzbereich (Wobei Mintuten da schon eher der Fall sind)
2) Also die Zeiten sollten natürlich so genau wie möglich sein damit man auch auf Tunieren ordentliche Werte verwenden kann (im Idealfall sollte die zeit dann in Minuten/Sekunden/Hundertstel ausgegeben werden.
3) Die Frage ist schwer zu beantworten weil es auch dort wieder auf den Anwendungbereich ankommt. Es können aber mal bestimmt 20-30 Meter werden. Über das Übertragungsmedium habe ich mir noch nicht soviel Gedanken gemacht. Im prototyping wollte ich natürlich erstmal alles mit Kupfer. Wenn alles später lauffähig ist würde ich ein Funkshield in Betracht ziehen.


michael_x

Quote
Die Zeiten sollten natürlich so genau wie möglich sein damit man auch auf Tunieren ordentliche Werte verwenden kann (im Idealfall sollte die zeit dann in Minuten/Sekunden/Hundertstel ausgegeben werden.

Mit millis() sind aussagekräftige Hundertstel - Sekunden kein Problem ( selbst im Stunden-Bereich ).
Man kann auch sicher sein, dass wenn eine zweite Messung weniger millis / hundertstel liefert, die Zeit kürzer war.
So wie es bei der Lichtschranke auf einen Zentimeter mehr oder weniger nicht wirklich ankommt, solange für alle Läufer die Schranke an der selben Stelle ist.
In der Regel kann man Zeiten genauer messen als Strecken (Man misst Zeiten um daraus Entfernungen zu bestimmen), aber der Standard Arduino Resonator ist dafür nicht optimiert.

Probleme sind eher Störsignale ( optisch oder elektrisch )

cr0n0s1

Was bedeutet das jetzt für die Druchführung? Brauche einen speziellen Arduino oder zusätzliche Bauteile?

Go Up