Ich versuche mit einem Arduino UNO und der Fotodiode BPW 34(Datenblatt siehe Anhang) die Höhenreferenz eines Bau-Rotationslaser (Tech.Daten siehe Anhang) abzugreifen.
Veruscht habe ich das mit folgendem gefundenem Beispiel:
Als Code habe ich folgendes verwendet:
/* Here is a bare-bones Arduino sketch to read the
outputs of the photodiode detectors described
in Figure 1 and Figure 2. The output pin of the
circuit's opamp is connected to analog pin 0
of the Arduino. The data are read every 0.1 second
in this example. However, you can change the sampling
rate by simply changing the argument of the
delay() statement. */
#define inPin0 0
void setup(void) {
Serial.begin(9600);
Serial.println();
}
void loop(void) {
int pinRead0 = analogRead(inPin0);
float pVolt0 = pinRead0 / 1024.0 * 5.0;
Serial.print(pVolt0);
Serial.println();
}
Wenn ich da nun z.B. eine LED Lampe ranhalte erkenne ich ich eine Schwankung im Seriellen Plotter. Versuche ich das nun aber mit dem Baulaser bleibt die Linie konstant.
Wo könnte da der Fehler liegen?
Ich möchte dazu gerne erwähnen das ich absolut Laie auf dem Gebiet bin. Weshalb ich mich im vornhinein schonmal für etwaige facepalm-Momente entschuldige.
Selbst habe ich die Diode bisher nicht eingesetzt, allerdings finde ich deine Schaltung sehr ungewöhnlich. Zumal der Widerstand parallel zur Diode liegt.
HotSystems:
Selbst habe ich die Diode bisher nicht eingesetzt, allerdings finde ich deine Schaltung sehr ungewöhnlich. Zumal der Widerstand parallel zur Diode liegt.
Die Anordnung habe ich mehrmals so im Netz entdeckt. Funktionieren tut sie eigentlich ja auch. Lichtquellen erkenne ich im Plotter. Nur der Baulaser wird nicht "erkannt".
Da muss ich mir morgen erstmal Kondensatoren kaufen gehen um das zu testen.
Die Schaltung die ich oben gepostet habe funktioniert ja grundsätzlich. Ich erkenne z.B. auch schwankungen im Tageslicht durch Sonneneinstrahlung im Zimmer. Auch diverse andere Lichtquellen "sehe" ich im Plotter. Nur den Baulaser bleibt "unsichtbar". Daher vermute ich eher das da etwas nicht kompatibel ist.
Also gerne nochmal, deine merkwürdige Schaltung habe ich bisher noch nicht gefunden.
Daher solltest du es besser machen, damit die Diode nicht zusätzlich gedämpft wird.
Da es sich um einen Rotationslaser handelt, kommt der nur 5 bis 10 mal pro Sekunde an der Stelle vorbei an der gemessen wird. Er blitzt also nur ganz kurz auf und ist dann wieder dunkel. Du musst also extrem Glück haben wenn Du genau zu dem Zeitpunkt misst wenn er gerade vorbeikommt.
Gerade habe ich leider auch keine Idee wie man das erfassen könnte.
Gerade habe ich leider auch keine Idee wie man das erfassen könnte.
Mit einem Oszi ansehen, was man überhaupt erhält?
Dann schauen, ob es digital zu erfassen geht? Oder ob die Pulse > 100 µs lang sind (das müsste dann auch analogRead können)?
Und was man stattdessen ohne den Laser sieht.
Also die Schaltung von oben hab ich jetzt aufgebaut und ausprobiert. Über den Sketch lese ich per analogRead() den Wert aus. Ich erhalte auch ein Wert aber der bleibt immer gleich (bei 92 oder 93), egal wie hell oder dunkel es ist.
michael_x:
Mit einem Oszi ansehen, was man überhaupt erhält?
D4xX6:
Also die Schaltung von oben hab ich jetzt aufgebaut und ausprobiert. Über den Sketch lese ich per analogRead() den Wert aus. Ich erhalte auch ein Wert aber der bleibt immer gleich (bei 92 oder 93), egal wie hell oder dunkel es ist.
Die Möglichkeit habe ich leider nicht.
Welche Schaltung ?
Deine, die du gepostet hast ?
Ohne Oszi wird das schwer, einen Fehler zu finden.
HotSystems:
Welche Schaltung ?
Deine, die du gepostet hast ?
Ohne Oszi wird das schwer, einen Fehler zu finden.
Nein die Schaltung die du verlinkt hast.
Hat sonst jemand eine alternative Idee wie ich den Laser tracken kann? Grundsätlich muss es nicht über eine Fotodiode sein. Ich muss lediglich mit dem Arduino erkennen ob ich den Strahl kreuze oder nicht wie oder womit spielt keine Rolle. Es sollte nur nicht all zu teuer sein.
D4xX6:
Hat sonst jemand eine alternative Idee wie ich den Laser tracken kann?
Zuerst würde ich mal nachprüfen, ob Deine Diode den Laser überhaupt erkennt (also kurz anhalten, damit er da mal draufleuchten kann).
Dann wäre u.U. ein Interrupt zu überlegen: Falls die Diode einen kurzen Puls beim Drüberfahren des Lasers auslöst, den Du mit dem A/D-Wandler nicht erkennst, kann der Interrupt den möglicherweise fangen. Lt. Datenblatt kann die ja 20ns auflösen.
Gruß Walter
Edit: Danach wird es m.E. schwierig. Was halten die Kollegen von einem externen Monoflop (CD4538)?
wenn die Rotationsgeschwindigkeit des Lasers bekannt ist, kann man sich mal die Dauer ausrechnen, die so ein LaserPunkt über der lichtempfindliche Fläche der BPW34 verweilt, in Abhängigkeit der Entfernung zum Laser natürlich.
Ich habe im Hinterkopf, daß die Flügelspitzen von großen Windrädern problemlos Überschallgeschwindigkeit erreichen können.
Was hier helfen könnte ist ein Differentiator, also eine Schaltung mit einem OPV, der aus Nadelimulsen ein für den Arduino sichtbaren Rechteckimpuls macht, der dann auch an ein DigitalPin angeschlossen sein kann. Also mal nach Differentiator suchen.
SpaghettiCode:
wenn die Rotationsgeschwindigkeit des Lasers bekannt ist, kann man sich mal die Dauer ausrechnen, die so ein LaserPunkt über der lichtempfindliche Fläche der BPW34 verweilt, in Abhängigkeit der Entfernung zum Laser natürlich.
.....
Und der TO muss sich sicher sein, dass seine Schaltung überhaupt funktioniert.
Da habe ich bisher meine Zweifel.