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?

michael_x


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

Auch mit dem Standard-Arduino ist ein 1'23.45 so genau wie jede handgestoppte Vergleichsmessung, wenn die Messung überhaupt funktioniert.
Technik-Freaks sehen es eventuell anders, aber die Quarzgenauigkeit ist meiner Meinung nach dein kleinstes Problem.

Wenn du speziell eine Arduino-Variante dafür besorgst, kannst du ja auf eine mit echtem Quarz achten. Der alte Duemilanove (???)
Wenn du nur den Prozessor auf eigenem Board verwendest, nimmst du natürlich nicht die internen 8 MHz und keinen Resonator, sondern einen "richtigen" Quarz und 2 Kondensatoren.

Als "zusätzliche Bauteile" täte jedem Arduino, der mit Zeit zu tun hat, eine EchtzeitUhr gut.
Damit könntest du entweder deine millis() kalibrieren oder gleich Zeitimpulse erzeugen ...

Mir kommt immer gleich das DataLogger-Shield in den Sinn ...

cr0n0s1

Quote

Wenn du speziell eine Arduino-Variante dafür besorgst, kannst du ja auf eine mit echtem Quarz achten. Der alte Duemilanove (???)
Wenn du nur den Prozessor auf eigenem Board verwendest, nimmst du natürlich nicht die internen 8 MHz und keinen Resonator, sondern einen "richtigen" Quarz und 2 Kondensatoren.


Da mich dieser Teil jetzt leicht verwirrt möchte ich nochmal zusammenfasse. Rein theoretisch kann ich einen Arduino kaufen, zwei Lichtschrank anschließen, das Programm schreiben und hab dann eine einfach aber denoch genau Zeitmessung?

sth77

Auch aus meiner Sicht richtig erfasst. Wenn du noch bei der Bauteilzusammenstellung bist, würde ich dir zu einem Arduino Uno raten. Wenn dein Projekt die Experimentierphase verlässt, kannst du den Mikrocontroller einfach auf eine Lochrasterplatine o.ä. setzen und ggf. mit einem genaueren Quarz ausstatten. Es gibt auch Atmega328 zu kaufen, die mit dem passenden Bootloader ausgestattet sind, die dann (im Tausch) in das freigewordene Arduino-Board kommen.
Ich drücke die Daumen, wünsche frohes Gelingen und hoffe auf einen Baubericht hier im Forum. ;)
Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

cr0n0s1


Auch aus meiner Sicht richtig erfasst. Wenn du noch bei der Bauteilzusammenstellung bist, würde ich dir zu einem Arduino Uno raten. Wenn dein Projekt die Experimentierphase verlässt, kannst du den Mikrocontroller einfach auf eine Lochrasterplatine o.ä. setzen und ggf. mit einem genaueren Quarz ausstatten. Es gibt auch Atmega328 zu kaufen, die mit dem passenden Bootloader ausgestattet sind, die dann (im Tausch) in das freigewordene Arduino-Board kommen.
Ich drücke die Daumen, wünsche frohes Gelingen und hoffe auf einen Baubericht hier im Forum. ;)


Danke, sehr schöne Antwort ;) und der Tipp mit dem UNO ist auch hilfreich für mich als Anfänger. So bald ich die ersten Ergebnisse habe werde ich berichten.

circuit99



Wenn du nur den Prozessor auf eigenem Board verwendest, nimmst du natürlich nicht die internen 8 MHz und keinen Resonator, sondern einen "richtigen" Quarz und 2 Kondensatoren.


Oder du nimmst gleich einen Quarzoszillator dann kannst du dir das Kallibrieren auf jeden Fall sparen.

Go Up
 

Quick Reply

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Warning: this topic has not been posted in for at least 120 days.
Unless you're sure you want to reply, please consider starting a new topic.

Note: this post will not display until it's been approved by a moderator.
Name:
Email:

shortcuts: alt+s submit/post or alt+p preview