[FluidNC Issue#1444] Cannot configure stepper motor with GPIO for step and I2SO for direction in config.yaml (ESP32 Dev)

未分类 bolang 4个月前 (10-14) 34次浏览

Issue #1444 | 状态: 已关闭 | 作者: OmidAyar | 创建时间: 2025-02-02


Wiki Search Terms

I’m working with an ESP32 Dev board and trying to configure a stepper motor in config.yaml for FluidNC. Due to the limited number of pins on the ESP32 Dev board, I want to use a GPIO pin for the step signal and an I2SO pin for the direction signal. However, I am unable to configure this as FluidNC doesn’t seem to allow both signals to be configured in this way.

I do not want to use the I2SO pins for the step signal, but instead for the direction pin. I would also be willing to assist with setting up the ESP32 S3 if needed, as I am working on a project that requires the increased number of pins on this microcontroller.

Is it possible to configure the stepper motor this way, and if so, how can I achieve this in the config.yaml file?

Thank you for your help!

Controller Board

4-pack

Machine Description

this a project for myself

Input Circuits


Configuration file

board: esp32dev
name: Default (Test Drive no I/O)
meta: 
stepping:
  engine: RMT
  idle_ms: 255
  pulse_us: 4
  dirdelayus: 0
  disabledelayus: 0
  segments: 12

i2so: bck_pin: gpio.27 data_pin: gpio.12 ws_pin: gpio.14

spi: miso_pin: gpio.19 mosi_pin: gpio.23 sck_pin: gpio.18

sdcard: cs_pin: gpio.5 carddetectpin: NO_PIN frequency_hz: 8000000

kinematics: Cartesian:

axes: sharedstepperdisablepin: NOPIN x: stepspermm: 100.000 maxratemmpermin: 5000.000 accelerationmmper_sec2: 100.000 maxtravelmm: 300.000 soft_limits: false homing: cycle: 2 positive_direction: true mpos_mm: 0.000 feedmmper_min: 100.000 seekmmper_min: 200.000 settle_ms: 500 seek_scaler: 1.100 feed_scaler: 1.100

motor0: limitnegpin: gpio.36 limitpospin: gpio.39 limitallpin: NO_PIN hard_limits: false pulloff_mm: 1.000 standard_stepper: step_pin: gpio.32 direction_pin: i2so.1 disablepin: NOPIN

y: stepspermm: 100.000 maxratemmpermin: 5000.000 accelerationmmper_sec2: 100.000 maxtravelmm: 300.000 soft_limits: false homing: cycle: 2 positive_direction: true mpos_mm: 0.000 feedmmper_min: 100.000 seekmmper_min: 200.000 settle_ms: 500 seek_scaler: 1.100 feed_scaler: 1.100

motor0: limitnegpin: gpio.34 limitpospin: gpio.35 limitallpin: NO_PIN hard_limits: false pulloff_mm: 1.000 standard_stepper: step_pin: gpio.33 direction_pin: i2so.2 disablepin: NOPIN

z: stepspermm: 100.000 maxratemmpermin: 5000.000 accelerationmmper_sec2: 100.000 maxtravelmm: 300.000 soft_limits: false homing: cycle: 2 positive_direction: true mpos_mm: 0.000 feedmmper_min: 100.000 seekmmper_min: 200.000 settle_ms: 500 seek_scaler: 1.100 feed_scaler: 1.100

motor0: limitnegpin: NO_PIN limitpospin: NO_PIN limitallpin: NO_PIN hard_limits: false pulloff_mm: 1.000 standard_stepper: step_pin: gpio.25 direction_pin: i2so.3 disablepin: NOPIN

control: safetydoorpin: NO_PIN resetpin: NOPIN feedholdpin: NO_PIN cyclestartpin: NO_PIN macro0pin: NOPIN macro1pin: NOPIN macro2pin: NOPIN macro3pin: NOPIN faultpin: NOPIN estoppin: NOPIN

coolant: floodpin: NOPIN mistpin: NOPIN delay_ms: 0

probe: pin: NO_PIN toolsetterpin: NOPIN checkmodestart: true hard_stop: false

macros: startup_line0: startup_line1: Macro0: Macro1: Macro2: Macro3: after_homing: after_reset: after_unlock:

start: must_home: false deactivate_parking: false check_limits: true

parking: enable: false axis: Z targetmposmm: -5.000000 ratemmper_min: 800.000000 pulloutdistancemm: 5.000000 pulloutratemmpermin: 250.000000

user_outputs: analog0pin: NOPIN analog1pin: NOPIN analog2pin: NOPIN analog3pin: NOPIN analog0_hz: 5000 analog1_hz: 5000 analog2_hz: 5000 analog3_hz: 5000 digital0pin: NOPIN digital1pin: NOPIN digital2pin: NOPIN digital3pin: NOPIN digital4pin: NOPIN digital5pin: NOPIN digital6pin: NOPIN digital7pin: NOPIN

user_inputs: analog0pin: NOPIN analog1pin: NOPIN analog2pin: NOPIN analog3pin: NOPIN digital0pin: NOPIN digital1pin: NOPIN digital2pin: NOPIN digital3pin: NOPIN digital4pin: NOPIN digital5pin: NOPIN digital6pin: NOPIN digital7pin: NOPIN

arctolerancemm: 0.002000 junctiondeviationmm: 0.010000 verbose_errors: true report_inches: false enableparkingoverride_control: false uselinenumbers: false planner_blocks: 16

Startup Messages

[MSG:INFO: FluidNC v3.9.4 https://github.com/bdring/FluidNC]
[MSG:INFO: Compiled with ESP32 SDK:v4.4.7-dirty]
[MSG:INFO: Local filesystem type is littlefs]
[MSG:INFO: Configuration file:config.yaml]
[MSG:ERR: Validation error at /axes/x/motor0/standard_stepper: Step pin must be an I2SO pin]
[MSG:ERR: Validation error at /axes/y/motor0/standard_stepper: Step pin must be an I2SO pin]
[MSG:ERR: Validation error at /axes/z/motor0/standard_stepper: Step pin must be an I2SO pin]
[MSG:INFO: Machine Default (Test Drive no I/O)]
[MSG:INFO: Board esp32dev]
[MSG:INFO: I2SO BCK:gpio.27 WS:gpio.14 DATA:gpio.12Min Pulse:2us]
[MSG:INFO: SPI SCK:gpio.18 MOSI:gpio.23 MISO:gpio.19]
[MSG:INFO: SD Card cspin:gpio.5 detect:NOPIN freq:8000000]
[MSG:INFO: Stepping:I2S_STREAM Pulse:4us Dsbl Delay:0us Dir Delay:0us Idle Delay:255ms]
[MSG:INFO: Axis count 3]
[MSG:INFO: Axis X (-300.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     standardstepper Step:gpio.32 Dir:I2SO.1 Disable:NOPIN]
[MSG:INFO:  X Neg Limit gpio.36]
[MSG:INFO:  X Pos Limit gpio.39]
[MSG:INFO: Axis Y (-300.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     standardstepper Step:gpio.33 Dir:I2SO.2 Disable:NOPIN]
[MSG:INFO:  Y Neg Limit gpio.34]
[MSG:INFO:  Y Pos Limit gpio.35]
[MSG:INFO: Axis Z (-300.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     standardstepper Step:gpio.25 Dir:I2SO.3 Disable:NOPIN]
[MSG:INFO: Kinematic system: Cartesian]
[MSG:INFO: STA SSID is not set]
[MSG:INFO: AP SSID FluidNC IP 192.168.0.1 mask 255.255.255.0 channel 1]
[MSG:INFO: AP started]
[MSG:INFO: WiFi on]
[MSG:INFO: Captive Portal Started]
[MSG:INFO: HTTP started on port 80]
[MSG:INFO: Telnet started on port 23]

User Interface Software

No response

What happened?

Cannot configure stepper motor with GPIO for step and I2SO for direction in config.yaml (ESP32 Dev)

GCode File

No response

Other Information

No response


评论 (3)

#1 – bdring 于 2025-02-02

You cannot use i2so pins with the RMT engine type. You should use all gpio or all i2so pins for the motors.

board: esp32dev
name: Default (Test Drive no I/O)
meta: 
stepping:
  engine: RMT
  idle_ms: 255


#2 – MitchBradley 于 2025-02-02

Dev boards do not have the external shift registers that are necessary for I2SO stepping.


#3 – bdring 于 2025-02-03

We have some work going for an I/O extender. It works for inputs, digital I/O and PWM.

Discord Discussion
https://github.com/bdring/FluidNC/issues/1444

喜欢 (0)