Voron Zero 0.1 Formbot Build.

This is working document for my Formbot Voron Zero 0.1 Build. I used the Print It Forward service which has been excellent and opted for the FYSETC Voron V0.1Full Metal Heat Bed Frame.

Electric Shock Risk

One area that did concern me was the Electrical Safety surrounding the PSU. The PiF service does not provide the skirts as default. The Formbot kit comes with a Meanwell PSU which is designed for placement within a enclosed unit. Its not designed for bolting to the underside of a machine which could be easily lifted and accessed from underneath.

The UK regulations (which mirror those in to the EU to a lessor or greater extent) state that someone should not be able to access exposed electrical connections without the aid of a tool.

The tiny finger guard provided by PIF is easily removed without a tool and I suspect would fall off soon enough. I therefore created this larger terminal cover that is held in place with a 3mm bolt.

Print and Built Quality

However, the print quality and support I received from my PiF representative cannot be faulted. The intelligent design of the Voron is quite impressive. Although, the build instructions need ones full attention to follow but don’t forget you are building a ‘space shuttle’.

SKR Mini E3 Mount

There was one breakage during construction. The SKR Mini E3 board is attached to the mount with M3 bolts. Its screws directly into the print in-line with the layer orientation this means that as you cut the threads if you use excessive force you can delaminate the layers. I did this more than once on different towers.

To counter this I redesigned the mount to include a taper on the towers to give a little more weight or depth of plastic. I also pre-cut the threads with an M3 tap which I would suggest anyone does.

SKR Mini E3 V3 Firmware Flashing

The firmware flashing instructions as found in the Voron Documentation didn’t cover Version 3 of the Mini E3 (2022/09/13). So I needed to follow the configuration given on the BigTreeTech Github including the GPIO Pins to set at start-up entry:

  • [*] Enable extra low-level configuration options
  • Micro-controller Architecture = STMicroelectronics STM32
  • Processor model = STM32G0B1
  • Bootloader offset = 8KiB bootloader (stm32duino)
  • Clock Reference = 8 MHz crystal
  • Ensure that “GPIO pins to set at micro-controller startup” includes ‘!PA14’.

SKR Mini E3 V3 Klipper Configuration

This section comes with no guarantees and is here as a reference for my printer. It might not be complete or correct for all zeros. By all means use it for information but do check against your own docs.

Voron provide a link to the default config file as available from the Voron Zero Github download and BigTreeTech Github but you are required to make certain decisions:

Z and Extruder motor currents [tmc2209 stepper_*] sections

My FormBot kit comes with a Moon 1A 1.8deg Motor for the Extruder. Given RMS would be 0.707A – I selected the recommended 0.5A.

Full steps per rotation for Extruder [extruder] section

This is 200 for a 1.8 deg motor as per the Moon above

Thermistor types [extruder] and [heater_bed] sections

Although you can refer to the common thermistor types reference page I was able to use the Generic 3950 type for both my bed and extruder.

Printer Configuration Checks

This section comes with no guarantees and is here as a reference for my printer. It might not be complete or correct for all zeros. By all means use it for information but do check against your own docs.

Cross referencing between Voron Initial Start Up and Klipper Config Checks.

Verify Heaters and PIDs

Starting with the bed set each heater to 50 deg and observe the temperature rise. Repeat for the extruder heater. This is also a good time to do the PID calibrations. Set the part fans to 25% (M106 S64) and run


Test End Stops

Use QUERY_ENDSTOPS to check end stop status and then while manually holding the end stop closed run the statement again

Stepper Motors:

Use STEPPER_BUZZ STEPPER=stepper_x, stepper_y, stepper_z in turn to confirm that all steppers are operational and the correct steppers are moving at the same time. You can refer to the Check Homing section to see which motor should be turning at any one time.

Check XY Homing

Ensuring you have connected the XY or AB steppers correctly according to the diagram below and the pinout for your board. Assuming its the SKR Mini E3 V3 then X is at the top and [stepper x] = Motor B with [stepper y] = Motor A. You are now able to test the homing on X and Y.

Z Offset and Bed Adjust

On the Zero this is a bit different to normal. You need to:

  1. Define the 0,0 point
  2. Set Z endstop location
  3. Adjust Bed Screws

Fine tune E steps.

We start by Checking Extruder Rotation – Heat the nozzle to 150 and attempt to load filament. If filament will not load and there is a clicking – there is a very good chance its running in reverse. This is not the best way to observe rotation but the turn of the motor is not visible.

Now mark 120mm, extrude 100mm and check. it should be 20mm left. Refer to docs for more info.


Enclosure Temperatures

Due to the Mini E3 only having two TH inputs (bed and hotend) fitting a enclosure temperature sensor does not appear straightforward at first sight but that said there are options. You can use the SPI inputs although this requires a link cable to the TFT as explained in this Voron Doku Guide or using this Lab44500 Adapter for an alternative approach. The third and final approach uses the Raspberry PI GPIO pins and can be completed with a number of sensors but I selected a BME280 sensor because the config example provided in the documentation.

Step 1 – Set up Raspberry Pi MCU: Follow the instructions at https://www.klipper3d.org/RPi_microcontroller.html to set up a Pi MCU. You will need to add a section to your printer.cfg

Step 2 – Enable i2C: Use sudo rasp-config and interface options to enable i2c.

Step 3 – Wire in the sensor: Wire up the sensor and plug it into the Pi (turned off of course)

Step 4: Enable the sensor in Klipper: Add the following entry to the printer.cfg

[temperature_sensor enclosure]
sensor_type: BME280
i2c_mcu: host
i2c_bus: i2c.1

Step 5: Pause the print start until chamber temperature reached: I added the following lines to my PRINT_START macro and configuration so that the print job would wait until the desired temp had been reached. I found that 75% of the target was sufficient as the last increase happened very quickly (~3 layers) once the printing started. I’m sure this can be refined and improved but it works for me for now.

{% set CHAMBER_TEMP = params.CHAMBER_TEMP|default(30)|float * 0.75 %}

[gcode_macro CENTER]
description: Homes and then centres the print head in the volume.

    G1 y-60 x-60 F7800
    G1 z60 F600

[gcode_macro CHAMBER_PREHEAT]
description: preheats the chamber to the given temperature 

variable_target_temp: 0


    {% set TARGET = params.TARGET | default(0) | float %}

    SET_FAN_SPEED FAN=Nevermore SPEED=0.3
    TEMPERATURE_WAIT SENSOR="temperature_sensor enclosure" MINIMUM={TARGET} 

Conclusion: Actually this was a super easy mod once I understood the process. I like the fact that I can see the temps in the WebUI.

Resonance Compensation aka Input Shaping.

Resonance Compensation adds Input Shaping to Klipper’s operation so that any vibrations are compensated for my shaping the input. Before adding the the shaper to the configuration the printers resonance must be measured. This can be done manually or by sensor e.g. ADXL.

To measure the resonances I fitted a Adafruit ADXL to the front of my mini Afterburner with this mount by Q. Some will say that a nozzle mount is better but I was not prepared to upset the quality I was already achieving for marginal gains. In the future why removing or changing the nozzle I can repeat the measurements.

Having performed this process previously on my Ender I strongly recommend soldering the wires to the sensor – slide on headers can and will shake loose. You can see from the photo I added some connectors further along the wire. I can now leave the Pi end of the wiring in place and attach the sensor as required.

You need to follow the Software Instructions and then Check the Setup. When it comes to measuring the resonances the only change to the instructions I made was to move the source files from tmp into my user area in a separate folder.

mkdir resonancesOut
cp /tmp/resonances_* ~/resonancesOut/
~/klipper/scripts/calibrate_shaper.py resonancesOut/resonances_x_*.csv -o resonancesOut/shaper_calibrate_x.png
~/klipper/scripts/calibrate_shaper.py resonancesOut/resonances_y_*.csv -o resonancesOut/shaper_calibrate_y.png

The results were these two charts and the recommended settings for the MZV shaper which I added to the printer configuration.

Neo Pixel Lighting

I have a nightmare seeing what’s going on at the nozzle. Blame old age, bad eyes or poor lighting it doesn’t change a thing therefore lighting was an essential upgrade for me. I used a series of these LED strip clips which I modified from Jon’s version. The PTFE tube holds them together and allows for a data return cable. I chucked hot glue over the ends to cover the electrical connections.

To add Neopixels to the configuration I included:

[neopixel neo]
pin: PA8
chain_count: 12
color_order: GRB
initial_RED: 0.9
initial_GREEN: 0.9
initial_BLUE: 0.9

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.