Optokoppler um Signale zu trennen

Hallo, ich bin mir noch nicht sicher ob ich mit optokopplern das richtige bauteil habe, bzw ob ich die richtig einsetze.

Gegeben ist die schaltung aus dem Anhang.
Zwei Arduinos sind mit einem Stepper treiber verbunden und steuern diesen über STP(Steps, jeder HIGH - LOW pulse macht einen schritt), sowie DIR(direction, HIGH richtung1, LOW richtung2).

Der eine Arduino soll mit einem optokoppler den anderen arduino vom treiber trennen können und dann quasi die alleinige kontrolle haben.

Funktioniert die schaltung so? oder brauche ich ein anderes Bauteil bzw. setze ich den optokoppler falsch ein?

Ein meinem Beispiel ist der optokoppler ein LTV-847.
Wichtig wäre, dass das ein Through Hole Bauteil ist, dass ich einfach löten kann und kein SMD oder so.

Vielen Dank für die Hilfe.

Jede LED braucht ihren eigenen Vorwiderstand. Und der Widerstand ist sehr unterdimensioniert. Es reicht locker wenn da 5-10mA fließen
Oder beide LEDs in Reihe schalten

Bei der Sache musst du sehr aufpassen dass die DIR/STEP Pins nie beide als Ausgänge geschaltet sind. Bevor man die Optokoppler schaltet müssen erst die beiden Pins als Eingänge konfiguriert werden


Nein funktioniert nicht.

Wennschon Massen zusammenschalten; Der eine Arduino steuert mittels Vorwiderstand die Anode des LED im Optokoppler an. Der andere schaltet die Kathode auf Masse (pinMode(pin, Output) und digitalWrite(pin,LOW)) oder nicht (pinMode(pin, INPUT).
Der Ausgangstransistor des Optokopplers den Treibereingang auf Masse (Annahme daß der Treiber Pullupwiderstände an den Eingängen hat sonst braucht es noch Pullupwiderstände).

Du könntest aber auch den ENable Eingang des Treibers nutzen.

Alle diese Doppelkontrollen bringen es aber mit sich daß der erste Arduino, der den Schrittmotor ansteuert nicht weiß wo sich der Motor befindet, weil die gesendete Schritteanzahl nicht mit derm Drehwinkel übereinstimmt sobald der zweite Arduino eingreift.
Besser wäre es ein signal des 2. Arduino an den ersten und dieser Stopt den Motor.

Grüße Uwe

Hallo Timo,
darf ich Dich fragen, wozu es erforderlich ist, den Stepper von 2 Arduinos aus zu steuern?
Ist nur rein aus Interresse.

LG Stefan

Serenifly:
Jede LED braucht ihren eigenen Vorwiderstand.

Muss das so? Ich möchte ja alle gleichzeitig schalten. Wenn ich mit 10mA pro Led rechne komme ich rechnerisch auf einen Widerstand von 95Ohm.

Serenifly:
Bei der Sache musst du sehr aufpassen dass die DIR/STEP Pins nie beide als Ausgänge geschaltet sind. Bevor man die Optokoppler schaltet müssen erst die beiden Pins als Eingänge konfiguriert werden

Jo, so hab ich mir das auch gedacht. D6 und D7 des linken Arduino sind immer auf pinMode input, bis dieser D2 schaltet und damit den anderen Arduino vom Treiber trennt.

uwefed:
Nein funktioniert nicht.

Wennschon Massen zusammenschalten; Der eine Arduino steuert mittels Vorwiderstand die Anode des LED im Optokoppler an. Der andere schaltet die Kathode auf Masse (pinMode(pin, Output) und digitalWrite(pin,LOW)) oder nicht (pinMode(pin, INPUT).
Der Ausgangstransistor des Optokopplers den Treibereingang auf Masse (Annahme daß der Treiber Pullupwiderstände an den Eingängen hat sonst braucht es noch Pullupwiderstände).

Du könntest aber auch den ENable Eingang des Treibers nutzen.

Alle diese Doppelkontrollen bringen es aber mit sich daß der erste Arduino, der den Schrittmotor ansteuert nicht weiß wo sich der Motor befindet, weil die gesendete Schritteanzahl nicht mit derm Drehwinkel übereinstimmt sobald der zweite Arduino eingreift.
Besser wäre es ein signal des 2. Arduino an den ersten und dieser Stopt den Motor.

Grüße Uwe

Vielen Dank für die Antwort, allerdings werde ich hier noch nicht so richtig schlau draus. Vielleicht erkläre ich den Einsatz noch besser, damit wir nicht aneinander vorbei reden. Die Massen(GND) sind bei der schaltung alle verbunden.

Deltaflyer:
Hallo Timo,
darf ich Dich fragen, wozu es erforderlich ist, den Stepper von 2 Arduinos aus zu steuern?
Ist nur rein aus Interresse.

LG Stefan

Hier mein Anwendungsfall:
Das ganze ist für eine CNC Steuerung. Der rechte Arduino ist mit einer GBRL Software bespielt und wird von dem CNC Programm Estlcam kontrolliert. Das beide Arduinos gleichzeitig die Motoren verfahren sollte/wird nicht passieren.
Es geht darum mit dem linken Ardunio alle Stepper Motoren per Tastendruck in eine Ausgangsstellung zu bringen. Hierbei werden Endstops(Schalter) angefahren. Das wird von dem linken Arduino gemacht.
Danach soll der rechte Arduino mit GBRL Software wieder übernehmen....

Also quasi originale Steuerung aushebeln -> Motoren in Ausgangsstellung bringen -> originale Steuerung wieder freigeben.

Hoffe das ist einigermaßen verständlich.

Wieso machst du keine serielle Kommunikation mit dem zweiten Arduino und sagst dem was er tun soll?

timo134122:
Muss das so?

Ja, da muss so sein. Das hat auch gar nichts mit gleichzeitig schalten zu tun, sondern wie LEDs funktionieren. Die sind nicht gleich und haben eine extrem steile Kennlinie. Und sind Heißleiter. Dadurch teilt sich der Strom nicht genau gleich auf

Wie gesagt man auch mehrere LEDs in Reihe schalten solange die Spannung an denen unter 5V liegt.

Es geht darum mit dem linken Ardunio alle Stepper Motoren per Tastendruck in eine Ausgangsstellung zu bringen. Hierbei werden Endstops(Schalter) angefahren. Das wird von dem linken Arduino gemacht.
Danach soll der rechte Arduino mit GBRL Software wieder übernehmen....

Wie schon gesagt.
Wenn Du den Taster drückst werden die Motoren zur Home Position gefahren. Das bekommt die GBRL Software nicht mit und kann das Werkstück, das Werkzeug und/oder die Fräse beschädigen.
Grüße Uwe

Hallo Timo,
Nutzt Du EstlCam dabei nur, um die CNC-Daten zu erzeugen, oder auch das CNC-Controllermodul von EstlCam?
Wenn Du auch den CNC-Contoller Einsetzt, kannst Du doch einfach die HOMING Funktion von EsltCam nutzen.
Dann sind Deine Motoren und Achsen in einer Ausgangsposition.

Dazu kommt noch folgendes: Wenn Du mit EstlCam Steuerst, fliegt dein GRBL sowieso vom Controller runter, wenn Du die Steuerung Programmierst. (Allerdings speichert EstlCam die original GBRL-Steuerung, sodass diese bei bedarf wiederhergestellt werden kann) Das einzige was EstlCam von GBRL übernimmt ist die PIN-BELEGUNG (Pin-Definitionen). Denn EstlCam schreibt ne eigene Firmware auf den Arduino.
Du kannst in den Einstellungen von EstlCam auch eine belibige Parkposition speichern, zu der nach dem Homing gefahren wird, dann hast Du auch immer Deinen Startpunkt.

Dies nur so als Hinweis.

LG Stefan

Ob das grundsätzlich sinnvoll ist, den Stepper von 2 getrennten Arduinos ansteuern zu wollen sei mal dahingestellt.
Aber wenn man das machen will, ist dein Optokoppler definitv das falsche Bauteil dafür. Sowas macht man dann mit entsprechenden Logikbausteinen, die den Eingang des Steppermoduls entsprechend umschalten. Z.B. ein 74HC4053. Das ist ein 3x2-fach Umschalter. Damit kannst Du bis zu 3 Leitungen zwischen 2 Arduinos umschalten.

Deltaflyer:
Hallo Timo,
Nutzt Du EstlCam dabei nur, um die CNC-Daten zu erzeugen, oder auch das CNC-Controllermodul von EstlCam?
Wenn Du auch den CNC-Contoller Einsetzt, kannst Du doch einfach die HOMING Funktion von EsltCam nutzen.
Dann sind Deine Motoren und Achsen in einer Ausgangsposition.

Dazu kommt noch folgendes: Wenn Du mit EstlCam Steuerst, fliegt dein GRBL sowieso vom Controller runter, wenn Du die Steuerung Programmierst. (Allerdings speichert EstlCam die original GBRL-Steuerung, sodass diese bei bedarf wiederhergestellt werden kann) Das einzige was EstlCam von GBRL übernimmt ist die PIN-BELEGUNG (Pin-Definitionen). Denn EstlCam schreibt ne eigene Firmware auf den Arduino.
Du kannst in den Einstellungen von EstlCam auch eine belibige Parkposition speichern, zu der nach dem Homing gefahren wird, dann hast Du auch immer Deinen Startpunkt.

Dies nur so als Hinweis.

LG Stefan

Ich nutze einen Arduino mega, welcher von Estlcam gesteuert wird und alle Motoren verfährt. Ich wusste nicht, dass nur die Pinbelegung genommen wird, ich dachte Estlcam arbeitet auch mit GRBL.

Es geht im Grunde genommen darum, dass Estlcam einen Ausgang für jede Achse hat(X, Y, Z) und diese steuert. An meiner fräse sind nun aber 5 Motoren(2 x X-Achse, 2 x Y-Achse, 1 x Z-Achse).
Das ist kein Problem, da ich die Motoren einer Achse hinter dem Treiber einfach in Reihe verbinde: Heißt die verfahren beide gleich.

Jetzt soll das ganze Erweitert werden. Hinzukommen zwei Schrittmotor Treiber für den zweiten X- und Y-Achsen Motor. Und da kommt auch der zweite Arduino ins Spiel. Estlcam soll nun beide Treiber gleichzeitig über X-Steps ansteuern - soweit kein Problem. Wenn der zweite Arduino allerdings eingreift(passiert nicht im laufenden Programm von Estlcam, sondern eher ganz am Anfang nach dem Einschalten der Fräse) soll dieser alle Achsen einzeln steuern können. Ziel ist es Autosquaring zu ermöglichen, bedeutet: Jeder Motor hat einen eigenen Endstop und sobald dieser betätigt wird bleibt der Motor stehen, bzw. ist an der richtigen Position.
Vor allem im Hobbyfräsen bereich ist das praktisch(Stichwort MPCNC Fräse ausm 3D Drucker), um die Achsen auszurichten und im rechten Winkel zu sein.
Um die Achsen allerdings einzeln zu Verfahren muss ich die Verbindung von dem Estlcam Arduino zu beiden Motortreibern einer Achse kappen.
Wollte eigentlich garnicht so weit ausholen :-).
Das funktioniert aktuell schon mit dem Optokoppler, wie ich das oben in der Schematic angegeben habe. Allerdings irgendwie nicht zuverlässig bzw. nicht sauber. Daher wollte ich optokoppler hier in Frage stellen und nach etwas besseren/passenderem für meinen Anwendungsfall fragen.

MicroBahner:
Ob das grundsätzlich sinnvoll ist, den Stepper von 2 getrennten Arduinos ansteuern zu wollen sei mal dahingestellt.
Aber wenn man das machen will, ist dein Optokoppler definitv das falsche Bauteil dafür. Sowas macht man dann mit entsprechenden Logikbausteinen, die den Eingang des Steppermoduls entsprechend umschalten. Z.B. ein 74HC4053. Das ist ein 3x2-fach Umschalter. Damit kannst Du bis zu 3 Leitungen zwischen 2 Arduinos umschalten.

Vielen Dank für den Hinweis. Ich glaube das ist, was ich gesucht habe. Habe mal meine neue Schematic angehangen. Normalerweise ist so immer der Arduino Mega von Estlcam verbunden, es sei denn der zweite Arduino setzt HIGH an den SwitchController pin. Dann kann der zweite Arduino steuern.
Habe die Schematic auf die Steuerung zweier Treiber begrenzt. Treiber auch raus gelassen(sind A4988).