Folkhack’s Monoprice Mini Delta V2


The main goal of this project is to build the best Monoprice Mini Delta (MPMD) V2 printer as-possible. This is not a budget build.

The inspiration for this project was previously upgrading my Ender 3 V2 to a highly-calibrated custom Klipper rig. After completing that project I wanted to do the same with a delta printer, achieving the same print quality.

Goals:

  • Full Klipper conversion
  • Better printer ergonomics + UIX (Fluidd + KlipperScreen)
  • Noctua fans
  • Adjustable bed
  • Better leveling capability without bed switches or leveling probe (as-per Klipper best practices)
  • Dimensionally accurate prints
  • Fully document printer configuration + upgrades on completion of project for repairability and repeatability
  • All printable parts designed by myself
  • Clean + good art and modeling for parts
  • Open source completed project if others wish to repeat

Disclaimer & No Responsibility:

This project deals with AC mains electricity, electronics/components that get very hot, and heavy modification of a complex machine. This document is for general information/educational purposes only - any reliance you place on this document is at your own risk.

The author of this document makes no representations or warranties of any kind, express or implied about the completeness, accuracy, reliability, or safety of the information/instructions included in this document.

FOLLOW THESE INSTRUCTIONS AT YOUR OWN RISK.


Project TODO

  • Benchy timelapse print
  • Microswiss Extruder upgrade
  • Document updates
  • Add https://github.com/th33xitus/kiauh to RPI instructions
  • Add physical calibration section for arm length
  • Add Klipper calibration section for global Z-offset, and update bed leveling instructions to reference
  • New front printer image
  • Add misc. section for filament change notes
  • New level bed image with 0.2mm first layer
  • GitHub
  • Organize all STLs + remove _old directories
  • Add finalized printer Klipper configurations (printer.cfg, fh_macros.cfg, webcam.txt, /boot/config.txt)
  • Create repo
  • Create a readme that references this document + with base information
  • Commit/push project
  • Sign + date bottom


Issues & Oddities

  • Raspberry Pi sometimes has under-voltage (yellow lightning bolt, notifications in Fluidd)
  • Measures taken in /boot/config.txt to lower power usage like disabling WiFi
  • Should not happen unless running a USB webcam, even then it only is on temporarily when webcam is starting
  • The print X/Y origin may be slightly off-center from exact center on the bed - this is normal and is a result of the printer calibrating itself to different endstop heights
  • To combat this redo the physical printer calibration; specifically the optical endstops (but not limited to)
  • The heater bed is greatly improved from stock, but is still weak. Due to the 150W power budget of the MEAN WELL PSU only a 60W heater is used. If I’m being honest here it’s a pain in my butt that it’s so underpowered.
  • The bed adjustment screws can sometimes catch causing the bed to be lower than intended - to remedy this, pull up on all sides of the bed to make sure it’s not caught on a bed adjustment screw thread

Physical Printer Calibration

Both “Physical Printer Calibration” and “Klipper Printer Calibration” sections assume that all upgrades/conversions have been made from the “Upgrades & Conversions” section of this document.

Belt Tuning

It’s important to get all belts to a consistent tension. To do this we pluck the belt asif it were a guitar string to create an audible note.

  • Turn motors off
  • Move effector plate to topmost position
  • Identify the side of the belt that is not connected to the arm carriage - this is the side of the belt you’re going to “strum” or “pluck” - for the V2 it is the one on the right
  • Tune the audible note that the belt makes when “plucked” to A2 with a guitar/instrument tuner by plucking the belt and adjusting the tension
  • This may have to be performed in a very quiet environment
  • E2 is said to have worked as well


Bed Leveling

Before running any Klipper-level calibration we need to ensure the towers are square with the build surface.

  • Remove all trash guards + 120mm fans
  • Tighten all M4 adjustment screws on corners of the bed triangle fully
  • Back off of M4 adjustment screws to allow for some “slack” for calibration - recommended to allow for 0.5-1mm of height off of surface below printer bed
  • Use machinist’s square to level the borosilicate bed to all six tower rods
  • IMPORTANT: Make sure not to push down on the bed with the machinist’s square to avoid compressing the springs
  • Use the M4 adjustment screws to adjust bed until level with all six tower rods
  • Optional! Use plastic/paper to shim the bed triangle against surface below printer bed


Positioning Optical Endstops

  • Remove the top panel of the printer
  • Using calipers, measure from the top of the printer corner to the optical sensor
  • Top: Measure to the raised plastic that is just to the left/right of the belt tension adjustment bolt
  • Bottom: Measure to the bottom of optical sensor, with caliper between the belt
  • It may help to perform multiple measurements + average to ensure correct measurement is taken
  • Do this measurement for the X/Y/Z (or A/B/C - whatever you prefer) towers writing down each measurement - target should be around 55mm
  • Adjust the position of the optical sensor; recommended “adjust-in-place” procedure:
  • Slightly untighten one side of the bolts holding PCB to the printer body
  • Move/bump position of that side to desired height + position
  • Re-tighten adjusted side (sensor should now be crooked)
  • Adjust other side to match first adjusted side
  • IMPORTANT: Once all endstop positions are manually calibrated, tighten mounting bolts to ensure their position does not drift!
  • IMPORTANT: After all endstops are consistent with each other then turn printer on, and ensure endstops trip with Klipper QUERY_ENDSTOPS command - ensure both open/triggered state work as-desired before doing any homing!


Application of Bed Weld

  • Remove any pre-existing bed weld substance from build surface
  • Clean borosilicate surface with 99% alcohol at room temp
  • Shake bed weld to ensure well mixed
  • Apply evenly to glass bed
  • Let dry for 5ish minutes, then bring bed temp to 70C and let sit for another 5 minutes
  • Scrape build surface with metal tool to ensure irregularities removed
  • Wipe with dry cloth


Klipper Printer Calibration

Functionality Test

Operation time: 5-15m depending on if extruder e-steps tests performed

  • Ensure temps registering for al components:
  • Raspberry Pi
  • SKR Pico MCU
  • Extruder
  • Bed
  • Ensure case fan is working - should chooch at full when starting up then go back off
  • Move arms and ensure QUERY_ENDSTOP returns open and triggered states
  • Move arms manually to ensure range of motion does not interfere with any cables/bowden tube
  • Home all axes and ensure all motors are running
  • Once homed, move Z axis down by 50mm to ensure all three motors working
  • Test move macros: TEST_MOVE_A, TEST_MOVE_B, TEST_MOVE_C
  • Check heaters/thermistors:
  • Heat bed to 70C and ensure registers with thermistor
  • Heat extruder to 60C and ensure registers with thermistor, ensure fan on
  • Heat extruder to 210C and ensure registers with thermistor
  • With extruder heated to 210C (or appropriate for loaded filament) retract by 10mm to ensure extruder motor working as-expected
  • Ensure part cooling fans work at different %’s
  • Run ALERT macro to ensure piezo buzzer working
  • Run TEST_SENSORS macro to test the ADXL345 and ensure <100 for returned noise
  • Test extruder e-steps:
  • Ensure filament either fully or partially loaded (will need 30mm or more of filament in the bowden tube)
  • Heat-up extruder to appropriate temp (if needed)
  • Mark the filament with a Sharpie at the base of intake bowden tube
  • Retract by 20mm at 10mm/s
  • Measure from the base of the bowden tube, to the mark and ensure is 20mm


PID Tuning

Operation time: 15m

  • Run PID_TUNE command in Klipper terminal
  • Save and restart when finished


E-steps

Operation time: 15m

https://www.klipper3d.org/Rotation_Distance.html#calibrating-rotation_distance-on-extruders

  • (from scratch) Starting printer.cfg extruder.rotation_distance value = 23.3
  • Ensure extruder has filament in it and is preheated to appropriate temp
  • Make mark 70mm from extruder intake then measure exact value with calipers as <initial_mark_distance>
  • Extrude 50mm of filament:
  • Automatic (uses macro): CALIBRATE_ESTEPS_50MM
  • Manual:
  • G91
  • G1 E50 F60
  • Measure distance between extruder intake mark as <subsequent_mark_distance>
  • Note extruder.rotation_distance in printer.cfg value as <previous_rotation_distance>
  • Calculate rotation distance: <rotation_distance> = <previous_rotation_distance> * (<initial_mark_distance> - <subsequent_mark_distance>) / 50
  • Save value in printer.cfg extruder.rotation_distance
  • If actual extrude distance difference from requested is >2mm then re-run calibration


DELTA_CALIBRATE METHOD=manual (basic)

Operation time: 5m (10-15m if finding stepper_*.position_endstop)

https://www.klipper3d.org/Delta_Calibrate.html

Pre-flight Checklist

  • Optical endstops correctly placed
  • Belts tuned
  • Build surface leveled manually with machinist’s square
  • Bed weld applied
  • Functionality test ran/passed
  • All filament removed
  • No filament in nozzle
  • Extruder/bed at room temp

Configuration Reset - printer.cfg

We will need to revert back to previous settings to re-run the delta calibration. This process will also invalidate any previous bed meshes, so we must remove those as-well:

  1. Backup existing config (optional)
  2. Reset printer.cfg config:
  1. Un-comment starting printer.print_radius and delete from dynamic [printer] config section (sections below ← SAVE_CONFIG →)
  2. Un-comment starting stepper_*.position_endstop and stepper_*.arm_length and delete all dynamic [stepper_*] config sections
  3. Delete all [bed_mesh] and [delta_calibrate] dynamic config sections

Finding stepper_*.position_endstop

To start, we will want to find an accurate endstop position so that our z-offsets are as-close to zero as-possible. We will accomplish this by starting a DELTA_CALIBRATE from the KlipperScreen, and ensuring our z-offset is zero for the starting point.

  • On the KlipperScreen go to “Calibration” > “Z Calibrate” > “Start” > “Delta Manual”
  • Lower by 5mm (or whatever delta_calibrate.horizontal_move_z is set to)
  • Perform the paper test, calibrating the z-offset
  • Once the paper test is done, set the stepper_*.position_endstop values to z_offset * -1 + previous value (122.21 at the time of writing)
  • Save + restart
  • Re-run the manual delta calibration from the KlipperScreen, lower by 5mm, and ensure paper test immediately passes without any z-offset calibration; rinse-repeat if results not as-expected

DELTA_CALIBRATE (Basic)

  • On the KlipperScreen go to “Calibration” > “Z Calibrate” > “Start” > “Delta Manual”
  • Go through entire calibration doing paper test at each point
  • Save and restart when complete

Next Steps

  • Manual bed mesh calibration
  • Setting build volume in Simplify3D (or other slicers)
  • Test prints to prepare for DELTA_CALIBRATE extended process; hone the following:
  • Extrusion settings (temperature, extrusion multiplier)
  • First-layer accuracy (first layer height override)
  • Retraction (distance, wipe distance)
  • Klipper pressure advance
  • Full DELTA_CALIBRATE extended process


Manual Bed Mesh

Operation time: 10m (15m if test print is performed)

Resources

Procedure

  • Ensure both bed + extruder room temp (best practices as-per Klipper documentation)
  • On the KlipperScreen go to “Calibration” > “Bed Mesh” > on “default” mesh row “Calibrate”
  • Go through entire calibration doing paper test at each point
  • Save and restart when complete
  • If bed mesh is significantly out of whack along a plane then adjust the bed screws to attempt to fix manually; then re-run basic DELTA_CALIBRATE + bed mesh

Test Print

  • mpmd/mpmd_tests/delta_bed_test.stl - 100mm bed level test print
  • mpmd/mpmd_tests/delta_bed_test_04.stl - 100mm bed level test print, for 0.4mm first layer height

DELTA_CALIBRATE basic + manual bed mesh
calibrated bed with 0.4mm first layer height


Simplify3D Build Volume

Operation time: 5m

  • Take “printer.delta_radius” value from printer.cfg and add as radius to the following calculator: https://www.omnicalculator.com/math/square-in-a-circle
  • Use the “side of square” value to set the “Build Volume X/Y” values in Simplify 3D FFF settings tab “G-Code” (circle within square)
  • Divide the “side of square” value by two and set as the “Origin Offset X/Y” values
  • Ensure that the toolhead offset is set to X=0, Y=1 to account for nozzle Y offset


Pressure Advance

Operation time: 30m (20-25m for print, 5-10m for measuring + configuration)

https://www.klipper3d.org/Pressure_Advance.html

mpmd_tests/pressure_advance.stl

Procedure

  • Ensure Simplify 3D build volume has height of 100mm
  • Import the 100mm pressure advance tower referenced above and set the following settings:
  • 0.3mm layer height
  • 2-4mm retraction
  • 250mm/s retraction speed
  • 1mm wipe distance
  • 100mm/s print speed (speeds tab)
  • Perform retraction during wipe (advanced tab)
  • Export the GCODE and upload to Klipper
  • Before print run macro CALIBRATE_PRESSURE_SETUP
  • When print is done, measure from the bottom to the best corner quality
  • Also measure dimensions and pick lower height if dimensions are better
  • Prefer a lower height
  • Set extruder.pressure_advance to measured height * 0.02 (0.68 at the time of writing) (optional - may want to just skip ahead to setting up a custom GCODE macro)
  • Save and restart
  • IMPORTANT: Make sure to set your layer height back to a sane setting!

Add GCODE Macro

After completing the pressure add a macro both to fh_macros.cfg, and to Simplify3D pre-print.

[gcode_macro SET_PRESSURE_ADVANCE_PLA]

description: Sets pressure advance for specific material

gcode:

    SET_PRESSURE_ADVANCE ADVANCE=0.68


DELTA_ANALYZE CALIBRATE=extended (extended)

Operation time: 30m for print, 30m for measuring + spreadsheet (not inclusive of re-running bed mesh)

Resources

Pre-flight Checklist

  • Basic DELTA_CALIBRATE performed successfully
  • Default bed mesh created
  • Slicer settings correct for build dimensions and center axis
  • Pressure advance + retraction settings dialed in for dimensional accuracy
  • Test prints are dimensionally accurate

Procedure

  • Import calibrate_size.stl to slicer and set to 70% size, ensuring center on the center axis
  • Print generated GCODE
  • Let print cool so part does not warp coming off of bed warm
  • Trim any extrusion errors to prepare for face-to-face measurements
  • Go through spreadsheet tool:
  • Copy generated script into Klipper terminal and run, will output to console while working “Working on calibration…”
  • When finished save and restart

Post-calibration steps - IMPORTANT!

  • Re-run bed mesh calibration - any time a DELTA_CALIBRATE is ran (basic or extended) it invalidates the mesh
  • Re-configure Simplify3D (or other slicer) build volume + offsets
  • Do new round of test prints:
  • Level bed test
  • Dimensional accuracy tests
  • Kinetics of printer should be fully setup - should be ready to calibrate the resonance for input shaping


Resonance

Operation time: 45m

Resources

Procedure

  • After kinetics are configured for printer run the CALIBRATE_RESONANCE command and wait for completion
  • Save and restart


Maintenance

NOTE: Bottom assembly/disassembly is greatly sped up by using the printed tool in the “Bottom Driver Tool” section of this document.

Disassembly

  • If working on extruder:
  • Remove all filament before shutdown/disassembly
  • Unplug everything
  • IEC AC power
  • Camera/misc. USB
  • Network RJ45
  • Cut any filament at the extruder
  • Remove bottom bolts:
  • Ensure 120mm fan upgrades currently installed - these help keep the printer from rolling over in the next steps!
  • Put printer on it’s back Z tower, with the AC plug section hanging over since it protrudes from printer body
  • Remove the bottom 12 screws on the bottom (fig 1)
  • Go by feel for when bolt breaks free of threads + final thread jump
  • Ensure to support the bottom compute bottom section, typically by holding the AC plug corner while taking out the final bolts
  • Once all bolts are free then carefully tilt the compute bottom section toward you, allowing M3 16mm bolts to fall into your lap/on the floor; there should be ample cabling slack for this procedure, but be careful not to pull/yank on top/bottom cable interface. Do not worry if all of the bolts do not come out - we will fix this in the next step
  • Positioning printer up-right, and into “maintenance mode”:
  • Position the bottom and top sections on each other as-if they were attached, and carefully bring printer upright on the desk
  • Pick the top of the printer up and put it into “maintenance position” being careful to not pull or yank on top/bottom cable interface (fig 2)
  • If all 12 M3 16mm bolts did not fall out then poke hex key-tool into top of each hole to push them free
  • Disconnecting the top/bottom cable interface:
  • Position the printer on its front-facing face (the face between X/Y towers, fig 3)
  • Carefully disconnect each cable supporting both ends of the connectors to not pull wiring out of JST/dupont/molex connectors
  • Skinny pliers are useful to disconnect stubborn JST connectors

Fig 1. Printer top / compute bottom recessed bolt holes

Fig 2. “Maintenance mode” position - for accessing compute internals while printer still capable of printing

Fig 3. Position for disconnecting the printer-to-compute cable harness


Assembly

  • Make sure that the part cooling fan JST-SM connectors are fully taped down
  • Before full assembly it is recommended to run a functionality check to ensure everything is wired correctly + working
  • Bottom to MPMD V2 printer body (top)
  • Start by getting 3 bottom corner bolts loose but not falling out on each corner by CAREFULLY letting printer foot slightly overhang desk, as seen in above image
  • Once first 3 bolts are in, go back around tightening them
  • Repeat previous process, but now tighten all the way now that feet are aligned
  • Put printer on it’s back (AC IEC socket on desk) and put in remaining 6 bolts
  • Ensure everything tight when finished
  • Top handle plate to printer body (top)
  • Use washers!


System Wiring Diagram

Upgrades & Conversions

Optical Endstop Ballast/Pull-up Cabling

The optical endstops on the MPMD are just pass-through connections to a slotted photo microsensor with phototransistor output. I am not sure, but I believe the sensor to be an Omron EE-SX198 or EE-SX199 - https://www.mouser.com/datasheet/2/307/sx1025-1190149.pdf

To get this into a pull-up configuration a custom cable is made including a ballast resistor (R1 - required) for the emitter LED, and a pull-up resistor for the signal coming from the phototransistor collector (R2 - potentially optional). Alternatively one may be able to omit the R2 pull-up by instead enabling the RP2040’s internal pull-up resistor in Klipper with the “^” character; ex: “endstop_pin: ^gpio4” - this has not been tested by the author of this document!

Custom Ballast/Pull-up Resistor Cabling

  • Resistors soldered inline and built into cable segment
  • Shrink tubing is used to insulate components from shorting
  • Not fully shown in fig. 1 - reuse the cabling that runs up the towers to the sensors, building the circuit in the SKR Pico to top/bottom cable interface
  • Recommended to reuse existing endstop cables
  • Test the wiring is correct for reused tower cables with multimeter
  • IMPORTANT: Test with QUERY_ENDSTOPS to ensure working before homing to avoid damaging steppers - a stuck-open circuit will cause the stepper to crash the top of the arm into the printer.

Fig 1. Diagram for MPMD V2 optical endstop cabling

Custom Ballast/Pull-up Resistor Cabling Hardware List

2.5mm JST-XH 2 pin male connectors

3

2.5mm JST-XH 2 pin female connectors

3

1k Ω resistors

3

220 Ω resistors

3

24 AWG 3P stranded wire

 X

Heat shrink tubing of various sizes

X

Fig 2. Completed cables for X/Y/Z axis endstops

MPMD V1/V2 Wiring Differences

There are wiring and layout differences between the MPMD V1 and V2 endstops that can cause a lot of confusion when replacing them. V1/V2 wiring diagrams as-follows:

Positioning

To calibrate the correct position for the optical endstops first remove the top and measure to the bottom of the optical sensor from the top corner bracket. Make sure all are consistent measurements - this will result in consistent stepper_*.position_endstop values and better print quality.

The starting/default stepper_*.position_endstop should be approx 122mm since our modified extruder nozzle is lower than the stock configuration.

See
“Physical Printer Calibration > Positioning Optical Endstops” section for more detailed information + full instructions.


Printer Base - PSU + Cooling

To hold the needed electronics + upgraded power supply we need to print an extended base that the MPMD will sit on top of. The base is also designed in a way for modular disassembly of the printer for upgrades/maintenance.

The way everything is wired is in segments, with connector “interfaces” to ease maintenance, repair, and upgrade operations. This document refers to the “top/bottom cable interface” which is the bundle of connectors at the base of the MPMD which can be disconnected to fully separate the printer base, and the MPMD printer “top.” Cabling such-as the part cooling fan power will be ran to this before it is ran to its final destination in the printer.

Base Features:

  • Fused IEC AC power socket
  • Mount for an upgraded MEAN WELL 120W 12V PSU
  • Cooling for PSU, Raspberry Pi, and Bigtree SKR Pico
  • Mounts for ethernet and USB

Top/bottom cable interface

Print List

base/ac_corner/ac_corner_final.stl

base/corners/corner_final.stl x2

base/vent_wall/vent_wall_final.stl

base/fan_wall/fan_wall_final.stl

base/front_wall/front_final.stl

base/bottom/bottom_final.stl

Hardware List

  • Wiring included in list will be from the PSU to top/bottom cable interface or the SKR Pico for the fan, the component to the top/bottom interface segment will be listed on that upgrade’s section

Fused AC IEC male power socket

1

Noctua 40mm x 20mm 12V non-PWM fan

1

MEAN WELL LRS-150-12 12V 150W PSU

1

Heavy rubber speaker adhesive feet

4

M4 8mm bolts - bottom to corners

6

M4 knurled nuts 6mm x 6mm - corners bottom mount

6

M3 15mm bolts - corners to bottom of MPMD V2

12

M3 4mm bolts - fused AC IEC male power socket to back corner mount

2

M3 knurled nuts 6mm x 5mm - fused AC IEC male power socket to back corner mount

2

M4 10mm bolts - walls to corner mounts

12

M4 knurled nuts 6mm x 6mm - walls to corner mounts

12

M4 30mm bolts - Noctua fan mount

4

M3 nuts - Noctua fan mount

4

M2 knurled nut 3mm x 3.5mm - PSU to bottom top mount

1

M2 6mm bolt - PSU to bottom top mount

1

M3 4mm bolts - bottom of bottom to PSU mount

2

18 AWG stranded wire in green, white, and black - fused IEC male power socket wiring; can be easily salvaged from an IEC cable

X

22 AWG stranded wire in red, black - PSU to top/bottom cable interface for 120mm part cooling fans

X

16 AWG female spades - fused AC IEC male power socket wiring

7

16 AWG M5 forks - PSU AC load, PSU SKR Pico power terminators

5

22 AWG M5 forks - PSU to 120mm part cooling fan power at top/bottom cable interface

2

2.5mm JST-XH 2 pin male connector - Noctua fan to SKR Pico

1

2.5mm JST-SM 3 pin male connector - PSU to 120mm part cooling fan power at top/bottom cable interface (3rd pin will be populated in the “SKR Pico” section)

1

Fused AC IEC Male Power Socket

  • 18 AWG used
  • VERY IMPORTANT: When wiring is completed, FULLY TEST with a multimeter in continuity mode multiple times before plugging into AC mains

Assembly Notes

  • When assembling all base parts, start by attaching the corners to the MPMD first, then building parts around that. This ensures that the parts interface correctly vs. fully assembling + tightening everything and having the tolerance be out of spec.
  • VERY IMPORTANT: Exercise extreme caution + testing when working with power


SKR Pico + Raspberry Pi

The core MCU is replaced with the Bigtree SKR Pico to fully support Klipper + advanced printer features. Controlling the MCU is a Raspberry Pi 3.

Bigtree SKR mounted to 25mm brass standoffs above Raspberry Pi

Raspberry Pi mounted to risers by 25mm (20mm + 5mm) brass standoffs

Ethernet/USB runs, piezo glued to riser

SKR Pico Pinout + Silkscreen

Raspberry Pi GPIO Pinout

1

2

5V Power - SKR Pico

3

4

5V Power - SKR Pico

5

6

GND - SKR Pico

7

8

GPIO14 - SKR Pico Serial

9

10

GPIO15 - SKR Pico Serial

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

GPIO26 - Piezo 3V (signal)

37

38

GND - Piezo ground

39

40

Bigtree SKR Pico Connection List

Power

MEAN WELL DC Out 1

HB

Heated bed heater

HE

Hotend heater cartridge

E

Extruder “A” stepper motor

X

X/A stepper motor

Y

Y/B stepper motor

Z

Z/C stepper motor

Raspberry Pi 5V + Serial

Raspberry Pi GPIO

Fan 1

Hotend fan

RGB PWM

Part cooling fan PWM speed control signal

THB

Heated bed thermistor

TH0

Hotend thermistor

X-STOP

X custom ballast + pull-up then to X optical endstop

Y-STOP

Y custom ballast + pull-up then to Y optical endstop

Z-STOP

Z custom ballast + pull-up then to Z optical endstop

Building + Flashing Klipper to Bigtree SKR Pico

NOTE: These instructions are pretty rough thanks to the original instructions being pretty bad from GitHub. Refer to the Klipper docs and SKR Pico GitHub readme if you run into issues.

Resources:

From the Linux console:

cd ~/klipper/

make menuconfig

From “menuconfig”

  • Enable extra low-level configuration options
  • Set “Microcontroller Architecture” to “Raspberry Pi RP2040”
  • Set “Communication Interface” to “Serial (on UART0 GPIO1/GPIO0)
  • Press “q” to exit, selecting “Yes” when prompted to save
  • ~/klipper/out/klipper.uf2 will be generated - download it to your local system to prepare for flashing the SKR Pico

Firmware install

  • Ensure no power is connected from printer
  • Install the USB power jumper (jumper directly behind USB C port)
  • Set the boot jumper (jumper directly in center of board)
  • Connect the USB C to local system - a volume named “RPI-RP2” should show up
  • Copy over the klipper.uf2 file over to the directory; the system should immediately reboot loading the new firmware
  • Remove the boot jumper (while on)
  • Click reset button again to go to normal operating mode - volume should disappear from system
  • Remove the USB cable
  • Remove the USB power jumper

Raspberry Pi /boot/config.txt

After any updates to /boot/config.txt ensure to reboot before settings take effect!

Resources:

Needed Configurations:

  • SKR Pico serial through GPIO
  • Remove “console=serial0,115200”
  • Add “dtoverlay=pi3-miniuart-bt” to enable serial
  • Waveshare 4.3in DSI LCD
  • Remove “display_auto_detect=1”
  • Remove “camera_auto_detect=1”
  • Replace “dtoverlay=vc4-kms-v3d” with “dtoverlay=vc4-fkms-v3d”
  • Add “start_x=1”
  • ADXL345
  • Enable SPI with “dtparam=spi=on”
  • Increase GPU memory with “gpu_mem=256”
  • Disable audio by setting “dtparam=audio=off”

Sample Finished /boot/config.txt


# Disable audio

dtparam=audio=off

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

#

#  DSI Display Options

#

# Ensure camera not auto detected

# camera_auto_detect=1

# Ensure display not auto detected

# display_auto_detect=1

# Disable KMS VC4 V3D driver

# dtoverlay=vc4-kms-v3d

# Comment out max framebuffers setting

# max_framebuffers=2

# Disable FKMS VC4 V3D driver

dtoverlay=vc4-fkms-v3d

# Explicitly start X (not necessary - but was in Waveshare docs)

# start_x=1

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

#

#  ADXL345 - enable SPI

#

dtparam=spi=on

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

#

#  SKR Pico GPIO serial communication

#

[all]

dtoverlay=pi3-miniuart-bt

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

#

#  Better GPU memory

#

[all]

gpu_mem=256


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

#

#  Power saving

#

[all]

# Clock CPU frequency down from 1200Mhz

# arm_freq=900

# Disable WiFi and Bluetooth

dtoverlay=disable-wifi

dtoverlay=disable-bt

dtoverlay=pi3-disable-wifi

dtoverlay=pi3-disable-bt

# Disable LEDs

dtparam=act_led_trigger=none

dtparam=act_led_activelow=on

# Disable HDMI

# - https://raspberrypi.stackexchange.com/a/82996

# - https://github.com/raspberrypi/firmware/issues/352#issuecomment-355844013

hdmi_blanking=2

Disabling HDMI on boot:

From the Linux console edit the /etc/rc.local and add “/usr/bin/tvservice -o” before exit to ensure HDMI is disabled on every boot.

Print List

base/rpi/rpi_riser_final.stl x2 - risers to mount the Raspberry Pi + SKR Pico on top of the PSU

base/piezo/piezo_cradle_final.stl - piezo glued cradle which is glued to riser

Hardware List

  • Wiring included in list will be from the RPI and SKR Pico to top/bottom cable interface, the component to the top/bottom interface segment will be listed on that upgrade’s section

Bigtree SKR Pico

1

Bigtree SKR Pico serial/power to Pi cable (included with Pico)

1

Raspberry Pi 3

1

USB 3 male-to-female 12in cable

1

RJ45 male-to-female CAT6 cable (re-crimped to 6-8cm)

1

40 pin female Dupont connector - GPIO for Raspberry Pi

1

Piezo speaker

1

M3 8mm bolts - bottom to Raspberry Pi riser mounts

4

M3 knurled nuts 6mm x 5mm - Raspberry Pi riser mounts

2

M2 4mm bolts - SKR Pico to brass stand-offs

4

M2 20mm brass stand-off - 25mm brass stand-offs from Pi to SKR Pico

4

M2 5mm brass stand-off - 25mm brass stand-offs from Pi to SKR Pico, 5mm brass stand-offs from RPI risers

4

M2 washers - mounts for rpi_riser_final.stl to 25mm brass stand-offs

4

M2 knurled nuts 3mm x 3.5mm - mounts for rpi_riser_final.stl to 5mm brass standoffs

4

M3 8mm bolts - front USB mount, side ethernet mount

4

24 AWG wire of all colors

X

24 AWG 4P stranded wire - RPI ADXL345 > M Dupont at top/bottom cable interface, new stepper motor cables

X

18 AWG stranded wire in red, black - PSU to SKR Pico cable; can be easily salvaged from original MPMD wiring

X

3 pin female Dupont connector - back connector for piezo

1

6 pin male Dupont connector - RPI ADXL345 to top/bottom cable interface

1

4 pin JST-XH male connector - SKR Pico extruder stepper “A,” X/Y/Z steppers to top/bottom cable interface

4

16 AWG ferrules - PSU to SKR Pico power, SKR Pico heater bed + extruder heater cartridge power to top/bottom cable interface

6

2.5mm JST-XH 2 pin male connectors - heater block fan at SKR Pico (fan 1) to top/bottom cable interface, heater bed thermistor to top/bottom cable interface, hotend thermistor to top/bottom cable interface

3

2.5mm JST-XH 3 pin male connector - SKR Pico RGB PWM channel part cooling to top/bottom cable interface

1

Optical endstop pull-up + ballast resistor custom cables from “Optical Endstops” portion of doc - SKR Pico X/Y/Z endstops to top/bottom cable interface

3

Molex 2 pin male connector - SKR Pico heater bed power to top/bottom cable interface

1

2.5mm JST-XH 2 pin female connector - heater bed thermistor to top/bottom cable interface

1

2.5mm JST-XH 4 pin female connector - extruder stepper motor “A” SKR Pico to top/bottom cable interface

1

2.5mm JST-SM 2 pin female connectors - hotend thermistor SKR Pico to top/bottom cable interface, hotend fan SKR Pico to top/bottom cable interface

2

2 pin female JST-SYP connector - hotend heater cartridge SKR Pico to top/bottom cable interface

1

4 pin JST-SM female connectors - SKR Pico X/Y/Z steppers to top/bottom cable interface

3

2mm 6 pin JST-PH male connectors - top/bottom cable interface to printer-mounted X/Y/Z steppers

3

Superglue

X

Assembly Notes

  • Piezo buzzer is glued to the mount, then to the RPI risers
  • Label the pin 1 side for the ADXL345 Dupont connectors with silver Sharpie
  • Label the cables at the top/bottom cable interface with silver/black Sharpie both on connectors, and on the heatshrink
  • Reuse the white ring X/Y/Z/A labels when crimping new extruder/stepper/etc. cables
  • Use heat shrink around base of JST-SYP connectors to help keep static
  • Add the SKR Pico PWM signal to the 120mm part cooling fan 3 pin JST-SM that was setup in the “Printer Base” section
  • Keep cable bunches relatively loose, avoiding static cabling - when assembling/disassembling the printer you want cables to move free so they find a natural resting position without binding themselves or stressing internal components; little groups of zip-tied bunches are much more preferred to one giant zip-tied “home-run”


KlipperScreen

Print List

base/display/display_case_front_final.stl

base/display/display_case_back_final.stl

base/display/display_case_back_bracket.stl

Hardware List

Waveshare 4.3in DSI LCD screen

1

6-12in DSI cable

1

M2 knurled nuts 3mm x 3.5mm - front to back screen mount

4

M2 15mm bolts - front to back screen mount, base front wall to screen mount

6

M2 washers - base front wall to screen mount

2

M2 knurled nuts 6mm x 3.5mm - base front wall to screen mount

2

M4 10mm thumb screw - interaction angle adjust screw

1

M4 knurled nut 6mm x 6mm - interaction angle adjustment screw mount

1

Assembly Notes

  • To get the screen to operate correctly you must follow the instructions in the “SKR Pico + Raspberry Pi” section which outlines specific configurations in /boot/config.txt on the Raspberry Pi.
  • It does not seem that the back screws are necessary for mounting the screen although holes do exist


Hotend Vertical Cabling Segment

Yea - it’s a lot of crimping and cable creation… but to develop this printer it has been required to be able to replace, and reconfigure everything constantly. Segmenting the cabling has allowed for easier development. This entire thing could be refactored out of the end-design by extending the hotend cabling all the way down to the top/bottom cable interface (or even perhaps further).

Top/bottom cable interface

Top of printer cable interface

Anchor point for top of printer cable interface; uses the old holes from stock extruder PCB

Interface Gender Quick-list

Bottom of printer cable interface:

  • Hotend fan - male JST-SM
  • Hotend heater cartridge - male JST-SYP
  • Hotend thermistor - male JST-SM
  • ADXL345 - female Dupont

Top of printer cable interface:

  • Hotend fan - female JST-SM
  • Hotend heater cartridge - female JST-SYP
  • Hotend thermistor - female JST-SM
  • ADXL345 - male Dupont

Hardware List

2.5mm JST-SM 2 pin male connectors - hotend fan bottom of printer cable interface to top of printer cable interface, hotend thermistor bottom of printer cable interface to top of printer cable interface

2

2.5mm JST-SM 2 pin female connectors - hotend fan bottom of printer cable interface to top of printer cable interface, hotend thermistor bottom of printer cable interface to top of printer cable interface

2

2 pin male JST-SYP connector - hotend heater cartridge bottom of printer cable interface to top of printer cable interface

1

2 pin female JST-SYP connector - hotend heater cartridge bottom of printer cable interface to top of printer cable interface

1

6 pin male Dupont connector - ADXL345 bottom of printer cable interface to top of printer cable interface

1

6 pin female Dupont connector - ADXL345 bottom of printer cable interface to top of printer cable interface

1

24 AWG stranded wire red, black - hotend fan, potentially heater thermistor

X

24 AWG 6P stranded wire - ADXL345

X

16 AWG stranded high-temp wire - heater cartridge power (likely included with cartridge)

X

Zip-ties

X

Assembly Notes

  • Zip-tie the cabling to the right side 120mm part cooling fan - there was not enough room to perform the run up one of the towers… trust me I tried.
  • Use the old mounting holes from the MPMD V2 extruder female-to-female PCB that was mounted in the top of the printer to anchor run to top of printer (pictured above)


Micro Swiss/Creality Extruder

Resources

Print List

extruder_knob/extruder_knob_final.stl

Hardware List

Micro Swiss bowden dual-gear extruder w/Creality Ender 3 compatibility (plus included hardware)

1

Creality 42-34 stepper motor

1

Assembly Notes

  • Install new Micro Swiss extruder, and new Creality extruder stepper motor at same time
  • Follow install instructions in the PDF if needed - even though the printers differ vastly the install is very much 1:1 between them
  • Reuse the existing vertical extruder wire run - may need to rewire to support the upgraded Creality 42-34 - see “Stepper Motor Wiring” section for more information

Hotend Shroud

  • Stock hotend is replaced a Creality-compatible one
  • Fan is replaced by a 40mm x 10mm Noctua
  • Upgraded bowden tube
  • Addition of an ADXL345 for Klipper resonance calibration

Top of printer cable interface not taped

Top of printer cable interface taped to hinder movement around connectors

Nozzle Offset

With the new hotend + shroud the nozzle is offset by 1mm on the Y axis, and -10mm on the Z axis. For the Y axis, it is helpful to configure your Slicer to account for this - especially when doing the extended DELTA_CALIBRATE. See section “Simplify3d Build Volume” for more information + instructions.

Print List

shroud/shroud_final.stl - effector plate to hotend/etc. shroud with 40mm fan mount

shroud/fan_grill_final.stl - 40mm fan grill

Hardware List

Noctua 12V 40x10mm 3an

1

ADXL345

1

Creality-style hotend (compatible with Ender 3)

1

Bowden PTFE tube

1

NTC thermistor

1

Cartridge heater

1

M3 16mm bolts - 2 for fan + grill mounts, 1 for top left grill

3

M3 nuts - top left fan grill bolt

1

M3 knurled nuts 6mm x 5mm - fan + grill mount, bottom effector plate mount

5

M2 16mm bolts - hotend mount

2

M2 knurled nuts 6mm x 3.5mm - hotend mount

2

M2 4mm bolts - ADXL345 mount

2

M2 knurled nuts 3mm x 3.5mm - ADXL345 mount

2

M2 washers - ADXL345 mount

2

M3 8mm bolts original MPMD button-heads! - shroud to effector plate mounting; use the original button-head bolts to keep them as-flush as possible with bottom of effector plate

3

Zip-ties

X

Velcro cable ties

X

24 AWG 6P stranded wire - ADXL345 to top of printer cable interface

X

24 AWG stranded wire - fan/perhaps thermistor cable

X

16 AWG stranded high-temp wire - heater cartridge power (likely included with cartridge)

X

6 pin female Dupont connector - ADXL345 to top of printer cable interface

2

2 pin male JST-SYP - heater cartridge to top of printer cable interface

1

2 pin male JST-SM connectors, hotend fan cable interface, thermistor to top of printer cable interface, hotend fan to top of printer cable interface

3

2 pin female JST-SM connector, hotend fan cable interface

1

Assembly Notes

  • Use the previous length of bowden tubing + cabling to inform you how long new cables should be
  • Use high-temp tesa tape around extruder stepper motor, does not need to be tight - just enough to shield interface connectors from heat + to help reduce movement at the base of the connectors
  • Zip-tie the heater cartridge, thermistor, and fan wires to the top-right mounting hole of the fan to help reduce movement at the base of the connectors
  • IMPORTANT: Zip-tie only the electric cabling; then use velcro for the bowden tube to allow for more dynamic movement; zip-ties on bowden tubing suffers from more mechanical problems like binding and snagging
  • IMPORTANT + WARNING: While working on the shroud + effector plate be careful to not bend the arms!


120mm Part Cooling + Trash Shields

Goal is to have more effective part cooling that does not require a second fan on the print head/extruder assembly.

TODO!

Dual 120mm PWM part cooling fans + vertical cabling zip-tied to right fan

Right 120mm fan with vertical cabling zip-tied

TODO!

Back trash shield with 120mm PWM wiring + connectors taped down

TODO!

Right trash shield with opening for vertical cable run; vertical cable run zip-tied to 120mm fan

TODO!

Left trash shield, fully blocked

Print List

part_cooling/part_cooling_fan_rig_final.stl x2 - left/right fan rigs

part_cooling/trash_shield_back_final.stl - back/Z trash shield

part_cooling/trash_shield_left_final.stl - left/X trash shield

part_cooling/trash_shield_right_final.stl - right/Y trash shield

Hardware List

Noctua 12V 120mm PWM fans

2

Double-sided mounting tape - keeps JST-SM connectors flush with bed to avoid effector plate interference

X

M4 30mm bolts - Noctua 120mm fan to part_cooling_fan_rig_final.stl

4

M4 knurled nuts 6mm x 6mm - mounts for M4 30mm fan bolts

4

M3 12mm bolts - mounting hardware for part_cooling_fan_rig_final.stl to printer body

4

M3 8mm bolts - left/right trash guards to printer body

2

22 AWG stranded wire

X

Heat shrink tubing of various sizes - custom Y cabling

X

2.5mm JST-SM 3 pin male connectors - outside M/F connectors

2

2.5mm JST-SM 3 pin female connectors - outside M/F connectors, Y split to top/bottom cable interface

3

Assembly Notes

  • IMPORTANT: Use double-sided mounting tape to ensure that the JST-SM plugs are flush with the build surface; otherwise they will interfere with the effector plate! (if needed - trash shields may hold JST connectors down)
  • IMPORTANT: Noctua fans require a 5V PWM channel - we use the PWM channel from the SKR Pico RGB port IO24; the Pico SKR standard fan channels are 12V which will kill the fans!
  • Power is tapped directly from 12V power supply
  • Holes are utilized on the Noctua fan for extruder heater, thermistor, extruder fan, and ADXL345 vertical cable management
  • Fan cable has Y split to support both fans from one PWM channel


Adjustable Borosilicate Bed + 60W Heating Pad

  • Borosilicate for flat print surface
  • Bed treatments intended like Magigoo, etc.
  • Adjustment screws/springs allow for easier squaring bed to tower rods
  • Makes Home-Fried 3D Printing “shimming” procedure easier and optional
  • You can still shim under the bed/mount plates
  • 60W bed allows for more flexibility in printing

Print List

bed/ba_clamp_bottom_final.stl x3 - bottom bed clamp section

bed/ba_clamp_top_final.stl x3 - top bed clamp section

bed/ba_top_mount_ring_final.stl - top mounting ring (on top of printer body)

bed/ba_bottom_mount_ring_final.stl - bottom mounting ring (inside printer body)

bed/ba_thermal_template_110mm.st (optional) - 110mm ring template to cut thermal pad

Hardware List

M2 3mm x 3.5mm - bed corner mount knurled nuts

6

M2 3mm x 3.5mm - top ring mount knurled nuts

3

M4 4.5mm x 6mm - bottom triangle mount knurled nuts - NOTE: non-standard size filed down from M4 6mm x 6mm

3

M2 6mm bolts - bed corner clamp

6

M2 washers - bed corner clamp

6

M2 6mm bolts - top-to-bottom ring mount

3

M2 washers - top-to-bottom ring mount

3

M4 12mm bolt - bed height adjustment bolt

3

M4 washers - bed height adjustment bolt

3

0.6mm x 8mm x 10mm springs (coil diameter x outer diameter x length)

3

110mm circular thermal pad - NOTE: non-standard size cut from 200x200mm

1

120mm circular borosilicate glass bed

1

Molex 2 pin female connector - heater pad cable to top/bottom cable interface

1

2.5mm JST-XH 2 pin male connector - heater pad thermistor to top/bottom cable interface

1

Assembly Notes

  • May want to sand the aluminum bed to ensure no irregularities in the top surface
  • Once everything is assembled then run through the “Calibration: Bed Leveling” section
  • When installing the bottom ring you may need to unplug one of the stepper motors to allow the clearance for it to fit in
  • Do your best to get rid of bubbles when adhering borosilicate to thermal pad, but if there’s some inconsistencies that’s to-be expected due to inconsistencies in the stock aluminum build plate part surface


Filament Spooler

Print List

mpmd/filament_spooler/filament_spooler_top_final.stl

mpmd/filament_spooler/filament_spooler_shaft_final.stl

mpmd/filament_spooler/filament_spooler_spacer_large_final.stl x2

mpmd/filament_spooler/filament_spooler_spacer_small_final.stl x4

Hardware List

Bearings 8mm x 2mm x 7mm (skateboard bearings)

4

M2 12mm bolts

2

M2 or M3 washers

2

M2 knurled nuts 6mm x 3.5mm

2

Zip-tie

1


Handle + Top Hardware Replacement

Print List

handle/handle_side_final.stl x2

handle/handle_shaft_final.stl

Hardware List

M3 12mm bolts - top printer plate to bottom of handle mount

4

M3 washers - top printer plate to bottom of handle mount (4), (optional) upgraded top hardware

18

M3 knurled nuts 10mm x 5mm - top printer plate to bottom of handle mount

4

M5 20mm bolts - shaft to handle sides mount

2

M5 knurled nuts 8mm x 7mm - shaft to handle sides mount

2

M3 4mm - (optional) top printer plate upgraded hardware

6

M3 8mm - (optional) top printer plate upgraded hardware

12


Tower Cable Clips

These replace the thin plastic cable guards that were previously in the tower. My MPMD V2 shipped with these all screwed up so they were immediately removed before even attempting to print. These push into the same rails that the optical endstops mount to with an interference fit.

Print List

clips/clip_final.stl x8 (2-per tower; 2 extras in case they break)

Bottom Driver Tool

This part is totally optional. It converts an M3 allen wrench into a crude “driver” to make assembly/disassembly easier when it comes to the bottom bolts. It’s definitely not perfect, but vs. using the allen wrench by hand it makes the process go way faster.

Print List

driver_tool/driver_tool_top_final.stl

driver_tool/driver_tool_bottom_final.stl

Hardware List

M2 8mm bolts

2

M2 washers

2

M2 knurled nuts 6mm x 3.5mm

2

M3 allen wrench

1


Miscellaneous Notes & Fixes

Stepper Motor Wiring

Throughout the project different stepper motors were tested for the extruder “A” motor. An E3D pancake stepper and a Creality 42-34 were tested with the Creality winning.

Between the stock, the pancake, and the Creality stepper motors, different wiring configurations were necessary to get the motors to work as-expected. It is advised to wire the motors up as-expected and then debug if you find errors.

Stepper Motor Issues Potential Fixes

  • IF you find your motors to be backwards:
  • Swap the cardinality of the pins (ex: 1, 2, 3, 4 > 4, 3, 2, 1) OR
  • Fix it in Klipper by adding a “!” to the dir_pin configuration option, ex: “dir_pin: !gpio4”
  • IF you find your motors to be weirdly stuttering without moving much (experienced with E3D pancake stepper testing):
  • Try swapping the middle two pins (ex: 1, 2, 3, 4 > 1, 3, 2, 4)


Rotation Distance

IMPORTANT: the V1 and V2 versions of the Delta have differing rotation_distance parameters! (V1 has 14 teeth on the stepper toothed gear where-as the V2 has 16)!!! If you misconfigure this you will have hell on earth trying to level your bed + all of your prints will be dimensionally inaccurate.

Two different ways to get this configuration value:

  • From “steps per mm”:
  • From belt characteristics:


USB Webcam Options with v4l2-ctl

Get Settings

To list available USB resolutions (from Linux terminal):
v4l2-ctl -d /dev/video1 --list-formats-ext

To list device controls (from Linux terminal):

v4l2-ctl -l

Use v4l2-ctl for Settings

Instead of using the “camera_usb_options” in webcam.txt, use v4l2-ctl –set-ctrl=* - advanced options supplied to “camera_usb_options” don’t actually work (ex: disable auto focus).

Sample webcam.txt

#  Base USB options

# camera_usb_options="-r 1920x1080 -q 100 -f 2"

camera_usb_options="-r 1280x720 -q 85 -f 10"

camera_streamer=mjpeg

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

#  v4l2-ctl settings

v4l2-ctl --set-ctrl=brightness=0

v4l2-ctl --set-ctrl=contrast=51

v4l2-ctl --set-ctrl=saturation=64
v4l2-ctl --set-ctrl=sharpness=80

v4l2-ctl --set-ctrl=gamma=300

v4l2-ctl --set-ctrl=hue=0

v4l2-ctl --set-ctrl=exposure_auto=0

v4l2-ctl --set-ctrl=exposure_absolute=300

v4l2-ctl --set-ctrl=white_balance_temperature_auto=0

v4l2-ctl --set-ctrl=white_balance_temperature=4600

v4l2-ctl --set-ctrl=focus_auto=0

v4l2-ctl --set-ctrl=focus_absolute=68

Focus Notes

To get a solid manual focus once you’ve got the camera positioned you can use the following to figure out the “focus_absolute” (or other) value:

v4l2-ctl --set-ctrl=focus_absolute=280

It is best to set a similarly sized object on the print bed to focus on it and ensure that the exposure isn’t blown-out.

Timelapse

Install Moonraker-timelapse (has great install instructions! Ensure to add the update_manager option to moonraker.conf) - https://github.com/mainsail-crew/moonraker-timelapse/

Follow the slicer/timelapse configuration instructions, including timelapse.cfg in printer.cfg, and enabling it with [timelapse] in the moonraker.cfg https://github.com/mainsail-crew/moonraker-timelapse/blob/main/docs/configuration.md

NOTE! Restart Moonraker then Klipper every time you make an update - if you don’t specifically do this, in this order, you will have service errors. Saving the config and restarting will not cause the full configuration to load in, resulting in either [timelapse] invalid config section or missing macro errors.

Setup the output directories:

  • Create directory on the Linux console
  • mkdir ~/timelapse_videos
  • Update moonraker.cfg and set the output directory
  • output_path: ~/timelapse_videos/


Filament Change Instructions/Notes

Resources

printer.cfg Macro

[gcode_macro M600]

description: Proxy macro for extended PAUSE with an ALERT

gcode:

    PAUSE

    ALERT

TODO:

  • Add STL for test
  • Add notes for homing


SKR Pico Fan Channel Transistor Fix

If you’re an idiot like me and incorrectly wire your hotend fan to your hotend thermistor (and vice-versa) you may blow the transistor for the fan channel and summon magic smoke.

To fix this, you can find the popped transistor on the BOTTOM of the SKR Pico and replace it with an SOT23 AO3400 N-type transistor.


Research/Inspiration


MPMD V2 Easter Egg Appreciation

Easter egg memorial sticker found hidden within bottom of printer <3