> For the complete documentation index, see [llms.txt](https://docs.timos-werkstatt.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.timos-werkstatt.de/open-cnc-shield-2/controllermodules/dual-adapter.md).

# Dual Adapter

<div><figure><img src="https://2801776025-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjORbagsr6fvvxePwVb4C%2Fuploads%2FNBzrgYo0eSLeTmWfCtzq%2FControllerModule%20Dual%20Adapter-5-500px.jpg?alt=media&amp;token=04ed31cc-fae4-4e9b-b401-e61f541090f7" alt=""><figcaption></figcaption></figure> <figure><img src="https://2801776025-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjORbagsr6fvvxePwVb4C%2Fuploads%2Fg5cXSSjsUnFI7l4nfmpY%2FControllerModule%20Dual%20Adapter-500px.jpg?alt=media&amp;token=c88d8507-3765-4871-8f04-a40ceec9f936" alt=""><figcaption></figcaption></figure> <figure><img src="https://2801776025-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjORbagsr6fvvxePwVb4C%2Fuploads%2Fb0jcQ6ue8uZnuwo1dCZb%2FControllerModule%20Dual%20Adapter-2-500px.jpg?alt=media&amp;token=86dd5dc9-f4ba-4fd0-9419-8e5db5e0aea6" alt=""><figcaption></figcaption></figure></div>

Dieser Adapter wird auf den Steckplatz für ControllerModule auf dem OCS2 aufgesetzt und bietet Platz für zwei zusätzliche Module. Dadurch ist es möglich, zwei unterschiedliche ControllerModule auf einem OCS2 zu betreiben. Über einen Schalter am Dual-Adapter lässt sich komfortabel zwischen den beiden Modulen wechseln. Es ist jedoch zu beachten, dass die Maschine zu jedem Zeitpunkt nur durch ein Modul gesteuert werden kann.

Ein praxisrelevantes Beispiel wäre der Einsatz des ControllerModules FluidNC für Laseranwendungen, während das ControllerModule Estlcam für sämtliche Fräsoperationen genutzt wird.

Hier ein kurzes Video dazu:

### Überblick

* Nutzung zweier ControllerModule ohne umstecken
* Wechsel, welches Modul aktiv ist, mit einem Schalter
* Folgende Signale werden umgeschaltet/getrennt:
  * STEP und DIR für alle 6 Achsen
  * Spindel on/off
  * Spindel PWM
  * Alle 8 Ausgänge
* Folgende Signale liegen an beiden ControllerModules an(generell alle Eingangssignale):
  * Eingang 1-16
  * Encoder A/B
  * Motor Start (Bedienteil)
  * Programm Start (Bedienteil)
  * OK-Taste (Bedienteil)
  * Feedrate (Bedienteil)
  * Rotation Speed (Bedienteil)
  * Joystick X/Y/Z (Bedienteil)
  * Auswahl X/Y/Z (Bedienteil)
  * Speed 1/2 (Bedienteil)
  * ENA/Enable der Motortreiber
  * ALARM\_ALL der Motortreiber
  * I2C vom ESP32

### Schalter&#x20;

Der Schalter besteht aus 3 Pins. Der mittlerer Pin(COM) kann entweder mit "First" verbunden werden oder mit "Second". Passende Schalter hierfür findet man unter dem Namen "SPDT" oder auch "ON-OFF-ON".

Beide ControllerModules sind dauerhaft mit Strom und den oben beschriebenen Signalen verbunden. Es werden nur die erwähnten Signale umgeschaltet.

<figure><img src="https://2801776025-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjORbagsr6fvvxePwVb4C%2Fuploads%2F9990KArrH1Rt8Z9t8e7S%2Fschalter_dual_adapter.png?alt=media&amp;token=ca7af35d-9ac2-495a-b326-d7b3f339aed6" alt=""><figcaption></figcaption></figure>

### ENA/Enable der Treiber

In der derzeitigen Ausführung des Dual-Adapters sind die ENA-Anschlüsse beider ControllerModule dauerhaft miteinander verbunden. Es ist daher unerlässlich, darauf zu achten, dass die ControllerModule die ENA-Funktion nicht aktivieren oder schalten. Keinesfalls dürfen beide ControllerModule gleichzeitig den ENA-Anschluss verwenden - während der Betrieb mit einem aktiven Modul funktioniert, würde das Schalten beider Module - eines auf GND und das andere auf 5V - zu einem Kurzschluss führen, der potenziell die Steuerung beschädigen kann.

Die sicherste Maßnahme ist es, die ENA-Funktion an beiden Controllern nicht zu verwenden. Stattdessen sollten die Motoren mit dem ENA-Jumper direkt auf dem OCS2 Shield in den korrekten Zustand versetzt werden.

In zukünftigen Versionen des Dual-Adapters könnte das Verhalten der ENA-Anschlüsse einer Überarbeitung unterzogen werden, um eine verbesserte Funktionalität zu gewährleisten.

{% hint style="warning" %}
Falls der ESP32 auf dem OPEN-CNC-Shield 2 in verbindugn mit einem Bedienpanel verwendet wird, auch hier darauf achten ggf. `#define ESP_SET_ENA false` zu setzen.  Es sollte immer nur maximal ein Gerät den ENA Status am OCS2 beeinflussen.
{% endhint %}

### Achsenkonfiguration

Die Achsenkonfiguration erfolgt direkt auf dem [OCS2](/open-cnc-shield-2/mainboard-mini/anschluesse-jumper.md#achsenkonfiguration). Deshalb ist es wichtig, dass die Konfigurationen der beiden ControllerModule miteinander kompatibel sind und keine Konflikte aufweisen.

<details>

<summary>Beispiel für einen Konflikt</summary>

Szenario:

* MPCNC mit 2 Motoren für x-Achse, 2 Motoren für y-Achse und 1 Motor für z-Achse
* ControllerModule FluidNC und ControllerModule Estlcam am Dual Adapter angeschlossen
*

```
| OCS2 Anschluss | Motor |
```

```
| -------------- | ----- |
| X              | X1    |
| Y              | Y1    |
| Z              | Z     |
| A              | X2    |
| B              | Y2    |
```

Die Achsenkonfiguration auf dem OCS2 muss für Estlcam bei diesem Anschluss so aussehen:

<img src="https://2801776025-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjORbagsr6fvvxePwVb4C%2Fuploads%2FU93A8KmKwhhdYV339nlL%2Fimage.png?alt=media&amp;token=2757bca2-c9d3-4d94-bd90-3bc0cc6d6ae2" alt="" data-size="original">

Bei FluidNC hätte man nun die Möglichkeit, alle Motoren einzeln anzusteuern und die Achsen über die Konfiguration miteinander zu verbinden. Das wird aber in diesem Szenario **nicht** funktionieren. Sobald FluidNC versucht den Motor der A-Achse einzeln anzusteuern, dreht der X-Motor sich mit, da dies ja oben die Jumper oben eingestellt wurde! Dies kann zu Schäden an der Maschine führen!

</details>

<details>

<summary>Beispiel für eine saubere Achsenkonfiguration</summary>

Szenario:

* MPCNC mit 2 Motoren für x-Achse, 2 Motoren für y-Achse, 1 Motor für z-Achse udn außerdem 1 Motor für eine Drehachse
* ControllerModule FluidNC und ControllerModule Estlcam am Dual Adapter angeschlossen
*

```
| OCS2 Anschluss | Motor               |
```

```
| -------------- | ------------------- |
| X              | X1                  |
| Y              | Y1                  |
| Z              | Z                   |
| A              | X2                  |
| B              | Y2                  |
| C              | Drehachse(4. Achse) |
```

Die Achsenkonfiguration auf dem OCS2 muss für Estlcam bei diesem Anschluss so aussehen:

<img src="https://2801776025-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FjORbagsr6fvvxePwVb4C%2Fuploads%2FU93A8KmKwhhdYV339nlL%2Fimage.png?alt=media&amp;token=2757bca2-c9d3-4d94-bd90-3bc0cc6d6ae2" alt="" data-size="original">

Estlcam kann die 4. Achse nicht nutzen und daher bleibt die C-Achse frei.

Bei FluidNC kann diese jedoch genutzt werden. Außerdem darf für jede Achse nur ein Motor eingerichtet sein - gleichlaufende Motoren sind schließlich schon über die Achsenkonfiguration eingerichtet.

Hier ein möglicher Auszug aus einer FluidNC konfiguration:

```yaml
axes:
  x:
    motor0:
      stepstick:
        direction_pin: i2so.1
        step_pin: i2so.0

  y:
    motor0:
      stepstick:
        direction_pin: i2so.3
        step_pin: i2so.2

  z:
    motor0:
      stepstick:
        direction_pin: i2so.5
        step_pin: i2so.4

  a: 
    motor0:
      stepstick:
        direction_pin: i2so.11
        step_pin: i2so.10
```

</details>

### Kompatibilität

Es sind nicht alle Kombinationen von Controller inkl. verschiedener Konfigurationen durchgetestet. Die folgende Liste/Hinweise wird stetig erweitert.

{% hint style="warning" %}
Es liegt in der eigenen Verantwortung dafür zu Sorgen, dass keine Abhängigkeiten zwischen den ControllerModulen entstehen. Falls die gemeinsam genutzen Leitungen von einem Controller durch Fehlkonfiguration zum Beispiel als Ausgang genutzt werden, kann die Steuerung Schaden nehmen
{% endhint %}

#### Estlcam und FluidNC

Diese Controller-Kombination funktioniert einwandfrei. Der ENA Hinweis oben sollte beachten werden. Dazu in der FluidNC Konfiguration `shared_stepper_disable_pin: i2so.12` auskommentieren oder löschen.

Außerdem muss die Achsenkonfiguration beachtet werden. Dazu gibt es einen Abschnitt auf dieser Seite.

Hier ist ein Beitrag zu einem Beispielprojekt an einer MPCNC: [FluidNC und Estlcam im Parallelbetrieb am OCS2](https://blog.altholtmann.com/fluidnc-und-estlcam-im-parallelbetrieb-am-ocs2/)
