Primo Ramps Dual Firmware

Forgive me Ryan for I have sinned. It has been a few months since I last logged into the forum. I have had lustful thoughts about other CNC machines. I have been flirting with Workbee but I eventually took my beloved original MPCNC to pieces to take on the Primo upgrade. I have to say I can appreciate the difference in the design changes. Great Job Ryan. and great job on the improved and updated firmware.

I don’t know why I did not upgrade sooner. Having Auto Z height is just so much more civilized. My 61 year old eyes and back not up to setting manual Z height so well anymore as well as having the dual limits for squaring up. I have put the new MPCNC Primo on a fold up table to make it possible to be moved around and out of harms way when big things are being moved around the garage so resquaring each time it is set up is important.

My queries that I would appreciate some guidance on.

I am using a Ramps 1.6 board with A4988 drivers with LCD & SD Card reader as that is what I had in my box of bits - I use SD card to transfer files from the PC to the MPCNC. Firmware is V1CNC_Ramps_Dual_2.0.7.2

I had to invert the limits setting as I used some 3 wire boards that I had and printed some Thingiverse housings for them.

1 - even though I programmed the Arduino #define DEFAULT_AXIS_STEPS_PER_UNIT { 100, 100, 400, 100 } as I read in the forum as necessary using A4988 instead of your recommended DRV8825 I was still getting the 920mm travel as 460mm.

After doubting myself and reburning the Arduino a few times blaming the programming process, I eventually came across a way to set the sizes through the lcd menu which rectified the issue. Did I miss a step that updates the Arduino? I have not tried anything in the menus to do with EEPROM as I do not fully understand the consequences of that. I thought changes in the firmware would take precedence.

2 - How do I set the firmware offset for Z for the 3mm aluminium flat bar Spacer I am using to set the Material height? Each post I read says use the Gcode, but I like the V1 menu option to home Z so would like to set it in Firmware.

The only possibility I can find in the Marlin firmware is #define NOZZLE_TO_PROBE_OFFSET { 0, 0, -3 } does that look right or am I off the mark? Got nothing to do with a nozzle. Is there a better way to do it in Firmware without having to add it through estlcam? OR is there another way to enter it through the LCD again?

Sorry if these are silly questions, but I have been trawling through the forum for the past 2 days and not finding the answers for myself.

I have got everything working nicely and very chuffed. 920mm x 920mm work area with 1300.5mm and 1301.5 diagonals so as close to square as is practical. Not checked the Z axis for square yet though but it eyeballs about right. 1mm skew I think is very good over that sort of distance.

Do I need to put my measurements into the firmware for #IF Enabled (Skew Correction) or can I leave it as you have set it as default 282.8427124766? Are there any consequences for leaving it as is? Less is more (The less I mess around the more likely it will work)

Sorry for all the questions. Advice much appreciated from those that have gone before me and already worked it out.

1 Like
  1. I am going to go into detail mostly because I think it is interesting.

When the firmware boots, it does not know if it is the first time or the 1000th time. The 100,100,400 you set in configuration.h changes what is in the code. If you did want to edit the steps/mm from the lcd or from gcode (M92) it would need to store that, and it does that by writing it to eeprom.

The consequence of that is that if you change the value in the software, and then flash the software, the first time it boots, what value will it use? The value in the eeprom (which might have been the users choice) or the value in the software? It chooses the eeprom. So even though you changed the value in the software, what you really changed is the defaults.

If you had reloaded the defaults from the software (there is a menu item, or M502) then it would have picked up the new values. Or if you can moved to a grossly new version (if the eeprom is from an earlier version, it can’t safely read it).

  1. Those settings are all for the z probe. This is really just a z min endstop. The one setting that might work is the z min position:

But I worry that will have unintended consequences. It is worth a try though. There is, unfortunately, no way to set that via gcode.

The skew correction should be turned off. Those values are examples. That setting is used on single driver machines. Your dual drivers will home on their own so there is no skew. M666 is the digital adjustment you get and it will adjust how far one motor will bump it’s endstop before moving in lockstep.

Another option would be to add a custom menu item. Here’s a thread that discusses how to do that. And here’s an example of the gcode just in case you don’t already have it.

Thanks Jeffeb3 and Gato

I think you have me pointed in the correct direction, so please correct me if I am wrong

1 - Jeffeb3 If I go to the LCD menu and use the write to EEPROM after changing the marlin firmware that should overwrite the memorised setting with the current Firmware settings?

2 - Gato, Thanks for the direction. So if I edit the Custom_user_menu can I add an extra command for the offset for the touch probe thickness there?

i.e. USER_GCODE_2 “G28 Z\nG92 Z3”

and should I perhaps an extra step like G0 Z5 F300 to get the Z to back up to get the probe out?

Thank you both for your time in answering and helping me learn.

I can confirm that editing the user code in the Configuration_adv has worked and has done what I require so now using the menu item - V1 menu “home Z” does that, homes the Z axis against the touch plate, accounts for the thickness of the plate and lifts up 5mm to remove the plate.

USER_GCODE_2 “G28 Z\nG92 Z3\n G0 Z5”

Happy Days.

Any firmware settings you modify with the LCD or if you use g-code and use an M500 to save the settings will remain even if you update the firmware. In order to get your board to again read new values from the firmware, you have do a factory reset (M502).

1 Like

Robert is right. If you want to read from firmware, M502 will do that. I think the lcd menu setting is something like “load factory defaults”. Those won’t stay loaded unless you then save to eeprom.

Ah Great, Thank you. Yes I think the “Load factory firmware” is probably what I need.

Going to do the first tester this afternoon. Hopefully I have it all correct now.

Thanks for all your help.

1 Like