MPCNC - What's the right config to start

Hello everyone,
I am currently building my first MPCNC,
I already printed and followed the whole guide to build it.
My setup is with endtops for both X, X2, Y, Y2 motors.
I have an Arduino Mega 2560 and a ramps 1.4 that I recovered from my old Prusa with A4988 drivers (5 drivers and I wanted to use E0 and E1 for X2 and Y2).
I am currently trying to understand what’s the best config to start with (I downloaded the Marlin - MPCNC_Ramps_T8_16T_LCD_32step_dualendstop - 402).
Is it correct?
Thanks in advance.
P.s.: i saw other threads opened with similar questions but I was not sure if they had the same setup hope i’m not opening an identical thread.

I’m assuming you are building a Primo. From this page, you want to download V1CNC_Ramps_Dual. Note that this firmware uses DRV8825 drivers, so you will need to edit the configuration.h file, change the drivers to A4988, and recompile the firmware using PlatformIO. I assume you are using the display that comes with a Ramps kit? You will also have to change the steps per mm either in the firmware or using your display since DRV8825 have a higher microstepping max.

Thanks for the quick reply!!
Yes I am building a Primo and actually I have no display. Do I have to disable it?
So the only things I should edit are:

  • X_DRIVER_TYPE (and Y, Z, X2, Y2)
  • DEFAULT_AXIS_STEPS_PER_UNIT
  • X_BED_SIZE and Y_BED_SIZE
    What about the Z? Do I have to change Z_MAX_POS which now is 200 to my 81mm?

For steps you want:

#define DEFAULT_AXIS_STEPS_PER_UNIT { 100, 100, 400 }

As long as they are larger than your machine, you can ignore Z_MAX_POS and bed size defines. These settings would come into play if you enabled soft stops, but soft stops are off by default. Soft stops are useless given the way most people use their MPCNCs.

I think you can ignore the display setting, but without a display, I would suggest you enable the emergency parser. See this section in configuration_adv.h:

/**
 * Emergency Command Parser
 *
 * Add a low-level parser to intercept certain commands as they
 * enter the serial receive buffer, so they cannot be blocked.
 * Currently handles M108, M112, M410, M876
 * NOTE: Not yet implemented for all platforms.
 */
//#define EMERGENCY_PARSER

Without the parser being enabled, you will not be able to resume your jobs if they ever have a M0 g-code.

Your board (and therefore the Marlin version on the board) is old enough that it should not be an issue, but Marlin overrides firmware settings with settings you’ve made using the display or g-code. Therefore, if you have any weird behaviors, consider doing an M502 factory reset followed by an M500.

Thanks for all the precious infos.
I enabled the Emergency Parser just in case.
I just thought I should have a touch display of my Alfawise u30 3D printer laying around.
Do you think there’s any chance of using it in this build?
I was actually thinking of using a pc for controlling it, is the display a better option?
It is not going to give me extra control then the pc I guess.
I’m going to finish the last wirings and hopefully i can start using it!

I just thought I should have a touch display of my Alfawise u30 3D printer laying around.
Do you think there’s any chance of using it in this build?

Don’t know. Touch displays I’ve seen on this forum have their own firmware and communicate with the control board using g-code, so in theory it could work, but the firmware likely has 3D printer-specific features that may not play well with CNC usage. For the touch display V1 sells with the SKR Pro, Ryan and/or Jeff made modifications to the display firmware.

The firmware display settings for the Ramps board are for this display. I have this display on my Rambo board and use it frequently to run my jobs. I like keeping my good laptop out of my unsecured shop area. The display can help debugging certain problems. The display output is presented by Marlin, so it is accurate. Information, like coordinates, can get out of sync on g-code senders.

Hello Robert,
I finally moved my first steps with the printer. I checked the logic and the directions of the step motors and it looks good (not sure if the move 10 mm when you tell them to move 10mm, still have to check that).
Anyway, using repetier host i tried to home one of the axis but it is not doing that.
Do I have to change something on the firmware?

Anyway, using repetier host i tried to home one of the axis but it is not doing that.
Do I have to change something on the firmware?

You need to be specific about what is going on when you are trying to home the machine. No firmware changes should be necessary. The most common reason I see for “not homing” is that you wired the switches as normally open, but the firmware expects them normally closed. If this is what is going on, when you try to home, you should see a slight movement away from the origin of the machine.

The first step to sorting this problem is to use M119 to check the states of all of your switches.

Ok i figured out what was happening. Tuning waaaaay down acceleration and feedrate managed to fix it and homing now works. I am having issues with steps per mm and I have to measure it manually to properly calibrate it. I made changes using gcode from repetier but as you said it forgot everything when I restarted the system. I’ll try again finding the perfect tuning and I’ll write it in the firmware directly. Thanks again!!

Tuning waaaaay down acceleration and feedrate managed to fix it and homing now works. I am having issues with steps per mm and I have to measure it manually to properly calibrate it.

Assuming you installed the correct parts and set the DEFAULT_AXIS_STEPS_PER_UNIT as I specified for the A4988 drives, you should not have to make any of these changes. I suspect that you did not set your microstepping correctly. Under the A4988 drivers, there are pins that should be jumpered. You can see the jumpers in place in this image.

If I’ve correctly identified your issue, then you really want to fix the microstepping and revert back from your steps per mm and acceleration settings. By not installing the jumpers, you lose significant accuracy with your machine.

I made changes using gcode from repetier but as you said it forgot everything when I restarted the system.

Any firmware setting changes made by g-code can be locked in using an M500. After changes are locked in, changes made directly in the firmware for those locked settings are ignored unless you do a factory reset on the board (M502) followed by an M500 to save the default settings. This behavior is so that people don’t lose their settings when they upgrade the firmware.

Edit to add: The A4988 has 16X microstepping. This means, without the jumpers installed, your movements would be 16 times too long, and feedrates would be 16 times too fast. It would also seriously misinterpret the acceleration values set in the firmware. Note that if you had changed the steps per mm first, the acceleration changes would not have needed to be made. But, by not having the jumpers installed, the minimum movement of your machine was just increased by 16 times.

Yes, I completely forgot the jumpers. Now it’s moving smoothly and accuratly! Still having some troubles with the Z since it waves when it’s high and starts to move weirdly (I don’t know the proper word to use could be “Flouncing”). I guess there’s a mechanical issue that I need to fix.
I also still have to precisely set the stop blocks. After those I’ll be ready to try it!

1 Like