In diesem Blog-Beitrag zeige ich, wie man FluidNC und Estlcam am OPEN-CNC-Shield 2 parallel nutzen kann, ohne umstecken zu müssen. Dazu wird das ControllerModule Dual Adapter verwendet. Ich zeige den Einbau und die Konfiguration anhand meiner MPCNC.
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.
In diesem Video stelle ich die Kombination vom Zusammenbau bis zur ersten Inbetriebnahme an meiner Maschine vor:
Zusammenbau

Zunächst werden die Abstandsbolzen auf dem Dual Adapter mit M3-Muttern angebracht. Diese dienen der Befestigung des zusätzlichen ControllerModules.
Dann können die beiden ControllerModule angebracht und befestigt werden. Das Estlcam ControllerModule wird zusätzlich mit zwei 3D-gedruckten Stützen befestigt.


Für das Umschalten zwischen den beiden Modulen wird ein Schalter benötigt. Die Pinbelegung gibt es in der Dokumentation. Es kann ein typischer ON-OFF-ON oder ON-ON Schalter genutzt werden, auch SPDT-Schalter genannt: Amazon
Bevor das ControllerModule aufgesteckt wird, sollte der ESP32 für FluidNC mit der passenden Firmware bespielt werden. Siehe dazu den Abschnitt FluidNC Konfiguration.


Danach kann das Modul auf das OCS2 aufgesteckt werden. Bevor der Strom eingeschaltet wird, sollte das Thema ENA/Enable der Treiber aus der Dokumentation noch durchgelesen werden.

In Estlcam kann die Steuerung nun programmiert werden. Je nach Stellung des Umschalters kann jetzt zwischen Estlcam und dem FluidNC Controller gewechselt werden.
Achsenkonfiguration am OCS2

Die Achsenkonfiguration am OCS2 sieht bei mir so aus. Hierbei unbedingt das Kapitel über die Achsenkonfiguration aus der Dokumentation beachten.
An meiner MPCNC sind jeweils zwei Motoren für die X- und Y-Achse. Daher nutze ich „AxisA“ für X2 und „AxisB“ für Y2.
FluidNC Konfiguration
Ich habe für dieses Projekt an meiner MPCNC folgende Konfiguration verwendet. Bitte beachte, dass sich die Einstellungen der STEPs usw. für jede Maschine unterscheiden können.
name: "OCS2 FluidNC"
board: "OCS2 FluidNC Controller"
stepping:
engine: I2S_STREAM
idle_ms: 250
dir_delay_us: 1
pulse_us: 4
disable_delay_us: 0
axes:
# shared_stepper_disable_pin: i2so.12
x:
steps_per_mm: 50
max_rate_mm_per_min: 7000
acceleration_mm_per_sec2: 500
# max_travel_mm: 1000
# soft_limits: true
homing:
cycle: 2
positive_direction: false
mpos_mm: 0.000
feed_mm_per_min: 500.000
seek_mm_per_min: 1000.000
seek_scaler: 1.1
feed_scaler: 1.1
motor0:
limit_neg_pin: gpio.36:high
hard_limits: true
pulloff_mm: 5
stepstick:
direction_pin: i2so.1
step_pin: i2so.0
# motor1:
# limit_neg_pin: gpio.39:high
# hard_limits: true
# pulloff_mm: 5
# stepstick:
# direction_pin: i2so.7
# step_pin: i2so.6
y:
steps_per_mm: 50
max_rate_mm_per_min: 7000
acceleration_mm_per_sec2: 500
# max_travel_mm: 1000
# soft_limits: true
homing:
cycle: 2
positive_direction: false
mpos_mm: 0.000
feed_mm_per_min: 500.000
seek_mm_per_min: 1000.000
seek_scaler: 1.1
feed_scaler: 1.1
motor0:
limit_neg_pin: gpio.34:high
hard_limits: true
pulloff_mm: 5
stepstick:
direction_pin: i2so.3
step_pin: i2so.2
# motor1:
# limit_neg_pin: gpio.35:high
# hard_limits: true
# pulloff_mm: 5
# stepstick:
# direction_pin: i2so.9
# step_pin: i2so.8
z:
steps_per_mm: 50
max_rate_mm_per_min: 2000
acceleration_mm_per_sec2: 100
max_travel_mm: 1000
homing:
cycle: -1
motor0:
limit_all_pin: NO_PIN
stepstick:
direction_pin: i2so.5
step_pin: i2so.4
motor1:
null_motor:
# I2SO for shift registers
i2so:
bck_pin: gpio.22
data_pin: gpio.21
ws_pin: gpio.17
# SPI for SD Card
spi:
miso_pin: gpio.19
mosi_pin: gpio.23
sck_pin: gpio.18
sdcard:
cs_pin: gpio.5
card_detect_pin: NO_PIN
# I2C for OLED Display
i2c0:
sda_pin: gpio.14
scl_pin: gpio.13
oled:
i2c_num: 0
i2c_address: 60
width: 128
height: 64
radio_delay_ms: 1000
coolant:
# Ausgang 1
flood_pin: i2so.16:high
# Ausgang 2
mist_pin: i2so.17:high
# probe:
# pin: gpio.32:low:pu
Laser:
pwm_hz: 5000
output_pin: gpio.25:high
enable_pin: NO_PIN
disable_with_s0: false
s0_with_disable: true
tool_num: 0
speed_map: 0=0.000% 1000=100.000%
off_on_alarm: true
control:
safety_door_pin: NO_PIN
reset_pin: gpio.12:low:pu
feed_hold_pin: gpio.26:low:pu
cycle_start_pin: gpio.27:low:pu
macro0_pin: NO_PIN
macro1_pin: NO_PIN
macro2_pin: NO_PIN
macro3_pin: NO_PIN