nachdem ich 30min. die Suche vergeblich gequält habe, erlaube ich mir mein Ansinnen vorzutragen
Ich bräuchte eine "Bewegungsschranke" also etwas, daß wenn sich etwas durch die "Schranke" hinndurch beweg ein "Signal" an das Arduiono-Board (UNO) meldet.
Also ich will z.B. etwas fallen lassen und wenn das Objekt durch die "Schranke" fällt wird das "Signal" ans Board gemeldet (so als ob man einen Taster drückt).
Das ganze sollte recht zügig funktionieren, also im ms Bereich.
Mit welchen "Teilen" kann ich das realisieren? Die Breite der Lichschranke sollte max. 100cm betragen.
Es käme z.B. ein Laser mit einer Photodiode/-transistor in Betracht, kommt etwas auf die Genauigkeit an, die Du brauchst. Einfache Setups sollten aber auch mit einer Infrarot-LED und einem Infrarot-Phototransistor möglich sein.
Natürlich musst Du noch eine Lichtquelle haben, in meiner Erfahrung eignen sich für grössere Abstände Laser sehr gut. Da Du eine Weitbereichs-Photodiode im Auge hast, musst Du evtl. in einem abgedunktelten Raum arbeiten, damit die Diode nicht schon vom Umgebungslicht durchschaltet. Bei der Verwendung von einem Laser kannst Du noch einen Filter vorschalten, damit nur eine Teilmenge des Lichts durchkommt (der Laser ist intensiv genug) und damit den Schaltpunkt relativ genau festlegen.
Ne, also abgedunkelt kann ich da nicht arbeiten...
Ich brauche eine "Schranke" die bei Tageslicht erkennt, ob etwas "durchfällt".
Oder eben eine "Laserschranke" die "auslöst" wenn der Laserstrahl kurz unterprochen wird.
Wobie das "Teil" das dann die "Laserschranke" durchbricht schon ziemlich genau fallen müsste.
Oder eben eine "Laserschranke" die "auslöst" wenn der Laserstrahl kurz unterprochen wird.
Wobie das "Teil" das dann die "Laserschranke" durchbricht schon ziemlich genau fallen müsste.
Wieso genau? Es muss nur genügend gross sein, aber je breiter eine Lichtquelle streut, desto schwerer wird die Erkennung von kleinen Objekten.
Es dürfte an der Zeit sein, dass Du etwas mehr über Dein Projekt verrätst. Bis jetzt wissen wir nur, dass Sender und Empfänger der Lichtschranke ca. 1m auseinander sind und dass Du das bei Tageslicht machen willst. Was fällt denn da runter? Wie gross ist es? Wie breit soll der Fallkorridor sein? Gäbe es die Möglichkeit, mehrere Laser und Photodioden aufzustellen, um einen breiteren Bereich abzudecken?
Die eine Möglichkeit ist, das ganze per Taster zu starten.
Eine andere Möglichkeit ist, das ganze per "Lichtschranke" zu starten.
Wobei das ganze später nicht nur für Wassertropfen, sondern für alles was "runterfällt" verwendet werden soll.
So möchte ich z.B. ein runterfallendes Ei fotografieren, wenn es auf dem Boden aufprallt. Die Steuerung, wann die Kamera auslösen soll, erfolgt dann dabei durch die Lichtschranke:
Aktivierung der Lichtschrkanke durch "durchfallen" des Eis + x ms (die natürlich noch zu ermitteln währen) = Aufprallzeitpunkt = Aufnahme
Genau für solche Sachen eignet sich die Laser-Schranke sehr gut. Auch das "genaue" Fallenlassen sollte eigentlich kein Problem darstellen. Oder übesehe ich etwas?
Entweder du arbeitest mit einem sehr variablen Aufbau, z.b. zwei einstellbare Dreibeine oder du machst nen relativ starren Aufbau, z.B. wie ein "|____|" wobei oben auf den Ecken dein Laserpointer und gegenüber deine Diode sitzt.
Mit dem Rohr kannst du das Umgebungslicht ganz gut abschirmen denke ich.
Erweitern:
Wenn alles funzt, kannst du deinen Laserpointer z.b. mit dem Arduino verbinden, anstatt dem Rohr einen Filter verwenden.
Cool wäre sicherlich auch, wenn man in die Fallstrecke mehrere Sensoren einbaut und so die Beschleunigungsänderung misst.
=> Auch cool für Burst-Aufnahmen!
Oder horizontal ne größere Fläche auf Auslöser beobachten.
Ganz allgemein denke ich, dass hier weniger der Laser/Fotodiode/Elektronik ins Gewicht fallen wird, als die Stative, Optik usw.
Du sagtest doch selber das es über eine größere Entfernung funktionieren soll, daher haben wir hier IR (ungenau und nicht weitreichend) ausgeschlossen. Es gibt bestimmt fertige Empfänger. Hier wäre mal ein Schaltplan, wobei man das Relais nicht benötigt. Wenn man die Widerstände anders auslegt sollte man auch mit 5V klar kommen.
Dann geht das sogar alles noch einfacher und sogar gegen Fremdlicht geschützt.
Ich habe so eine Lichtschranke mit dem Arduino schon einmal gebaut um die Geschwindigkeit eines Kickerball zu messen.
Schau dir mal das Projekt an, im rar Archive im Anhang findest du die Schaltpläne und den Source Code:
Die Theorie steht im PDF Dokument. Das Unnütze kannst du einfach überspringen.
Ein Takt Signal für die Infrarot Diode Vorwiderstand 90 Ohm, Signal wird vom Arduino generiert
Empfänger: TSOP 31238 mit 5V Versorgen dazu noch eine Diode, ein Kondensator für die Spannungsstabilisierung und zwei Widerstände
Ausgangs Signal direkt am Arduino anschließen
Quellcode:
/* Eine Klasse die den Timer 1 des Atmega 328P kontrolliert
* Die Prescaler Werte sowie andere Register müssen nicht mehr direkt beschrieben werden
* Quelle: http://www.arduino.cc/playground/Code/Timer1
*/
#include <TimerOne.h>
// Frequenz Status für die IR Dioden
unsigned char Frequenz_38kHz_state;
unsigned char Light_Mode_State;
void generateFrequenz_38kHz()
{
/* PIN 9 togglen
* Hier wird mit absicht auf die vereinfachten Arduino Funktionen verzichtet, da diese Funktion
* sehr schnell ablaufen muss. (Interrupt)
* Die orginal Arduino funktion (digitalWrite(9, state)) braucht die doppelte Ausführzeit.
*/
/* Toggle State */
Frequenz_38kHz_state = !Frequenz_38kHz_state;
/* Set Port */
PORTB |= (Frequenz_38kHz_state<<PORTB1);
}
void Lichtschranke_active(void)
{
//Verarbeitung des Signals
}
void setup()
{
/* TIMER1 wird zur Frequenzgenerierung für die Lichtschranken verwendet
* Generiert 38 kHz Signal für die Lichtschrank
* Timer 1 initialisieren mit:
* 1 / 38kHz = 26.32 µs
* 26.32µs = 38,76 kHz)
*/
Timer1.initialize(26);
/* Ausgangs Pin Festlegen (PIN 9) und Duty Cycle Wert einstellen
* Duty Cycle = 50% (10bit = 1023 => 100%, 512 => 50%)
*/
Timer1.pwm(9, 512, 26);
/* Beim Timer Überlauf wird ein Interrupt ausgelöst.
* Hier wird die Funktion festgelegt, die aufgerufen wird, wenn der Interrupt ausgelöst wird
*/
Timer1.attachInterrupt(generateFrequenz_38kHz, 26);
Frequenz_38kHz_state = 0;
/* Interrupts Definieren */
// du musst das signal vom empfänger direkt hier anschließen: an interrupt pin 0 siehe datenblatt deines kontrollers
// sobald das signal den status wechselt, wird die funktion Lichtschranke_active aufgerufen, den rest der Verarbeitung musst du selbst machen
// nicht jede Lösung ist Umsonst im Internet ... ein bisschen Aufwand musst du selbst leisten.
attachInterrupt(0, Lichtschranke_active, CHANGE);
}
void loop()
{
/
}