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.
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
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.
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.
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!
From your comment, sounds like you did not get the servo to work? What does your config file look like now?
I solved it 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
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.
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?
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?
Two empty spaces lacking before z:, resulting in three evenings of annoyance.
Remember indentation folks!
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.
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…)