GRBL ESP32 WiFi controller board by Makerbase

I just got the mks dlc32 v2.1 running with fluidnc and tmc2209 drivers. I burst out laughing when I finally figured out the config. It’s soooo silent! And tweaking the firmware settings is soo simple! I don’t know what my wife will say if I claim to have fallen in love with an electronic board, let’s just say I’m excited! I’m testing it on my eggbot. Only remains to hook it up with a proper gcode sender(I don’t like the simple web interface for production), and making the servo work as z.

3 Likes

Can you share your config file? Since you have the servo as Z, this might work on my rolling plotter. I originally bought mine to use on another laser engraver I haven’t built yet. Think I have DRV8825 drivers on mine.

Which pins did you hook the servo up to?

I use the example config from here: FluidNC/example_configs at main · bdring/FluidNC · GitHub

This file worked for me:FluidNC/MKS_DLC32_21_XYZ.yaml at main · bdring/FluidNC · GitHub

I don’t understand how the I2S pins are set up, if they are physical at all - or software configured. If they are, I don’t know how - but they are working! I haven’t got the servo working either, but example from the instructions seem decent enough:

z:
steps_per_mm: 100
max_rate_mm_per_min: 5000
acceleration_mm_per_sec2: 100
max_travel_mm: 5
homing:
cycle: 1
mpos_mm: 0
positive_direction: true

motor0:
  rc_servo:
    pwm_hz: 50
    output_pin: gpio.27
    min_pulse_us: 1000
    max_pulse_us: 2000
1 Like

It looks like there is a “daughter chip”. The ESP32 is sending commands over I2C and the daughter board is controlling some functions, like the motor enable.

stepping:
  engine: I2S_STATIC
i2so:
  bck_pin: gpio.16
  data_pin: gpio.21
  ws_pin: gpio.17

That sets up the I2C. The Esp pins 16, 21, 17 are used to send that data to the daughter chip.

axes:
  shared_stepper_disable_pin: I2SO.0
...
      stepstick:
        step_pin: I2SO.1
        direction_pin: I2SO.2

This is one example, the steppers share an enable pin on the daughter board that is pin 0. The X stepper is ok pins 1,2. It doesn’t matter what pins they actually are on the daughter chip, as long as the I2C interprets them as 0,1,2.

2 Likes

I see they added some more example configs since I looked at it last. There was only the MKS_DLC32_2_ABC.yaml for the DLC32 board a few versions back. I will have to play with this once I finish some house projects.
@jeffeb3 Thanks for the additional servo info. Using the servo for the z-axis for a plotter would simplify my setup. I was thinking of using a real stepper for this, but this looks promising.

1 Like

I used the probe pin, gpio.22. Spent a few night getting it to work. Ended up asking Bart Dring himself. It didn’t seem like he was impressed with my troubleshooting skills… a little embarassing - but now I’ve solved it. The servo itself was bust - AND I didn’t have the indents in the config file right! Who would’ve know that a few spaces missing is enough to ruin the whole setup!

1 Like

From your comment, sounds like you did not get the servo to work? What does your config file look like now?

I solved it :slight_smile: I think there’s a lot of redundant parts in this config, but at least I got it to work! (no tuning/calibration is done yet) Here’s the config code: Untitled (exze705w) - PasteCode.io

1 Like

Thanks. That gives me a very good starting point. I like the use of the probe for the servo. That puts all 3 connections in the same area on the board. Too bad the DLC32 does not have a servo connection which would have 5v on the center pin rather than ground. I will have to swap those pins on my extension servo wire if I can get the pins out of the connector. I am still waiting on a couple of closed loop timing belts before going further with my plotter. They should be here next week.

1 Like

Can you tell me what settings I need to change to use DRV8825 drivers for the X & Y axis? 160.0 should be my steps_per_mm since I am using GT2 belt with 20T drive pulley. Under the motor0, I don’t know what I need to change. I will also have a motor1 for the Y axis.

I did find this link Problems getting it work · Issue #184 · bdring/FluidNC · GitHub that will probably help me. I found it after seeing this message. FluidNC - Software / Firmware / GRBL - V1 Engineering Forum

Glad you found your way! The fluidnc seems quite like a young platform, but things are developing fast and I think most options will be covered by time.

What setup are you using for your plotter/laser? I’m still in the thinking box if should go with an axi-draw variant, or an H-setup. What are the pro’s and con’s for these two options would you say?

Mine is kind of different. It is a rolling plotter setup with one axis being essentially infinite. I was using klipper firmware before on a MKS 8 bit board. I redefined the G10 & G11 gcode to do a servo down & servo up for the Z-axis & was kind of a pain since I had to manually edit Gcode. This time around I was going to use a standard small stepper of some sort, but if the fluidnc works to use the servo with a z-axis, I might stay with the servo. Here is my design as it looked 2 years ago. I am in the process of redesigning it now. Rolling Plotter build - Random or Off Topic - V1 Engineering Forum

I’m converting the eggbot to a plotter. Now the servo won’t work. And all my googling leads me back to this post! Does that mean that I have completed the internet? Or that I’m running in circles? Why isn’t the servo responding?! I guess I should try with another microcontroller, that could rule out hardware issues with the servo.
Edit: the Uno runs the servo flawlessly. On the MKS DLC32 the 5V and GND pins have voltage. The PWM pin shows 1.5v on the multimeter. I guess I should’ve seen how it looks on an oscilloscope, and compare to the arduino UNO signal. But I don’t have one. Perhaps I should get it? :smiley:

3 Likes

Do you have an extra servo to try? I found one I was using went bad after a while. It may have gotten too hot. I am doing away with servo on my plotter & am going to use a Nema 17. Seems like it will be less problems.

The servo seems fine on the UNO. So I think it has to be something with my settings on the DLC32 - that I can’t figure out. But yeah - I’d also like stepper driven pen mount! It’s just quite heavy. The servo is such an light weight option. The other in between solution is the elsewhere mentioned solenoid. But I still think the issue is with my config/the board. Please keep me in the loop if you are going serious with the stepper approach!

Id like to try out this board for a custom laser I am building. My build has Y1 and Y2 separate so it can auto square, does this board operate Y1 and Y2 together or can I make them independent with separate endstops?

I found the hair in the soup. Do you recognize it?

Two empty spaces lacking before z:, resulting in three evenings of annoyance.

Remember indentation folks!

2 Likes

That is a little annoying that is that picky about indentation, but easier on the programming side probably. Maybe that was my problem getting it to work. I could not get the x or y motor to move much when I was playing with it.

Have you ever thought of using a 28BYJ-48? You have to rewire them a little to work & I have never gotten around to trying them, but I know @dkj4linux has.

1 Like

The hierarchical structure of settings is awesome, and this is the (sometimes frustrating) downside! Using / you can navigate down the parameter tree and change or check settings on the fly with $
Extremely convenient for calibration.

You have given me an amazing idea! (I really don’t like small servos…)