Hallo, es gibt ähnliche Artikel zu meinem Problem, jedoch konnten die mir leider nicht so richtig weiter helfen. Daher versuche ich mal mein Glück in einem neue Thread :) Ich möchte gerne eine Zeitmessung mit einer Reflex-Lichtschranke druchführen. Für einen Prüfstand soll die Schwingdauer von einem rotierenden Werkstück ermittelt werden. Auf dem Werkstück ist dementsprechend eine Fototransistor angebracht. Es soll also die Zeit gemessen werden, in der das Lichtsignal reflektiert wird! Da der Arduino ein Timer besitzt, bin ich mir sicher, dass es mit der Hardware und der Software dafür funktionieren wird... --> Jedoch habe habe Probleme beim Verständnis, wie der Timer gestartet und gestoppt wird. Irgendeinen Wert muss die Software ja auslesen, sodas sie weiß das sie die Zeitmessung starten bzw. beenden soll... Ich wäre für jede Hilfe dankbar!
Hä? >Es soll also die Zeit >gemessen werden, in der das Lichtsignal reflektiert wird! Da das Licht, mit der sprichwörtlichen Lichtgeschwindigkeit, durch die Gegend hetzt, dürfte diese Messung wohl in die Hose gehen. Schick doch mal eine Skizze.
Thomas Schröder schrieb: > rotierenden Werkstück ermittelt werden. Auf dem Werkstück ist > dementsprechend eine Fototransistor angebracht. Es soll also die Zeit > gemessen werden, in der das Lichtsignal reflektiert wird! Du willst aber nicht die Lichtlaufzeit messen, oder? Ich denke du willst den zeitlichen Abstand von einer Reflexion des Lichtstrahls bis zur nächsten Reflexion, wenn das Werkstück eine Schwingung gemacht hat, messen. > --> Jedoch habe habe Probleme beim Verständnis, wie der Timer gestartet > und gestoppt wird. Irgendeinen Wert muss die Software ja auslesen, sodas > sie weiß das sie die Zeitmessung starten bzw. beenden soll... Im Idealfall startest und stoppst du den Timer überhaupt nicht. Wie misst du denn die Zeit, die dein fahrradfahrender Kumpel für 100 Meter braucht, wenn du nichts weiter als eine Uhr mit Sekundenzeiger hast? Genau. Du merkst dir auf welcher Zahl der Sekundenzeiger stand, als dein Kumpel weggefahren ist und du merkst dir die Zahl auf der der Sekundenzeiger steht, wenn er durchs Ziel fährt. Die Differenz davon ist die Anzahl der Sekunden, die er unterwegs war. Und das ganz ohne das du deine Uhr starten oder anhalten musstest. Wie genau musst du denn messen? Dein Arduino hat zb eine bereits funktionsfähige 'Systemzeit', die in Millisekunden Auflösung operiert. Wenn dir das reicht, dann sieh dir einfach mal die Funktion millis() an.
:
Bearbeitet durch User
Hallo, schomal vielen Dank für die Infos! Ich bin in dem Thhemengebiet Messtechnik trotz meines Studiums eher ein Laie, ich habe mich wohl nicht so deutlich ausgedrückt... Ich möchte naütrlich nicht die Lichtgeschwindigkeitmessen, sondern die Schwingungsdauer für z.b. 10 Schwingungen von einem rotierenden Werkstück. Das Lichtsignal soll dazu benutzt werden, den Timer zu starten und nach 10 maligen überqueren des Fototransistors wieder den Timer stoppen. Von der Funktion millis() habe ich schon gelesen, und diese Zeitgröße reicht mir auch. Nur ist halt mein Problem, wie aus dem Sensor(Reflex-Lichtschranke) heraus gelesen wird, dass der Timer startet bzw. gestoppt wird... ------------------------ Der Versuch sieht im großen und ganzen so aus: http://www.physik.fh-aachen.de/fileadmin/inhalte/etechnik/pdf/praktikum/Massentraegheitsmoment.pdf --->Kapitel 4.2 "Messen Sie für jeweils 5 Schwingungen (5T) die Zeit bei einer Amplitude zwischen 10<Phi<20 und berechnen Sie den Mittelwert der Schwingungsdauer T" Skizze ist auf der Seite 6, b)
:
Bearbeitet durch User
Thomas Schröder schrieb: > Schwingungsdauer für z.b. 10 Schwingungen von einem rotierenden > Werkstück. Was denn nun Schwingungen oder Umdrehungen? Das solltest Du zuerst klarstellen. wendelsberg
wendelsberg schrieb: > Thomas Schröder schrieb: >> Schwingungsdauer für z.b. 10 Schwingungen von einem rotierenden >> Werkstück. > > Was denn nun Schwingungen oder Umdrehungen? > Das solltest Du zuerst klarstellen. > > wendelsberg Im Groben ist es eigentlich nicht so wichtig was, weil es mir um die Zeitmessung geht. Für meinen Prüfstand geht es um Umdrehungen
Thomas Schröder schrieb: > Nur ist halt mein Problem, wie aus dem Sensor(Reflex-Lichtschranke) > heraus gelesen wird, Das nennt man dann eben 'programmieren'. Wann willst du denn von deiner "Systemuhr" (nichts anderes ist ja millis()) die aktuelle Zeit wissen? Na immer dann wenn sich der Zustand der Lichtschranke von "nicht unterbrochen" auf "unterbrochen" ändert. Denn genau zu diesem Zeitpunkt hat das Objekt offenbar damit begonnen die Lichtschranke zu uterbrechen. Kurz zuvor war der Lichtstrahl noch intakt (vor ein paar Mykrosekunden), jetzt aber ist er unterbrochen nur so als Skizze
1 | ...
|
2 | unsigned char previousState; |
3 | unsigned long previousTime; |
4 | |
5 | void loop() |
6 | {
|
7 | unsigned char stateNow = digitalRead( .... ); |
8 | |
9 | if( stateNow != previousState ) { |
10 | if( stateNow == LOW ) { // oder HIGH, je nachdem wie die LS verschaltet ist |
11 | timeNow = millis(); |
12 | |
13 | timeDifference = timeNow - previousTime; |
14 | previousTime = timeNow; |
15 | |
16 | ... mach was mit timeDifference |
17 | }
|
18 | }
|
19 | previousState = stateNow; |
20 | }
|
So ungefähr. Das ist zwar nicht die beste Methode und sie hat ihre Schwächen. Vor allen Dingen darf der Teil ... mach was mit ... nicht allzu lange dauern, weil du die nächste unterbrechung nicht verpassen darfst. Aber hey ... es ist DEIN Prüfstand und eigentlich solltest du etwas mehr programmieren können, wenn du dich an solche Sachen wagst! (meine Meinung)
In erster Näherung brauchst Du zwei Eingänge. Einen um die Messung zu starten bzw. zu wiederholen. Meist ein Tastereingang - setzt alles zurück. Einen zweiten, der mit Deiner Lichtschranke verbunden ist. Hier wird das erste Ereignis als Startreferenz (Zeit merken) genutzt und die dann folgenden neun Ereignisse gezählt. Mit dem zehnten Ereignis wird das System angehalten, die aktuelle Zeit ermittelt usw. Wie man Eingänge abfragt, die Zeit ermittelt und eventuelle Ergebnisse ausgibt kannst Du Dir hier in den verschiedenen Foren und aus den, dem Rechner beigefügten Beispielen, zusammensuchen. Ein bisschen kümmern musst Du Dich allerdings auch selbst. Auf Posts, nach dem Motto: "Ich habe keine Ahnung - helft mir doch bitte, indem Ihr meine Arbeit macht", reagieren hier viele recht unwirsch.
Thomas Schröder schrieb: > Der Versuch sieht im großen und ganzen so aus: > http://www.physik.fh-aachen.de/fileadmin/inhalte/etechnik/pdf/praktikum/Massentraegheitsmoment.pdf > --->Kapitel 4.2 Aha. Also ein Drehpendel. Konntest du das nicht gleich sagen? > Im Groben ist es eigentlich nicht so wichtig was, weil es mir um die > Zeitmessung geht. Für meinen Prüfstand geht es um Umdrehungen Nein. Ein Drehpendel macht i.d.R. keine ganzen Umdrehungen. Es dreht sich aus der Ruhelage um einen bestimmten Winkel \phi, stoppt und dreht sich zurück; überquert die Ruhestellung und dreht sich in die andere Richtung (ohne Reibung bis -\phi). Was gefragt ist, ist die Wiederholfrequenz, gleichbedeutend mit der Frage, nach welcher Zeit das Pendel die gleiche Extremauslenkung wieder erreicht bzw. nach welcher Zeit es die Ruhestellung in der gleichen Richtung durchquert. Es erscheint auf den ersten Blick am einfachsten, die Lichtschranke so aufzubauen, daß sie in der Extremstellung auslöst. Dann muß man einfach die Zeit zwischen zwei Auslösungen messen. Allerdings ist das unpraktisch, weil jetzt die initiale Auslenkung des Pendels zur Position der Lichtschranke passen muß. Außerdem wird das Pendel durch Reibung ständig Energie verlieren und dadurch die Messung (irgendwann, aber deutlich vor dem Ende der Pendelbewegung) abbrechen - weil der Pendelausschlag einfach zu klein wird um die Lichtschranke auszulösen. Eine zweite Variante wäre, die Lichtschranke so zu positionieren, daß sie bei jedem Nulldurchgang auslöst. Jetzt muß man allerdings beachten, daß man zwei Impulse pro Pendelperiode bekommt. Die dritte Variante ist eine Abwandlung der ersten. Wenn das Pendel ein Rad ist und \phi < 180°, dann kann man eine Hälfte des Radumfangs schwarz färben, die andere hell. Die Lichtschranke positioniert man dann so, daß sie in Ruhestellung gerade auf der hell/dunkel Grenze ist. Dann bekommt man genau eine Auslösung je Pendelperiode. XL
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.