This third part will discuss firmware and slicer configuration, real experiments, and prints.
Make sure you read the first part which explores the components involved in both speed and acceleration performance and then the second part which explores all the theory behind the speed limiting factors.
The first step in printing fast is to make sure our firmware can handle our required speed. We’ll take a look mostly about maximum axis speed. This example will be based on Repetier firmware, but the equivalent configuration should be very similar between firmware.
300mm/s is very fast and we need to make sure our microcontroller can handle this speed. Let’s consider we have the following configuration:
- 1.8° Stepper motor (200 full steps per rotation)
- Stepper drivers configured at 16 µsteps
- 80 steps per mm ( very common GT2 20 teeth pulley )
We can check the stepper driver input pulse frequency based on our setup:
24 000 is quite a lot of steps per second. The theoretical limit for 8 bit based microcontrollers is around 40 000. However, at this speed, there is no more room for computation. The clever firmware programmer uses tricks such as the:
#define STEP_DOUBLER_FREQUENCY 10000
#define ALLOW_QUADSTEPPING 1
Starting from 10 000 steps per second, the program will double the steps, and reduce its computation by half. The same logic applies to quad stepping. At 300mm/s, we are in quad stepping. Make sure it is enabled, or your microcontroller will have a bad time moving your printer at 300 mm/s.
Check the maximum speed and acceleration values. They must all be equal or above the ones we’ve found in part 2.
#define MAX_FEEDRATE_X 300 #define MAX_FEEDRATE_Y 300 #define EXT0_MAX_FEEDRATE 30 #define MAX_ACCELERATION_UNITS_PER_SQ_SECOND_X 3000 #define MAX_ACCELERATION_UNITS_PER_SQ_SECOND_Y 3000 #define MAX_TRAVEL_ACCELERATION_UNITS_PER_SQ_SECOND_X 3000 #define MAX_TRAVEL_ACCELERATION_UNITS_PER_SQ_SECOND_Y 3000
The slicer has two option which should be checked:
- Maximum axis speed
- Maximum flow
This example will use Repetier Host with Cura. Again, the same option should be easy to find with a different hos, controller, and slicer.
In Config / Printer Setting / Extruder, make sure the “Max. Volume per second” is at 15 mm^3/s or higher.
in Slicer / Configuration / Print / Speed and Quality, make sure all the “Fast” values are at 300 mm/s, except for “First Layer“.
in Slicer / Configuration / Filament , make sure the “Minimum Layer Time” values is 0.
Before printing an actual part at 300 mm/s, we will need to validate that our printer can handle all the parameters.
X & Y Speed Test
The first test will consist in validating the speed of our printer. It will be done using a simple G-code program where we increase axis movement speed up to 300 mm/s. The goal is to validate that the printer isn’t blocked by any configuration in the firmware.
Copy and paste this test in a Gcode file and run it! Your printer will move back and forth 100mm, from 100 mm/s up to 300 mm/s by steps of 50 mm/s each time. Each back and forth is repeated 5 times. You need to hear a difference
G28 ; Home all axis G90 ; Absolute positioning G1 F60 Z5 ; Raise Z G0 F3000 X0 Y0 ; Go to printer home ; Benchmark at 100 mm/s ; X Axis G0 F6000 X100 G0 X0 G0 X100 G0 X0 G0 X100 G0 X0 G0 X100 G0 X0 G0 X100 G0 X0 ; Y Axis G0 Y100 G0 Y0 G0 Y100 G0 Y0 G0 Y100 G0 Y0 G0 Y100 G0 Y0 G0 Y100 G0 Y0 ; Benchmark at 150 mm/s ; X Axis G0 F9000 X100 G0 X0 G0 X100 G0 X0 G0 X100 G0 X0 G0 X100 G0 X0 G0 X100 G0 X0 ; Y Axis G0 Y100 G0 Y0 G0 Y100 G0 Y0 G0 Y100 G0 Y0 G0 Y100 G0 Y0 G0 Y100 G0 Y0 ; Benchmark at 200 mm/s ; X Axis G0 F12000 X100 G0 X0 G0 X100 G0 X0 G0 X100 G0 X0 G0 X100 G0 X0 G0 X100 G0 X0 ; Y Axis G0 Y100 G0 Y0 G0 Y100 G0 Y0 G0 Y100 G0 Y0 G0 Y100 G0 Y0 G0 Y100 G0 Y0 ; Benchmark at 250 mm/s ; X Axis G0 F15000 X100 G0 X0 G0 X100 G0 X0 G0 X100 G0 X0 G0 X100 G0 X0 G0 X100 G0 X0 ; Y Axis G0 Y100 G0 Y0 G0 Y100 G0 Y0 G0 Y100 G0 Y0 G0 Y100 G0 Y0 G0 Y100 G0 Y0 ; Benchmark at 300 mm/s ; X Axis G0 F18000 X100 G0 X0 G0 X100 G0 X0 G0 X100 G0 X0 G0 X100 G0 X0 G0 X100 G0 X0 ; Y Axis G0 Y100 G0 Y0 G0 Y100 G0 Y0 G0 Y100 G0 Y0 G0 Y100 G0 Y0 G0 Y100 G0 Y0
This test will benchmark your hotend and extruder to make sure it can handle the required plastic flow. Three things can happen during this test:
- Everything is fine and the amount of flow is close enough to the expected command
- The extruder motor skips steps due to the force required to push the filament
- The actual flow is too much below the expected flow because the extruder is slipping, but not skipping. Slipping is due to poor driving design or poor spring adjustment.
Mark your filament 100mm above your extruder and check where your mark is once the test is completed.
Having more than 5mm ( < 95% efficiency) is considered problematic. Either:
- Increase temperature
- Increase the flow
- Please note that you might have reached your hotend and extruder limit if increasing the flow doesn’t improve anything.
G90 ; Absolute positioning M104 S210 G28 Z; Home Z axis G0 F240 Z50 ; Raise Z G28 X Y; Home X and Y axis G0 F3000 X0 Y0 ; Go to printer home M109 S210 G92 E0 ; Extruder Benchmark at 15 mm^3/s G1 F374 E100 G0 F3000 X5
Our print will be very basic so we can easily see if something is wrong. Once this test works well, a complicated part will require fine-tuning in terms of cooling and acceleration values. As most parts have complex geometries, it is likely that the maximum speed of 300 mm/s isn’t constantly reached.
Any calibration cube can do the trick for this first print. You might need to scale it. Make sure:
- Layer height is 0.10mm.
- Speed is 300 mm/s.
- Part is at least 30mm long, or your printer won’t accelerate to 300 mm/s.
- Feeds inside your Gcode are F18000, not lower. If it is, you have a wromg configuration on your slicer or host.
The video below shows our first print test. It is quite impressive to see a printer running at 300 mm/s!
We’ve seen how to configure our firmware and slicer, made some real experiments, and a first print. We are now able to print at 300 mm/s, which is quite impressive. However, the result shows a complete different texture from traditional 3D printing results.
Next blog part will cover more tests and analysis of the result. There will be a bit of discussion about the behavior and the rheology of plastics at high shear rate, which is what we are seeing at this speed.