# Printing at 300 mm / s – Part 3 – Firmware and tests

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.

# Firmware

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.

## Step Frequency

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:

$Latex formula$

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`

Or

`#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.

## Firmware modifications

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```

# Slicer

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.

# Test

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

X & Y Speed Test Gcode

```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

```

## Extrusion Test

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:

1. Everything is fine and the amount of flow is close enough to the expected command
2. The extruder motor skips steps due to the force required to push the filament
3. 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.
X & Y Speed Test Gcode

```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```

## Print Test

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!

# Conclusion

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.

Summer sale! Get free shipping on all domestic and international orders over \$100 USD! Code: summersale2017 Dismiss