Compare commits

...

16 Commits

17 changed files with 220 additions and 37 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@@ -634,7 +634,8 @@
// Above this temperature the heater will be switched off.
// This can protect components from overheating, but NOT from shorts and failures.
// (Use MINTEMP for thermistor short/failure protection.)
#define HEATER_0_MAXTEMP 275
// TODO: Change HEATER_0_MAXTEMP to 300 after Sprite Pro extruder upgrade
#define HEATER_0_MAXTEMP 275 // MBO
#define HEATER_1_MAXTEMP 275
#define HEATER_2_MAXTEMP 275
#define HEATER_3_MAXTEMP 275
@@ -834,8 +835,8 @@
#define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
// is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.
//#define PID_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of flash)
#define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of flash)
#define PID_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of flash) // MBO
#define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of flash) // MBO
#endif
// @section safety
@@ -855,7 +856,8 @@
* Note: For Bowden Extruders make this large enough to allow load/unload.
*/
#define PREVENT_LENGTHY_EXTRUDE
#define EXTRUDE_MAXLENGTH 600
// TODO: To be decrease with Sprite Pro?
#define EXTRUDE_MAXLENGTH 600 // MBO
//===========================================================================
//======================== Thermal Runaway Protection =======================
@@ -1170,7 +1172,7 @@
//#define ENDSTOP_NOISE_THRESHOLD 2
// Check for stuck or disconnected endstops during homing moves.
//#define DETECT_BROKEN_ENDSTOP
#define DETECT_BROKEN_ENDSTOP // MBO: enable
//=============================================================================
//============================== Movement Settings ============================
@@ -1197,6 +1199,7 @@
* Override with M92
* X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
*/
// TODO: change e-step (93) to fit Sprite Pro extruder => https://www.youtube.com/watch?v=lH-RrjtiC8M
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 93 }
/**
@@ -1244,7 +1247,7 @@
* When changing speed and direction, if the difference is less than the
* value set here, it may happen instantaneously.
*/
#define CLASSIC_JERK
//#define CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
#define DEFAULT_XJERK 10.0
#define DEFAULT_YJERK 10.0
@@ -1298,15 +1301,19 @@
// See https://marlinfw.org/docs/configuration/probes.html
//
//
// MBO: BLTouch 5 pins connector tutorial : https://www.youtube.com/watch?v=qK5ThhZEKw0
//
/**
* Enable this option for a probe connected to the Z-MIN pin.
* The probe replaces the Z-MIN endstop and is used for Z homing.
* (Automatically enables USE_PROBE_FOR_Z_HOMING.)
*/
#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN // MBO: disable
// Force the use of the probe for Z-axis homing
//#define USE_PROBE_FOR_Z_HOMING
#define USE_PROBE_FOR_Z_HOMING // MBO: enable
/**
* Z_MIN_PROBE_PIN
@@ -1321,7 +1328,7 @@
* - Normally-closed (NC) also connect to GND.
* - Normally-open (NO) also connect to 5V.
*/
//#define Z_MIN_PROBE_PIN -1
#define Z_MIN_PROBE_PIN PC14 // MBO: SKR Mini E3 v2
/**
* Probe Type
@@ -1515,12 +1522,14 @@
// PROBE_OFFSET with original extruder fans
//#define NOZZLE_TO_PROBE_OFFSET { -44, -14, -2.725 }
// PROBE_OFFSET with SATSANA fangs extruder fans
#define NOZZLE_TO_PROBE_OFFSET { -51, -12, 0 }
// TODO: To be change after Sprite Pro upgrade
#define NOZZLE_TO_PROBE_OFFSET { -51, -12, 0 } // MBO
// Most probes should stay away from the edges of the bed, but
// with NOZZLE_AS_PROBE this can be negative for a wider probing area.
#define PROBING_MARGIN 15
#define PROBING_MARGIN 10 // MBO: change from 15 to 10
// X and Y axis travel speed (mm/min) between probes
#define XY_PROBE_FEEDRATE (133*60)
@@ -1633,8 +1642,8 @@
// Require minimum nozzle and/or bed temperature for probing
//#define PREHEAT_BEFORE_PROBING
#if ENABLED(PREHEAT_BEFORE_PROBING)
#define PROBING_NOZZLE_TEMP 120 // (°C) Only applies to E0 at this time
#define PROBING_BED_TEMP 50
#define PROBING_NOZZLE_TEMP 150 // (°C) Only applies to E0 at this time // MBO: change from 120 to 150
#define PROBING_BED_TEMP 60 // MBO: change from 50 to 60
#endif
// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
@@ -1872,7 +1881,8 @@
// After a runout is detected, continue printing this length of filament
// before executing the runout script. Useful for a sensor at the end of
// a feed tube. Requires 4 bytes SRAM per sensor, plus 4 bytes overhead.
#define FILAMENT_RUNOUT_DISTANCE_MM 8
// TODO: to be changed after Sprite Pro and new filament sensor installation
#define FILAMENT_RUNOUT_DISTANCE_MM 8 // MBO
#ifdef FILAMENT_RUNOUT_DISTANCE_MM
// Enable this option to use an encoder disc that toggles the runout pin
@@ -1943,10 +1953,10 @@
/**
* Auto-leveling needs preheating
*/
#define PREHEAT_BEFORE_LEVELING
#define PREHEAT_BEFORE_LEVELING // MBO
#if ENABLED(PREHEAT_BEFORE_LEVELING)
#define LEVELING_NOZZLE_TEMP 120 // (°C) Only applies to E0 at this time
#define LEVELING_BED_TEMP 50
#define LEVELING_BED_TEMP 60 //
#endif
/**
@@ -2150,7 +2160,7 @@
#define HOMING_FEEDRATE_MM_M { (20*60), (20*60), (4*60) }
// Validate that endstops are triggered on homing moves
#define VALIDATE_HOMING_ENDSTOPS
#define VALIDATE_HOMING_ENDSTOPS // MBO: enable
// @section calibrate
@@ -2416,7 +2426,7 @@
*
* View the current statistics with M78.
*/
//#define PRINTCOUNTER
#define PRINTCOUNTER // MBO: enable
#if ENABLED(PRINTCOUNTER)
#define PRINTCOUNTER_SAVE_INTERVAL 60 // (minutes) EEPROM save interval during print. A value of 0 will save stats at end of print.
#endif
@@ -3354,17 +3364,17 @@
#endif
// Support for Adafruit NeoPixel LED driver
#define NEOPIXEL_LED
#define NEOPIXEL_LED // MBO: enable
#if ENABLED(NEOPIXEL_LED)
#define NEOPIXEL_TYPE NEO_GRB // NEO_GRBW, NEO_RGBW, NEO_GRB, NEO_RBG, etc.
// See https://github.com/adafruit/Adafruit_NeoPixel/blob/master/Adafruit_NeoPixel.h
#define NEOPIXEL_PIN PA8 // LED driving pin
#define NEOPIXEL_PIN PA8 // MBO: LED driving pin for BBT SKR E3 Mini v2.0
//#define NEOPIXEL2_TYPE NEOPIXEL_TYPE
//#define NEOPIXEL2_PIN 5
#define NEOPIXEL_PIXELS 17 // Number of LEDs in the strip. (Longest strip when NEOPIXEL2_SEPARATE is disabled.)
#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255)
#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup
#define NEOPIXEL_PIXELS 17 // Number of LEDs in the strip. (Longest strip when NEOPIXEL2_SEPARATE is disabled.) // MBO: 17
//#define NEOPIXEL_IS_SEQUENTIAL // Sequential display for temperature change - LED by LED. Disable to change all LEDs at once.
#define NEOPIXEL_BRIGHTNESS 127 // Initial brightness (0-255) // MBO: 127
#define NEOPIXEL_STARTUP_TEST // Cycle through colors at startup // MBO: enable
// Support for second Adafruit NeoPixel LED driver controlled with M150 S1 ...
//#define NEOPIXEL2_SEPARATE

View File

@@ -1032,23 +1032,25 @@
//
// Add the G35 command to read bed corners to help adjust screws. Requires a bed probe.
//
#define ASSISTED_TRAMMING
#define ASSISTED_TRAMMING // MBO: enable
#if ENABLED(ASSISTED_TRAMMING)
// Define from 3 to 9 points to probe.
//#define TRAMMING_POINT_XY { { 35, 30 }, { 205, 30 }, { 205, 205 }, { 35, 205 } }
#define TRAMMING_POINT_XY { { 35, 30 }, { 180, 30 }, { 180, 200 }, { 35, 200 } }
//#define TRAMMING_POINT_XY { { 35, 200 }, { 35, 30 }, { 180, 30 }, { 180, 200 } }
// TODO: Change after Sprite Pro upgrade
#define TRAMMING_POINT_XY { { 27, 205 }, { 25, 35 }, { 184, 30 }, { 184, 205 } } // MBO
// Define position names for probe points.
#define TRAMMING_POINT_NAME_1 "Front-Left"
#define TRAMMING_POINT_NAME_2 "Front-Right"
#define TRAMMING_POINT_NAME_3 "Back-Right"
#define TRAMMING_POINT_NAME_4 "Back-Left"
#define TRAMMING_POINT_NAME_1 "Back-Left"
#define TRAMMING_POINT_NAME_2 "Front-Left"
#define TRAMMING_POINT_NAME_3 "Front-Right"
#define TRAMMING_POINT_NAME_4 "Back-Right"
#define RESTORE_LEVELING_AFTER_G35 // Enable to restore leveling setup after operation
//#define REPORT_TRAMMING_MM // Report Z deviation (mm) for each point relative to the first
#define REPORT_TRAMMING_MM // Report Z deviation (mm) for each point relative to the first // MBO: enable
#define ASSISTED_TRAMMING_WIZARD // Add a Tramming Wizard to the LCD menu
#define ASSISTED_TRAMMING_WIZARD // Add a Tramming Wizard to the LCD menu // MBO: enable
//#define ASSISTED_TRAMMING_WAIT_POSITION { X_CENTER, Y_CENTER, 30 } // Move the nozzle out of the way for adjustment
@@ -1098,7 +1100,7 @@
#endif
//#define SHAPING_MIN_FREQ 20 // By default the minimum of the shaping frequencies. Override to affect SRAM usage.
//#define SHAPING_MAX_STEPRATE 10000 // By default the maximum total step rate of the shaped axes. Override to affect SRAM usage.
//#define SHAPING_MENU // Add a menu to the LCD to set shaping parameters.
#define SHAPING_MENU // Add a menu to the LCD to set shaping parameters.
#endif
// @section motion
@@ -2657,7 +2659,8 @@
// This short retract is done immediately, before parking the nozzle.
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 50 // (mm/s) Unload filament feedrate. This can be pretty fast.
#define FILAMENT_CHANGE_UNLOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate.
#define FILAMENT_CHANGE_UNLOAD_LENGTH 400 // (mm) The length of filament for a complete unload.
// TODO: Change FILAMENT_CHANGE_UNLOAD_LENGTH after Sprite Pro upgrade
#define FILAMENT_CHANGE_UNLOAD_LENGTH 400 // (mm) The length of filament for a complete unload. // MBO
// For Bowden, the full length of the tube and nozzle.
// For direct drive, the full length of the nozzle.
// Set to 0 for manual unloading.
@@ -2666,7 +2669,8 @@
// 0 to disable start loading and skip to fast load only
#define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 60 // (mm/s) Load filament feedrate. This can be pretty fast.
#define FILAMENT_CHANGE_FAST_LOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate.
#define FILAMENT_CHANGE_FAST_LOAD_LENGTH 400 // (mm) Load length of filament, from extruder gear to nozzle.
// TODO: Change FILAMENT_CHANGE_FAST_LOAD_LENGTH after Sprite Pro upgrade
#define FILAMENT_CHANGE_FAST_LOAD_LENGTH 400 // (mm) Load length of filament, from extruder gear to nozzle. // MBO
// For Bowden, the full length of the tube and nozzle.
// For direct drive, the full length of the nozzle.
//#define ADVANCED_PAUSE_CONTINUOUS_PURGE // Purge continuously up to the purge length until interrupted.

View File

@@ -7,10 +7,12 @@
5. [Marlin custom firmware](#marlin-custom-firmware)
6. [Printer calibration](#printer-calibration)
7. [3D printed custom parts & mods](#3d-printed-custom-parts--mods)
8. [Klipper custom firmware](#klipper-custom-firmware)
8. [BBT SKR mini E3 v2 pinout](#btt-skr-mini-e3-v2-pinout)
# Octoprint backup archive
[2025-01-01] [Ender3-backup-20250101.zip](octoprint-cfg-bkp/Ender3-backup-20250101.zip)
[2025-02-11] [Ender3-backup-20250211-234353.zip](octoprint-cfg-bkp/Ender3-backup-20250211-234353.zip)
# Slicers
@@ -228,11 +230,178 @@ After firware update, proceed with the different calibrations in the above order
| Item | 3D files | Final result |
|-------|-----------|--------------|
| [BTT SKR E3 mini mainboard](https://www.aliexpress.com/item/4001050145015.html) | n/a | ![show off](images/mods/btt-skr-e3-mini-v2.jpg) |
| [BTT SKR E3 mini mainboard](https://www.aliexpress.com/item/4001050145015.html) - [pinout](#btt-skr-mini-e3-v2-pinout) | n/a | ![show off](images/mods/btt-skr-e3-mini-v2.jpg) |
| [BLTouch](https://www.aliexpress.com/item/32777786433.html) for Automatic Bed Leveling (ABL) | n/a | ![show off](images/mods/bltouch.jpg) |
| _Raspberry Pi 4 / Octoprint case_ ([tutorial to enable power switch/LED](https://web.archive.org/web/20250101204129/https://embeddedcomputing.com/technology/open-source/development-kits/raspberry-pi-power-up-and-shutdown-with-a-physical-button)) | [Printable](https://www.printables.com/model/1008828-creality-ender-3-station-lcd-raspberry-pi-4) | ![show off](images/mods/octoprint-case.jpg) |
| _Ender 3 PSU Support Bracket_ | [Thingiverse](https://www.thingiverse.com/thing:3444134) | ![show off](images/mods/psu-support-bracket.jpg)|
| Filament runout sensor | n/a | ![show off](images/mods/filament-runout.jpg) |
| Filament Guide | [Thingiverse](https://www.thingiverse.com/thing:6930315) | ![show off](images/mods/filament-guide.jpg) |
| Gantry led holder | n/a | ![show off](images/mods/gantry-led-holder.jpg) |
| Filament runout sensor | n/a | ![show off](images/mods/filament-runout.jpg) |
| Filament Guide | [Thingiverse](https://www.thingiverse.com/thing:6930315) | ![show off](images/mods/filament-guide.jpg) |
| Gantry led holder | n/a | ![show off](images/mods/gantry-led-holder.jpg) |
| Aukey LM1 WebCam holder | [Thingiverse](https://www.thingiverse.com/thing:4683831) | ![show off](images/mods/aukey-LM1-webcam-holder.jpg) |
| PSU exhaust fan silencer | [Printable](https://www.printables.com/model/84197-60mm-exhaust-fan-silencer-flowmaster-psu-ender3nep/comments#preview.file.GpvjC) | ![show off](images/mods/psu-exhaust-fan-silencer.jpg) |
| Tool holder | [Local](local-stl/Tools_Holder_v3.stl) | ![show off](images/mods/tool-holder.jpg) |
| SATSANA Ender 3 - BLTouch (Z-Offset: X-51 ; Y-12) | [Printable](https://www.printables.com/model/58601-satsana-ender3-bltouch-fixed) | ![show off](images/mods/satsana-bltouch-for-hotend.webp) |
# BBT SKR mini E3 v2 pinout
![BBT SKR mini E3 v2 pinout](images/BTT-SKR-mini-E3-v20-pinout.png)
# Klipper custom firmware
## Klipper configuration backup
2025-03-05 : [klipper-config-files-20250305-150641.zip](klipper/config/klipper-config-files-20250305-150641.zip)
- Initial config save
## Printer firmware build and update
1. Access klipper host using ssh
```
ssh ender3k
```
2. Stop Klipper service
```
sudo service klipper stop
```
3. Browse to Klipper directory:
```
cd ~/klipper
```
4. Pull the last version of the Klipper firmware from Github:
```
git pull
```
5. Clean up working directory before building firmware
```
make clean
```
6. Check the firmware build configuration
```
make menuconfig
```
![Klipper firmaware build configuration](klipper/img/klipper-skr-mini-e3-v2-fw-config.png)
7. Build the firmaware:
```
make
```
8. Transfer the built firmware on an micro SD card
The built firmware `klipper.bin` is in the `~/klipper/out/` directory
Use a SCP client to retreive it, and rename it **`firmware.bin`**.
9. Flash the new firmware to the printer's SKR mini E3 v2 board
1. Turn off the printer power.
2. Introduce the SD card into the SKR board reader
3. Turn back on the printer power.
11. Restart Klipper service
```
sudo service klipper start
```
12. Check Klipper service is properly restarted
```
sudo service klipper status
```
![Klipper service status check](klipper/img/ender3-klipper-service-started.png)
## ADXL345 accelorometer
Model used: [Aliexpress](https://www.aliexpress.com/item/1005006515088013.html) \
![Klipper ADXL345 config](klipper/img/klipper-adxl345-printer-config.png)
### Software prereqiusites
Note that resonance measurements and shaper auto-calibration require additional software dependencies not installed by default. First, run on your Raspberry Pi the following commands:
```
sudo apt update
sudo apt install python3-numpy python3-matplotlib libatlas-base-dev libopenblas-base
```
Details on Klipper [documentation](https://www.klipper3d.org/Measuring_Resonances.html#software-installation)
### Firmware configuration and build
1. Configure the firmaware:
```
cd ~/klipper
make clean
make menuconfig
```
![ADXL345 Firmare config](klipper/img/klipper-adxl345-fw-config.png)
2. Build the firmware:
```
make
```
### Firmware flash
1. Set the ADXL345 board in DFU mode by plugin it to the USB cable while maintaining the RST switch down.
2. Check that the board is actually in DFU mode
```
lsusb
```
![ADXL345 board in DFU mode](klipper/img/ender3-adxl345-dfu-mode.png)
4. Note the device `ID` (in our example: `2e8a:0003`)
5. Flash the firmware
```
make flash FLASH_DEVICE=2e8a:0003
```
Once flashed, the board will automatically reboot and goes back in operation mode.
# Auto-reconnect printer after power-on
[Source](https://arnav.jain.se/2020/auto-restart-klipper-when-ender3-connected-to-pi/) by Arnav Jain. \
[Wallabag backup](https://wallabag.igox.org/view/211)
---
Start off by accessing klipper host using ssh.
```
ssh ender3k
````
Then create the `98-klipper.rules` file in the `/etc/udev/rules.d/` folder:
```
sudo touch /etc/udev/rules.d/98-klipper.rules
```
Retreive `idVendor` and `idProduct` for the Klipper MCU:
1. Retrieve Klipper MCU ID
```
lsusb
```
![Find Klipper MCU ID](klipper/img/ender3-find-mcu-id.png)
2. Retrieve `idVendor` and `idProduct` using the Klipper MCU ID
```
lsusb -v -d 1d50:614e | grep id
```
![idVendor and idProduct](klipper/img/ender3-klipper-mcu-idvendor-idproduct.png)
Then add the following text into the `98-klipper.rules` file just created:
1. Edit the `98-klipper.rules` file
```
sudo nano /etc/udev/rules.d/98-klipper.rules
```
2. Add text (remove the `0x` at the begining of the IDs)
```
## rule to restart klipper when the printer is connected via usb
SUBSYSTEM=="usb", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="614e", ACTION=="add", RUN+="/usr/bin/sudo -u pi /bin/sh -c '/bin/echo RESTART > /home/pi/printer_data/comms/klippy.serial'"
```
Finally, re-load the udev rules:
```
sudo udevadm control --reload-rules
# BTT SKR mini E3 v2 pinout
![BBT SKR mini E3 v2 pinout](images/BTT-SKR-mini-E3-v20-pinout.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB