Firmware Speed Limit  

Page 1 / 2
  RSS
Nomad965
(@nomad965)
Trusted Member

Just need a clarification, prusa slicer has default machine speed limits higher then the ones capped in the firmware for example acceleration. In the variant 1_75mm_MK3S-EINSy10a-E3Dv6full.h it is defined below

#define DEFAULT_MAX_FEEDRATE                {200, 200, 12, 120}      // (mm/sec)   max feedrate (M203)
#define DEFAULT_MAX_FEEDRATE_SILENT         {100, 100, 12, 120}      // (mm/sec)   max feedrate (M203), silent mode

#define DEFAULT_MAX_ACCELERATION            {1000, 1000, 200, 5000}  // (mm/sec^2) max acceleration (M201)
#define DEFAULT_MAX_ACCELERATION_SILENT     {960, 960, 200, 5000}    // (mm/sec^2) max acceleration (M201), silent mode
#define DEFAULT_ACCELERATION          1250   // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204S)
#define DEFAULT_RETRACT_ACCELERATION  1250   // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204T)

#define MANUAL_FEEDRATE {2700, 2700, 1000, 100}   // set the speeds for manual moves (mm/min)

1- First clarification is if that is the printer defaults within the firmware then whatever is set in the slicer cannot be more then that for it to be effective.

2- The generated Gcode on an example file shows clearly that slicer is outputting what is been set in the slicer as below:

M201X4000Y4000Z300E2000; sets maximum accelerations, mm/sec^2
M203X500Y500Z10E120; sets maximum feedrates, mm/sec
M204P1200R1200T1200; sets acceleration (P, T) and retract acceleration (R), mm/sec^2
M205X5.00Y5.00Z0.40E2.00; sets the jerk limits, mm/sec
 
3- If one would need to change this then we would need to change those values as per the define values found in 1_75mm_MK3S-EINSy10a-E3Dv6full.h in order to match the numbers we are working with?
 
4- Could this be the explanation as to why the print times differ from the prusa slicer and what is outputted on the printer print status on completion?
Prusa i3 MK2s MK2.5s Mk3 Mk3s BearPrusa Zaribo 320 - Kit Build - Rc Driver - Tweak freak...
“I know nothing about surpassing others. I only know how to outdo myself.” -Bushido-...
Posted : 06/06/2020 9:04 pm
bobstro
(@bobstro)
Illustrious Member

Your slicer output values look nothing like mine. Here's what I'm getting for a Mk3 using the current Prusa-supplied profile with PrusaSlicer:

M201 X1000 Y1000 Z200 E5000 ; sets maximum accelerations, mm/sec^2
M203 X200 Y200 Z12 E120 ; sets maximum feedrates, mm/sec
M204 P1250 R1250 T1250 ; sets acceleration (P, T) and retract acceleration (R), mm/sec^2
M205 X8.00 Y8.00 Z0.40 E4.50 ; sets the jerk limits, mm/sec
M205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec

These values all correspond to what I'm seeing under Printer Settings->Machine limits in PrusaSlicer. Are you using a Prusa printer profile? Where the profile originate?

Using incorrect values in the machine settings tab will definitely throw off print time estimates.

My notes and disclaimers on 3D printing and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. -- Spock in Star Trek: The Wrath of Khan...
Posted : 07/06/2020 7:58 pm
Nomad965
(@nomad965)
Trusted Member

@bobstro

Hi Bob, first of all thank you for the great information put on your website 🙂 Very useful.

In regards to the profile am using my custom profile also testing bondtech, what am after is setting speed prints, from what am seeing in the prusa firmware these values have been capped by prusa, so effectively you cannot exceed those limits defined correct ?

Those values output as per the gcode taken from bondtech profile, just something I spotted.

This post was modified 5 months ago by Nomad965
Prusa i3 MK2s MK2.5s Mk3 Mk3s BearPrusa Zaribo 320 - Kit Build - Rc Driver - Tweak freak...
“I know nothing about surpassing others. I only know how to outdo myself.” -Bushido-...
Posted : 07/06/2020 9:03 pm
bobstro
(@bobstro)
Illustrious Member

As I understand it, the values specified in the firmware setup are defaults that can be over-ridden with the corresponding M20x commands. If you change them, you change the printer's settings until next reset. That doesn't mean you can attain fantastic results using unrealistic settings, but I do exceed those values slightly without any issues. In the same vein, turning the front knob as you print is the same as issuing M220 commands that over-ride the on-board firmware settings, or adjusting filament flow in the Tune menu which is effectively issuing M221 commands. 

My notes and disclaimers on 3D printing and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. -- Spock in Star Trek: The Wrath of Khan...
Posted : 07/06/2020 10:06 pm
Nomad965
(@nomad965)
Trusted Member

Okay so, there is actually no need to reflash the firmware, just issue the M20x commands relative to what I need to change and it will be saved to the eeprom, or I can set this as suggested earlier set in the firmware.

Prusa i3 MK2s MK2.5s Mk3 Mk3s BearPrusa Zaribo 320 - Kit Build - Rc Driver - Tweak freak...
“I know nothing about surpassing others. I only know how to outdo myself.” -Bushido-...
Posted : 08/06/2020 12:08 am
bobstro
(@bobstro)
Illustrious Member

Not 100% sure of how this would work on the Prusas, but you can typically issue overrides, then issue an M500 to save everything to EEPROM. Or just load the appropriate values in startup gcode, which is what PrusaSlicer seems to do. In general, I'd start out with conservative settings, then find some quick benchmark prints and experiment with higher speeds. Keep in mind, if you want to print more quickly -- and not just "faster" -- increasing nozzle size will make more of a difference in many cases that linear speeds.

Glad the notes pages are useful. Let me know if you spot any issues.

My notes and disclaimers on 3D printing and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. -- Spock in Star Trek: The Wrath of Khan...
Posted : 08/06/2020 4:49 am
Nomad965 liked
bobstro
(@bobstro)
Illustrious Member

Looking at Marlin 2.0, I see the LIMITED_MAX_FR_EDITING feature that limits overrides that can be done with M203 or LCD. This can be used to set max limits. I believe without this feature, you can use whatever values you like with the M20x settings. I'm looking through the Prusa source code and don't see this exact feature (but will keep looking).

My notes and disclaimers on 3D printing and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. -- Spock in Star Trek: The Wrath of Khan...
Posted : 08/06/2020 5:21 pm
bobstro
(@bobstro)
Illustrious Member

According to Prusa configuration.h EEPROM_SETTINGS is NOT defined, so you'd have to reconfigure the settings in gcode with each print to ensure your desired values are used. You can't override the burned in defaults with M500, at least from what I can make of it.

My notes and disclaimers on 3D printing and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. -- Spock in Star Trek: The Wrath of Khan...
Posted : 08/06/2020 5:39 pm
Nomad965
(@nomad965)
Trusted Member

@bobstro

On the following page http://projects.ttlexceeded.com/3dprinting_s3d_gcode.html?highlight=jerk#

Line 65 of your S3d script calls for M83 just a note that default prusa is relative maybe point this out in your foot note so new users dont just copy and paste this by mistake and the extruder does not extrude.

Prusa i3 MK2s MK2.5s Mk3 Mk3s BearPrusa Zaribo 320 - Kit Build - Rc Driver - Tweak freak...
“I know nothing about surpassing others. I only know how to outdo myself.” -Bushido-...
Posted : 09/06/2020 11:11 am
Nomad965
(@nomad965)
Trusted Member

@bobstro

Correct I did not find this in the configuration.h as I recall it would be found there, but there is reference in the file 1_75mm_MK3S-EINSy10a-E3Dv6full.h folder /variants line 97 onwards as per my earlier post.

Prusa i3 MK2s MK2.5s Mk3 Mk3s BearPrusa Zaribo 320 - Kit Build - Rc Driver - Tweak freak...
“I know nothing about surpassing others. I only know how to outdo myself.” -Bushido-...
Posted : 09/06/2020 11:15 am
Nomad965
(@nomad965)
Trusted Member

Also in regards to your scripts is it not better to have the scripts wait for the bed temp to reach the target bed temp before proceeding with the Mesh Bed leveling ?

Prusa i3 MK2s MK2.5s Mk3 Mk3s BearPrusa Zaribo 320 - Kit Build - Rc Driver - Tweak freak...
“I know nothing about surpassing others. I only know how to outdo myself.” -Bushido-...
Posted : 09/06/2020 11:43 am
bobstro
(@bobstro)
Illustrious Member
Posted by: @nomad965

@bobstro

On the following page http://projects.ttlexceeded.com/3dprinting_s3d_gcode.html?highlight=jerk#

Line 65 of your S3d script calls for M83 just a note that default prusa is relative maybe point this out in your foot note so new users dont just copy and paste this by mistake and the extruder does not extrude.

I've tested that gcode on recent Prusa firmware. I recall that there was a recent change to the default extrusion mode. I ran into a similar issue with Cura start gcode. I'll try to test again to confirm and add some cautionary notes.

 

My notes and disclaimers on 3D printing and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. -- Spock in Star Trek: The Wrath of Khan...
Posted : 09/06/2020 3:38 pm
Nomad965 liked
bobstro
(@bobstro)
Illustrious Member
Posted by: @nomad965

[...] Correct I did not find this in the configuration.h as I recall it would be found there, but there is reference in the file 1_75mm_MK3S-EINSy10a-E3Dv6full.h folder /variants line 97 onwards as per my earlier post.

Those settings are specified in the header files, but I believe they are defaults that can be overridden with M20x commands but can not be saved with M500. Unless LIMITED_MAX_FR_EDITING (or the pre-Marlin 2.0 equivalent) are enabled, you can set whatever values you want although physics come into play. I have not done any validation on this though. There were people posting high speed testing early on (2018 IIRC) results here that certainly seemed to be pushing the physical boundaries of the Mk3.

This post was modified 5 months ago by bobstro
My notes and disclaimers on 3D printing and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. -- Spock in Star Trek: The Wrath of Khan...
Posted : 09/06/2020 3:45 pm
Nomad965 liked
bobstro
(@bobstro)
Illustrious Member
Posted by: @nomad965

Also in regards to your scripts is it not better to have the scripts wait for the bed temp to reach the target bed temp before proceeding with the Mesh Bed leveling ?

I have implemented a PINDA warmup to 35C. The bed temp is not particularly important (IME) other than as the heater for the PINDA. I set the bed temp to a higher (80C) temp for PINDA warmup to avoid the problem of the PINDA never hitting 35C on cold days. The bed will always warm to 80C for this step. This has the side benefit of warmup up the printer -- particularly the bed -- as a whole prior to printing. I kick off the bed leveling once the PINDA has hit 35C and, in my limited testing, the mesh bed level completes before it drifts independent of bed or nozzle temps

I set the bed to the final print temp (e.g. 65C for PLA) right as mesh bed leveling starts, so it cools (a bit) during that process. I know some folks very carefully regulate the bed temp throughout this process, but I personally have not had any problems. Similarly, I'm happy to start MBL if the PINDA is 35C or higher, and don't wait for it to drop below 35C and come back up to 35C.

My startup gcode reflects my tolerance for startup delays versus MBL consistency. I hope that clarifies things. Let me know if your testing yields any different results.

 

My notes and disclaimers on 3D printing and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. -- Spock in Star Trek: The Wrath of Khan...
Posted : 09/06/2020 4:00 pm
Nomad965
(@nomad965)
Trusted Member
Posted by: @bobstro
Posted by: @nomad965

Also in regards to your scripts is it not better to have the scripts wait for the bed temp to reach the target bed temp before proceeding with the Mesh Bed leveling ?

I have implemented a PINDA warmup to 35C. The bed temp is not particularly important (IME) other than as the heater for the PINDA. I set the bed temp to a higher (80C) temp for PINDA warmup to avoid the problem of the PINDA never hitting 35C on cold days. The bed will always warm to 80C for this step. This has the side benefit of warmup up the printer -- particularly the bed -- as a whole prior to printing. I kick off the bed leveling once the PINDA has hit 35C and, in my limited testing, the mesh bed level completes before it drifts independent of bed or nozzle temps

I set the bed to the final print temp (e.g. 65C for PLA) right as mesh bed leveling starts, so it cools (a bit) during that process. I know some folks very carefully regulate the bed temp throughout this process, but I personally have not had any problems. Similarly, I'm happy to start MBL if the PINDA is 35C or higher, and don't wait for it to drop below 35C and come back up to 35C.

My startup gcode reflects my tolerance for startup delays versus MBL consistency. I hope that clarifies things. Let me know if your testing yields any different results.

 

No different, so far so good, but I need to monitor a little more, am just thinking bed expansion during the heart process and if Pinda takes the readings before set bed temp then maybe there will be some variances in readings (IMHO), as can be seen taking readings via pronterface G80 / G81. Will test and see the results for some time.

Thanks for the input Bob...

This post was modified 5 months ago by Nomad965
Prusa i3 MK2s MK2.5s Mk3 Mk3s BearPrusa Zaribo 320 - Kit Build - Rc Driver - Tweak freak...
“I know nothing about surpassing others. I only know how to outdo myself.” -Bushido-...
Posted : 09/06/2020 9:46 pm
bobstro
(@bobstro)
Illustrious Member
Posted by: @nomad965

No different, so far so good, but I need to monitor a little more, am just thinking bed expansion during the heart process and if Pinda takes the readings before set bed temp then maybe there will be some variances in readings (IMHO), as can be seen taking readings via pronterface G80 / G81. Will test and see the results for some time.

The PINDA warmup owner's wiki page describes a process that includes a PINDA cool-off (below 30C IIRC) followed by PINDA warm-up. Check out the bit about turning on the cooling fan, etc. For my purposes, the bed will be close to 80C throughout probing. I'm not sure how much difference those results will be compared to a 60-65C bed at print time. My understanding (borne out by my casual testing) is that the main concern is the high variability in the PINDA readings at different temps, so I focused there. It can always be better, but my existing approach can already take 5+ minutes on a cold morning, so I'm hesitant to slow it down any more!

 

My notes and disclaimers on 3D printing and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. -- Spock in Star Trek: The Wrath of Khan...
Posted : 09/06/2020 9:58 pm
Nomad965 liked
Nomad965
(@nomad965)
Trusted Member

I just noted something in the startup code under prusa slicer you entered the extrude override:

M221 S{if layer_height >= 0.32}90{else}100{endif} ; compensate for thick layer heights

Not really sure how this affects the extrusion multiplier, since I set the extrusion multiplier after re-calibrating
with the new layer width, say I was on 0.45 and now running 0.48 I would redo the extrusion multiplier and set it for
that layer width. If using the M221 would that have an effect on the set extrusion multiplier. ?

 

This post was modified 5 months ago by Nomad965
Prusa i3 MK2s MK2.5s Mk3 Mk3s BearPrusa Zaribo 320 - Kit Build - Rc Driver - Tweak freak...
“I know nothing about surpassing others. I only know how to outdo myself.” -Bushido-...
Posted : 11/06/2020 9:05 am
Neophyl
(@neophyl)
Noble Member

I use Bobs startup (well a close variant of it as I heat my bed to 70 rather than 80) and never have first layer issues.  I don't think the bed expansion differs that much between 60 and 70.  I also find like Bob says that its more evenly warmed through in the time it takes to get the Pinda up to 35 anyway.

As for the M221 flow rate, ALL the default prusa printer profiles have the rate set to .95 in the start up gcode if the layer height is above a certain value.  Apparently they found that value worked as a workaround for some issue they were having with the original slic3r.  I'm sure Bob will correct me if I'm wrong 🙂 but I recall mention that he would rather calibrate the filament profile properly for the actual filament width and so makes sure this is set to 100 and not use the workaround.  I think its in there as a 'just in case' as the M221 value is not reset between prints unless you turn the printer off.  By explicitly adding it to the start code you know that the flow rate is always 100%.  I pretty much do the same.

Posted : 11/06/2020 9:25 am
Nomad965 liked
bobstro
(@bobstro)
Illustrious Member
Posted by: @nomad965

I just noted something in the startup code under prusa slicer you entered the extrude override:

M221 S{if layer_height >= 0.32}90{else}100{endif} ; compensate for thick layer heights

A bit of explanation: If you use a default Prusa profile, you'll find this line:

M221 S{if layer_height<0.075}100{else}95{endif}

Basically, that line will use 100% extrusion for layers below 0.075mm and 95% for all other prints. As @neophyl notes, there is a long, misty history associated with this and Prusa has adjusted the line over time. There's a post somewhere here on the forums from Jo Prusa himself in which he explains that the original Slic3r code base tended to over-extrude above a certain layer height, so this was a brute-force fix. I'm surprised Team Prusa hasn't worked on the underlying issue in the code, or haven't removed this line if they have.

I very rarely print below 0.08mm, and found it frustrating to be carefully calibrating settings for fine prints only to find the slicer was overriding them, so I completely removed that line in my early versions. I do switch between slicers (though not much these days as PrusaSlicer has improved), so this was very annoying.

I also print with a wide range of nozzles, often swapping between 0.25 and 0.8mm nozzles in a single day. I find that over-extrusion is a mostly problem with larger nozzles (presumably due to lower back-pressure in the nozzle leading to increased flow). Thus I've gone with my brute-force line:

M221 S{if layer_height >= 0.32}90{else}100{endif} ; compensate for thick layer heights

This just changes it to "if printing big chonky parts where quality isn't crucial, reduce extrusion" and lets me use this printer profile with all my nozzle sizes with good results. I really need to move that line down to "final print adjustments" since it's definitely a user preference. Thanks for the feedback.

Not really sure how this affects the extrusion multiplier, since I set the extrusion multiplier after re-calibrating
with the new layer width, say I was on 0.45 and now running 0.48 I would redo the extrusion multiplier and set it for
that layer width. If using the M221 would that have an effect on the set extrusion multiplier. ?

To answer your question: Unless you're using layer heights of 0.32mm or higher, that line won't have any effect. If you are using thicker layer heights, it will drop extrusion overall by 10% (well, multiply by 0.9), so this will be a reduction in addition to any slicer settings. Think of M221 as a final multiplier applied in addition to all your slicer settings.

I want to stress: My examples are just what I'm using. I'm not pushing these are "magic profiles" or anything of the sort. They work well for me and serve as examples for others. Feel free to comment things out and experiment. Again, thanks for the feedback. I'll expand on the explanations.

 

 

My notes and disclaimers on 3D printing and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. -- Spock in Star Trek: The Wrath of Khan...
Posted : 11/06/2020 5:14 pm
Nomad965 liked
bobstro
(@bobstro)
Illustrious Member
Posted by: @neophyl

I use Bobs startup (well a close variant of it as I heat my bed to 70 rather than 80)

The 80C bed warmup temp is definitely a non-subtle approach. I bumped up the temp after a surprising and unnecessary cold spell we experienced last winter. Unfortunately, there's not timeout on the "wait for temp" gcode commands. 

[...]  Apparently they found that value worked as a workaround for some issue they were having with the original slic3r.  I'm sure Bob will correct me if I'm wrong 🙂 but I recall mention that he would rather calibrate the filament profile properly for the actual filament width and so makes sure this is set to 100 and not use the workaround.

You've got it. It's a historical artifact from way back in the PrusaSlicer/Slic3r timeline.

  I think its in there as a 'just in case' as the M221 value is not reset between prints unless you turn the printer off.  By explicitly adding it to the start code you know that the flow rate is always 100%.  I pretty much do the same.

Oh man, that is a very important point! I was not aware of this starting out and wasted a lot of time because of it. M220, M221 and the corresponding front-panel adjustments will persist between prints. I've added specific resets for all these values to my startup and shutdown gcode.

 

My notes and disclaimers on 3D printing and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. -- Spock in Star Trek: The Wrath of Khan...
Posted : 11/06/2020 5:21 pm
Page 1 / 2
Share:

Please Login or Register