Jump to content
Ultimaker Community of 3D Printing Experts
lars86

UMO Running Marlin 1.1.x

Recommended Posts

Hey guys,

 

I have been working on configuring the latest Marlin code release (currently 1.1.6) to use on an Ultimaker Original. I have been through the configuration files to compare to my latest 1.0 build. These are the changes I made to successfully get it printing. Basically, you need to open a couple files in the downloaded Marlin, search for these lines and either remove the '//' to un-comment, or change a defined value. I prefer the program notepad++ for editing. You can use the "language" setting "c" to make it more readable.

 

 

:EDIT:

 

Okay, I finally got with the program and created my own fork of Marlin. This will make it a lot easier to keep my customizations, while merging in new changes from the Master branch.

 

Here is my branch: https://github.com/CCS86/Marlin/tree/Lars86

 

This shows a comparison of my changes to the Master: https://github.com/MarlinFirmware/Marlin/compare/1.1.x...CCS86:Lars86

 

Some of my changes are specific to my modifications:

- Official heated bed kit
- Stock heater and thermocouple
- Direct driven X & Y w/ GT2 belts & pulleys
- Upgraded X & Y steppers with half the full step angle from original (hence the microstepping 8 vs 16)
- Custom geared stepper extruder drive
- A very slight software skew correction. You would want to disable skew correction until you print a test square for yourself.
- Use of a REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
  

 

 

Read on to see an explanation of the changes.

 

 

  • #define MOTHERBOARD BOARD_ULTIMAKER
  • #define POWER_SUPPLY 1
  • #define TEMP_SENSOR_0 -1

 

 

For the official heated bed kit:

  • #define TEMP_SENSOR_BED 20
  • #define PIDTEMPBED (Enable PID bed control)

 

PID autotune gave me very bad results in the past. I came up with these values manually for the official bed kit:

  • #define  DEFAULT_bedKp 40    
  • #define  DEFAULT_bedKi .55    
  • #define  DEFAULT_bedKd 10

 

Gets the end stop logic correct:

  • #define X_MIN_ENDSTOP_INVERTING true 

 

Set values for your motion control here. You will need to look in your controller for your current settings. I use my phone and snap a picture of each screen:

  • #define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 200, 488 }
  • #define DEFAULT_MAX_FEEDRATE          { 250, 250, 35, 35 }
  • #define DEFAULT_MAX_ACCELERATION      {2000, 2000, 600, 1000 }
  • #define DEFAULT_ACCELERATION          2000    

 

  • #define DEFAULT_RETRACT_ACCELERATION  1000
  • #define DEFAULT_TRAVEL_ACCELERATION   3500   

 

 

I run these values because of my direct drive X and Y axis. If you still have the short belts, flip these values:

  • #define INVERT_X_DIR false  
  • #define INVERT_Y_DIR true  

 

This corrects the Z axis direction:

  • #define INVERT_Z_DIR true

 

Enable this to allow saving of some of the values listed above from the control, without a reflash:

  • #define EEPROM_SETTINGS 

 

 

 

 

In my configuration_adv, I made these changes:

 

  • #define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 }

 

This gives you a menu item in "TUNE" that lets you adjust Z height on the fly. Super useful for dialing in the first layer height. You can even compensate for added blue tape with about 10 clicks:

  • #define BABYSTEPPING  
  • #define BABYSTEP_MULTIPLICATOR 2

 

This is a new feature that attempts to keep extruder pressure (rate) more accurately synced with head speed. This is a big issue on bowder printers, where the print head can change speed much faster than extruder pressure. This causes under-extrusion in regions of acceleration and over-extrusion when decelerating. According to the devs, Slic3r generates compatible gcode, but newer Cura does not. I am working with the Marlin devs to improve / find the issues with Cura gcode, because I really prefer Cura. Feel free to test and contribute to the discussion: https://github.com/MarlinFirmware/Marlin/issues/8827

 

More info on LIN ADVANCE: http://marlinfw.org/docs/features/lin_advance.html

Calibration method: http://marlinfw.org/tools/lin_advance/k-factor.html

 

Code to enable:

  • #define LIN_ADVANCE
  • #define LIN_ADVANCE_K 0 (you can pre-populate a value here. '100' is something you can test the waters with, but you can change this via the controller menu and save later. Or change via gcode)

 

 

This should get you going. First test each axis direction with "move axis". Then you can give an M119 command to check the status of the endstops. Very important that they are working correctly. Then you can command some increasing temps for the nozzle and bed, making sure you get stable readings there. Then print something and report back!

Edited by lars86
  • Like 2

Share this post


Link to post
Share on other sites

I gave 1.1.3 a try some time ago but had no luck to get in running as I expected (assume, I had the wrong expectation). So still back on my old "private" version

From my view, you have considered all relevant stuff, but pls. keep us informed about your experience...

  • Like 1

Share this post


Link to post
Share on other sites

New forum software up and running!

 

Also up and running... my Ultimaker Original on Marlin 1.1.6. My guide above is pretty comprehensive and so far I have not had any issues. (besides Cura gcode not playing nicely with the new Linear Advance feature in Marlin).

Share this post


Link to post
Share on other sites

Thanks for feedback!

Will give it another try during Christmas Holidays.

 

I'm highly interested in the following functions:

ADVANCED_PAUSE_FEATURE

MENU_ADDAUTOSTART

SDCARD_SORT_ALPHA

SPINDLE_LASER_ENABLE

CUSTOM_USER_MENUS

 

The only thing which is still missing is the propper implementation of a "abort behavior" e.g. moveto pause position, cooldown heaters and disable steppers...

 

If I have findings, I´ll post...

 

Edited by drayson
  • Like 1

Share this post


Link to post
Share on other sites
On 12/21/2017 at 8:40 AM, drayson said:

I'm highly interested in the following functions:

ADVANCED_PAUSE_FEATURE

MENU_ADDAUTOSTART

SDCARD_SORT_ALPHA

SPINDLE_LASER_ENABLE

CUSTOM_USER_MENUS

 

The only thing which is still missing is the propper implementation of a "abort behavior" e.g. moveto pause position, cooldown heaters and disable steppers...

 

 

 

On this 1.1 version, "stop print" now does turn all the heaters off, but still does not park the nozzle first. I actually might edit mine to leave the heaters on. The only time I seem to use "stop print" is when I had some issue and want to restart the print. It's annoying rushing to get temps set again, before they cool down.

 

I tried the Advanced Pause feature, but ended up with a compile error. Apparently, it is not compatible with Extruder Runout Prevent. I use that feature a lot to keep the filament fresh while I am getting code ready for the printer. I posted on  Github to see why they won't work together.

 

One nice bonus I have noticed: I use a REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER and used to get occasional interruption of print motion while navigating the menus. That has gone away, which makes me think the motion control loop has been optimized.

Share this post


Link to post
Share on other sites
2 hours ago, lars86 said:

 

 

On this 1.1 version, "stop print" now does turn all the heaters off, but still does not park the nozzle first. I actually might edit mine to leave the heaters on. The only time I seem to use "stop print" is when I had some issue and want to restart the print. It's annoying rushing to get temps set again, before they cool down.

 

I tried the Advanced Pause feature, but ended up with a compile error. Apparently, it is not compatible with Extruder Runout Prevent. I use that feature a lot to keep the filament fresh while I am getting code ready for the printer. I posted on  Github to see why they won't work together.

 

One nice bonus I have noticed: I use a REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER and used to get occasional interruption of print motion while navigating the menus. That has gone away, which makes me think the motion control loop has been optimized.

 

Thanks for sharing your experience.

The advanced pause feature also not worked at my trial. I did a custom implementation of the a.m. abort behavior but my marlin version where I did it is back from 2014...

I gave your github issue a + so I get informed if any information / answer comes up...

Share this post


Link to post
Share on other sites

Okay, I finally got with the program and created my own fork of Marlin. This will make it a lot easier to keep my customizations, while merging in new changes to the Master branch.

 

Here is my fork: https://github.com/CCS86/Marlin-UMO-CCS86

 

This shows a comparison of my changes to the Master: https://github.com/MarlinFirmware/Marlin/compare/1.1.x...CCS86:1.1.x

Share this post


Link to post
Share on other sites
2 hours ago, Daid said:

The steps per mm on the X/Y for the UMO are not 80. But 78.7402, due to the MXL belts. See:

https://github.com/Ultimaker/Marlin/blob/Marlin_v1/Marlin/Configuration.h#L458

(This is for the UMO. The UMO+ has a different Z steps per mm)

 

 

Correct. That's why I prefaced those settings with:

 

Quote

Set values for your motion control here. You will need to look in your controller for your current settings. I use my phone and snap a picture of each screen:

 

I upgraded my machine to GT2 pulleys/belts

 

I updated the original post for clarity.

Edited by lars86

Share this post


Link to post
Share on other sites
On 2/1/2018 at 9:15 AM, burdickjp said:

Is this an early UMO with the original board? http://reprap.org/wiki/Ultimaker's_v1.5.7_PCB

A newer UMO+ with the UM2 board?

Mine has the newer UM2 PCB.

 

 

I think the only change you will really need is changing:

 

#define BOARD_ULTIMAKER       // Ultimaker

to:

#define BOARD_ULTIMAIN_2      // Ultimainboard 2.x (Uses TEMP_SENSOR 20)

 

...and using these for your temp sensor definitions:

 

#define TEMP_SENSOR_0 20

#define TEMP_SENSOR_1 20

#define TEMP_SENSOR_2 0

#define TEMP_SENSOR_BED 20

Edited by lars86

Share this post


Link to post
Share on other sites
1 hour ago, lars86 said:

 

 

I think the only change you will really need is changing:

 

#define BOARD_ULTIMAKER       // Ultimaker

to:

#define BOARD_ULTIMAIN_2      // Ultimainboard 2.x (Uses TEMP_SENSOR 20)

 

...and using these for your temp sensor definitions:

 

#define TEMP_SENSOR_0 20

#define TEMP_SENSOR_1 20

#define TEMP_SENSOR_2 0

#define TEMP_SENSOR_BED 20

 

For the most part, yes, that brings in 99% of the functionality. The only thing I've found to be different is that the UM2 board uses a pin which isn't used in the arduino for the hot end fan. To use it you have to address it directly, which Marlin isn't configured to do. nullsibnelf has shared the necessary code in a git repo:

 

Share this post


Link to post
Share on other sites
23 minutes ago, theoross said:

Hi,

 

do you have any idea how to change the firmware to allow for a second extruder running from the spare port on the umo+ board?

 

 

 

I haven't run a second extruder before, but I think everything should be in configuration.h:

 

// This defines the number of extruders
// :[1, 2, 3, 4, 5]
#define EXTRUDERS 1

 

Probably should make sure you have good values defined for the second extruder (E1) as well:

 

/**
 * Default Axis Steps Per Unit (steps/mm)
 * Override with M92
 *                                      X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
 */
#define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 4000, 500 }

/**
 * Default Max Feed Rate (mm/s)
 * Override with M203
 *                                      X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
 */
#define DEFAULT_MAX_FEEDRATE          { 300, 300, 5, 25 }

/**
 * Default Max Acceleration (change/s) change = mm/s
 * (Maximum start speed for accelerated moves)
 * Override with M201
 *                                      X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
 */
#define DEFAULT_MAX_ACCELERATION      { 3000, 3000, 100, 10000 }

 

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Welcome to the Ultimaker Community of 3D printing experts. Visit the following links to read more about our Terms of Use or our Privacy Policy. Thank you!