(Licht-)Schranke - Sensor für Drehung

Hallo Leute,

arbeite gerade an einem weiteren Projekt und könnte da Hilfe gebrauchen:
ich habe eine große Holzscheibe (68cm Durchmesser), die sich in ca. 1 Minute 360° dreht.
Der Motor, der diese Scheibe antreibt, wird bereits von meinem Arduino duemilanove board angetrieben. Allerdings nur mit digitalWrite HIGH und LOW.
Ich würde nun gerne die Scheibe nach genau einer Umdrehung stoppen lassen. Momentan habe ich es mit delay() versucht zu timen, doch da ich auf der Scheibe mit Flüssigkeiten hantiere, komme ich mit dem delay nicht immer an der gleichen position an, wo ich sie gerne hätte. Es handelt sich immer um 1-2 cm, die zu lange oder zu kurz gedreht werden.

Nun dachte ich an eine art Licht-Sensor, den ich an der scheibe (oder unter der scheibe) montiere, und sobald die scheibe bei einer Markierung (genau nach einer Umdrehung) wieder angelangt, soll die Scheibe (der Motor) stoppen.
Ich führe während der Scheibenbewegung (also digitalWrite(motorpin, HIGH); ) auch mehrere andere Pinbefehle aus (hauptsächlich digitalWrite...)
Also müsste der Lichtsensor über eine Art Timer laufen, oder ich müsste nach jedem befehl abfragen, ob die Markierung schon erreicht wurde, was glaube ich sehr unschön ist.

Meine Fragen:
+mit welcher Art von Sensor könnte ich es so wie beschrieben realisieren? Ich dachte an eine art Drehzahlmesser-sensor...
+mit welchem Timer, oder Befehl kann ich die Abfrage ob die Markierung erreicht wurde abfragen?

Würde mich über Tips, oder referenz-threads freuen.

vielen dank
Etzl

Hallo Etzl,
zwei Ideen kommen mir dabei direkt:

  1. Reflexlichtschranke oder Gabellichtschranke
    http://www.conrad.de/ce/de/product/153794/REFLEXLICHTSCHRANKE-SFH9201/SHOP_AREA_37351&promotionareaSearchDetail=005
    http://www.conrad.de/ce/de/product/179995/GABELLICHTSCHRANKE-THT-EE-1106-3MM/SHOP_AREA_37351&promotionareaSearchDetail=005
    Für die Reflexlichtschranke klebst du ein Stück Alufolie auf die Scheibe, für die Gabellichtschranke einen Winkel der durch die Gabel läuft. Beschaltet wird beides wie ein Optokoppler.
  2. Reedkontakt
    http://bwir.de/bauteile/reed-kontakt-magnetschalter
    Auf die Scheibe setzt du einen Magneten, der den Reedkontakt schaltet. Vorteil: du benötigst nur einen Eingang.

Damit sollte es möglich sein, die Scheibe sehr gut reproduzierbar an der gleichen Stelle anzuhalten.

Die Abfrage des Schalters kannst du in der Hauptprogrammschleife machen, wenn die Pause zwischen den Abfragen kurz genug ist. Die elegantere Methode wäre das in einem Interrupt zu tun. Also Schalter/Transistor auf Interruptpin, im Interruptprogramm den Motor ausschalten, den Zustand ans Hauptprogramm übergeben und das weiterbehandeln, wenn das Programm soweit ist.

Gruß
Reinhard

Hallo erni-berni,

vielen dank für deine tips.

Das hilft mir schon sehr weiter... Ich werde mir am Montag so eine Reflexlichtschranke mal kaufen und ein bisschen herum probieren.

So wie ich das jetzt lese, schaltet dieses Ding wie ein Relais?
Bei Pin 1 und 6 lege ich die Betriebsspannung von 5V an... und sobald die Alufolie reflektiert, schaltet diese Reflexlichtschranke zwischen 3 und 4 auf Durchfluss und ich kann wie in einem Relais den Motorbetrieb unterbrechen?
(kenne mich leider noch schlecht auf diesem Elektronikgebiet aus :smiley: )

Hoffe ich habe das so richtig verstanden. Bitte um Korrektur.

LG
Etzl
ps. das mit Interrupt muss ich mir nochmal genauer ansehen. Ist sicher die elegantere lösung. Gibt es da gute Anleitungen? Werd mich auch mal durch-googeln...

Hallo Etzl,
der Vergleich zum Relais passt nicht ganz, passender wäre der Vergleich zum Optokoppler. Ein sehr gutes Tutorial dazu findest du hier: mitchsoft.de. Wichtig ist, dass die Sende-LED vor Pin 1 einen Vorwiderstand benötigt. Im Datenblatt ist If=10mA empfohlen. Bei 5V Versorgungsspannung und der Durchlassspannung der LED von 1,25V ergibt sich nach Ohmschen Gesetz: (5V-1,25V)/0,01A=375 Ohm. Der nächstgrößere Wert in der Normreihe wäre 390 Ohm, es schadet nichts, wenn der Wert auch etwas größer ist, dann wird die Reichweitet der Reflexlichtschranke höchstens geringer, Du kannst ja experimentieren. Pin 6 legst du auf Masse.
Am Fototransistor legst du Pin 3 auf Masse und Pin 4 an einen Eingang des Arduino, wobei du den Pullup des Eingangs aktivieren musst. Immer, wenn Licht auf den Fototransistor fällt, wird er leitend und der Arduino Eingang wird auf LOW gezogen.
Zum Gebrauch von Interrupts solltest du dir mal das Tutorial http://www.arduino.cc/en/Reference/AttachInterrupt durchlesen.

Hallo,

ich hab mir jetzt mal diese Reflex-Lichtschranke bei Conrad gekauft und nach deinen Anweisungen eingebaut:

Pin1 = 5V+ von Arduino - davor 390 Widerstand
Pin 6 = Ground
Pin 3 = Ground
Pin 4 = interruptpin auf Arduino (digital Pin 2 habe ich genommen)

Dannach habe ich an Pin 12 meinen Rotationsmotor angeschlossen, und einmal mit dem Standard Beispiel von der Interrupt Seite probiert.

Leider funktioniert es nicht. Es schaltet nichts.

Entweder ich habe beim Löten etwas kaputt gemacht, oder es irgendwie falsch angeschlossen.
Ich werde es mal mit weniger Widerstand versuchen.
Stimmen Collector und Emitter Anschluss auf Pin 3 und 4...?

Komischerweise schaltet es, sobald ich mit irgend einem leitendem Gegenstand auf eine der 4 Reflexlichtschranken Pins greife. Oder ich die Verbindung zu Arduino unterbreche, schaltet es auch.

Hat jemand eine idee?

LG
thx,
Etzl

Hallo Etzl !

Du hast einen Gleich-Strom-Motor ? ( braucht natürlich Rückmeldung für die Position durch Licht-Schranke oder Reflex-Koppler)

Versuche dich doch mal an Schrittmotoren ( billig aus Disketten-Laufwerken zu gewinnen ) - Du gibst einen Impuls und der Motor dreht sich um einen bestimmten Winkel ( z.B. 1° ) Schrittmotor – Wikipedia

Oder an Servo-Motoren aus dem Modell-Bau ( Servomotor – Wikipedia )

MfG

Hi,

Du hast einen Gleich-Strom-Motor ? ( braucht natürlich Rückmeldung für die Position durch Licht-Schranke oder Reflex-Koppler)

Versuche dich doch mal an Schrittmotoren ( billig aus Disketten-Laufwerken zu gewinnen ) - Du gibst einen Impuls und der Motor dreht sich um einen bestimmten Winkel ( z.B. 1° ) Schrittmotor – Wikipedia

Oder an Servo-Motoren aus dem Modell-Bau ( Servomotor – Wikipedia )

MfG

Ich verwende einen 12V Scheibenwischer Motor vom Auto. Und dieser Motor wird über ein Relais von Arduino an und ausgeschalten. Das dürfte also kein Problem sein.
Das Problem liegt glaube ich bei der Reflexlichtschranke... die noch nicht richtig angeschlossen wurde.

LG
Etzl

die noch nicht richtig angeschlossen wurde.

Male doch mal eine Skizze, scanne sie ein, und veröffentliche sie .

Keine Angst - Gekritzel ist 'volvodani-CAD' :slight_smile:

( nur als Beispiel )

Oder wenn du echte CAD-Programme kannst ( lernen willst ): http://www.cadsoft.de/freeware.htm

MfG

Bitte Gurkengraeber
Mach nur solche Ratschläge die das Thema betreffen und die realisierbar sind. Mit einem Schrittmotor ohne Übersetzung drehst Du keine 68cm Holzplatte; die Hat ein zu grßes Trägheitsmoment.

@Etzl
hast Du den internen PullupWiderstand aktiviert?
Bitte Schick uns Dein Programm.

Grüße Uwe

Mach nur solche Ratschläge die das Thema betreffen und die realisierbar sind. Mit einem Schrittmotor ohne Übersetzung drehst Du keine 68cm Holzplatte; die hat ein zu großes Trägheitsmoment.

Halte ich für realisierbar.

Hi,

also, ich verwende testweise folgende programmierung:

int pin = 12;
volatile int state = LOW;

void setup()
{
  pinMode(pin, OUTPUT);
  attachInterrupt(0, blink, CHANGE);
}

void loop()
{
  digitalWrite(pin, state);
}

void blink()
{
  state = !state;
}

Anschlüsse der Pins bei der Reflexlichtschranke:

Pin1 = 5V+ von Arduino - davor 390 Widerstand
Pin 6 = Ground bei digitalen Pins von Arduino
Pin 3 = Ground bei digitalen Pins von Arduino
Pin 4 = interruptpin auf Arduino (digital Pin 2 habe ich genommen)

Im Datenblatt steht was von "Emitter-Kollektor-Sperrspannung" 7V... Kann das das problem sein, da es von Arduino nur 5V bekommt?

LG
Etzl

Die Beschaltung sieht auf den ersten Blick richtig aus. Wird denn ein Interrupt ausgelöst, wenn du Pin 3 und Pin 4 brückst, bspw. mit einem Stück Draht?

sth77:
Die Beschaltung sieht auf den ersten Blick richtig aus. Wird denn ein Interrupt ausgelöst, wenn du Pin 3 und Pin 4 brückst, bspw. mit einem Stück Draht?

Ja, wird auch ausgelöst...

heißst das, dass meine Reflexlichtschranke kaputt ist? Kann sowas beim löten kaputt gehen?

Ich denke nicht, dass die Reflexlichtschranke beim Löten das Zeitliche gesegnet hat. Du schreibst, dass Anode an 5V mit Vorwiderstand hängt, Kathode an Masse. Das resultiert ja in einem Dauerleuchten der LED. Das kannst du kontrollieren, indem du mit einer Digitalkamera bzw. einem Handy mit Fotofunktion die Diode betrachtest. Die Bildsensoren sind nämlich anfällig für IR-Licht. Solltest du ein permanentes Leuchten bemerken, ist die Reflexlichtschranke in Ordnung.

ich sehe mit meiner kamera LEUCHTEN,

dh, das ding funktioniert...

kann ich das signal mit einer alufolie zum empfänger überhaupt umleiten?

Das ist ja eine Reflexlichtschranke, die genau für diesen Anwendungsfall gedacht ist. Probier doch mal manuell, die Alufolie vor den Sensor zu halten. Vielleicht ist dein Abstand zur reflektierenden Fläche zu groß. Wo du uns schon mal darauf aufmerksam gemacht hast: nimm mal deine Kamera und mach uns ein schönes Bilöd deines Aufbaus. :wink:

Ich hab jetzt mal ein hübsches Bild...

ich glaub nicht, dass sich jemand auskennen wird :smiley:
ist etwas improvisiert... Aber ich wollte erstmal nur den interrupt testen...

Hoffe ihr versteht es irgendwie...

lg Etzl :smiley:

[edit: img deleted]

Okay, ist mir jetzt ehrlich gesagt ein bisschen zu viel Gehirnakrobatik, ich schaue nochmal raus, wenn ich zuhause bin. Wenn ich es schaffe, werde ich mal den Spaß nachbauen, hab noch einige CNY70 rumzuliegen. Ansonsten, dürfen auch andere mal ihre Ideen zur Fehlerbehebung in den Raum stellen.

ich zeichne heut abend auchnochmal einen schaltplan, so wie ich es jetzt gebaut habe... ist vielleicht verständlicher :smiley:

sth77 + Etzl sind das selbe.

Macht aber nix, weil beide sind cool :slight_smile: