FluidNC und Estlcam im Parallelbetrieb am OCS2

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

Schreibe einen Kommentar