Monoprice MiniDelta V2 GD32F103 ARM MJR83B motherboard

Today I opened the lid under my Monoprice Minidelta printer that I bought on Amazon end of last year (11-2021).

Unlike what I found on the net, I appear to have an upgraded motherboard that is joined with the TFT.

Both the MB and TFT have their own pocessor and -TFT update files, available from the Monoprice website and to be found on http://mpminideltav2.com/doku.php?id=octoprint:config.

The GD32F103 ARM processor is the 32-bits direct STM replacement and is a very capable processor.  The board also looks very good, so I won’t be replacing any of it.

I am however trying to build my own firmware for the MB, based on Marlin and the STM32 lookalike.  BUT- the LCD and the pin connections for the hardware ia all unknown to me, so it might take some more investigations..

For the short term, I will install a Pi Zero2 and adjecent PI IR camera in the printer, along with a top LED light.  The original new printer’s firmware allows the use of Octoprint so I can add this printer easily to my managed stock of remotely managed 3d printers.  Without modding the original firmware.

In the bottom of the printer, enough space is available to mount the RPI and I will switch the LED with the PI’s GPIO managed switches, and a MOSFET board.  Preferably with a PWM driver, or just on/off if this works better.

Another required upgrade will be to get a PEI sheet on the hotbed and replace the plasticy extruder with a dual drive one..

The optical Z+ endstops are OK!

 

BTT BIQU H2 extruder in 2trees Spro

I bought a couple of BIQU H2 extruders to experiment with them.

The first printer I chose to mount this extruder is my TT Saphire pro.

I own this printer for a couple of years, and it behaves quite well.  But the original bowden setup is not my preferred setup, and the BIQUH2 seems very promising.

On the net, I found a 3d printable bracket with a seperate mount to re-use the 2 small 40mm side tool fans again as tool fans.

I ditched the 3d printed mount for the extruder and made me e steel one, from the old hotend mount.  That is what the pictures in this article will show.

The 3d printed toolfan mount is a bit modded because I have reversed the entire setup, so I will keep within the original specs of 235x235x200 mm printeble size.

For the rest, please see the pictures.  I re-used some of the old steel hotend mount, primarily the connecting plate with the XY carriage and the cornered horizontal plate.

In the old big bowden tube hole I welded a 6mm inner- and  12mm outer dia ring in.

And I extended the horizontal base with a little piece of plate to use the 2 pieces 3mm threaded holes of the extruder’s upper side to bolt it all together.

The filament input of the extruder has a screw-in nut with a 4mm clamp for the ingoing 4mm tube, and this is the other mounting bolt to hold the extruder to the mount.

The original TT S pro hotend mount, freed from the parts I re-used to build the BIQU H2 mount.
Cut the re-used pice to size, took some material out for the lever and fitted the ring in the 12 mm hole, to be welded.
New mounting plate with welded ring at the right, and left an add-on welded little piece with the 2 holes for the mounting M3 screws.
Extruder mount ready
The first fit. My goal was to get the nozzle tip at exactly the same XY position as original. And that worked perfect!
Mounted the toolfan holder. I modded this to be put INSIDE the carriage instead of on the outside.  I used 2 threaded M3 weld-in inserts in the toolfan holder.
Ready. The rear fan is reversed as intended. I took some material out of the holder to let the rear fan rotate freely, since it was not capable of this in the original setup.

And the inductive 8mm probe, at the rear of the extruder setup. Works perfect!

Upgrade Voron2.4 Octopi for Python3 with RPI/4b/4Gb and 2x SKR1.4 T

An upgrade to Python 3 is neccessary since Octoprint keeps mentioning at startup that future updates after 1.72 will no longer be supported when running a Python2 environment.

Since I made my Voron2.4 printer in 2018, this is still based on Python2.

I first followed the advice on the Octoprint website: Make a full backup from the RPI with the backup/restore plugin of Octoprint, save it to your local HDD.

Then, make a new image from Raspberry PI imager, selecting te most current Octopi image from the RPI imager’s menu.  Then, burn it on a micro SD card, take SD out and in again, change the wifi settings to whatever you have at home.  And,  put it in your Raspberry PI. Put the power on and wait some minutes. Search for your RPI with either bonjour os just use angry IP Scanner and find the local IP address.  Start PuTTY and login to the RPI with ‘pi’ username and ‘raspberry’ password.  Type ‘   ‘ and Enter. In the menu: Change the RPI’s login password to the one you used before and save it. Logout of PuTTY.

Now, login to octoprint with your browser at the identified local IP address and restore the locally saved backup.  This shoud take a long time to install. After this,  reboot and it should all work again.

BUT- it did not work at all.  Somehow either not all files are backupped and restored or I am missing some config settings.  Octoprint could not connect to the SKR4 boards, hence the LCD display did not work and without communnication to the boards, nothing could be done.  I tried to remedy the problem but after an hour or so I decided to go for a fresh re-install.

I did save the config file previously so with this and a fresh install I should be fine.

The rest of this post describes my search- and find- and is a HOW TO to help you do it right without any searching. Most of it is gathered from all these good sites where parts of the solution for ths specific configuration can be found and I just tied them together for the Voron2.4 with a Raspbery PI 4B and 4GB memory, with 2 x BTT SKR1.4T and a standard RGB LCD display connected with 2 block cabled wire connectors , the LCD also has a lit turning knob (see the pictures at the end of this post):

Installation

These instructions assume the software will run on a Raspberry Pi computer in conjunction with OctoPrint. It is recommended that a Raspberry Pi 2, 3, or 4 computer be used as the host machine (see the FAQ for other machines).

Klipper currently supports a number of Atmel ATmega based micro-controllers, ARM based micro-controllers, and Beaglebone PRU based printers.

Prepping an OS image

Start by installing OctoPi on the Raspberry Pi computer. Use OctoPi v0.17.0 or later – see the OctoPi releases for release information. One should verify that OctoPi boots and that the OctoPrint web server works. After connecting to the OctoPrint web page, follow the prompt to upgrade OctoPrint to v1.4.2 or later.

After installing OctoPi and upgrading OctoPrint, it will be necessary to ssh into the target machine to run a handful of system commands. If using a Linux or MacOS desktop, then the “ssh” software should already be installed on the desktop. There are free ssh clients available for other desktops (eg, PuTTY). Use the ssh utility to connect to the Raspberry Pi (ssh pi@octopi — password is “raspberry”) and run the following commands:

git clone https://github.com/Klipper3d/klipper

./klipper/scripts/install-octopi.sh

E: Repository ‘http://archive.raspberrypi.org/debian buster InRelease’ changed its ‘Suite’ value from ‘testing’ to ‘oldstable’

N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.

Omdat de repository veranderd is van “testing ” naar “stable” moet je eenmalig  toestemming geven om deze verandering in de repository te accepteren. Dit doe je met het volgende commando,

sudo apt-get update –allow-releaseinfo-change

Hierna kan je gewoon weer updaten met,

sudo  apt-get update

git clone https://github.com/Klipper3d/klipper

./klipper/scripts/install-octopi.sh

 

The above will download Klipper, install some system dependencies, setup Klipper to run at system startup, and start the Klipper host software. It will require an internet connection and it may take a few minutes to complete.

Building and flashing the micro-controller

To compile the micro-controller code, start by running these commands on the Raspberry Pi:

cd ~/klipper/

make menuconfig

Select the appropriate micro-controller and review any other options provided. Once configured, run:

make

It is necessary to determine the serial port connected to the micro-controller. For micro-controllers that connect via USB, run the following:

ls /dev/serial/by-id/*

It should report something similar to the following:

/dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0

It’s common for each printer to have its own unique serial port name. This unique name will be used when flashing the micro-controller. It’s possible there may be multiple lines in the above output – if so, choose the line corresponding to the micro-controller (see the FAQ for more information).

For common micro-controllers, the code can be flashed with something similar to:

sudo service klipper stop

make flash FLASH_DEVICE=/dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0

sudo service klipper start

Be sure to update the FLASH_DEVICE with the printer’s unique serial port name.

When flashing for the first time, make sure that OctoPrint is not connected directly to the printer (from the OctoPrint web page, under the “Connection” section, click “Disconnect”).

Configuring OctoPrint to use Klipper

The OctoPrint web server needs to be configured to communicate with the Klipper host software. Using a web browser, login to the OctoPrint web page and then configure the following items:

Navigate to the Settings tab (the wrench icon at the top of the page). Under “Serial Connection” in “Additional serial ports” add “/tmp/printer”. Then click “Save”.

Enter the Settings tab again and under “Serial Connection” change the “Serial Port” setting to “/tmp/printer”.

In the Settings tab, navigate to the “Behavior” sub-tab and select the “Cancel any ongoing prints but stay connected to the printer” option. Click “Save”.

From the main page, under the “Connection” section (at the top left of the page) make sure the “Serial Port” is set to “/tmp/printer” and click “Connect”. (If “/tmp/printer” is not an available selection then try reloading the page.)

Once connected, navigate to the “Terminal” tab and type “status” (without the quotes) into the command entry box and click “Send”. The terminal window will likely report there is an error opening the config file – that means OctoPrint is successfully communicating with Klipper. Proceed to the next section.

Configuring Klipper

The Klipper configuration is stored in a text file on the Raspberry Pi. Take a look at the example config files in the config directory. The Config Reference contains documentation on config parameters.

Arguably the easiest way to update the Klipper configuration file is to use a desktop editor that supports editing files over the “scp” and/or “sftp” protocols. There are freely available tools that support this (eg, Notepad++, WinSCP, and Cyberduck). Use one of the example config files as a starting point and save it as a file named “printer.cfg” in the home directory of the pi user (ie, /home/pi/printer.cfg).

Alternatively, one can also copy and edit the file directly on the Raspberry Pi via ssh – for example:

cp ~/klipper/config/example-cartesian.cfg ~/printer.cfg

nano ~/printer.cfg

Make sure to review and update each setting that is appropriate for the hardware.

It’s common for each printer to have its own unique name for the micro-controller. The name may change after flashing Klipper, so rerun the ls /dev/serial/by-id/* command and then update the config file with the unique name. For example, update the [mcu] section to look something similar to:

[mcu]

serial: /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0

After creating and editing the file it will be necessary to issue a “restart” command in the OctoPrint web terminal to load the config. A “status” command will report the printer is ready if the Klipper config file is successfully read and the micro-controller is successfully found and configured. It is not unusual to have configuration errors during the initial setup – update the printer config file and issue “restart” until “status” reports the printer is ready.

Klipper reports error messages via the OctoPrint terminal tab. The “status” command can be used to re-report error messages. The default Klipper startup script also places a log in /tmp/klippy.log which provides more detailed information.

In addition to common g-code commands, Klipper supports a few extended commands – “status” and “restart” are examples of these commands. Use the “help” command to get a list of other extended commands.

After Klipper reports that the printer is ready go on to the config check document to perform some basic checks on the pin definitions in the config file.

 

NEW:Rotation distance

Stepper motor drivers on Klipper require a rotation_distance parameter in each stepper config section. The rotation_distance is the amount of distance that the axis moves with one full revolution of the stepper motor. This document describes how one can configure this value.

Obtaining rotation_distance from steps_per_mm (or step_distance)

The designers of your 3d printer originally calculated steps_per_mm from a rotation distance. If you know the steps_per_mm then it is possible to use this general formula to obtain that original rotation distance:

rotation_distance = <full_steps_per_rotation> * <microsteps> / <steps_per_mm>

Or, if you have an older Klipper configuration and know the step_distance parameter you can use this formula:

rotation_distance = <full_steps_per_rotation> * <microsteps> * <step_distance>

The <full_steps_per_rotation> setting is determined from the type of stepper motor. Most stepper motors are “1.8 degree steppers” and therefore have 200 full steps per rotation (360 divided by 1.8 is 200). Some stepper motors are “0.9 degree steppers” and thus have 400 full steps per rotation. Other stepper motors are rare. If unsure, do not set full_steps_per_rotation in the config file and use 200 in the formula above.

The <microsteps> setting is determined by the stepper motor driver. Most drivers use 16 microsteps. If unsure, set microsteps: 16 in the config and use 16 in the formula above.

Almost all printers should have a whole number for rotation_distance on x, y, and z type axes. If the above formula results in a rotation_distance that is within .01 of a whole number then round the final value to that whole_number.

Calibrating rotation_distance on extruders

On an extruder, the rotation_distance is the amount of distance the filament travels for one full rotation of the stepper motor. The best way to get an accurate value for this setting is to use a “measure and trim” procedure.

First start with an initial guess for the rotation distance. This may be obtained from steps_per_mm or by inspecting the hardware.

Then use the following procedure to “measure and trim”:

  1. Make sure the extruder has filament in it, the hotend is heated to an appropriate temperature, and the printer is ready to extrude.
  2. Use a marker to place a mark on the filament around 70mm from the intake of the extruder body. Then use a digital calipers to measure the actual distance of that mark as precisely as one can. Note this as <initial_mark_distance>.
  3. Extrude 50mm of filament with the following command sequence: G91 followed by G1 E50 F60. Note 50mm as <requested_extrude_distance>. Wait for the extruder to finish the move (it will take about 50 seconds). It is important to use the slow extrusion rate for this test as a faster rate can cause high pressure in the extruder which will skew the results. (Do not use the “extrude button” on graphical front-ends for this test as they extrude at a fast rate.)
  4. Use the digital calipers to measure the new distance between the extruder body and the mark on the filament. Note this as <subsequent_mark_distance>. Then calculate: actual_extrude_distance = <initial_mark_distance> – <subsequent_mark_distance>
  5. Calculate rotation_distance as: rotation_distance = <previous_rotation_distance> * <actual_extrude_distance> / <requested_extrude_distance> Round the new rotation_distance to three decimal places.

If the actual_extrude_distance differs from requested_extrude_distance by more than about 2mm then it is a good idea to perform the steps above a second time.

Note: Do not use a “measure and trim” type of method to calibrate x, y, or z type axes. The “measure and trim” method is not accurate enough for those axes and will likely lead to a worse configuration. Instead, if needed, those axes can be determined by measuring the belts, pulleys, and lead screw hardware.

Obtaining rotation_distance by inspecting the hardware

It’s possible to calculate rotation_distance with knowledge of the stepper motors and printer kinematics. This may be useful if the steps_per_mm is not known or if designing a new printer.

Belt driven axes

It is easy to calculate rotation_distance for a linear axis that uses a belt and pulley.

First determine the type of belt. Most printers use a 2mm belt pitch (that is, each tooth on the belt is 2mm apart). Then count the number of teeth on the stepper motor pulley. The rotation_distance is then calculated as:

rotation_distance = <belt_pitch> * <number_of_teeth_on_pulley>

For example, if a printer has a 2mm belt and uses a pulley with 20 teeth, then the rotation distance is 40.

Axes with a lead screw

It is easy to calculate the rotation_distance for common lead screws using the following formula:

rotation_distance = <screw_pitch> * <number_of_separate_threads>

For example, the common “T8 leadscrew” has a rotation distance of 8 (it has a pitch of 2mm and has 4 separate threads).

Older printers with “threaded rods” have only one “thread” on the lead screw and thus the rotation distance is the pitch of the screw. (The screw pitch is the distance between each groove on the screw.) So, for example, an M6 metric rod has a rotation distance of 1 and an M8 rod has a rotation distance of 1.25.

Extruder

It’s possible to obtain an initial rotation distance for extruders by measuring the diameter of the “hobbed bolt” that pushes the filament and using the following formula: rotation_distance = <diameter> * 3.14

If the extruder uses gears then it will also be necessary to determine and set the gear_ratio for the extruder.

The actual rotation distance on an extruder will vary from printer to printer, because the grip of the “hobbed bolt” that engages the filament can vary. It can even vary between filament spools. After obtaining an initial rotation_distance, use the measure and trim procedure to obtain a more accurate setting.

Using a gear_ratio

Setting a gear_ratio can make it easier to configure the rotation_distance on steppers that have a gear box (or similar) attached to it. Most steppers do not have a gear box – if unsure then do not set gear_ratio in the config.

When gear_ratio is set, the rotation_distance represents the distance the axis moves with one full rotation of the final gear on the gear box. If, for example, one is using a gearbox with a “5:1” ratio, then one could calculate the rotation_distance with knowledge of the hardware and then add gear_ratio: 5:1 to the config.

For gearing implemented with belts and pulleys, it is possible to determine the gear_ratio by counting the teeth on the pulleys. For example, if a stepper with a 16 toothed pulley drives the next pulley with 80 teeth then one would use gear_ratio: 80:16. Indeed, one could open a common off the shelf “gear box” and count the teeth in it to confirm its gear ratio.

Note that sometimes a gearbox will have a slightly different gear ratio than what it is advertised as. The common BMG extruder motor gears are an example of this – they are advertised as “3:1” but actually use “50:17” gearing. (Using teeth numbers without a common denominator may improve overall gear wear as the teeth don’t always mesh the same way with each revolution.) The common “5.18:1 planetary gearbox”, is more accurately configured with gear_ratio: 57:11.

If several gears are used on an axis then it is possible to provide a comma separated list to gear_ratio. For example, a “5:1” gear box driving a 16 toothed to 80 toothed pulley could use gear_ratio: 5:1, 80:16.

In most cases, gear_ratio should be defined with whole numbers as common gears and pulleys have a whole number of teeth on them. However, in cases where a belt drives a pulley using friction instead of teeth, it may make sense to use a floating point number in the gear ratio (eg, gear_ratio: 107.237:16).

For a Voron 2.4 (300x300x300) setup, start settings are pre-defined:

To add in the config file:

 

NOT in the TMC settings, just in the stepper_x, and so on

And delete the old commands: step_distance: 0.0125 or just comment them out as I did initially..

Add for steppers X,Y

rotation_distance: 40

## gear_ratio: 1:1

microsteps: 16

 

and for Z-Z3:

rotation_distance: 40

gear_ratio: 80:16

microsteps: 16

 

Add for extruder stepper:

##  Update value below when you perform extruder calibration

##  If you ask for 100mm of filament, but in reality it is 98mm:

##  rotation_distance = <previous_rotation_distance> * <actual_extrude_distance> / 100

##  22.6789511 is a good starting point

rotation_distance: 22.6789511   #Bondtech 5mm Drive Gears

##  Update Gear Ratio depending on your Extruder Type

##  Use 50:17 for Afterburner/Clockwork (BMG Gear Ratio)

##  Use 80:20 for M4, M3.1

gear_ratio: 50:17               #BMG Gear Ratio

microsteps: 16

full_steps_per_rotation: 200    #200 for 1.8 degree, 400 for 0.9 degree

nozzle_diameter: 0.400 # or 0.6 like I have

filament_diameter: 1.75

 

Send: M876 P1

Recv: // mcu ‘mcu’: Command format mismatch: config is_config=%c crc=%u is_shutdown=%c move_count=%hu vs config is_config=%c crc=%u move_count=%hu is_shutdown=%c

Recv: //

Recv: // This type of error is frequently caused by running an older

Recv: // version of the firmware on the micro-controller (fix by

Recv: // recompiling and flashing the firmware).

Recv: //

Recv: // Known versions: host=v0.10.0-184-gdd714fc7, mcu=v0.9.1-319-g3233ec08-20210315_134213-octopi, z=v0.9.1-319-g3233ec08-20210315_134213-octopi

Recv: //

Recv: // Once the underlying issue is corrected, use the “RESTART”

Recv: // command to reload the config and restart the host software.

Recv: // Protocol error connecting to printer

Recv: !! mcu ‘mcu’: Command format mismatch: config is_config=%c crc=%u is_shutdown=%c move_count=%hu vs config is_config=%c crc=%u move_count=%hu is_shutdown=%c

 

So, flash both SKR1.4 T’s with the new firmware  (download this from the PI4) and start trhem first without USB connection to the RPI. Then, shutdown (=POWER OFF) and connect the USB cables and start up again.

Now, Octopi will fire up and the LCD runs again, and all is connected.

Do the checks as described further on.

 

My printer.cfg working Voron2.4 config file AFTER the Python 3 upgrade:

 

##

## Voron Design VORON2.4 310mm SKR 1.4turbo x 2 with TMC2209 UART config

# March 15th, 2021 Jantec.nl

 

# To solve the issue of varying Z height after G32: Add this: relative_reference_index: (add a point number of bed_mesh here)

# must be added to get a coupling between the initial G28’s Z probe position

# and bed mesh level’s Z probe value at a specified mesh bed level point.  I will try to use the point that is exactly at the switch position,

# so I can also get a predefined measured Z value for the Z position’s offset in G28.

 

[mcu]

##——————————————————————–

serial: /dev/serial/by-path/platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.4:1.0

##——————————————————————–

[mcu z]

##——————————————————————–

serial: /dev/serial/by-path/platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.3:1.0

##——————————————————————–

 

[printer]

kinematics: corexy

max_velocity: 300

max_accel: 1000                                  #Max 4000

max_z_velocity: 18                               #Max 15 for 12V TMC Drivers, can increase for 24V

max_z_accel: 350                                #Max ?

square_corner_velocity: 5.0  #Can experiment with 8.0, default 5.0

 

#####################################################################

#          X/Y Stepper Settings

#####################################################################

 

[stepper_x]

##        Connected to X on mcu_xye (B Motor)

step_pin: P2.2

dir_pin: !P2.6

microsteps: 16

rotation_distance: 40

## gear_ratio: 80:16

enable_pin: !P2.1

## step_distance: 0.0125

endstop_pin: P1.29

 

##——————————————————————–

## X Settings for 300mm build

position_min: 0

position_endstop: 300

position_max:300

##——————————————————————–

homing_speed: 150   #Max 100 was 25

homing_retract_dist: 5

homing_positive_dir: true

 

##        Make sure to update below for your relevant driver (2208 or 2209)

[tmc2209 stepper_x]

uart_pin: P1.10

interpolate: True

run_current: 1.0

hold_current: 0.7

sense_resistor: 0.110

stealthchop_threshold: 0

 

[stepper_y]

##        Connected to Y on mcu_xye (A Motor)

step_pin: P0.19

dir_pin: !P0.20

enable_pin: !P2.8

rotation_distance: 40

## gear_ratio: 80:16

microsteps: 16

## step_distance: 0.0125

endstop_pin: P1.28

 

##——————————————————————–

## Y Settings for 300mm build

position_min: 0

position_endstop: 305

position_max: 305

##——————————————————————–

homing_speed: 150  #Max 100 was 25

homing_retract_dist: 5

homing_positive_dir: true

 

##        Make sure to update below for your relevant driver (2208 or 2209)

[tmc2209 stepper_y]

uart_pin: P1.9

interpolate: True

run_current: 1.0

hold_current: 0.7

sense_resistor: 0.110

stealthchop_threshold: 0

 

#####################################################################

#          Z Stepper Settings

#####################################################################

 

## Z MCU – In X Position

## Z0 Stepper – Front Left

[stepper_z]

step_pin: z:P2.2

dir_pin: !z:P2.6

enable_pin: !z:P2.1

rotation_distance: 40

gear_ratio: 80:16

microsteps: 16

## step_distance: 0.00250

# endstop_pin: z:P1.27 # this is the switch’s  physical connection,

# not any longer used due to problems when filament is still hanging on the nozzle

# position_endstop:  0  # no longer required

 

endstop_pin: probe:z_virtual_endstop

 

##——————————————————————–

## Z Settings for 300mm build

position_max: 300

position_min:-2

##——————————————————————–

homing_speed: 15   #was 15

second_homing_speed: 3.0

homing_retract_dist: 5.0

homing_positive_dir: false

 

##        Make sure to update below for your relevant driver (2208 or 2209)

[tmc2209 stepper_z]

uart_pin: z:P1.10

interpolate: true

run_current: 1.0

hold_current: 0.8

sense_resistor: 0.110

stealthchop_threshold: 0

 

##        Z MCU – In Y Position

##        Z1 Stepper – Rear Left

[stepper_z1]

step_pin: z:P0.19

dir_pin: z:P0.20

enable_pin: !z:P2.8

rotation_distance: 40

gear_ratio: 80:16

microsteps: 16

## step_distance: 0.00250

 

##        Make sure to update below for your relevant driver (2208 or 2209)

[tmc2209 stepper_z1]

uart_pin: z:P1.9

interpolate: true

run_current: 1.0

hold_current: 0.8

sense_resistor: 0.110

stealthchop_threshold: 0

 

##        Z MCU – In Z Position

##        Z2 Stepper – Rear Right

[stepper_z2]

step_pin: z:P0.22

dir_pin: !z:P2.11

enable_pin: !z:P0.21

rotation_distance: 40

gear_ratio: 80:16

microsteps: 16

## step_distance: 0.00250

 

##        Make sure to update below for your relevant driver (2208 or 2209)

[tmc2209 stepper_z2]

uart_pin: z:P1.8

interpolate: true

run_current: 1.0

hold_current: 0.80

sense_resistor: 0.110

stealthchop_threshold: 0

 

##        Z MCU – In E0 Position

##        Z3 Stepper – Front Right

[stepper_z3]

step_pin: z:P2.13

dir_pin: z:P0.11

enable_pin: !z:P2.12

rotation_distance: 40

gear_ratio: 80:16

microsteps: 16

## step_distance: 0.00250

 

##        Make sure to update below for your relevant driver (2208 or 2209)

[tmc2209 stepper_z3]

uart_pin: z:P1.4

interpolate: true

run_current: 1.0

hold_current: 0.80

sense_resistor: 0.110

stealthchop_threshold: 0

 

 

#####################################################################

#          Extruder

#####################################################################

 

#          E0 on MCU X/Y

[extruder]

step_pin: P2.13

dir_pin: !P0.11

enable_pin: !P2.12

 

 

## NEW:

##  Update value below when you perform extruder calibration

##  If you ask for 100mm of filament, but in reality it is 98mm:

##  rotation_distance = <previous_rotation_distance> * <actual_extrude_distance> / 100

##  22.6789511 is a good starting point

rotation_distance: 22.6789511   #Bondtech 5mm Drive Gears

##  Update Gear Ratio depending on your Extruder Type

##  Use 50:17 for Afterburner/Clockwork (BMG Gear Ratio)

##  Use 80:20 for M4, M3.1

gear_ratio: 50:17               #BMG Gear Ratio

microsteps: 16

full_steps_per_rotation: 200    #200 for 1.8 degree, 400 for 0.9 degree

## nozzle_diameter: 0.400

## filament_diameter: 1.75

 

##        16 microsteps Mobius 3 ~= 0.00180

##        Update value below when you perform extruder calibration

##        Higher value means less filament extruded

##        If you ask for 100mm of filament, but in reality it is 98mm:

##        step_distance = 98 / 100 * step_distance_old

##  0.00240 a good starting value for Afterburner, 0.00180 for Mobius

## step_distance: 0.0022

nozzle_diameter: 0.600

filament_diameter: 1.75

 

heater_pin: P2.7

##        Validate the following thermistor type to make sure it is correct

 

## For SKR V1.4 and PT100 with MAX31865:

sensor_type: MAX31865

sensor_pin: P1.1

spi_speed: 4000000

spi_software_sclk_pin: P0.4

spi_software_mosi_pin: P1.17

spi_software_miso_pin: P0.5

rtd_nominal_r: 100

rtd_reference_r: 430

rtd_num_of_wires: 2

 

## If you are in EU or other 50hz country, add this line: THIS CAUSES HANGING of the display!

#rtd_use_50Hz_filter: True  THIS DOES NOT WORK WELL

 

#sensor_type: ATC Semitec 104GT-2

## (is normal NTC for hotbed with normal sensor_pin: P0.24)

#sensor_pin: P0.24

 

min_temp: 10

max_temp: 300

max_power: 1

min_extrude_temp: 170

 

#control = pid   #PID parameters: pid_Kp=22.661 pid_Ki=1.064 pid_Kd=120.670, without silicon sock

#pid_kp = 26.213

#pid_ki = 1.304

#pid_kd = 131.721

##        Try to keep pressure_advance below 1.0

pressure_advance: 0.08

##        Default is 0.040, leave stock

pressure_advance_smooth_time: 0.040

 

 

#####################################################################

##        E0 on MCU X/Y

##        Make sure to update below for your relevant driver (2208 or 2209)

[tmc2209 extruder]

uart_pin: P1.4

interpolate: false

run_current: 0.45   # was 0.6

hold_current: 0.2  # was 0.2

sense_resistor: 0.110

stealthchop_threshold: 0

 

 

[verify_heater extruder]

max_error: 220

#   The maximum “cumulative temperature error” before raising an

#   error. Smaller values result in stricter checking and larger

#   values allow for more time before an error is reported.

#   Specifically, the temperature is inspected once a second and if it

#   is close to the target temperature then an internal “error

#   counter” is reset; otherwise, if the temperature is below the

#   target range then the counter is increased by the amount the

#   reported temperature differs from that range. Should the counter

#   exceed this “max_error” then an error is raised. The default is

#   120.

#check_gain_time:

#   This controls heater verification during initial heating. Smaller

#   values result in stricter checking and larger values allow for

#   more time before an error is reported. Specifically, during

#   initial heating, as long as the heater increases in temperature

#   within this time frame (specified in seconds) then the internal

#   “error counter” is reset. The default is 20 seconds for extruders

#   and 60 seconds for heater_bed.

hysteresis: 15

#   The maximum temperature difference (in Celsius) to a target

#   temperature that is considered in range of the target. This

#   controls the max_error range check. It is rare to customize this

#   value. The default is 5.

#heating_gain: 2

#   The minimum temperature (in Celsius) that the heater must increase

#   by during the check_gain_time check. It is rare to customize this

#   value. The default is 2.

 

 

 

 

#####################################################################

#          Filament sensor switch on E0 switch input

#####################################################################

 

# This still needs a script to work properly, a runout_gcode and a return or recover gcode in the sys directory including the correct calls for it..

 

[filament_switch_sensor my_sensor]

#proved not to work Beh could throw my 6 hrs print away

pause_on_runout: True

#   When set to True, a PAUSE will execute immediately after a runout

#   is detected. Note that if pause_on_runout is False and the

#   runout_gcode is omitted then runout detection is disabled. Default

#   is True.

#runout_gcode:

#   A list of G-Code commands to execute after a filament runout is

#   detected. See docs/Command_Templates.md for G-Code format. If

#   pause_on_runout is set to True this G-Code will run after the

#   PAUSE is complete. The default is not to run any G-Code commands.

#insert_gcode:

#   A list of G-Code commands to execute after a filament insert is

#   detected. See docs/Command_Templates.md for G-Code format. The

#   default is not to run any G-Code commands, which disables insert

#   detection.

#event_delay: 3.0

#   The minimum amount of time in seconds to delay between events.

#   Events triggered during this time period will be silently

#   ignored. The default is 3 seconds.

#pause_delay: 0.5

#   The amount of time to delay, in seconds, between the pause command

#   dispatch and execution of the runout_gcode. It may be useful to

#   increase this delay if OctoPrint exhibits strange pause behavior.

#   Default is 0.5 seconds.

switch_pin: P1.26

#   The pin on which the switch is connected. This parameter must be

#   provided.

 

#

 

 

 

 

#####################################################################

#          Bed Heater

#####################################################################

 

[heater_bed]

##        SSR Pin – Z board, Fan Pin

heater_pin: z:P2.3

sensor_type: NTC 100K MGB18-104F39050L32

sensor_pin: z:P0.25

##        Adjust Max Power so your heater doesn’t warp your bed

max_power: 0.5  # was 0.6 for 230V 500 Watt, which is hardware switchable to rech fast 110 deg…

# the 24V wide 310x310mm bed heater is primary and does not warp the bed as the 230V one does!

min_temp: 0

max_temp: 140

#control: watermark

 

[verify_heater heater_bed]

max_error: 300

#   The maximum “cumulative temperature error” before raising an

#   error. Smaller values result in stricter checking and larger

#   values allow for more time before an error is reported.

#   Specifically, the temperature is inspected once a second and if it

#   is close to the target temperature then an internal “error

#   counter” is reset; otherwise, if the temperature is below the

#   target range then the counter is increased by the amount the

#   reported temperature differs from that range. Should the counter

#   exceed this “max_error” then an error is raised. The default is

#   120.

check_gain_time:200

#   This controls heater verification during initial heating. Smaller

#   values result in stricter checking and larger values allow for

#   more time before an error is reported. Specifically, during

#   initial heating, as long as the heater increases in temperature

#   within this time frame (specified in seconds) then the internal

#   “error counter” is reset. The default is 20 seconds for extruders

#   and 60 seconds for heater_bed.

hysteresis: 5

#   The maximum temperature difference (in Celsius) to a target

#   temperature that is considered in range of the target. This

#   controls the max_error range check. It is rare to customize this

#   value. The default is 5.

heating_gain: 1

#   The minimum temperature (in Celsius) that the heater must increase

#   by during the check_gain_time check. It is rare to customize this

#   value. The default is 2.

 

 

##FIND YOUR OWN: “PID_CALIBRATE HEATER=heater_bed TARGET=60” to run autotune on the bed at 90 degrees C for 5 cycles.

 

#####################################################################

#          Z-Probe

#####################################################################

 

[probe]

##        Inductive Probe

##        This probe is not used for Z height, only Quad Gantry Leveling

##        Z_MAX on mcu_z

##        If your probe is NO instead of NC, add change pin to !z:P0.10

pin: z:P0.10  # add ^ for pull-up if needed ^z:P0.10

 

x_offset: 0

y_offset: 25.0                                       # must be 25

#z_offset: 5.3                                                   # trigger height versus nozzle height measured 5.4  is autotuned

speed: 5                                                                      # max 5

samples: 1                                                       #was 3 or 5

samples_result: median

sample_retract_dist: 10                        # was 15, set this higher for more switching distance

samples_tolerance: 0.06                       # was 0.006

samples_tolerance_retries: 2     # was 5

 

 

#####################################################################

#          Fan Control

#####################################################################

 

[heater_fan hotend_fan]

##        Hotend Fan – XYE board, HE1 Connector

pin: P2.4

max_power: 1.0

kick_start_time: 1.5

heater: extruder

heater_temp: 40.0

##        If you are experiencing back flow, you can reduce fan_speed

#fan_speed: 1.0

# Heater and temperature sensor verification. Heater verification is

# automatically enabled for each heater that is configured on the

# printer. Use verify_heater sections to change the default settings.

 

 

[fan]

##        Print Cooling Fan – XYE board, Fan Pin

pin: P2.3

kick_start_time: 1.5

##        Depending on your fan, you may need to increase this value

##        if your fan will not start. Can change cycle_time (increase)

##        if your fan is not able to slow down effectively

off_below: 0.10

 

[controller_fan my_controller_fan]  # the fan for the compartment with electronics underneath

pin: z:P2.4

max_power: 1

#shutdown_speed: 0.1

#cycle_time:

#####hardware_pwm:

kick_start_time: 1

#off_below:

#tachometer_pin:

#tachometer_ppr:

#tachometer_poll_interval:

#   See the “fan” section for a description of the above parameters.

fan_speed: 0.5

#   The fan speed (expressed as a value from 0.0 to 1.0) that the fan

#   will be set to when a heater or stepper driver is active.

#   The default is 1.0

#idle_timeout:

#   The amount of time (in seconds) after a stepper driver or heater

#   was active and the fan should be kept running. The default

#   is 30 seconds.

idle_speed: 0.3

#   The fan speed (expressed as a value from 0.0 to 1.0) that the fan

#   will be set to when a heater or stepper driver was active and

#   before the idle_timeout is reached. The default is fan_speed.

heater: heater_bed, extruder

#   Name of the config section defining the heater that this fan is

#   associated with. If a comma separated list of heater names is

#   provided here, then the fan will be enabled when any of the given

#   heaters are enabled. The default is “extruder”.

 

[heater_fan exhaust_fan]

##        Exhaust fan – Z board, HE0 Connector

pin: z:P2.7

## max_power: 0.4

shutdown_speed: 0.0

kick_start_time: 1.0

heater: heater_bed

heater_temp: 76  # so it only works with ABS/Nylon etc

fan_speed: 0.7

 

#####################################################################

#          LED Control

#####################################################################

 

[output_pin caselight ]

pin: P2.5

pwm: true

value: 0

scale: 10

 

#####################################################################

#          Homing and Gantry Adjustment Routines

#####################################################################

 

[idle_timeout]

timeout: 1800

 

[homing_override]

axes: z

set_position_z: 0

gcode:

G91                                                              # use relative coordinates

G1 Z5 F1800                                    # Move Z UP 10 mm

# M104 S220                                     # hotend on for better G28 effectiveness

# M109 S220                                     # wait for hotend temp

G90                                                              # use absolute coordinates

G28 X150 Y150  F3600                     # Set home Z at these coordinates; was X96 Y 305

##        XY Location of the Z probe point center bed

##        Update X0 and Y0 to your values (such as X157, Y305) after going through

##        Z Endstop Pin Location Definition step.

G0 X150 Y150 F3600                        # ‘Zero’ the probe position to get a printing field where the probe postion is known with these coordinates

G28 Z                                                           # Home Z

G90                                                              # use absolute coordinates

#G1 Z15 F3600                                            # Move Z up to absolute +15 mm

G1 X150 Y175 Z15 F3600     # Move Z to parking place at center bed Z absolute +15 mm at probe point exactly +25mm on Y axis

 

 

 

[quad_gantry_level]

#   Put a moving gantry into plan with a fixed bed.  Must have 4 steppers on the gantry.

#   Use QUAD_GANTRY_LEVEL to level a gantry.

gantry_corners:

-55,-7

355, 370

#  List of X,Y coordinates describing the two opposing corners of the gantry.

#  The first entry corresponds to the front left motor, the second to the

#  back right motor.

points:

25, 25

25, 220

275, 220

275, 25

 

# make the gantry calibrate points alike the outer points of the bed mesh level routine:

# check for correction on the position of the Z probe versus nozzle here:  X,Y could be X,(Y minus 25mm)

 

#  Probe points used for Quad Gantry Level.

#  The positions specified are “Nozzle positions”. In a Voron 2.1 the probe

#  is offset by 25mm thus transforming 25,0 to a probe position of 25,25.

#  When modifying these make sure to keep at least 20mm distance to the

#  edge of the bed or any screws.

speed: 100  # was 200

horizontal_move_z:10 # must be higher than Z-offsets added from Z-probe and Z-switch!

retries: 5  # was 5

#  Retry the quad gantry level up to 3 times if the probed points

#  aren’t within the specified retry_tolerance

retry_tolerance: 0.05  # was 0.009

#  Repeat the quad gantry level if the tolarance is .01mm or larger.

#max_adjust: 10

 

#####################################################################

#          Displays

#####################################################################

 

##        Uncomment the display that you have. Display connects to Z MCU

#——————————————————————–

 

#[display]

##        RepRapDiscount 128×64 Full Graphic Smart Controller

#lcd_type: st7920

#cs_pin: z:P1.19

#sclk_pin: z:P1.20

#sid_pin: z:P1.18

#menu_timeout: 40

#encoder_pins: ^z:P3.26, ^z:P3.25

#click_pin: ^!z:P0.28

 

#[output_pin beeper]

#pin: z:P1.30

 

#——————————————————————–

[display]

##        mini12864 LCD Display

lcd_type: uc1701

cs_pin: z:P1.18

a0_pin: z:P1.19

encoder_pins: ^z:P3.26,^z:P3.25

click_pin: ^!z:P0.28

contrast: 63

 

[neopixel fysetc_mini12864]

##        To control Neopixel RGB in mini12864 display

pin: z:P1.21

chain_count: 3

initial_RED: 0.1

initial_GREEN: 0.5

initial_BLUE: 0.0

#color_order_GRB: False

 

##        Set RGB values on boot up for each Neopixel.

##        Index 1 = display, Index 2 and 3 = Knob

[delayed_gcode setdisplayneopixel]

initial_duration: 1

gcode:

SET_LED LED=fysetc_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1

SET_LED LED=fysetc_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2

SET_LED LED=fysetc_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 TRANSMIT=0

 

 

 

[neopixel temp_leds]

pin: P1.24                     # on main MCU board

chain_count: 3 # max = 18

 

[gcode_macro M105]

rename_existing: M105.1

gcode:

 

M105.1

 

 

{% if printer.extruder.target == 0 %}#if the extruder is off

 

 

{% if printer.extruder.temperature > 100.0 %}#Set the LED to red if the extruder is off but is still hot

 

SET_LED LED=temp_leds RED=1 GREEN=0 BLUE=0 TRANSMIT=1

 

{% else %}

 

SET_LED LED=temp_leds RED=0 GREEN=0 BLUE=1 INDEX=1 TRANSMIT=1# otherwise set the color to blue and green

SET_LED LED=temp_leds RED=0 GREEN=1 BLUE=0 INDEX=2 TRANSMIT=1

SET_LED LED=temp_leds RED=0 GREEN=0 BLUE=1 INDEX=3 TRANSMIT=1

 

{% endif %}

 

{% else %}

 

 

{% if printer.extruder.temperature >= printer.extruder.target – 4.0 %}#if the extruder temp is at target temperature

 

SET_LED LED=temp_leds RED=1 GREEN=1 BLUE=1 TRANSMIT=1

 

 

{% else %}#the extruder is still heating

 

{% set scaler = printer.extruder.temperature|float / printer.extruder.target|float %}

SET_LED LED=temp_leds RED={ scaler|float * 1.0 } GREEN=0 BLUE=0 INDEX=1 TRANSMIT=1

SET_LED LED=temp_leds RED={ scaler|float * 0.1 } GREEN=0 BLUE=0 INDEX=2 TRANSMIT=1

SET_LED LED=temp_leds RED={ scaler|float * 1.0 } GREEN=0 BLUE=0 INDEX=3 TRANSMIT=1

 

{% endif %}

 

{% endif %}

#———————————————————————-

 

#####################################################################

#          Macros

#####################################################################

 

[pause_resume]

recover_velocity: 50.

#   When capture/restore is enabled, the speed at which to return to

#   the captured position (in mm/s). Default is 50.0 mm/s.

 

#[gcode_macro G29]

#gcode:

#G0 Z5 F1200

#G28

#BED_MESH_CALIBRATE

#SAVE_CONFIG

 

 

[gcode_macro G32]

gcode:

BED_MESH_CLEAR                        # This command clears the mesh and removes all z adjustment. It is recommended to put this in your end-gcode.

G90                                                                 # use absolute coordinates

M140 S75                                                        # set bed temp

M104 S220                                                      # hotend on for better G28 effectiveness

M109 S220                                                      # wait for hotend temp

M117 Homing…                                   # print homing on LCD

G28                                                                 # home all axes home all without mesh bed level

M117 wait for temps                 # display message

M140 S75                                                        # set bed temp

M104 S75                                                        # hotend off, switching temp at hotend causes jitter on the Z-probe

M106 S1                                                                      # This command sets the speed of the print fan. must be between 0.0 and 1.0.

#SET_FAN_SPEED FAN=fan SPEED=1 # This command sets the speed of a fan. must be between 0.0 and 1.0.

M190 S75                                                        # wait for bed temp

# M109 S75                                                     # wait for hotend temp to 75 max because it will get too hot to be accurate  ****  changed this to off but no need to wait for it to cool down ****

M117 Gantry leveling..      # display message

QUAD_GANTRY_LEVEL                                 # make sure to level at the outer points of the bed mesh

M117 Mesh level bed..              # display message

BED_MESH_CALIBRATE

G90                                                                 # use absolute coordinates

G1 X150 Y150 Z15 F6000                    # Park at center after leveling G32

SAVE_CONFIG                                                           # Save and reset/restart. This will also set all temps and fans off

 

[gcode_macro PRINT_START]

##   Use PRINT_START for the slicer starting script – please customise for your slicer of choice

gcode:

 

G90                                                             # use absolute coordinates

M117 Homing…                                   # print homing on LCD

G28                                                                 # home all axes home

M117 Leveling gantry..              # display message

QUAD_GANTRY_LEVEL                                 #

M117 Mesh level bed..              # display message

BED_MESH_CALIBRATE

M117 Print@Jantec.nl              # print on LCD

## print intro line

G28                                                                 # home all axes home

 

# Do not do this G29 S1 after mesh bed leveling because it will activate your OLD mesh values instead of your just made mesh!!

# or do a Save-config  FIRSt but this will retart the printer…  maybe in the PRINT_END?

#G29 S1                      # enable bed mesh compensation

 

G92 E0                                                                        # Reset E

G90                                                                 # use absolute coordinates

G1 X270 Y0 F6000                              #

G1 Z0.2 F720                                      #

G1 X40 E28 F1000                              #

G92 E0                                                                        # Reset E

G1 Z2 F3000                                        # move nozzle away from bed

 

 

[gcode_macro PRINT_END]

#   Use PRINT_END for the slicer ending script – please customise for your slicer of choice

gcode:

M400                        # wait for buffer to clear

G92 E0                      # zero the extruder

G1 E-10.0 F3600             # retract filament

G91                         # relative positioning

G0 Z1.00 X20.0 Y20.0 F20000 # move nozzle to remove stringing

TURN_OFF_HEATERS

#M107                       # turn off fan

G1 Z5 F3000                 # move nozzle up 5mm

G90                         # absolute positioning

G0  X290 Y290 F3600              # park nozzle at rear

M117 Finished!              # display message

BED_MESH_CLEAR                                   # This command clears the mesh and removes all z adjustment. It is recommended to put this in your end-gcode.

 

 

#    use BED_MESH_CALIBRATE to run a bed mesh.

#    this is for uneven beds.  min_point and max_point have been renamed to mesh_min and mesh_max respectively

[bed_mesh]

 

speed: 100                                           # was 150 mm/sec

horizontal_move_z:10  # was 20

mesh_min: 25,50                      # X,Y min and add the 25 mm for the Z probe here as add to Z value!

mesh_max: 275,250                 # X,Y max and add the 25 mm for the Z probe here as add to Z value!

probe_count: 5,5                      # was 5,5

 

relative_reference_index: 12  # at this specific probe point center bed, Z=0 is made so the reference for the z switch has a fixed relation to this bed point.

# it is the probe point, closest to the probe switch ( 5,5 probe points used) but that is not required. it can be any probed point on the bed…

# probe at 150.000,245.000 is z=0 in Gcode report (for this point 22 see the exact value at end of this file, remember the points start with number 0 up until 24)

# no longer needed???? this since the Z switch is obselete when we home Z with Z probe only or do we still need to set a reference although we have probed at center bed for Z=0?

 

#fade_start: 1.0

#fade_end: 10.0

#split_delta_z: .025

#move_check_distance: 5.0

#mesh_pps: 5,5

#algorithm: lagrange

#   The interpolation algorthm to use.  May be either “langrange”

#   or “bicubic”.  This option will not affect 3×3 grids, which

#   are forced to use lagrange sampling.  Default is lagrange.

#bicubic_tension: .2

#   When using the bicubic algoritm the tension parameter above

#   may be applied to change the amount of slope interpolated.

#   Larger numbers will increase the amount of slope, which

#   results in more curvature in the mesh. Default is .2.

 

 

[gcode_macro UNLOAD_FILAMENT]

gcode:

M83

G1 E10 F300

G1 E-780 F1800

M82

 

[gcode_macro LOAD_FILAMENT]

gcode:

M83

G1 E750 F1800

G1 E30 F300

G1 E15 F150

M82

 

 

 

##        Thermistor Types

##   “EPCOS 100K B57560G104F”

##   “ATC Semitec 104GT-2”

##   “NTC 100K beta 3950”

##   “Honeywell 100K 135-104LAG-J01”

##   “NTC 100K MGB18-104F39050L32” (Keenovo Heater Pad)

##   “AD595”

##   “PT100 INA826”

 

## z-offset was 2.2 with smooth dual pei sheet.  Put it down 0.05  (to 2.15 to chceck usage

## Increasing this value(+) increases squish (nozzle goes DOWN), and decreasing it (-) decreases squish (nozzle goes UP).

 

#*# <———————- SAVE_CONFIG ———————->

#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.

#*#

#*# [extruder]

#*# control = pid

#*# pid_kp = 18.565

#*# pid_ki = 0.673

#*# pid_kd = 128.100

#*#

#*# [bed_mesh default]

#*# version = 1

#*# points =

#*#         -0.292500, -0.140000, -0.070000, -0.132500, -0.300000

#*#         -0.215000, -0.072500, 0.010000, -0.055000, -0.195000

#*#         -0.237500, -0.042500, 0.000000, -0.070000, -0.212500

#*#         -0.270000, -0.082500, -0.037500, -0.115000, -0.262500

#*#         -0.345000, -0.147500, -0.097500, -0.185000, -0.340000

#*# tension = 0.2

#*# min_x = 25.0

#*# algo = lagrange

#*# y_count = 5

#*# mesh_y_pps = 2

#*# min_y = 50.0

#*# x_count = 5

#*# max_y = 250.0

#*# mesh_x_pps = 2

#*# max_x = 275.0

#*#

#*# [probe]

#*# z_offset = 1.45

#*#

#*# [heater_bed]

#*# control = pid

#*# pid_kp = 30.322

#*# pid_ki = 0.796

#*# pid_kd = 288.824

##

Configuration checks

This document provides a list of steps to help confirm the pin settings in the Klipper printer.cfg file. It is a good idea to run through these steps after following the steps in the installation document.

During this guide, it may be necessary to make changes to the Klipper config file. Be sure to issue a RESTART command after every change to the config file to ensure that the change takes effect (type “restart” in the Octoprint terminal tab and then click “Send”). It’s also a good idea to issue a STATUS command after every RESTART to verify that the config file is successfully loaded.

Verify temperature

Start by verifying that temperatures are being properly reported. Navigate to the Octoprint temperature tab.

Verify that the temperature of the nozzle and bed (if applicable) are present and not increasing. If it is increasing, remove power from the printer. If the temperatures are not accurate, review the “sensor_type” and “sensor_pin” settings for the nozzle and/or bed.

Verify M112

Navigate to the Octoprint terminal tab and issue an M112 command in the terminal box. This command requests Klipper to go into a “shutdown” state. It will cause Octoprint to disconnect from Klipper – navigate to the Connection area and click on “Connect” to cause Octoprint to reconnect. Then navigate to the Octoprint temperature tab and verify that temperatures continue to update and the temperatures are not increasing. If temperatures are increasing, remove power from the printer.

The M112 command causes Klipper to go into a “shutdown” state. To clear this state, issue a FIRMWARE_RESTART command in the Octoprint terminal tab.

Verify heaters

Navigate to the Octoprint temperature tab and type in 50 followed by enter in the “Tool” temperature box. The extruder temperature in the graph should start to increase (within about 30 seconds or so). Then go to the “Tool” temperature drop-down box and select “Off”. After several minutes the temperature should start to return to its initial room temperature value. If the temperature does not increase then verify the “heater_pin” setting in the config.

If the printer has a heated bed then perform the above test again with the bed.

Verify stepper motor enable pin

Verify that all of the printer axes can manually move freely (the stepper motors are disabled). If not, issue an M84 command to disable the motors. If any of the axes still can not move freely, then verify the stepper “enable_pin” configuration for the given axis. On most commodity stepper motor drivers, the motor enable pin is “active low” and therefore the enable pin should have a “!” before the pin (for example, “enable_pin: !ar38”).

Verify endstops

Manually move all the printer axes so that none of them are in contact with an endstop. Send a QUERY_ENDSTOPS command via the Octoprint terminal tab. It should respond with the current state of all of the configured endstops and they should all report a state of “open”. For each of the endstops, rerun the QUERY_ENDSTOPS command while manually triggering the endstop. The QUERY_ENDSTOPS command should report the endstop as “TRIGGERED”.

If the endstop appears inverted (it reports “open” when triggered and vice-versa) then add a “!” to the pin definition (for example, “endstop_pin: ^!ar3”), or remove the “!” if there is already one present.

If the endstop does not change at all then it generally indicates that the endstop is connected to a different pin. However, it may also require a change to the pullup setting of the pin (the ‘^’ at the start of the endstop_pin name – most printers will use a pullup resistor and the ‘^’ should be present).

Verify stepper motors

Use the STEPPER_BUZZ command to verify the connectivity of each stepper motor. Start by manually positioning the given axis to a midway point and then run STEPPER_BUZZ STEPPER=stepper_x. The STEPPER_BUZZ command will cause the given stepper to move one millimeter in a positive direction and then it will return to its starting position. (If the endstop is defined at position_endstop=0 then at the start of each movement the stepper will move away from the endstop.) It will perform this oscillation ten times.

If the stepper does not move at all, then verify the “enable_pin” and “step_pin” settings for the stepper. If the stepper motor moves but does not return to its original position then verify the “dir_pin” setting. If the stepper motor oscillates in an incorrect direction, then it generally indicates that the “dir_pin” for the axis needs to be inverted. This is done by adding a ‘!’ to the “dir_pin” in the printer config file (or removing it if one is already there). If the motor moves significantly more or significantly less than one millimeter then verify the “rotation_distance” setting.

Run the above test for each stepper motor defined in the config file. (Set the STEPPER parameter of the STEPPER_BUZZ command to the name of the config section that is to be tested.) If there is no filament in the extruder then one can use STEPPER_BUZZ to verify the extruder motor connectivity (use STEPPER=extruder). Otherwise, it’s best to test the extruder motor separately (see the next section).

After verifying all endstops and verifying all stepper motors the homing mechanism should be tested. Issue a G28 command to home all axes. Remove power from the printer if it does not home properly. Rerun the endstop and stepper motor verification steps if necessary.

Verify extruder motor

To test the extruder motor it will be necessary to heat the extruder to a printing temperature. Navigate to the Octoprint temperature tab and select a target temperature from the temperature drop-down box (or manually enter an appropriate temperature). Wait for the printer to reach the desired temperature. Then navigate to the Octoprint control tab and click the “Extrude” button. Verify that the extruder motor turns in the correct direction. If it does not, see the troubleshooting tips in the previous section to confirm the “enable_pin”, “step_pin”, and “dir_pin” settings for the extruder.

Calibrate PID settings

Klipper supports PID control for the extruder and bed heaters. In order to use this control mechanism it is necessary to calibrate the PID settings on each printer. (PID settings found in other firmwares or in the example configuration files often work poorly.)

To calibrate the extruder, navigate to the OctoPrint terminal tab and run the PID_CALIBRATE command. For example: PID_CALIBRATE HEATER=extruder TARGET=170

At the completion of the tuning test run SAVE_CONFIG to update the printer.cfg file the new PID settings.

If the printer has a heated bed and it supports being driven by PWM (Pulse Width Modulation) then it is recommended to use PID control for the bed. (When the bed heater is controlled using the PID algorithm it may turn on and off ten times a second, which may not be suitable for heaters using a mechanical switch.) A typical bed PID calibration command is: PID_CALIBRATE HEATER=heater_bed TARGET=60

Next steps

This guide is intended to help with basic verification of pin settings in the Klipper configuration file. Be sure to read the bed leveling guide. Also see the Slicers document for information on configuring a slicer with Klipper.

After one has verified that basic printing works, it is a good idea to consider calibrating pressure advance.

It may be necessary to perform other types of detailed printer calibration – a number of guides are available online to help with this (for example, do a web search for “3d printer calibration”). As an example, if you experience the effect called ringing, you may try following resonance compensation tuning guide.

 

 

 

 

 

 

 

3d printer IDEX PrusaBear dual X-axis for dual independant extruders

Looking at all the different IDEX designs that are based on either a coreXY setup, a Prusa3, Bear or not-, or on an Ender3/10 setup, I chose to do it from scratch.

An IDEX printer has independantly extruders, but nowhere is mentioned in what sense or -way the indepentand extruders are defined.

Since I have much experience with my dual Bear setup, where I park the hotend carriages and use 1 moving centerpiece with electromagnets to catch either the left carriage with hotend or the right carriage and hotend, I think that making a new printer for IDEX from scratch will be a good idea.

I did get my I3bear with IDEX on a single X-axis with magnetic carriages on the same axis  running very well in the end.

Contrary to my A30M with a Chimera fixes dual hotend/extruder. That works very well, but also has its limitations.  Limitations like low speed and the fact that you will always have some dripping on your object from the other nozzle, that is fixed at about 22mm to the right or left of the active nozzle.  But- it is a really good solution for an 0.6mm nozzle, if you push the layer height to 0. 3 mm.

For my IDEX setup I will to use a standard Bear frame, made from 2040 aluminium, and all axes are based on standard I3 dual rods. Then, add a frond and a rear X-axis to the frame with each having its own Z-drives. Then, it looks like this:

The only additional printed parts needed are the X-axis motor holder for the rear and 2 top Z-holders:

The rest is all standard I3bear stuff.

For this printer I need a motherboard with 7 drivers, being 2*X, 1*Y, 2*Z and 2*E.

Since I have a Fly407 MB  with 9! driver positions in stock, already programmed for RRF3, wifi and with an LCD unit attached, I will use this to get a Duet setup with Duet Web Controller along.  easy to reprogram, and I can finally check the board’s capabilities.

I just need to get me a casing for the board, but that’ll not prevent me from using it!

Printing at maximum width on my Geeetech A30M with PETG and the Duet2wifi board

Yesterday I exchanged the dual nozzle printerhead (Chimera) that I have been using for dual printing all kinds of goodies like my name tag and several dual color prints, with the original single nozzle-dual extruder head.

I needed to print a LED lights circular holder that is 328mm wide, and the setrup with the Chimera just does net get that wide on the X-axis.

The result is below: It took some tweaking in the bed size settings but I have exactly 330×330 X*Y available, awesome!

 

Building a Prusa mini clone (Fysetc parts)

Last week (2021-Nov-04)  I ordered me a Prusa mini clone from Aliexpress.

I already have an original Prusa Mini from the moment it was offered by Prusa.  I waited for over 1/2 a year to get it delivered as I was one of the (almost) first to order it.  And-  I value the machine very positive.

I use it for professional prints, mostly with white, orange and black PETG.

I hope that my additional Prusa Mini will be just as perfect as my original one.

On Ali, everything was offered except the printed parts.  It includes a buddyboard 32 bits with 2209 drivers, LCD 2.6 inch, 3 motors, nuts and bolts, cables, hoses, bearings, clamps, hotbed, pei sheet, rods, extruder, fans, extrusion, you name it, really everything is included for 105 Euro’s .  But- you guessed it- I never got anything delivered. I have a dispute running now, hopefully I wiull get the money back.  And- I ordered a new one, now the costs are more than double, as is to be expected.

As add-on I ordered 2 renewed Z-sensors (including temp sensor)  from Prusa for Eur 50 incl. Tax and shipment.  With this, both mini’s can be upgraded to Mini+ 3d printers.  Except the longer bed of course.  Also, both the buddyboards will get the Mini+ firmware.

Since I also own an original Prusa mini, printing the parts was easy, as you can see in the attached pictures.:

Still, also a Prusa mini can have stringing wth PetG. OR, i think this was caused because I purposely set the temp very high to get extremely solid prints.  Whatever, I cleaned the printed parts afterwards with a knife and that turned out to be easy enough.

The black PETG parts got printed on my Ender 3 pro+.

Built after receival of the non-printed parts on 2021-12-22  JMWG.NL

I upgraded the Buddyboard V1.0.0 straight away to the latest Prusa Mini firmware and compared the prints against my Original Prusa Mini.

I honestly could not see any difference between the two of them.

The stuff I ordered on Ali:

Https://github.com/FYSETC/FYSETC-Prusa-mini-clone

3.2/2.8 MW power is momenteel in voldoende voorraad, bent u welkom om een bestelling plaatst, de voorraad is in de Spaanse magazijn, dank u voor uw steun,

Video tutorial:





Pakket:
Schroef kit 1
Tool kit 1
USB disk 1
Gladde staven kit 1
3030 extrusie kit 1
625 lager 3
12.5mm, 3mm OD as 1
4.9*12mm as 1
16T GT2 Katrol (als MK3) 2
Platte Katrol (als MK3) 2
X/Y riem 2
LM8UU 5
LM10LUU 2

Elektronica
Motoren kit 1
Buddy besturingskaart 1
Thermistor hotend 1
Thermistor verwarmd bed 1
Filament sensor kit 1
Heatedbed 1
Verwarmd bed kabel 1
LCD (als kiezen) 1
24V 40w cartridge 1
PSU (als kiezen) 1
Minda 1
Fans 2
Extruder versnellingen 1
Hotend kit 1
Bowden tube 1
Y vervoer 1
Z bodemplaat 1
Gouden textuur stalen plaat 1

Dit product omvat niet prints. Als u of kopen het zelf, het bestand afdrukken link: https://www.thingiverse.com/thing:4338197
3.2 inch scherm case STL Link:https://www.thingiverse.com/thing:4307001

Minimill CNC conversion WMD16LV Z-axis adapter for NEMA23 direct drive

While I was making my CNC adapter plates with teethed wheels and belts, I discovered that not much exists that is ready to use for these conversions.

DOWNLOAD:

MINIMILL_BF16L CNC_Z_adapter direct drive 2022_07_25_V1_5-jantec.nl

I am therefore also making direct drive adapter parts, to try this out.

This is the third piece I make for direct drive, for the Z-axis.

This pice is fairly simple: First a good fit is needed to mount the adapter to the top of the Z-column, and the holes for the 4 bolts need to be acactly correct.  Also, the same for the leadscrew hole of the bearing holder.

Then, on top of this, the Nema23 holder/mounting is projected.  Including all needed boltholes, nutholes and a side hole for tightening the coupler.

The leadscrew has an outside part for the handwheel we will use for CNC that is 10mm, and some thread 10mm for Z.  The thread is needed to be bolting the angular bearings (not meant for side torque) with some torque to the bearing holder.

If you do direct drive, you need a special coupler that can be split in 2. Then, you first mount one part on the leadscrew with some rings between the mill and the coupler part so that the nut can be placed in the coupler.  If the thread is too long, grind some off.

Then, put the rubber (with centerhole)  back in the coupler’s mounted part and push the other part in the rubber, so the coupler is complete.

Then, mount the printed adapter with already mounted Nema23 motor on the Y-axis and push the Nema shaft in the coupler.  Use the adapter’s right hand side working window to torque the connector on the Nema shaft and you’re done!

Should you want to have a handwheel as well, this is possible but you will have to buy a stepper with an axis that is both at the front as the rear. (this is called ‘double shaft’ but is actually a longer shaft, obviously.]

GOTO the X-axis Direct Drive adapter

GOTO the Y-axis Direct Drive adapter

 

Minimill CNC conversion WMD16LV X-axis adapter for NEMA23 direct drive

While I was making my CNC adapter plates with teethed wheels and belts, I discovered that not much exists that is ready to use for these conversions.

DOWNLOAD:

MINIMILL_BF16L CNC_X_adapter direct drive 2022_07_25_V1_5-jantec.nl

I am therefore also making direct drive adapter parts, to try this out.

 

This is the second piece I make for direct drive, for the X-axis.

The leadscrew has an outside part for the handwheel we will use for CNC that is 10mm, and some thread 8mm.  The thread is needed to be bolting the angular bearings (not meant for side torque) with some torque to the bearing holder.

If you do direct drive, you need a special coupler that can be split in 2. Then, you first mount one part on the leadscrew with some rings between the mill and the coupler part so that the nut can be placed in the coupler.  If the thread is too long, grind some off.

Then, put the rubber (with centerhole)  back in the coupler’s mounted part and push the other part in the rubber, so the coupler is complete.

Then, mount the printed adapter with already mounted Nema23 motor on the Y-axis and push the Nema shaft in the coupler.  Use the adapter’s right hand side working window to torque the connector on the Nema shaft and you’re done!

Should you want to have a handwheel as well, this is possible but you will have to buy a stepper with an axis that is both at the front as the rear. (this is called ‘double shaft’ but is actually a longer shaft, obviously.

GOTO the Direct Drive Y-axis adapter

GOTO the Direct Drive Z-axis adapter

DOWNLOAD the latest version of the STL printfiles 

Please donate $1 to my paypal account if you use (parts of) my developed materials so I can continue to share nice stuff for you to download

Minimill CNC conversion WMD16LV Y-axis adapter for NEMA23 direct drive

While I was making my CNC adapter plates with teethed wheels and belts, I discovered that not much exists that is ready to use for these conversions.

DOWNLOAD:

MINIMILL_BF16L CNC_Y_adapter direct 2022_07_25_V1_5-jantec.nl

I am therefore also making direct drive adapter parts, to try this out.

This is the first one, starting with the most difficult one.  The rest will be added soon.

Version 1.2 which is 15 mm shorter and much more robust:

  

The leadscrew has an outside part for the handwheel we will use for CNC that is 10mm, and some thread 8mm.  The thread is needed to be bolting the angular bearings (not meant for side torque) with some torque to the bearing holder.

If you do direct drive, you need a special coupler that can be split in 2. Then, you first mount one part on the leadscrew with some rings between the mill and the coupler part so that the nut can be place in the coupler.  If the thread is too long, grind some off.

Then, put the rubber (with centerhole)  back in the coupler’s mounted part and push the other part in the rubber, so the coupler is complete.

Then, mount the printed adapter with already mounted Nema23 motor on the Y-axis and push the Nema shaft in the coupler.  Use the adapter’s right hand side working window to torque the connector on the Nema shaft and you’re done!

Should you want to have a handwheel as well, you will have to buy a stepper with an axis that is both at the front as the rear. (this is called ‘double shaft’ but is actually a longer shaft, obviously.

OR- my latest design works a bit different: first put a couple of  10mm rings on the leadscrew’s 10mm axle, and then screw a  threaded RVS tube with an outer diameter of 12mm, 25 mm long and internal 8mm thread on the axle.  This goed into a 12 to 8mm coupler and this coupler connects to a NEMA23 stepper motor with an 8 mm axis.  It does get a bit lengthy but it works very well.  Just threadlock the RVS threaded tube to the leadscrew’s 8mm threaded end and it will run OK!

This is the last version, based on the above setup:

 

GOTO the Dirext Drive X-adapter

GOTO the Direct Drive Z-adapter

DOWNLOAD the latest version of the STL printfiles 

Please donate $1 to my paypal account if you use (parts of) my developed materials so I can continue to share nice stuff for you to download

CNC conversion of my Toolmania WBM16LV (TM BF 16) mill with NEMA23 steppers, 3dprinted adapters, teethed wheels and teethed belts

Before My Toolmania WBM16LV milling machine was delivered I already had plans to convert it to a CNC milling machine.

I do have some experience with 3d printing, and I have 2 CNC routers up and running, like the Indymill.  So, the conversion of this mill will not be difficult in the Technical sense.  But- making the perfect designs for the adapter plates of the Y- and X- axes proved to be a lot more work than I expected.

Please donate $1 to my paypal account if you use (parts of) my developed materials so I can continue to share nice stuff for you to download

The column cutter is already equipped with glass scales with digital readout.  Furthermore, there is a gas spring mounted on the Z-column so that not all the weight is in the way when moving back and forth.  Also an automatic lubrication system for the slides of X, Y and Z-axis will be mounted.)

DOWNLOAD ALL MY CNC TEETHED ADAPTER DESIGNS  as .STL files

The electronics will become OpenCNC + wifi + wireless controlbox. I received the kit and will put it together the coming weeks.  For now I am going to set the mill up with my all-in one USB-CNC-MDK2 board.  I use this for all of my routers and mills to get it set up in first instance since it is very simple and sturdy. And- you can run it instantaniously without any PC or programming, just with the handwheel or from SD card.  And from the laptop, of course.

GOTO the X axis CNC adapter

GOTO the Y axis CNC adapter

GOTO the Z axis CNC adapter

DOWNLOAD MY CNC ADAPTER DESIGNS  as .STL files

LATEST NEWS:

After this all worked well, I also made designs for  NEMA direct drive adapters on my Toolmania MiniMill:

Direct drive adapter for the X-axis
Direct drive adapter for Y-axis

Above: Direct drive adapter for the Z-axis

left top the Z-axis adapter, right the X axis adapter and at the bottom the Y-axis adapter

What makes it tricky is the choice to make: Will I replace the spindles with ball bearing spindles or not?  Not for the time being, first let’s make everything on CNC and then I’ll see how it performs.

Minimill CNC conversion Toolmania WMD16LV endstops

2021-10-30:  When converting (or upgrading, depends on your P.O.V.) a mill to CNC, it is absolutely necessary to have end stops on all ends. Except the low-end of the Z-axis, an end stop at the Z-axis low end is practically impossible.

On the Z-axis low end another solution has been established by using a Z-stop from the milling toolbit on a fixed X-Y position, OR by testing with the toolbit in place on the matrerial by sight or electronically.

I bought a Z-position sensor for this, which is nothing more than an electrically insulated round pod with a flexible brass top. It is with one wire connected to the Mach3- motherboard as Z-probe and triggers when the tooltip touches the top of the Z pod’s brass top.  Therefore, this trigger is defined as ACTIVE when it is conected to Ground.  Since the mill will be grounded and thus also the tooltip is always connected to ground.  You MUST ground the mill, by the way.  Also for your safety.

Leaves us with the 5 enstops for which I have bought the thinnest available inductive sensors. These are M6 size round and about 8 cm long. These sensors require power, ground and since they are NPN type sensors which means Normally OPEN when NOT active, they will  ground the output pin when activated at reaching the the stop position.  To activate these inductive sensors,  a carbon- containing metal would be best to use and bring the sensor close.  The trigger moment depends on the connected power voltage.  The higher the voltage, the more sensitive the sensor becomes.

I will use 12 Volts or 24 Volts, I will experience a bit with these settings.

NPN and PNP proximity sensors - OMCH

On the net I was unable to find any plug and play sensor holders for my mill, so I developed these holders again from scratch in OpenScad.

Fortunately, I have a lot of starting material in OpenScad from my previous projects.

The X axis left:

 

The X axis right hand side:

 

The Y axis front:

 

The Y axis rear:

 

The Z-axis top:

 

Minimill CNC conversion WMD16LV Z-axis adapter for NEMA23 and M3 teethed belt

New stronger version V2 made, also including a top cover 2025,04-24. Will update with pictures after install on the minimill.

MINIMILL_BF16L CNC_Z_adapter belt driven 2025_05_24_V2 Jantec.nl

Please donate $1 to my paypal account if you use (parts of) my developed materials so I can continue to share nice stuff for you to download

:

First working version

The mount on the Z-column needed to get UP so the NEMA23 teethed wheel gets at the same level as the wheel that is mounted on the leadscrew.

Required hardware:

  • 3d printed Z-axis adapter
  • Nema23 stepper 76 mm length with enough torque, 8mm axle diameter
  • 48teeth M3 teethed  wheel of 11mm width, 10mm hole with collar for the leadscrew
  • 24 teeth M3 teethed wheel 11mm width , 8mm hole with collar for the Nema23 stepper motor
  • new M6 40mm length bolts flathead for the top connection to the Z column
  • 4 bolts and nuts M5 to mount the Nema 23 stepper
  • teethed belt 300mm M3 (100 teeth) 9 or 10mm

OR, use the 72 teethed wheel on the leadscrew and get a larger length belt of (I  estimate) 330-350 mm

OR.. another way to mount the Nema23stepper is at the rear of the Z column, BUT I don’t want it to stick out at the rear, that’s why I decided to mount the stepper at the left of the Z-column…

This is the 72 teeth 11 mm width teethed wheel that I will probably use for the final mount at the Z-axes. But not with this bracket at the rear. Unfortunately this bracket does not easily fit at the left or right side of the Z-column. I might make a fitting piece to mount it at the left, though. We’ll see how good the 3d printed parts will perform and if needed the Z-axis will be the easiest to use a standard bracket for mounting the stepper motor as shown above.

GOTO the X axis adapter

GOTO the Y axis adapter

DOWNLOAD THE CNC ADAPTER DESIGNS  as STL

Please donate $1 to my paypal account if you use (parts of) my developed materials so I can continue to share nice stuff for you to download

STL download  for the belt driven adapters of the WMD16LV minimill and Nema23 

Please donate $1 to my paypal account if you use (parts of) my developed materials so I can continue to share nice stuff for you to download

CLICK on the URL to start the download of the corresponding STL file

DOWNLOADS Y-adapter (LEFT SIDE):

MINIMILL_BF16L CNC_Y_adapter belt driven 2023_04_23_V1 Jantec.nl MINIMILL_BF16L CNC_Y_adapter LID belt driven 2023_04_23_V1 Jantec.nl

 


 

DOWNLOADS X-adapter (FRONT SIDE):

MINIMILL_BF16L CNC_X_adapter belt driven 2023_04_23_V1 Jantec.nl MINIMILL_BF16L CNC_X_adapter LID belt driven 2023_04_23_V1 Jantec.nl


DOWNLOAD Z-adapter (TOP):

MINIMILL_BF16L CNC_Z_adapter belt driven 2023_04_23_V1 Jantec.nl

 

GOTO THE MINIMILL PAGE

Minimill CNC conversion WMD16LV X-axis adapter for NEMA23 and M3 teethed belt

NEW VERSION with debree screen:

You can 3dprint the entire bottom and debree screen with the risers for the stepper motor at once, as I did in red ABS at 270 degrees C

For this setup you need

  • 1 piece Nema23 56 length stepper motor with 6.35 mm axis
  • 1  piece 12-teethed M3 wheel with collar, hole dia 6.35 mm, 11 mm width
  • 1  piece 24-teethed M3 wheel with NO collar, hole dia 10 mm, 11 mm width
  • Teethed M3 belt , 9 mm wide and length 255 or 275 mm (need to check this)
  • 3d printed parts
  • M8 rings and nut

Here the connection is shown onto the X-axis/ leadscrew bearing holder with 2 M6 bolts.

And front lid:

And the Milling design for the base plate for CNC machining in aluminium should you prefer this.

The 3D print file for the debree cover and the stepper motor risers, to be placed on the aluminium milled base plate:

GOTO the Y axis adapter

GOTO the Z axis adapter

DOWNLOAD THE CNC ADAPTER DESIGNS  as STL

Please donate $1 to my paypal account if you use (parts of) my developed materials so I can continue to share nice stuff for you to download

Minimill CNC conversion WMD16LV Y-axis 3d printed adapter for NEMA23 and M3 teethed belt

The design for the Y-axis mounting plate for the Nema23 stepper  is shown below and can be 3dprinted or, as I will do after the printed part proves to fit well, CNC it in aluminium on my CNC Indymill router.

The Y-axis adapter proved to be the most difficult design.  It took me 15 trial prints before I got everyting fully optimized.  And I also wanted to have a debree screen with a removable lid, which took some energy to test this.  Also, the belt has to have a clean route where it sits between the wheel.

The physical data for this setup:

  • Nema23 stepper motor
  • 3d printed parts: a: Baseplate inclusing risers for motormount and shield; b: lid
  • Teethed wheel for the Nema23 8mm axle: 10mm wide, 24 teeth M3 with chest
  • Teethed wheel for the leadscrew 10mm axle: 10mm wide: 48 teeth M3 with chest, machined on the teethed inside 9mm depth with a  width of 33 mm diameter to fit the chest of the leadscrew bearing holder
  • The fitting belt is 9mm wide, 300 mm long and has 100 teeth (M3)

GOTO the MiniMill’s X-axis CNC Nema23 mounting plate

GOTO the MiniMill’s Z-axis CNC Nema23 mounting plate

FINAL DESIGN:

Machined the inner part out on the lathe so it will slide for about 9mm over the Y axis’ leadscrew bearing holder

And now the wheel can move over the bearing holder to the right
This saves 9mm mounting space and now the machined handwheel can be replaced, if so desired.  But the handwheel needs to be machined first, to get the dial off.

the small holes can be used to place the lid on the debree screen with small 2.5 mm dia screws  Or, you van leave the lid off and put a wheel on as I have done on the Z-axis.  You must machine the dial off the wheel so it gets thin enough to mount on the remaining M8 leadscrew-end.  A little part of the 10mm shaft will stick out  with my method to keep the handwheel centered.

GOTO the X axis adapter

GOTO the Z axis adapter

DOWNLOAD THE CNC ADAPTER DESIGNS  as STL

Please donate $1 to my paypal account if you use (parts of) my developed materials so I can continue to share nice stuff for you to download

3d Printers – overview

At the moment (2025-07) I have the following 3d printers up and running:

  1. Voron 2.4 300x300x300 extremely fast ABS/ASA printer
  2. Voron 2.4 R2 CANBUS_TAP 600x600x500 VERY BIG & FAST ABS  printer
  3. Twotrees Sapphire Pro ‘enclosed’ very fast ABS/ASA printer
  4. Prusa mini very good for PETG primarily
  5. I3 Prusa Bear DIY Fly-CDY-V2 with dual Z axes, 0.6mm nozzle for PLA/ PETG
  6. I3 Prusa Bear ‘plus’ DIY with dual magnetic carriages and sensorless Xhoming
  7. A30M Duet2wifi Geetech dual extruder switchable mono or dual head
  8. Delta G2S Duet2wifi Geetech single head speedprinter 0.8 mm nozzle
  9. Kingroon KP3 mini with full extension package (rails, extruder, firmware..)
  10. Flashforge adventurer 3 all-original almost never used
  11. Ender3pro with TT mini e3 V2.1 , workhorse with 0.6 mm nozzle for PETG
  12. Prusa mini clone (but I can’t tell the difference..) for PETG primarily
  13. E3D Toolchanger met 4xHemera DD’s
  14. Mini Monoprice Delta printer
Prusa mini clone

Triple mixing hotend for A30M

Next to the penta non-mixing hotend, I recently bought this mixing triple hotend, to experiment with it on the A30M.  It is not the same as the Geeetech original triple mixing hotend, however it does have some resemblance.

Obviously, this hotend requires 3 extruders via bowden tubes.  The extruders I have are all Chinese clones of the 1:3 geared bondtech extruders.

The 3 extruders will be placed on the top horizontal aluminium frame, right where they are originally placed.  In fact, I am rebuilding the machine like the A30M from Geeetech that has a mixing triple hotend.  But- mine will have the Duet2wifi motherboard instead.

Soon as I install this, I will upload pictures and the config files (and all tool files like tfree, etcetera for the three tools as well).

 

Hanging 3d printer

My last 3d printer I built just produced too much noise, mainly from changing the tools during multi-filament prints

Finally, I made a construction where the printer hangs in big elastic suspenders.  This took away any noise that was previously transferred to the wall, so no more problems with noises throughout the house.  Pfff…

My mini shop

One of the 2nd floor bedrooms was converted into my 3.5×2  meters mini in-house workshop… The garage is used for my larger machines like the lathes, milling- and welding machines, laser cutter et cetera…

FLY 407 Motherboard RRF3+ wifi + BTT 2.4 inch TFT + multi-extruder

2021-05-11

I got the Mellow Fly 407 board in today, and it now works awesome!

I hooked the Mellow dedicated wifi unit to EXP 1 and EXP2 and to the serial TFT connection, programmed the microSDcard offline on the PC with the files from the proposed Github site and it all went great!  (The little added user manual is very good, just follow the directions and it can’t go wrong!)

Burnt the board’s firmware first, then the firmware of the wifi esp module and after setting up the wifi with YAT via USB, I programmed the wifi settings.  Then, with the Duet’s WDC PC-remote console via wifi, I uploaded the FLY 407 motherboard with all the latest available firmware: RRF3.4 beta and the latest wifi- and DWC versions.

Then, I removed the serial connection between the TFT connection on the motherboard and the wifi module and plugged in the BTT 2.4 inch TFT at the same serial port.  Since there is only 1 tft port available, I use the same serial port as I used for programming the esp wifi module.  I already put the RRF3 firmware on the TFT unit.

Well, the results are awesome! On the TFT after connecting you see the extruder step from 0 to 1-2-3-4 and back to 0 so this all works very nice!

I must be honest here: I also tried the Mellow 7 inch screen but this is not yet really working as well to me as the little BTT screen IMHO.  The Fly screen is a lot bigger, though, and the Fly 7 inch TFT has great potential.  I know that it will also take some getting used to the FLY’s TFT screen layouts.  The access to the macro and gcode directory is nice, but since everything is placed differently than the PanelDue screens, it might just take some time to appreciate it more.

Geetech A30M first use

In mid-June 2020, I started using the Geeetech A30M desktop 3d printer.
The printer can print 2 colors mixed with 2 filament geared drive units on top of the frame and a fan for each feed to the combined hotend.

A few adjustments are needed on this printer if you really want to work well with it.
First of all, I had a lot of trouble with the standard noise from the 24 Volts fan under the bottom plate, which is supposed to provide cooling for the motherboard. This fan is always running at full power.
I put a controller in between with controls on the left side, through a drilled hole. I secured the controller with 2 tie-wraps through the cooling slots on the left side. The dial just comes through the case and you can hardly see it. Most motherboards I use don’t need a fan for cooling because they are placed freely in the open frame but the A30M has a closed case so a little air circulation is necessary. Plan is to add a thermostat control so the knob is no longer needed. Later. The controller is set to the position that there is a lot of air movement but without the whirring of the fan.

Second modification is the addition of a Geeetech 3d touch on the hotend. The bracket was included with the printer, suitable for both a thick inductive sensor and the 3d touch sensor. What’s nice is that the software (or firmware, if you will) as suitable from the factory for autoleveling. Do pay attention to the correct placement of the connectors, from the front view the brown and black wires should be mounted to the right.

The disadvantage is that the firmware from factory does not really work well with auto leveling. In the middle of the hotbed everything goes fine but with larger prints I noticed that the first layer was printed very differently, so everything kept coming loose. So now I work with manual leveling while automatic leveling is possible.

The hotbed is nice and big with a workable size of 320x320mm. The print height is 420mm.

The price was over 400 Euro, and the delivery was from Germany.

I recommend everyone to secure ALL and especially to include the block hook. My one was really not assembled properly. All threads were OK but all bolts were either too tight or not tight at all. I only found this out during the first test print. I stopped and checked everything. Pay special attention to the rollers of the hotbed. It is difficult to reach them but in my case the adjustment wheels were not set at all and did not rotate. The disadvantage of such a desktop printer is that you hardly have any space under the hotbed.
The vertical V-profiles were not mounted perpendicular to the upper profile. That is difficult to repair because everything is drilled through and bolted. I recommend installing corner stiffeners at the back in the top 2 corners. I have them on order and then they can go right on.

And… what some large printers have and the A30M does not: Additional stabilization rods to the front (or to the back, that is also possible) so that the vertical profiles cannot move. Now when you apply a little force there is about 2mm of play on it, despite the solid mounting to the desktop housing.

Voron 2.4 Core XY build

My experiences with CoreXY printers are excellent, so I chose a VORON for my home-built COREXY printer with a print size of 300x300x300 mm.

Developed from a large community, the VORON is one of the best and most reliable 3D printers.  And this printer just looks really good!

Via AliExpress, Banggood, Reichelt, aluminiumopmaat.nl and plexiglas.nl I ordered all the stuff, according to the bill of materials I could download from the VORON site.

I printed the PETG parts on the Prusa mini at 0.15 fine.

The ABS parts (red and black) were printed on the Twotrees Sapphire plus.  It took a lot of ‘tweeking’ before the ABS came out well but in the end I got a nice result!

Printed parts for the Voron 2.4 300In the end, rebuilding is not really self-building and it is more based on ordering and assembling than getting to work with the saw and drill yourself.  Also the necessary 8(!) linear rails of 350mm, bearings, gears, belts, motors, electronics and so on have been ordered and the rest of the necessary stuff has been printed (25-8-2020).

For the control part I have chosen one PI Raspberry PI 4B 4GB and two pieces of SKR 1.4 turbo motherboards, according to the VORON recommendation.

Building the Voron 2.4 with the afterburner Beta1 hotend combination is illustrated by the following pictures.

Gantry ready:

Gantry of my Voron 2.4 300Housing and skirts underside with Z-motors yet without the gantry mounted:

Frame of my Voron 2.4 300
Electronics positioning underneath my Voron 2.4 300

Below: The 9 mm drive belts of the 4 Z-axes placed:

Halfway the building phase of my Voron 2.4 300

And the assembled base plate with the rails and controls, power supplies and so on (printer turned over):

Cabling and electronics of my Voron 2.4 3000: 2xSKR1.4 turbo with Klipper, Raspberry PI and Octoprint with Klipper

We are still waiting for the bearings for the Alpha and Beta drives in the gantry.  These bearings are used to make a tension roller per 2 pieces.  I had originally bought idler bearings for this purpose, but the diameter of the collar of these bearings is just too large.

Too bad but then I have to work on the Raspberry PI4B in combination with 2 times SKR V1.4 turbo motherboards.  The PI will make a new config.bin via Klipper for the SKR V1.4 motherboards so the PI can drive both SKR boards at the same time.  On the main board will be Alpha and Beta and the extruder plus the extruder heater, on the other (Z) board the 4 Z-motors and bed heater.  By itself a Duet with expansion board could have been an option too, but the Voron designers made it with the PI, Klipper and 2 SKR boards.  And I try to stay as close to the design as possible . -)

Below: Threading the straps, no picture used.  Just start somewhere and you’ll end up right.  Oh yes, also changed the sensor in the config from NC to NO..

Below: In addition to the 24Volt 200 Watt hotbed nevertheless also added the 500 Watt 230V.  With only the 24V version it took more than 20 minutes to get to 110 degrees Celsius…

Old:

And new— no PID run done yet..)

Below: The steel plate is placed on the sticky magnet sheet.

Below: First print….  I had to search for the Z offset adjustment and the extruder turned the wrong way around.  Also the gantry leveling took some thought, you actually have to make the basic setting with a ruler, otherwise the leveling takes a long time.  Nice is that a bed mesh leveling is not necessary anymore, but of course it can be done.  You turn a home and because the nozzle always calibrates the Z on the mechanical Z endstop, and the gantry does all the leveling, you always have a good first layer.  Unless the bed warps but with such a thick plate that seems almost impossible. Just to be sure, I did include a bed_mesh profile in the config.g.  By the way I just used a 24 V aluminum hotbed as a base because my 8 mm 310×310 plate turned out to be a cut plate instead of sawn.   And a cut sheet turns out to be non-flat on the cut sides by default, unfortunately.  Flattening costs more than a new plate, maybe that will come sometime….

And with enclosure, camera and the TOP LED’s:

Afterword:

In practice, I fixed a few more minor flaws, including:

Extruder tuning.  The donor extruder turned out not to pick up the filament properly.
First I tried to put a ring in between the left side of the shaft, but then the nylon gear on the right side of the shaft gets tight and the housing can’t be closed completely anymore….
I ended up using a spare set of dual drive extruder gears and swapping the set of gears.  With that, the filament was properly aligned with the running path of the gears.  See the picture how it was at first:

Misaligned filament path in Afterburner extruder

Hotend tuning
After the PID runs of hotend and heated bed, my chosen assembly of the custom ED6 heater block, the heatbreak pipe and the cooling element turned out not to fit together properly.  The result was that when the filament was extracted, a thick piece was always stuck at the end.  This was caused by the heatbreak pipe not fitting tightly on the nozzle.  There should be no play between them.  I completely demounted the filament and screwed the heatbreak pipe 2 turns less into the cooling element with red threadlocker.  Let it harden for a day and then I assembled the rest.  By the way, I also mounted the teflon version of the heatbreak pipe in stead of the titanium version.  The tintanium version was to my experience a bit too stiff.  Or my filament was too old or inferior.  In any case, after the modification, everything works without problems.

Hotbed, TPU and ABS
To print TPU and ABS without brim or skirt without warping I bought a magnetic PEI steel plate with coarse profile.  It really works perfectly. Both ABS at 110 degrees sticks nicely and TPU at room temperature sticks nicely too.  And the removal is also without problems.  Occasionally I spray a little hairspray on the plate but I don’t think that lacquer is really necessary at all.  It is meant to make the removal easier.

Tension of the belts
I tried getting the belts at the same tension, this was not that easy.  Finally I ended up with a mechanical way of measuring tension after putting 1 at my desired tension and comparing this as reference with the other to be compared belts.  So, for the Alpha and Beta belts I first did a ‘good feeling’ setting and then I used my old trunk scale weight device to measure the tension when pulling the belt A. Then, I used the device to measure at the same place for B. And I repeated this for the 4 vertical belts.

Alignment
Aligning the machine is also a bit of a challenge…
You must assume that your frame is square and straight.  You have to check this thoroughly.  Both vertically, horizontally and diagonally.  Then you can adjust the gantry. Loosen and remove the A and B belts.  Or do the alignment BEFORE placing the belts.
Fix the horizontal position of the Gantry otherwise you can’t align at all. Place 4 equal distance blocks of about 10-15 cm under the sliders of the vertical linear rails on the lower 2020 profiles, in the 4 corners through which the gantry rests stably. I have placed position holders under all MGN9 vertical linear rails afterwards so that the rails cannot slide in the 20×20 V profile.  If you use ‘regular’ 20×20 extrusion profile you don’t have a problem because there is enough ‘meat’ left for attaching your rail to the profile.  With V-profile, the groove is a bit wider and it is very difficult to mount the rails neatly without tools in the groove.  My frame is of V-rail profile and the gantry of plain 2020 profile.
The alignment of the gantry I started at the back.  Loosening all screws a bit, including the screws of the convex connectors that hold the gantry to the linear rails.  By the way, I see some builders placing these screws with multiple spring washers.  I’m going to do that too…
At the rear of the gantry, push the gantry completely against the rear.  There should be no gap between the XY joints and the frame.  PS: Leave the endstops off for a while at this action!
While the gantry is sitting against the back, tighten the XY joints and the sliders of the X-axle as well. (the side of the endstops holder is temporarily secured with 2 screws)
Tighten the rear 2 gantry joints (with the convex surfaces) as well.  This fixes the rear position at right angles.
Carefully slide the gantry forward. This should be possible without any effort.  If not, check whether there is enough play (and if necessary loosen the screws) on the gantry joints at the front (with the convex surfaces).  If you still don’t have a free run to the front, your frame is not good or your vertical rails are not seated properly.  First check the correct positioning of your rails with your position tool (from the printed stock) and to be sure also unscrew the 4 screws on both front vertical rails.  Try again if the sliding of the gantry goes smoothly.  Still no good?  Then reverse the procedure and start at the front.  Try to set the gantry exactly level with the frame.
After adjusting: Test the alignment also halfway (vertically) and at the top!

Wobbling in cheap linear bearing screws

As I experienced, from my 10+ 3d printers only the Prusa mini and the I3 Bear deliver adequate print quality.  Even the Voron 2.4 CoreXY has problems if you look carefully at the printed results.  Though all prerequisites were made to build a good printer, it was never really matching real good quality.  So- in my search for the root cause of this somewhat disappointing discovery, I stumbled on some interesting stuff: The HevORT Advanced DIY 3D Printer project.

I found this website as a link from one of my fact finding searches for the cause of wobble in my linear rails that I am using for my Indymill CNC.

Obviously, the cheaper rolled linear screws with ball bearing nuts are not as good as the ones that are first cut on a lathe and are then grinded on a special machine.  The better linear screws with ball bearings are specified into 10 categories from 1 to 10 where no.1 is most expensive and no.10 the least expensive. Quality is better with higher price.  Prices are over 500 Dollars US for the better ones, but can mount up even higher.

If you look at the category of the rolled ball bearing screws, these take a lot of strain in the material due to the manufacturing process. The strain causes an unequal surface and therefore this can cause lateral wobble.  When using these cheap linear ball bearing screws for 3d printers as Z-drives, the lateral problem can be solved by adding shifting plates as horizontal shift compensator.

On the net, a solution is given by using a couple of bearing balls (3) between magnets that are used as rolling plates on top and bottom.  The shifting plate holders on top and bottom stay aligned with each other by mounting 2 magnets that attract each other on 2 sides of these plates.  Please see the cutouts I took from the movie that is provided in the above mentioned link:

This can be implemented in the HevOrt BUT I feel that my Voron2.4 could really benefit also from this solution. Although the Voron is depending on the vertical linear rails for sliding up and down and a belt mechanism is making the motion happen, the mechanism that compensates for any wobble or different sizing of the frame is only a friction plate of (in my case) 2 PETG surfaces that slides on each other, 1 per vertical axle.

So, I will see what I can find or make to get the above anti-lateral wobble solution built and implemented in the Voron 2.4 asap and see what the result will be!

 

MMU2S on Ender3pro with TT SKR E3 mini motherboard

In 2020 I upgraded my Ender 3 with synchronised Z-axes and a new motherboard, the SKR Mini E3 V2.1.

The Ender 3 is very reliable and has been equipped with a direct drive bondtech extruder but still has the original hotend.

I chose the Ender3 to be the 3d printer on which I will attach the MMU2S.  This also means that I will have to exchange the hotend/extruder combination with a Prusa Mk3S version.

Started this on May 4th, 2021.  Only the printed parts were needed, all other parts were already available through sourcing form a.o. Ali.  I printed everything in ABS, mostly red.  For this I used 2 machines: The Twotrees Sapphire pro with enclosure for black ABS and the Voron 2.3 (300) for red ABS.

The motherboard that is also in the Ender3, SKR mini E3 V2.1.  I used this setup to test the MMU hard- and software together with the SKR mini E3 motherboard
The MMU2S on top of the Ender3, just next to the 6mm belt that connects both Z-leadscrews
The bondtech Prusa MK3S hotend/extruder combination, mounted on a 2020 mounting plate for the Ender3

There is a firmware version for the SKR mini E3 V2.1 on Github that makes use of the MMU2S.  I downloaded this version and uploaded it to the board via visual studio code maker, all works well in the test setup. Some tweaking was needed in configuration.h and in the advance config, since I am using the S-version of the MMU2 and the filament sensor was not standard ON. And- it appears that the communication port needs to change to the 2nd port. You can see it all at the Reddit page, the additional changes to the published config files are these (thnx to fixel112):

Excerpt from Configuration.h:

#define SERIAL_PORT -1

#define SERIAL_PORT_2 2 <————— This has been the issue. Uncomment that line.

#define BAUDRATE 250000

Excerpt: Configuration_adv.h

#if ENABLED(PRUSA_MMU2)

// Serial port used for communication with MMU2.

// For AVR enable the UART port used for the MMU. (e.g., mmuSerial)

// For 32-bit boards check your HAL for available serial ports. (e.g., Serial2)

//#define MMU2_SERIAL_PORT 2

#define MMU2_SERIAL MSerial2

//#define MMU2_RST_PIN 23

// Enable if the MMU2 has 12V stepper motors (MMU2 Firmware 1.0.2 and up)

//#define MMU2_MODE_12V

// G-code to execute when MMU2 F.I.N.D.A. probe detects filament runout

#define MMU2_FILAMENT_RUNOUT_SCRIPT “M600”

#define MMU2_DEBUG // Write debug info to serial output

#endif // PRUSA_MMU2

Next is to put everything physically on the Ender, and exchange the hotend/extruder.  Then, the settings for the extrusion lengths will have to be determined.  And- the buffer for the filament between the MMU2S and the filament spools has to be installed. As soon as I have it all properly installed, more pictures will follow!

I discovered that the dual display I now use for the Ender3 will only work for Marlin LCD and no longer for TFT, since the serial TFT pins will be used to drive the MMU2S unit.  I exchanged the TFT/LCD unit with the original Ender3 LCD, I kept this in storage and tested it today with the Ender mini E3 V2.1 , it works very well!

The twotrees SKR Mini E3 V2.1 motherboard is really perfect for the combination with the MMU2S and the new  filament sensor in the new hotend/extruder. The firmware has been updated to include the MMU2S and the AUX’s serial that was previously used for the TFT screen is now in use by the MMU!  It all works!!!

Now the next thing was to get the new extruder, F.I.N.D.A. and the filament sensr to work properly.

That took some time and next on the agenda is the filament management.

I already decided to go with the original Prusa filament box with plates to hold the retracted filament for all 5 spools. The spools themselves will hang at the wall, behind the printer.  I don’t have space for standing spoolholders.  Underneath the spools the filament box with plates gets its place on the wall and from there the 5 PTFE tubes will run to the MMU!

Penta extruder on A30M

Today I received my 5-in, 1-out hotend, non-mixing  air cooled with 1 nozzle and 1 heater//temp sensor.

I will install it on my A30M with the Duet2wifi board+extension board (5-fold with plug-in drivers). The A30M already has independant Z-stepper motors.

The Duet2wifi has 5 stepper ports, and the expansion board also has 5 stepper ports.  X,Y,2xZ, 5 Extruders is a total of 9 so this will indeed fit!

I will make new wiring for the 5 extruder steppers on top of the A30M frame with 5 bowden tubes to the hotend.  Since the hotend is non-mixing, this will be a  simple task to get into config.g.  For the slicer- it will also be easy. Just add the extruders to a total of 5 pieces. Add the correct filaments/temps/ no offset so set offset X and Y to 0..  The work will primarily be in  the tool changing files for T0-T5 where retraction- and extruding  settings will be needed.

For the hotend, I have a new setup available that allows me to quickly change the nozzle.

This will make it possible to use this setup for all kind of applications.

Mellow FLY-CDY-V2 motherboard

recently (3-2021) I have been setting up my new 3d printerboard from Mellow, an STM32 board that is named FLY CDY V2. It is (almost) fully compatible with Duet2Wifi and also uses its wifi-based 3d printer management system DWC.

The config file I made for this setup is HERE

The FLY_CDY_V2 board comes completely empty so I added the firmware.bin in the /sys directory, after I had an empty SD card filled with the clean reprap directories and -files.

Next to the firmware.bin. also a board.txt is required to be available in /sys with some settings, with the following content:

//Config for fly-CDY
board = fly_cdyv2
led.neopixelPin = D.15;
//wifi pins
8266wifi.espDataReadyPin = E.10;
8266wifi.TfrReadyPin = E.12;
8266wifi.espResetPin = E.11;
8266wifi.serialRxTxPins = { D.9, D.8 };
heat.tempSensePins = { B.1 , A.3 , C.4 , D.14}; be aware that D.14 is not a temp pin but a heat pin, is this wrong??
stepper.numSmartDrivers = 6;
serial.aux.rxTxPins = {A.10, A.9};

This board.txt is already OK for 2209 drivers and for the use of the neopixels output.

In the pdf that is provided by Mellow on the Github page for the reprap STM32 boards, section FLY-CDYV2, everything is explained as to get wifi up and running,  configure config.g et cetera.  

In my config.g everything needed to work properly is already done, as is with my board.txt.

I made the config for a.o. a  Cartesian printer with single X,Y,Z steppers and a triple hotend with 3 extruders, 1 heater and 3 nozzles.
Included is: Neopixels, BLTouch, 3 filament sensors on the X,Y- and Zmax inputs, active fans for hotend tool on fan1 and object on fan0
If so desired, sensorless homing is possible with the correct driver boards. In this version, 3 optical endstops have been used on inputs xmin, ymin and zmin.
Retraction is set OFF in this firmware by default, but may be swiched ON to make the triple hotend drip less (2 mm retract and -0.5 extrude without Z-hop), do experiment with these settings!
Please be aware that some pin names for the FLYCDYV2 board differ from the Duet’s naming convention like “bed” versus “bed-heater” et cetera.
Plus, some typical Duet2wifi extensions are NOT available like the GPIO bus.
The FLYCDYV2 has some interesting standard extra’s though, like the BLTouch connector with power, driver pins and Z probe pins, the Neopixel connector AND the 6 driver slots and 3 extruder heaters/sensors/fans!
It is quite simple to change this setup to a dual Z axis with independant Z-motors and either single extruder or a dual setup, single or dual nozzle, mixing or non-mixing.
Please see my complete ready-to-go config directory setups for this board HERE to get you  started! 

Also: Check my CNC Indymill running with the FLY-CDY-V2

Please donate $1 to my paypal account if you use (parts of) my developed materials so I can continue to share nice stuff for you to download

 

Magnetic dual parking extruders reprap I3 Bear with Duet2wifi and sensorless homing

My most recent and probably last build from scratch is the dual carriage I3-based printer as shown in the below picture, in the building phase.  This printer can be used either for 2 colors or for printing with soluble support PVA filament.

I decided to use sensorless homing for this build due to problems when using endstop switches.  When using endstops, problems may come up because f.i.  homing to the left means that the left tool will be parked against the endstop, should you use endstops.  Same on the right hand side when the right hand tool is parked.  I encountered difficulties that the driven sensor carriage in the middle can then get into an unknown state (or position) when both tools (carriages) are in the parked position.

If you home one of both Tools with sensorless homing, the status of the sensor carriage is always automatically known.  So, since the XY position of the center (sensor) carriage is known you can always do a Z-homing at any given X-Y position and you can also do G32 and G29 without the need to carry T0 or T1 along.  And- you can easlily reset an unknown status of the sensor carriage by homing it, either left or right.

Get my build plans and Configuration files for Duet2wifi HERE

The box at the left rear is for the Duet2wifi board.  The 24V fan-regulated power supply is already positioned at the rear,  right side.

The main challenge with this build was to get the settings perfect for the dual tools.

It took me 2 months before I got it to work perftectly for both PLA and/or Petg.

As with my previous dual color dual nozzle builds, the basics is very simple. Just define 2 tools with 2 heaters, 2 temp sensors, 2 fans et cetera.

I already envisioned the approch with the slicer(s): All offsets are done ONLY in firmware, NOT in the slicer! As far as the slicer(s) is/are concerned, the nozzles of Tool0 and 1 are at the same (X0/Y0) offset.

For the Duet, the only addition in the slicer is an M0 command as stop command for the printer.  Define 2 nozzles of 1.75mm without any offset and you’re done in the slicer.

Then, you will need to set everything in your config.g at the tool section like XYZ offset and so on.

I decided to get T0 as reference, and set everything to 0 there. X=0, Y=0 and Z=0.  Then, measure the differences at T1 versus T0 with calipers to start with and inport these values in the T1 toolsection in config.g.

Start a testprint and measure what to amend, take little steps and the metrics are done!

But- the hard part is- as I experienced- to get good prints without blobs and unexpected stringing, both incoming as outgoing (into and out of the printed object(s).  Drying the filament also helps a lot!

In the end, I just took the same approach as with the tool settings: As little as possible retraction settings in the slicer and all except the basic print retractions are now in the configuration files that are called upon Tool changes tpre.g,  tfree.g and tpost.g (for T0 and T1).

This means that you can play with retracting and extruding of filament length and speed directly at, during and after Tool changes.  And- in my experience it is all affected by the type of filament you use and the temperature you are at with the hotend. Also, the fact whether you use a lower temperature during waiting has great impact.

In my experience, you should finetune the config settings for the mentioned settings per object and per type of filament.

Therefore, I decided to used this printer for only 1 goal and make the settings perfect to accomplish this goal.  Right now, I have optimized this printer to print 1) PLA from 123print in the Netherlands, of a specific type and 2) PVA from the same supplier.  This gives me the possibility to print complex objects with soluble supports and it works extremely well at doing this!

PM: I also added LED lights on top of the printer as an integrated feature.  This makes use of a heater pin as GPIO (with a M42  P [pin] S[value intensity]) command), like the solenoids that I use to catch the carriages T0 and T1. To come from the 3.3V and max 1mA from the GPIO pin to the required 24Volts, I used small mosfet boards.  All programming is done in the Duet’s config and macro files, view the below example of my stop.g file which is called from the slicer’s stop setting: M0.

; stop.g
; called when M0 (Stop) is run (e.g. when a print from SD card is cancelled)
; Also called by slicer end gcode by M0
;
M400 ; Finish move queue
M117 Cool down ; Update the LCD screen with “Cool down”
M83 ; Extruder relative mode
G1 E-2 ; Retract filament 2mm for both extruders !!
M106 S255 ; Fan at 100 to cool nozzle and bed
M104 S0 T0 ; Extruder T0 heater off
M104 S0 T1 ; Extruder T1 heater off
M140 S0 ; Bed heater off
G28 X ; Home X
M220 S100 ; Set speed factor back to 100% in case it was changed
M221 S100 ; Set extrusion factor back to 100% in case it was changed
M42 P4 S0 ; Magnet T0 off
M42 P5 S0 ; Magnet T1 off
M104 S41 T0 ; set extruder T0 to cool down
M104 S41 T1 ; set extruder T1 to cool down
;M568 R41:41 S41:41 ; set standby and active temperatures for tools 0 and 1 (or single M568 T0 R41 S41)
M116 ; wait for Tools actions as specified in above M568 instructions
G90 ; Absolute positioning
G1 Y200 ; to get objects removed easier, move bed forward
M106 P0 S0 ; Fan L object T0 off
M106 P2 S0 ; Fan R object T1 off
G28 X ; Home X
M84 ; Steppers off
M98 P/sys/ledflash.g; Perform execution of ledflash.g in specified directory
M42 P6 S0.008 ; Led light setting almost OFF
M117 Jantec=done! ; Update the LCD screen with “Jantec=done!”

G1 X5 Y5 ; Move to corner
M140 S{print_bed_temperature} ; Set bed temp
T1 ; Select extruder 1 (or 0 depending on how your printer is set up)
M104 S{print_temperature} ; Set extruder temp
M116; Wait for temperatures

 

Please donate $1 to my paypal account if you use (parts of) my developed materials so I can continue to share nice stuff for you to download

 

Our 3d printers, managed by OCTOPI and Duet Web Controller

Above: Our Dual Bear I3 dual color 3d printer with independant carriages, this one does not run octopi and is remotely managed by Duet Web Control (DWC).

Above: The Voron 2.4, dimensions 300x300x220 mm

Prusa Bear I3plus with mods like dual Z axis control. This printer runs Duet and  DWC.

 

Kingroon Kp3S heavily modded with new firmware and tool fan. This printer runs with Octopi for remote management.

 

Twotrees Sapphire PRO with new firmware, also with octopi.

 

Voron 2.4 for Nylon and ABS printing, with external exhaust and 300+ degC printhead, bed up to 150 degC.  Also runs octopi.

 

Prusa i3 mini original, the production monster for PETG. Also on octopi.

 

And the Twotrees Sapphire pro, our perfect printer for fast production, also on octopi.

 

And the multicolour completely rebuilt Geeetech A30M dual head printer with a new Duet2Wifi motherboard, dual Chimera heatblock and direct drive extruders.  This one runs Duet with DWC instead of Octopi.

 

 

Our 3d printers, managed by OCTOPI OR Duet’s web-based app

Above: Our Dual Bear I3 dual color 3d printer with independant carriages, remotely managed by DUET’s webinterface

The Octopi solution works with a Raspberry PI, and on it the Octopi firmware.  The device you set up on your wifi and you connect it to your 3d printer’s USB. Then you have a web interface on the Raspberry’s IP address that allows you to manage all the things about your connected printer.  All the settings like temperature, mesh, and basically anything else you can manage through a local LCD.  And- you can upload your jobs to the raspberry and start/manage and adjust temperature and such.  What I really like is that you can connect a raspberry camera and follow your jobs.

The Duet I find in use and possibilities more pleasant. because in addition to everything that the octopi can, you can also modify the system files online.  And printer updates can do, directly in the firmware.  Moreover, you do not need a separate box because the Duet2wifi already has everything on board.

The disadvantage is that you can’t attach a camera to the Duet. There is a possibility em an IP camera to integrate into the DWC, Duet’s web based remote app.  And such a wifi IP camera is easy to make yourself with a cheap esp unit.

 

Above: The Voron 2.4, dimensions 300x300x220 mm

Prusa Bear I3plus with mods dual Z axis control

 

Kingroon Kp3S heavily modded with new firmware and tool fan

 

Twotrees Sapphire PRO with new firmware

 

Voron 2.4 for Nylon and ABS printing, with external exhaust and 300+ degC printhead, bed up to 150 degC

 

Prusa i3 mini original, the production monster for PETG

 

And the Twotrees Sapphire pro, our perfect printer for fast production

 

And the multicolour completely rebuilt Geeetech A30M dual head printer with a new Duet2Wifi motherboard, dual Chimera heatblock and direct drive extruders

 

 

VORON 2.4 20″x20″x20″ and DUET2WIFI

Get the documentation, specs, config.g, macros and build docs

LEES IN HET NEDERLANDS

After my succesfull buildproject of a Voron 2.4 3d printer in the fall of 2020, I still wanted a really big 3d printer with a print surface of over 20x20x20 inch.

My Voron 300x300x300mm build plate size

Imagine to have a print of more than double the size compared to the below picture!

During the build and at using the Voron 2.4 printer, I found the documentation on the hardware build really excellent.  But, the electronics part was scattered around several places, and although the Klipper implementation is very good I have experienced that the combination of 2 SKR 1.4 turbo motherboards with an Octopi controller does not provide enough operational stability to me. And- I feel the need to control more settings than I can do with the Klipper solution.  I think I probably am just more into the Duet and the reprap solution than the Klipper one, due to previous positive Duet – and MKS reprap experiences.

In a couple of previous builds I used a Duet2wifi, and I also experienced the add-ons for Duet2 like driver boards, PT100 boards and more hardware that is also very well implemented in the new RRF3+ firmware.

Duet wifi board , used for my dual head setup I3bear-based with sensorless homing

Reasons enough for me to choose the Duet2 and the 5-ports expansion board , or possibly an additional Duex board for my new to build Voron 2.4 ‘big 3d printer’.

At this page, I will share my progess on this build.

I have all required hardware laying around and since I already built a Voron 2.4, I will first focus on the electronics.  For the hardware, I still need the plexiglass sides, top and front doors.  I  do have all extrusion, bed, bed heater 230V, linear rails, all printed parts and so on, neatly stored at home.

So, I am setting up the electronics to know beforehand that everything works well.  I don’t want to start building the hardware and find out afterwards that my Duet2wifi will not do the job I want it to do.

Yesterday (October 4th,2020) I put the electronics and config.g together. I used:

  • Duet2wifi board with 24V PSU and 4.3 inch TFT/LCD
  • 5-port expansion board with 4 plug-in 2209 drivers V3.0
  • Z-switch mechanical
  • X-and Y end switches (hall-effect)
  • Hotend 24V with NTC connected including tool’s fan (I am missing the PT100’s interface board, have ordered one but I did this before so should be no problemo)
  • Hotbed simulated with another hotend including NTC
  • Stepper motors connected to X(0),Y(1) and 1 x  stepper on the expansion board Z(5) (Driver5)

The Duet2wifi board is a Chinese MKS clone with electronics version 1.02 which works fine.  The expansion board is also a Chinese one, but this is a bare-bone  implementation of the 5-ports driver add-on board that comes without drivers.  the nice thing about this add-on board is that drivers can be plugged in directly.

The Duet2 came with firmware 2.1 installed.  To get to FFR3.1, you must first install 3.0 and after this, you can move to 3.1…  be aware!

After updating the paneldue and the Duet2wifi board, I activated the wifi and put the ssid and PW in. (This procedure goes via USB between PC and Duet, using a terminal emulator like YAT)  This is a bit tiresome but given the security you get from it, I feel it is OK.

The settings that are needed to get the Chinese expension board to work are not too difficult.  Add the Z-drives, and change some other settings. On top of this page, you can download the latest doc with all info I have, and a direct download to the adapted config and macros is available in the documentation.

The rest of the build including photos will be here later!

Update 3-2021: I recently built 2 other 3d printers using Duet2wifi boards: a cartesian I3 with independent extruders and a Delta 2GS.  Not much time to work on the big Voron.  I also just rebuilt my Geetech A30M  (330x330x400mm build size) from the smartto board to Duet2wifi, Check ik out on this site!

I will probably not build the big Voron 3d printer after all,  and if I don’t, I will rebuild my existing Voron 2.4 300×300 from Klipper, octopi and 2x SKR1.4 to Duet2wifi+Duex.  That will be interesting and achievable.

UPDATE 12-2023:  I finally built me  a large Voron2.4 l!

Since I am currently running 10 different 3d printers, my space is getting cramped in the house. I don’t want to expand into another room.  One should be enough. Having more printers gives me the best possible fit of a specific  filament type per printer.

The Voron is due to its perfect prints with ABS really only used for/with ABS or nylon.

The I3Bear dual carriage works best with dual PLA or PLA&PVA.

The Prusa mini works perfect with PETG

The I3Bear solo goes perfect with PETG or PLA.

The A30M & its mixing extruder goes perfect with PLA and/or PETG

And so on….

3d applications – self-folding materials

3D printing became a hot item around 2016,  and quite a few 3d printing machines have been sold over the years.  But, at some point it seems that the use for products from these machines has faded away.

Due to the availability of 3D printers and the fact that these printers are getting better and are producing prints with better quality as they evolve over time, more applications have been developed.

In this article I will sum up a couple of these new areas in which 3D printing became a driver for new developments, which are sometimes just scratching the surface of possible future developments.

  1. Dental products.  For over 40 years , dentists are using Services from laboratories to produce Ceramic protheses for teeth.  The base for this is a mould, taken from the patient.  I recall that this was indeed not a very pleasant process for the patient.  This process was time consuming and it required also some adjusting and fine-tuning at delivering the protheses at the right place.   Currently all dentists are either producing the protheses themselves or use online deliveries that are mostly available with a production- and delivery time of less than 4 hours.  the process starts with a 3d-scan from the patient’s mouth, compared with (if available) older pictures and/or X-rays.  All is fed into a normal PC, and the software makes the 3d print data.  After that, printing the protheses is quite simple with the new ceramic printable filaments. Placing the protheses with UV-herdening glue means that someday we will be able to do this at home. Although the prepping of the place to put the protheses will still be done by a dentist, I presume.
  2. Technical parts.  For many tehnological industries the availability of 3D printers has made it possible to have faster development processes of new parts and applications,  You can think of modeling new tools,  household objects, cars and -parts, and so on.  Since new materials can be printed like aluminium, copper, gold, silver and carbon much is possible. After the developments has produced a complete product, mass-production can start and for this, the 3D design files can be handed over to make the work easy.nn In this way both time and money is saved.
  3. Art.  Maybe not the most obvious development yet, but lately I ran into some artists whom actually used 3D printing in most expressive ways, as art may do.  If you check the internet for this, some interstingexamples can be found.
  4. Medical developments.  Since 2017, a new development achieved the ability for 3D printed parts to shrink and expand, based on the printed structure.  Read this article about self-folding materials
  5. Fun printing. Many hobbyists are printing 3D objects just for fun.  To add-on applications to their 3D printer, build new ones or print household applications.

 

 

K40 lasercutter

My Chinese lasercutter which I bought back in 2014 has been upgraded over the years.  As many others do, I got the cooling system for the laser tube inside the casing, added some LED lights inside and also added an air pump for the laser head.

All in all the machine works fine now but the relatively small working area remains the bottleneck for using this machine for real interesting projects.

Mid-2020 I used the laser cutter for a couple of projects where I needed series of cut acrylic.  The machine handled this flawlessly, but I did put it outside to prevent any smoke from entering our home.

I do have some ideas about upgrading the machine with a larger workspace and put the electronics and water cooling system in a seperate housing.  No materials are needed for this, except 3 linear rails and some aluminium profiles.  But- (status May-2021)  I will start this project only if there is some work to be done with the machine since it is already working fine as it is, although the workspace is limited.

I use Inkscape (freeware) for making designs in SVG and import these .SVG files in K40whisperer (also freeware) which then  can send the required Gcode to the K40 lasercutter. This all works very well and fast, you don’t need a fast computer for this.  I use a 10 year old dedicated HP laptop for this.

In future use I want to make this lasercutter use the same board as I am using with my big LED laser cutter, so I can use GRBL on both.

As you probably know, a K40 or any other CO2 lasercutter can cut a specific kind of materials while a common LED lasercutter can cut other kind of materials better, due to the used kind of light on both which differ in wavelenghts.

The CO2 cutter can cut acrylic easily and the LED laser cutter can’t.

The LED cutter requires some sort of substance in the to be cut material to work properly.

Be aware that the security goggles you need also are specific for either macine.

The original driver board of the K40 CO2 lasercutter

First cut on a piece of tripledeck 4mm multiplex for my clock pieces

The clock’s interior and stand pieces, wood and acrylic. Both cut on the K40

The inside of the K40’s work space with the debree on the bottom. The air hose is green silicon. Also added an emergency cutoff switch for the laser tube. open the hood and the power stops.

The electronics and water cooling on the Right hand side of the K40’s housing. The air cooled radiators are just out of sight to the most right hand side of the housing, 3 pieces of 40x40mm

The acrylic cut for the clock, done in 1 time. This is 3 mm thick.

The thermostatic control of the coolant pump, taken out of its case to set the working temperatures

My solution for the cutting bed was to use an old footboard maze and I welded 4 nuts in it with long bolts that act as feet. This makes it possible to adjust the height 1x for optimum focussing the laser in the center of the to be cut material.