185 Commits

Author SHA1 Message Date
Bassam Husain
9a7f380806 Adjust, minor. 2025-05-26 18:35:52 -04:00
Bassam Husain
75f1ed3261 Adjust stepper_z run_current: 0.800. 2025-05-26 14:33:28 -04:00
Bassam Husain
2275a7d2c1 Adjust sense_resistor to 0.110 for more testing.
https://github.com/Sovol3d/Sv06-Source-Code/blob/main/Marlin/Configuration_adv.h#L2648-L2730
2025-05-24 18:19:39 -04:00
Bassam Husain
596532691a Turn function that allows prints to start when bed temp is 'target - 1' into a param in _globals. 2025-05-17 20:39:44 -04:00
Bassam Husain
a60fcc71ef Merge branch 'personal' of github.com:bassamanator/Sovol-SV06-firmware into personal 2025-04-01 11:41:12 -04:00
Bassam Husain
417bc4ec69 New nozzle adjustments. 2025-04-01 02:03:06 -04:00
Bassam Husain
e85e82dc06 Merge branch 'personal-dev' into personal 2025-02-20 22:54:54 -05:00
Bassam Husain
033fdd7ee7 Adjust PRINT_END again to account for paused state. 2025-01-02 02:36:14 -05:00
Bassam Husain
f031abd7f6 New mesh. 2025-01-01 21:17:05 -05:00
Bassam Husain
5da31f9b34 Adjust z_offset. 2025-01-01 21:08:35 -05:00
Bassam Husain
0478309365 Adjust axis twist. 2025-01-01 21:02:03 -05:00
Bassam Husain
a0ad64f901 Adjust axis twist. 2025-01-01 20:48:19 -05:00
Bassam Husain
febcd7440b Adjust PRINT_END to account for paused state, should fix cancel bug when extruder temp lower than min extrude temp. 2024-12-31 17:47:56 -05:00
Bassam Husain
b9ed130fd2 Backup config bundle. 2024-12-30 17:32:11 -05:00
Bassam Husain
8e70e0e3f5 New mesh. 2024-12-12 19:13:26 -05:00
Bassam Husain
e238428afd Backup ps bundle. 2024-11-24 23:52:10 -05:00
Bassam Husain
301dc1044a Adjust gitignore. 2024-10-03 00:22:37 -04:00
Bassam Husain
fad19dbc27 Clean whitespace from misc macros. Adjust gitignore. 2024-10-03 00:11:43 -04:00
Bassam Husain
ed6b675c6a Pull in updated test_speed macro. 2024-08-28 22:34:47 -04:00
Bassam Husain
76cc9eef0e Merge branch 'personal-dev' into personal 2024-08-28 22:26:43 -04:00
Bassam Husain
f20bbdf254 Add timelapse.cfg. 2024-08-05 18:36:46 -04:00
Bassam Husain
4ffefffcc5 Adjust mesh. 2024-08-05 18:36:26 -04:00
Bassam Husain
9c20f21d94 Adjust mesh. 2024-07-23 18:56:01 -04:00
Bassam Husain
2c90f78f03 Adjust current y, z. 2024-07-22 15:03:59 -04:00
Bassam Husain
ac3f0070ff Adjust temp sections. 2024-07-10 02:12:50 -04:00
Bassam Husain
d253eeb002 New mcu path. 2024-07-10 01:45:28 -04:00
Bassam Husain
17ae6c265d New axis twist, mesh. 2024-06-23 12:33:36 -04:00
Bassam Husain
3a0299b45d New PA value. 2024-06-22 19:01:41 -04:00
Bassam Husain
73b1a96f03 Adjust axis twist, new mesh. 2024-06-04 00:00:08 -04:00
Bassam Husain
dd603dfe80 Adjust z_offset. 2024-06-03 23:35:01 -04:00
Bassam Husain
fa89bdd165 New resonances. 2024-05-23 01:09:00 -04:00
Bassam Husain
713dd4b173 New resonances. 2024-05-01 17:25:52 -04:00
Bassam Husain
0644d167d8 New mesh. 2024-05-01 17:12:38 -04:00
Bassam Husain
f8d7423d7c Merge branch 'master' into personal 2024-04-17 08:42:45 -04:00
Bassam Husain
b7590c5378 PID tuning. 2024-03-11 15:05:37 -04:00
Bassam Husain
df73b75790 Adjusted bed_mesh. 2024-03-09 21:31:10 -05:00
Bassam Husain
5ed8a1c715 Adjusted axis twist. 2024-03-09 21:26:25 -05:00
Bassam Husain
f04a5f6356 Adjusted axis twist. 2024-03-09 21:14:09 -05:00
Bassam Husain
fc3ff650e9 Adjusted z_offset. 2024-03-09 21:01:22 -05:00
Bassam Husain
0581a0a9b3 Adjusted input shaper, new mesh. 2024-03-09 17:29:00 -05:00
Bassam Husain
d67cb0724e Merge branch 'master' into personal 2024-02-21 02:58:43 -05:00
Bassam Husain
91ed87f294 Adjust timeout. 2024-01-26 12:05:57 -05:00
Bassam Husain
802357f36a New mesh. 2023-12-23 03:12:44 -05:00
Bassam Husain
aad0c772af Misc changes to personal. 2023-12-19 01:14:35 -05:00
Bassam Husain
d1b540f8d3 Misc changes to personal. 2023-12-19 01:12:52 -05:00
Bassam Husain
b0515ae312 Adjust idle_timeout section. 2023-12-14 04:26:08 -05:00
Bassam Husain
f5d5239d14 New mesh. 2023-12-14 04:21:28 -05:00
Bassam Husain
3c17e1f68b Adjust port. 2023-12-14 02:30:46 -05:00
Bassam Husain
c8fde98cf4 Enable filament sensor. 2023-12-13 16:45:23 -05:00
Bassam Husain
c938303455 Merge branch 'master' into personal 2023-11-25 02:56:36 -05:00
Bassam Husain
25d85ae0f8 Minor adjustments. 2023-11-23 04:50:00 -05:00
Bassam Husain
44404bd790 Merge branch 'master' into personal 2023-11-23 02:50:51 -05:00
Bassam Husain
d6b3f0ed1b Merge branch 'personal' of github.com:bassamanator/Sovol-SV06-firmware into personal 2023-11-19 21:17:28 -05:00
Bassam Husain
4a5511b6f5 Adjust max_extrude_cross_section. 2023-09-13 23:51:15 -04:00
Bassam Husain
3de5f5cf71 Disable KAMP. 2023-09-13 23:04:01 -04:00
Bassam Husain
b301c387d9 Merge branch 'master' into personal. Enabled KAMP: mesh and line_purge. 2023-09-13 17:59:40 -04:00
Bassam Husain
142ce736c3 Merge branch 'master' into personal 2023-09-10 15:36:32 -04:00
Bassam Husain
e3a04c853b New max_accel tested with 20 iterations. 2023-09-07 00:17:18 -04:00
Bassam Husain
d03d04797e New PID tune *. 2023-09-07 00:05:19 -04:00
Bassam Husain
98ef6f5cae Merge remote-tracking branch 'origin/belts' into personal 2023-09-06 01:03:35 -04:00
Bassam Husain
8f9907b27a New max_accel tested with 20 iterations. 2023-09-06 00:33:19 -04:00
Bassam Husain
9949368ec9 New input shaper x, y. 2023-09-06 00:23:49 -04:00
Bassam Husain
50e2e39c80 New max_accel tested with 20 iterations. 2023-09-04 23:25:02 -04:00
Bassam Husain
de83196e87 New PA. 2023-09-03 18:28:13 -04:00
Bassam Husain
71e9dd0df1 New max_accel tested with 20 iterations. 2023-09-03 13:42:49 -04:00
Bassam Husain
3bba64d080 New idler and input shaper. 2023-09-03 13:19:29 -04:00
Bassam Husain
1fb0a5dfd0 Adjust settings. 2023-08-26 19:43:57 -04:00
Bassam Husain
edb163b509 Add get_variable util macro. Rename adxl-direct.cfg->adxl-rpi-direct.cfg. 2023-08-26 00:16:49 -04:00
Bassam Husain
66167de750 Merge branch 'timelapse' into personal 2023-08-26 00:10:59 -04:00
Bassam Husain
557469e391 Implement timelapse; working fine. 2023-08-25 18:21:23 -04:00
Bassam Husain
fd852a13a3 Adjust input shaper x after belt adjust. 2023-08-24 20:17:40 -04:00
Bassam Husain
b51a56f809 Adjust .gitignore. 2023-08-24 19:37:51 -04:00
Bassam Husain
fe1bf4417a Install crowsnest. 2023-08-24 19:31:22 -04:00
Bassam Husain
d20c06228a Adjust max_accel. 2023-08-23 19:44:45 -04:00
Bassam Husain
ae69ed9955 Adjust pressure_advance. 2023-08-20 18:55:58 -04:00
Bassam Husain
3bfbc9c60d New max_accel tested with 25 iterations. 2023-08-19 22:25:16 -04:00
Bassam Husain
cfa80490a1 Merge branch 'personal-temp' into personal 2023-08-15 13:25:13 -04:00
Bassam Husain
0b0c62f2d9 Pulled in settings.json from master. 2023-08-13 16:01:28 -04:00
Bassam Husain
812a16e41a New mesh. 2023-08-12 07:09:23 -04:00
Bassam Husain
0a3eaa598a New mesh. 2023-08-12 02:04:18 -04:00
Bassam Husain
790bcdd2c1 Merge branch 'new-nozzle' into personal-temp 2023-08-12 01:35:44 -04:00
Bassam Husain
f00183b684 New mesh. 2023-08-12 01:28:22 -04:00
Bassam Husain
13197a06a4 Adjust extruder microsteps to 128. Adjust input_shaper. 2023-08-11 22:37:26 -04:00
Bassam Husain
bc9c557038 New cht nozzle, new z_offset, new twist compensation, new mesh. 2023-08-11 19:25:00 -04:00
Bassam Husain
d4ebb4c668 Adjusted sense_resistor. 2023-08-08 12:45:20 -04:00
Bassam Husain
2cd1570c98 New z_compensations and new mesh. 2023-08-08 12:42:58 -04:00
Bassam Husain
dfae83ee1a New mesh after re-adjusting the bed screws. 2023-08-08 10:03:45 -04:00
Bassam Husain
0f78dc7441 New z_offset, +0.10 (closer to bed). 2023-08-08 06:07:07 -04:00
Bassam Husain
4871fb5f82 Merge branch 'personal-xtwist' into personal 2023-08-05 17:45:59 -04:00
Bassam Husain
f04f997224 New mesh. 2023-07-30 15:26:48 -04:00
Bassam Husain
dd614da212 New z_offset after new hotend. 2023-07-30 15:06:53 -04:00
Bassam Husain
0d6b287e44 New pid hotend. 2023-07-30 12:37:16 -04:00
Bassam Husain
8b9c602dbb Adjusted max_velocity. 2023-07-30 01:29:13 -04:00
Bassam Husain
9f38fdd5e1 New mesh. 2023-07-30 00:43:48 -04:00
Bassam Husain
6be39235c9 Minor adjustment to to bed_mesh:mesh_min. Pull into master. 2023-07-30 00:38:43 -04:00
Bassam Husain
5e5eacc2df New mesh. 2023-07-30 00:24:40 -04:00
Bassam Husain
e00f76591f Readjusted x-twist calibration. 2023-07-30 00:10:45 -04:00
Bassam Husain
cb2766f638 Merge branch 'xtwist-fix' into personal-xtwist 2023-07-29 22:50:19 -04:00
Bassam Husain
58e783b774 Saving after x-twist compensation, using new klipper feature. 2023-07-29 22:32:11 -04:00
Bassam Husain
ae96d42b14 Added link to TEST_SPEED.cfg. 2023-07-29 16:43:53 -04:00
Bassam Husain
1170d1f76d Changed max_velocity: 300. 2023-07-29 16:40:43 -04:00
Bassam Husain
ba00d1f71f Changed max_accel: 5000. 2023-07-29 16:32:41 -04:00
Bassam Husain
4225efb119 Merge branch 'speed' into personal 2023-07-24 19:00:19 -04:00
Bassam Husain
9134c2e08b Merge branch 'speed' of github.com:bassamanator/Sovol-SV06-firmware into speed 2023-07-24 18:57:29 -04:00
Bassam Husain
e142fd034e Added import. 2023-07-24 18:55:58 -04:00
Bassam Husain
5981c7b5c3 Update TEST_SPEED.cfg. 2023-07-19 15:31:01 -04:00
Bassam Husain
f739992ea2 Merge branch 'develop' into personal 2023-07-07 17:08:34 -04:00
Bassam Husain
b7b32dd046 Merge branch 'kamp' into develop. Moved imports into osskc.cfg. 2023-07-07 02:26:16 -04:00
Bassam Husain
9265d9cc96 Minor adjustment to print_start for kamp. 2023-07-07 02:04:11 -04:00
Bassam Husain
c4b3f64e1a Renamed kamp/ to fix symlink issue. 2023-07-07 01:34:51 -04:00
Bassam Husain
fd7b9e3f46 Renamed kamp/ to fix symlink issue. 2023-07-07 01:33:30 -04:00
Bassam Husain
178733e0f5 Added kamp folder. 2023-07-07 01:32:00 -04:00
Bassam Husain
8f100d73f3 Deleted kamp folder. 2023-07-07 01:30:08 -04:00
Bassam Husain
82d25743fc KAMP should be ready. 2023-07-06 13:36:59 -04:00
Bassam Husain
aa935b6d57 Added kamp files. 2023-07-06 12:55:22 -04:00
Bassam Husain
ace26b692f Merge branch 'screws' into personal 2023-07-02 21:14:14 -04:00
Bassam Husain
d97cc87dc6 Adjusted screws_tilt_adjust section. 2023-07-02 21:02:41 -04:00
Bassam Husain
f1614f477a Pulled in calibration.cfg. 2023-07-01 02:52:30 -04:00
Bassam Husain
7908b3d052 Adjusted calibration.cfg to accept target temp. 2023-07-01 02:12:14 -04:00
Bassam Husain
d3cc53eafe Merge branch 'calib' into personal 2023-07-01 00:48:40 -04:00
Bassam Husain
28ba80dd29 Cleanup in misc-macros.cfg. Adjusted calibration.cfg to work dynamically. 2023-07-01 00:05:00 -04:00
Bassam Husain
f5c533a35d Merge branch 'master' into personal 2023-06-21 19:54:53 -04:00
Bassam Husain
1e60090f1e Merge branch 'bed-temp' into personal 2023-06-09 17:16:08 -04:00
Bassam Husain
7ea890627a Made bedtempOver adjustable. 2023-05-20 20:12:11 -04:00
Bassam Husain
24610b1dee Merge branch 'bed-temp' into personal 2023-05-10 18:50:02 -04:00
Bassam Husain
9d08c418c0 Print_start adjusted: comments styling only. 2023-05-10 18:49:04 -04:00
Bassam Husain
7112c53ad8 Print_start adjusted: prints will start as long as current bed temp is not higher than 10C compared to sliced bed temp. 2023-05-10 01:43:37 -04:00
Bassam Husain
f0602b5cb2 Print_start adjusted: added back 0 bed temp possibility. 2023-05-10 01:23:35 -04:00
Bassam Husain
5242dc7276 Print_start adjusted: prints should now start even if bed temp is higher than what was set in slicer; does set sliced temp at the end though. 2023-05-10 01:11:58 -04:00
Bassam Husain
05dba3939e Adjusted PRINT_START bedtempAlmost logic. 2023-05-09 17:20:30 -04:00
Bassam Husain
4dcd5e3840 Adjusted mcu section. 2023-05-03 15:26:28 -04:00
Bassam Husain
1cdcb4934b PRINT_START adjust: don't cooldown if not necessary. 2023-04-22 07:10:06 -04:00
Bassam Husain
498e0d4a4d PRINT_START bedtemp fix, 2nd try. 2023-04-20 16:56:25 -04:00
Bassam Husain
9b712df594 PRINT_START bedtemp fix. 2023-04-20 16:43:43 -04:00
Bassam Husain
e888ac0882 Added orange pi temp section. 2023-04-20 12:37:03 -04:00
Bassam Husain
89fbb10154 variable_pre_purge_prime_length reverted. 2023-04-20 12:10:00 -04:00
Bassam Husain
6eb152e58d Adjust PRINT_START: safe_z_home startX, startY. 2023-04-19 10:53:08 -04:00
Bassam Husain
c1672c9a42 Fixed sense_resistor according to specs. 2023-04-19 07:47:24 -04:00
Bassam Husain
2e5764f295 Adjusted print_start start x, y positions conditionally. 2023-04-18 10:39:22 -04:00
Bassam Husain
7e5aeb6654 Print_start adjusted. 2023-04-17 02:13:19 -04:00
Bassam Husain
f5d3499da7 Getting safe_z_home info in print_start. 2023-04-17 01:02:20 -04:00
Bassam Husain
2c8a4e5aa0 Print_start improvements. 2023-04-17 00:55:51 -04:00
Bassam Husain
b8d246762f Added print_start heating. 2023-04-14 07:39:46 -04:00
Bassam Husain
9fc09eef43 Added more steps to heating in print_start. 2023-04-13 19:48:11 -04:00
Bassam Husain
02eb713930 Added more steps to heating in print_start. 2023-04-13 18:06:36 -04:00
Bassam Husain
f0729bfc2e New z_offset. 2023-04-11 15:54:19 -04:00
Bassam Husain
9352cbc3d0 New z_offset. 2023-04-09 15:21:18 -04:00
Bassam Husain
0ce30e2d23 Manual mesh edit; center; b11. 2023-04-09 12:06:06 -04:00
Bassam Husain
bc612db077 Manual bed mesh edit b10. 2023-04-09 10:50:23 -04:00
Bassam Husain
ef774efde3 Manual bed mesh edit b9. 2023-04-09 10:17:54 -04:00
Bassam Husain
44a1db591b Set microsteps to 128; MCU can't handle generate those microsteps in all conditions. 2023-04-08 21:21:38 -04:00
Bassam Husain
d53a6d822a Adjusted PRINT_START: travel speeds. 2023-04-06 09:31:15 -04:00
Bassam Husain
3f06eebe42 Adjusted PRINT_START temperature heating sequence. 2023-04-06 09:16:18 -04:00
Bassam Husain
85b2ca15e8 Set microsteps to 256. 2023-04-06 08:28:35 -04:00
Bassam Husain
857a8fdd3b New shaper x. 2023-04-03 05:26:46 -04:00
Bassam Husain
e2ec5b8d49 Added image to readme in personal branch. 2023-04-02 22:56:54 -04:00
Bassam Husain
f9832b60c3 Adjusted print_start to start heating first, then home x and y. 2023-04-02 20:38:14 -04:00
Bassam Husain
3b59b534c9 Adjust max accel and velocity. 2023-04-02 20:11:15 -04:00
Bassam Husain
1805a999b1 Adjusted start position for purge_line. 2023-04-02 18:47:41 -04:00
Bassam Husain
a19df40bed Adjusted stepper_x.run_current: 0.900. 2023-03-31 19:31:45 -04:00
Bassam Husain
57f4aa303f Merge branch 'temp-ms-good-mesh-edited' into personal 2023-03-30 08:27:31 -04:00
Bassam Husain
2ad0456132 Adjusted mesh manually. Increase currents x and y. 2023-03-30 07:55:38 -04:00
Bassam Husain
64825fda41 New edited mesh, mostly good. New z_offset. 2023-03-30 07:39:40 -04:00
Bassam Husain
5ba208b674 Adjusted mesh manually. 2023-03-30 05:51:42 -04:00
Bassam Husain
baa31179a3 Adjusted mesh manually. 2023-03-29 20:08:11 -04:00
Bassam Husain
6dafba0ab8 Adjusted mesh manually. 2023-03-29 02:04:09 -04:00
Bassam Husain
837f6d1e19 Adjusted mesh manually. 2023-03-29 02:00:38 -04:00
Bassam Husain
efddacb0cb Merge branch 'personal' into temp-ms-good-mesh-edited 2023-03-29 01:23:20 -04:00
Bassam Husain
40c32cab69 Adjusted readme for personal branch. 2023-03-27 23:27:52 -04:00
Bassam Husain
ad78f3f759 Merge branch 'purge' into personal 2023-03-27 17:02:55 -04:00
Bassam Husain
d227fcb58f Re-added temperature_wait. 2023-03-27 16:57:42 -04:00
Bassam Husain
d08bbb7f23 Adjust purge_line. 2023-03-27 16:50:43 -04:00
Bassam Husain
c462eb819c Adjust purge_line. 2023-03-26 15:04:35 -04:00
Bassam Husain
4528151bc1 Adjusted print_end to fix speed calculation error. 2023-03-26 14:35:04 -04:00
Bassam Husain
aff79ff8de Merge remote-tracking branch 'origin/temp-ms' into personal 2023-03-26 14:24:43 -04:00
Bassam Husain
f12e2f3382 Adjusted print_end to use speeds pulled from config. 2023-03-26 14:16:24 -04:00
Bassam Husain
382b4c4159 New edited mesh, mostly good. 2023-03-26 01:57:41 -04:00
Bassam Husain
dd71ed1320 Removed stealthchop_threshold. 2023-03-26 01:50:55 -04:00
Bassam Husain
e469e05a91 New mesh and z_offset. 2023-03-25 21:47:41 -04:00
Bassam Husain
3c73cf3461 Removed temperature_wait. Increased microsteps to 128. 2023-03-24 03:12:40 -04:00
Bassam Husain
104c9fca75 Increased square_corner_velocity to 8. 2023-03-23 02:40:49 -04:00
Bassam Husain
5fcb29322d Adjusted z_offset; too much squish. 2023-03-20 14:11:32 -04:00
Bassam Husain
f4ce4165d5 Added beeping on colour/filament change. 2023-03-20 01:02:56 -04:00
Bassam Husain
04fb184c86 New input shaper x after 5015 fan. 2023-03-14 23:21:09 -04:00
Bassam Husain
2303b4422a New pid extruder and bed. 2023-03-14 22:28:57 -04:00
18 changed files with 8074 additions and 493 deletions

4
.gitignore vendored
View File

@@ -1,3 +1,7 @@
printer-*_*.cfg printer-*_*.cfg
.moonraker.conf.bkp .moonraker.conf.bkp
.directory .directory
moonraker.conf.backup
.venv
__pycache__
crowsnest.conf.*

View File

@@ -20,6 +20,7 @@
"Klipper", "Klipper",
"Klipperized", "Klipperized",
"lrwxrwxrwx", "lrwxrwxrwx",
"microsteps",
"moonraker", "moonraker",
"normalsize", "normalsize",
"octahedroflake", "octahedroflake",

419
README.md
View File

@@ -1,413 +1,20 @@
# 🚨 _One-Stop-Shop_ Klipper Configuration # 🚨 _One-Stop-Shop_ Klipper Configuration
This branch contains the Klipper configuration and firmware for the **Sovol SV06** 3D printer. ## This branch contains my personal settings.
| Printer | Branch | ## Switch to a More Appropriate Branch
| --------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| ${\normalsize{\textcolor{darkturquoise}{\texttt{Sovol SV06}}}}$ | ⚡ ${\small{\textcolor{darkturquoise}{\texttt{YOU ARE HERE}}}}$ ⚡ |
| Sovol SV06 Skr-Mini-E3-V3.0 | [skr-mini-e3-v3](https://github.com/bassamanator/Sovol-SV06-firmware/tree/skr-mini-e3-v3) |
| Sovol SV06 Plus | [sv06-plus](https://github.com/bassamanator/Sovol-SV06-firmware/tree/sv06-plus) |
| All other printers | [any-printer](https://github.com/bassamanator/Sovol-SV06-firmware/tree/any-printer) |
I am creating these files for my personal use and cannot be held responsible for what it might do to your printer. Use at your own risk. | Printer | Branch |
| --------------------------- | ----------------------------------------------------------------------------------------- |
| Sovol SV06 | [master](https://github.com/bassamanator/Sovol-SV06-firmware/tree/master) |
| Sovol SV06 Skr-Mini-E3-V3.0 | [skr-mini-e3-v3](https://github.com/bassamanator/Sovol-SV06-firmware/tree/skr-mini-e3-v3) |
| Sovol SV06 Plus | [sv06-plus](https://github.com/bassamanator/Sovol-SV06-firmware/tree/sv06-plus) |
| All other printers | [any-printer](https://github.com/bassamanator/Sovol-SV06-firmware/tree/any-printer) |
## Outline # Speedrun
- [Features](#features) <a href="https://youtu.be/jGplZnNoT4I?si=1e3BTfP3vhhEvGNs" target="_blank">
- [Stay Up-to-Date](#stay-up-to-date) <img src="https://img.youtube.com/vi/jGplZnNoT4I/maxresdefault.jpg" alt="Watch the video" width="100%"/>
- [Preface](#preface) </a>
- [Before You Begin](#before-you-begin)
- [Klipper Installation](#klipper-installation)
- [Flash Firmware](#flash-firmware)
- [Download OSS Klipper Configuration](#download-oss-klipper-configuration)
- [Initial Steps](#initial-steps)
1. [Adjust Configuration with MCU Path](#adjust-configuration-with-mcu-path)
2. [Configure Your Printer](#configure-your-printer)
- [Adjust Your Slicer](#adjust-your-slicer)
- [Support Me](#support-me)
- [Directory Structure](#directory-structure)
- [FAQ](#faq)
- [Useful Resources](#useful-resources)
- [Sovol Official Links](#sovol-official-links)
- [Sources](#sources)
## Features <img src="./images/octahedroflake.jpg" />
- 💥 This Klipper configuration is an _endpoint_, meaning that it contains **everything** that you could possibly need in order to have an excellent Klipper experience! 💥
- Filament runout sensor usage implemented.
- Minimum configuration settings for `Mainsail` and `Fluidd`.
- Pre-configured configuration bundles based on the [Ellis SuperSlicer Print Profiles](https://github.com/AndrewEllis93/Ellis-SuperSlicer-Profiles):
- SuperSlicer
- PrusaSlicer
- Printer profiles: SV06/Plus; SV07/Plus
- Bed model and texture to use in SuperSlicer/PrusaSlicer.
- Macros:
- **Improved** mechanical gantry calibration/`G34` macro that provides the user audio feedback, and time to check the calibration.
- Misc macros: `PRINT_START`, `CANCEL_PRINT`, `PRINT_END`, `PAUSE`, `RESUME`.
- Parking macros (parks the printhead at various locations): `PARKFRONT`, `PARKFRONTLOW`, `PARKREAR`, `PARKCENTER`, `PARKBED`.
- Load/unload filament macros.
- `PURGE_LINE` macro.
- `TEST_SPEED` macro. Find instructions [here](#how-do-i-use-the-test_speed-macro).
- Klipper Adaptive Meshing & Purging (KAMP) integrated. Read about it [here](#how-do-i-enable-kamp-klipper-adaptive-meshing--purging).
[🔼 Back to top](#outline)
## Stay Up-to-Date
${\normalsize{\textcolor{goldenrod}{\texttt{Star ⭐ this project.}}}}$
Watch for [updates](https://github.com/bassamanator/Sovol-SV06-firmware/discussions/37).
<img src="./images/githubstar.gif" width="500" alt='github star'/>
[🔼 Back to top](#outline)
## Preface
Although I've made switching over to Klipper as easy as is possible, it can still be a challenge for some, especially considering that most of you have likely never used GNU+Linux. Save yourself the frustration, and fully read this documentation. Also note that Klipper is not a _must_, and is not for everyone. You can stick with Marlin, and have a fine 3D printing experience.
In many ways, this entire repository can be considered _my opinion_ on the `3D printing experience` and this has been _my attempt_ to share that experience. Some factors, such as _accuracy_ and _testing_, have been at the forefront of my thoughts during this process. I hope you find this repository suitable. Cheers.
[🔼 Back to top](#outline)
## Before You Begin
- This entire page is a **9 minute read**. Save yourself _hours of troubleshooting_ and read this documentation fully.
- ⚠️ Make sure your printer is in good physical condition, because print and travel speeds will be _a lot faster_. Beginners would be wise to run through [these steps](https://github.com/bassamanator/everything-sovol-sv06/blob/main/initialsteps.md).
- ⚠️ [Disable](https://github.com/bassamanator/everything-sovol-sv06/blob/main/howto.md#disable-usb-cable-5v-pin) the USB cable's 5V pin.
- Follow the steps in order. If an error was reported at a step, do no proceed to the next step.
- It is assumed that you are connected to your host Raspberry Pi (or other host device) via SSH, and that your printer motherboard is connected to the host via a data USB cable. 💡 Most of the micro USB cables that you find at home are _unlikely_ to be data cables, and it is not possible to tell just by looking.
- It is also assumed that the username on the host device is `pi`. If that is not the case, edit `moonraker.conf` and `cfgs/misc-macros.cfg` to change any mentions of `/home/pi` to `/home/yourUserName`.
- Klipper _must_ be installed on the host beforehand. Easiest is to use [MainsailOS](https://github.com/mainsail-crew/mainsail/releases/latest). [KIAUH](https://github.com/th33xitus/kiauh) is another option.
- Klipper _must_ be up to date.
- In `Fluidd`, you can do this from `Settings` > `Software Updates`.
- In `Mainsail`, you can do this from `Machine` > `Update Manager`.
- Robert Redford's performance in _Spy Game (2001)_ was superb!
- It is assumed that there is one instance of Klipper installed. If that is not the case, the steps in this guide will not work _perfectly_ for you.
- Your question has probably been answered already, but if it hasn't, please post in the [Discussion](https://github.com/bassamanator/Sovol-SV06-firmware/discussions) section.
- I would recommend searching for the word `NOTE` in this configuration. There are roughly half a dozen short points amongst the various files that you should be aware of.
<!-- - Link to recommended parts. -->
[🔼 Back to top](#outline)
## Klipper Installation
### Flash Firmware
💡 If you flashed Klipper onto your motherboard in the past, you can skip this step.
Please note:
- For the sake of simplicity, I will refer to the firmware file as `klipper.bin` even though the actual filename is something along the lines of `klipper-v0.11.0-148-g52f4e20c.bin`.
- The firmware file is located in the `misc` folder.
- Flashing will only work if current firmware filename is _different from previous flashing procedure_. The `.bin` is also important.
- You may find this [video](https://youtu.be/p6l253OJa34) useful.
- ⚠️ Many users have reported having issues flashing Klipper using the Sovol microSD card.
#### 1. Prepare the microSD Card for Flashing with These Parameters
- Size: `16GB` maximum.
- File system: `FAT32`.
- Allocation unit size: `4096 bytes`.
- Must not contain any files _except_ the firmware file.
#### 2. Flashing Procedure
1. Disconnect any USB cables that might be connected to the motherboard.
2. Copy `klipper.bin` to the microSD card.
3. Make sure the printer is off.
4. Insert the microSD card into printer.
5. Turn on the printer and wait a minute (usually takes 10 seconds).
6. Turn off the printer and remove the microSD.
⏲️ At this point, it's not possible to tell with certainty whether your flash was successful, continue on with the guide.
[🔼 Back to top](#outline)
### Download OSS Klipper Configuration
#### Method 1: Clone the Repository
💡 Make sure `git` is installed (`sudo apt update && sudo apt install git`).
1. `cd ~/printer_data/config`
2. Empty entire `~/printer_data/config` folder.
- In linux, you can delete files via `rm fileName` and directories via `rmdir directoryName`.
- In linux, you can list files and folders via `ls -lah`.
3. `git clone -b master --single-branch https://github.com/bassamanator/Sovol-SV06-firmware.git .` ⚠️ Don't miss the period!
#### Method 2: Download the ZIP
1. [Download](https://github.com/bassamanator/Sovol-SV06-firmware/archive/refs/heads/master.zip) the `ZIP` file containing the Klipper configuration.
2. See `Step 2` in `Method 1`.
3. The parent folder in the `ZIP` is `Sovol-SV06-firmware-master`. This is relevant in the next step.
4. Extract **only** the _contents_ of the parent folder into `~/printer_data/config`.
[🔼 Back to top](#outline)
## Initial Steps
### Adjust Configuration with MCU Path
💡 Make sure the host and printer are connected via USB.
1. Find what port the `mcu` (printer motherboard) is connected to via _one_ of the following commands:
- `ls /dev/serial/by-id/*`
- `ls /dev/serial/by-path/*`
1. The output will be something along the lines of
- `/dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0`
2. Adjust the `[mcu]` section in `printer.cfg` accordingly.
```yaml
# 📝 This is just an example
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
restart_method: command
```
3. Do a `FIRMWARE_RESTART`.
If the Klipper flash that you did earlier was successful, and you've done everything else correctly, you should see no errors or warnings in the `Mainsail`/`Fluidd` dashboard. 🎉 **Your printer has been Klipperized!** 🎉
[🔼 Back to top](#outline)
### Configure Your Printer
❗☠️ **Your finger should be on the power switch for most of these steps** ☠️❗
❗☠️ **Power off if there is a collision/problem** ☠️❗
💡 The ${\small{\textcolor{red}{\texttt{EMERGENCY STOP}}}}$ button in your dashboard works faster than hitting the power switch.
💡 Do a practice emergency stop.
💡 I recommend no filament be loaded for any of these steps.
📝 You will be pasting/typing these commands into the `Mainsail`/`Fluidd` console.
1. Check to see if `X` and `Y` max positions can be reached, and adjust `position_max`, if necessary. You might be able to go further, which is great, but I recommend leaving a 2mm gap for safety.
1. `G28`
2. `G90`
3. `G1 X223 F3000`
4. `G1 Y223 F3000`
2. Do a mechanical gantry calibration; `G34`. After the controlled collision against the beam at the top, there will be a 10 second pause for you to verify that both sides of the gantry are pressed up against the `stoppers` at the top. You will hear a succession of beeps.
1. Figure out your `Z` `position_max` by baby stepping your way up to the beam, and adjust `position_max`, if necessary.
3. PID tune the bed. Ideally, all PID tuning should occur at the temperatures that you print most at.
1. `PID_TEST_BED TEMP=70`
2. `SAVE_CONFIG` (once completed)
4. PID tune the extruder while part cooling fan runs at 25%.
1. `PID_TEST_HOTEND TEMP=245`
2. `SAVE_CONFIG` (once completed)
5. Adjust `z_offset`. Make sure your nozzle if very clean. Do the [Paper test](https://www.klipper3d.org/Bed_Level.html?h=probe_calibrate#the-paper-test).
1. `DO_PROBE_CALIBRATE`
2. Follow `z_offset` setup in `Mainsail`/`Fluidd`.
3. `SAVE_CONFIG` (once completed)
6. Create a bed mesh.
1. `DO_CREATE_MESH`
2. `SAVE_CONFIG` (once completed)
🏁 If you've made it here, then your Klipperized printer is ready to print! 🏁
_But first_, adjust your slicer.
[🔼 Back to top](#outline)
## Adjust Your Slicer
📝 If you are using the slicer bundles found on this repo, you can skip this section.
### Start G-Code
It varies depending on your slicer. Find instructions [here](https://ellis3dp.com/Print-Tuning-Guide/articles/passing_slicer_variables.html#slicer-start-g-code).
### End G-Code
```
PRINT_END
```
### Line Purge
If you would like to print a purge line before your print starts, at the end of your start gcode, on a new line, add one of the following:
- `PURGE_LINE`; prints a standard purge line.
- `LINE_PURGE`; prints KAMP's purge line. ⚠️ Do not attempt to use without reading [this section](#how-do-i-enable-kamp-klipper-adaptive-meshing--purging).
```yaml
# 📝 This is just an example Start G-Code
PRINT_START ...
PURGE_LINE
```
[🔼 Back to top](#outline)
## Support Me
Please ⭐ star this repository!
Support [open source](https://en.wikipedia.org/wiki/Open_source), and buy me a [<img src="./images/logo_white_stroke.png" height="20" alt='Ko-fi'/>](https://ko-fi.com/bassamanator).
[🔼 Back to top](#outline)
## Directory Structure
This repository contains many files and folders. Some are _necessary_ for this Klipper configuration to work, others are not.
- **Necessary** items are marked with a ✅.
- Items that can _optionally_ be deleted are marked with a 💠.
<!-- tree -a -C -I '.directory' -L 1 -F -->
```sh
/home/pi/printer_data/config
├── cfgs/ ✅
├── CODE_OF_CONDUCT.md 💠
├── CONTRIBUTING.md 💠
├── .git/ ✅❔
├── .github/ 💠
├── .gitignore ✅❔
├── images/ 💠
├── LICENSE 💠
├── misc/ 💠
├── moonraker.conf ✅
├── osskc.cfg ✅
├── printer.cfg ✅
├── README.md 💠
├── SECURITY.md 💠
└── .vscode/ 💠
```
[🔼 Back to top](#outline)
## FAQ
### What are some settings that I can change?
Edit the relevant file according to your needs.
| File | Section |
| ---------------------- | ------------------------ |
| `cfgs/misc-macros.cfg` | `[gcode_macro _globals]` |
| Variable | Disable | Enable | Notes |
| ---------------------------------- | ------------- | ------------- | ------------------------------------------------------------------- |
| `variable_beeping_enabled` | `0` | `1` (default) |
| `variable_filament_sensor_enabled` | `0` (default) | `1` |
| `variable_kamp_enable` | `0` (default) | `1` | See [here](#how-do-i-enable-kamp-klipper-adaptive-meshing--purging) |
### How do I import a configuration bundle into SuperSlicer/PrusaSlicer?
Please see this [discussion](https://github.com/bassamanator/Sovol-SV06-firmware/discussions/13).
### How do I print using SuperSlicer/PrusaSlicer?
Please see this [discussion](https://github.com/bassamanator/Sovol-SV06-firmware/discussions/14).
### When does beeping occur?
The printer will beep upon:
- Filament runout.
- Filament change/`M600`.
- Upon `PRINT_END`.
- `MECHANICAL_GANTRY_CALIBRATION`/`G34`.
### I want to use a filament sensor. How do I set it up?
You can find information about the physical setup [here](https://github.com/bassamanator/everything-sovol-sv06#filament-sensor).
### My filament runout sensor works, but I just started a print without any filament loaded. What gives?
A simple runout sensor can only detect a change in state. So, if you start a print without filament loaded, the printer will not know that there is no filament loaded. You should test your sensor by having filament loaded, starting a print, then cutting the filament. The expected behaviour is that the print will pause, and as long as you have beeping enabled, you will hear 3 annoying beeps.
### What happens when I put in `M600`/colour change at a certain layer?
1. The printer will beep 3 times (not annoyingly).
2. Printing will stop.
3. The printhead will park itself front center.
4. The hotend will turn off, but the bed will remain hot.
### What happens when I pause a print?
Same behaviour as `M600`/colour change _except_ there won't be any beeping.
### What happens when filament runs out?
_If_ you have a working filament sensor, the same behaviour as `M600`/colour change will occur _except_ the beeps will be fairly annoying.
### How do I resume a print after a colour change or filament runout?
⚠️ Do not disable the stepper motors during this process!
The printhead is now parked front center waiting for you to insert filament. You will:
1. Heat up the hotend to the desired temperature.
- Use your Klipper dashboard.
2. Purge (push) some filament through the nozzle.
- Use your Klipper dashboard, and extrude maybe 50mm (for a colour change you probably want to extrude more).
- OR, you can push some filament by hand _making sure to first disengage the extruder's spring loaded arm_.
3. Hit resume in your Klipper dashboard.
### How do I enable KAMP (Klipper Adaptive Meshing & Purging)?
⚠️ No KAMP functionality can be used on low-powered devices such as the Raspberry Pi Zero.
⚠️ If KAMP is disabled, and there is no `default` mesh, `PRINT_START` will crash.
📝 The [Label objects setting](https://docs.mainsail.xyz/overview/features/exclude-objects#enable-the-label-objects-setting-in-your-slicer) in your slicer must be enabled for KAMP to work.
📝 `LINE_PURGE` is useable (on appropriate devices) even if KAMP is disabled.
This repo contains all the code from the KAMP repository, however, only the `adaptive meshing` and `LINE_PURGE` functionality of KAMP has been configured and tested for use. To enable other functionality, adjust `/cfgs/kamp/KAMP_Settings.cfg`.
### How do I use the `TEST_SPEED` macro?
⚠️ This is for advanced users only, with well oiled machines. You can cause serious damage to your printer if you're not careful. ☠️ **You have been warned** ☠️.
Find full instructions [here](https://ellis3dp.com/Print-Tuning-Guide/articles/determining_max_speeds_accels.html).
Some tips:
- Before running with `ITERATIONS=40` with an untested speed/accel value, run with `ITERATIONS=1`.
- Pay close attention throughout the run, so that you can click ${\small{\textcolor{red}{\texttt{EMERGENCY STOP}}}}$ at a moment's notice.
- This macro will simply help you determine the maximum speed your printhead and bed can reliably move at, not necessarily print at. The bottleneck for my SV06, for example, is the 15mm/s^2 that the hotend maxes out at (well under 200mm/s actual print speed).
### How do I compile my own firmware?
Please see this [discussion](https://github.com/bassamanator/Sovol-SV06-firmware/discussions/111).
[🔼 Back to top](#outline)
## Useful Resources
- [Everything Sovol SV06](https://github.com/bassamanator/everything-sovol-sv06)
- [RP2040-Zero ADXL345 Connection Klipper](https://github.com/bassamanator/rp2040-zero-adxl345-klipper)
- ⭐⭐⭐⭐⭐ [Ellis' Print Tuning Guide](https://ellis3dp.com/Print-Tuning-Guide)
- [Simplify3D Print Quality Troubleshooting Guide](https://www.simplify3d.com/resources/print-quality-troubleshooting/)
[🔼 Back to top](#outline)
## Sovol Official Links
- [SV06 Marlin Source Code](https://github.com/Sovol3d/Sv06-Source-Code)
- [SV06 Models](https://github.com/Sovol3d/SV06-Fully-Open-Source)
- [SV06 Plus Marlin Source Code and Models](https://github.com/Sovol3d/SV06-PLUS)
[🔼 Back to top](#outline)
## Sources
- [https://www.klipper3d.org](https://www.klipper3d.org)
- [Ellis' Print Tuning Guide](https://ellis3dp.com/Print-Tuning-Guide)
- [Mechanical Gantry Calibration Macro](https://github.com/strayr/strayr-k-macros)
- [SV06 printer.cfg](https://github.com/spinixguy/Sovol-SV06-firmware)
- [SV06 Buildplate and Texture](https://www.printables.com/model/378915-sovol-sv06-buildplate-texture-and-model-for-prusas)
- [Ellis' SuperSlicer Profiles](https://github.com/AndrewEllis93/Ellis-SuperSlicer-Profiles)
- [Klipper Adaptive Meshing & Purging](https://github.com/kyleisah/Klipper-Adaptive-Meshing-Purging)
- [PrusaSlicer Print Settings](https://github.com/mjonuschat/PrusaSlicer-Profiles)
[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/H2H0HIHTH)
[🔼 Back to top](#outline)

52
cfgs/GET_VARIABLE.cfg Normal file
View File

@@ -0,0 +1,52 @@
# Author FatalBulletHit, https://github.com/FatalBulletHit
[gcode_macro GET_VARIABLE]
gcode:
{% set names = (params.NAME).split('.')|list %}
{% set join = (params.JOIN)|default(1)|int %}
{% set _dummy0 = namespace( break = 0 ) %}
{% set _dummy1 = namespace( out = printer[names|first] ) %}
{% for name in names if _dummy0.break == 0 %}
{% if loop.index > 1 %}
{% if name in _dummy1.out %}
{% set _dummy1.out = _dummy1.out[name] %}
{% elif name[0] in '0123456789' and _dummy1.out is iterable and _dummy1.out is not string and _dummy1.out is not mapping and _dummy1.out|length > name[0]|int %}
{% set _dummy1.out = _dummy1.out[name|int] %}
{% else %}
{% set _dummy0.break = loop.index0 %}
{% endif %}
{% endif %}
{% endfor %}
{% if _dummy1.out is boolean %}
{ action_respond_info('Type: boolean') }
{% elif _dummy1.out is float %}
{ action_respond_info('Type: float') }
{% elif _dummy1.out is integer %}
{ action_respond_info('Type: integer') }
{% elif _dummy1.out is mapping %}
{ action_respond_info('Type: mapping') }
{% elif _dummy1.out is string %}
{ action_respond_info('Type: string') }
{% elif _dummy1.out is iterable %}
{ action_respond_info('Type: iterable') }
{% elif _dummy1.out is none %}
{ action_respond_info('Type: none') }
{% elif _dummy1.out is undefined %}
{ action_respond_info('Type: undefined') }
{% elif _dummy1.out is callable %}
{ action_respond_info('Type: callable') }
{% else %}
{ action_respond_info('Type: unknown') }
{% endif %}
{% if join and _dummy1.out is iterable and _dummy1.out is not string and _dummy1.out is not mapping %}
{ action_respond_info('%s' % _dummy1.out|join("\n")) }
{% else %}
{ action_respond_info('%s' % _dummy1.out) }
{% endif %}
{% if _dummy0.break != 0 %}
{ action_respond_info('"printer.%s" does not contain "%s"!' % (names[0:_dummy0.break]|join('.'), names[_dummy0.break])) }
{% endif %}

View File

@@ -1,10 +1,12 @@
# NOTE Find how to use instructions here: https://ellis3dp.com/Print-Tuning-Guide/articles/determining_max_speeds_accels.html # NOTE Find how to use instructions here: https://ellis3dp.com/Print-Tuning-Guide/articles/determining_max_speeds_accels.html
[gcode_macro TEST_SPEED]
# Home, get position, throw around toolhead, home again. # Home, get position, throw around toolhead, home again.
# If MCU stepper positions (first line in GET_POSITION) are greater than a full step different (your number of microsteps), then skipping occured. # If MCU stepper positions (first line in GET_POSITION) are greater than a full step different (your number of microsteps), then skipping occured.
# We only measure to a full step to accomodate for endstop variance. # We only measure to a full step to accomodate for endstop variance.
# Example: TEST_SPEED SPEED=300 ACCEL=5000 ITERATIONS=10 # Example: TEST_SPEED SPEED=300 ACCEL=5000 ITERATIONS=10
[gcode_macro TEST_SPEED] description: Test for max speed and acceleration parameters for the printer. Procedure: Home -> ReadPositionFromMCU -> MovesToolhead@Vel&Accel -> Home -> ReadPositionfromMCU
gcode: gcode:
# Speed # Speed
{% set speed = params.SPEED|default(printer.configfile.settings.printer.max_velocity)|int %} {% set speed = params.SPEED|default(printer.configfile.settings.printer.max_velocity)|int %}
@@ -12,6 +14,8 @@ gcode:
{% set iterations = params.ITERATIONS|default(5)|int %} {% set iterations = params.ITERATIONS|default(5)|int %}
# Acceleration # Acceleration
{% set accel = params.ACCEL|default(printer.configfile.settings.printer.max_accel)|int %} {% set accel = params.ACCEL|default(printer.configfile.settings.printer.max_accel)|int %}
# Minimum Cruise Ratio
{% set min_cruise_ratio = params.MIN_CRUISE_RATIO|default(0.5)|float %}
# Bounding inset for large pattern (helps prevent slamming the toolhead into the sides after small skips, and helps to account for machines with imperfectly set dimensions) # Bounding inset for large pattern (helps prevent slamming the toolhead into the sides after small skips, and helps to account for machines with imperfectly set dimensions)
{% set bound = params.BOUND|default(20)|int %} {% set bound = params.BOUND|default(20)|int %}
# Size for small pattern box # Size for small pattern box
@@ -64,7 +68,11 @@ gcode:
G0 X{x_min} Y{y_min} Z{bound + 10} F{speed*60} G0 X{x_min} Y{y_min} Z{bound + 10} F{speed*60}
# Set new limits # Set new limits
SET_VELOCITY_LIMIT VELOCITY={speed} ACCEL={accel} ACCEL_TO_DECEL={accel / 2} {% if printer.configfile.settings.printer.minimum_cruise_ratio is defined %}
SET_VELOCITY_LIMIT VELOCITY={speed} ACCEL={accel} MINIMUM_CRUISE_RATIO={min_cruise_ratio}
{% else %}
SET_VELOCITY_LIMIT VELOCITY={speed} ACCEL={accel} ACCEL_TO_DECEL={accel / 2}
{% endif %}
{% for i in range(iterations) %} {% for i in range(iterations) %}
# Large pattern diagonals # Large pattern diagonals
@@ -80,7 +88,7 @@ gcode:
G0 X{x_min} Y{y_max} F{speed*60} G0 X{x_min} Y{y_max} F{speed*60}
G0 X{x_max} Y{y_max} F{speed*60} G0 X{x_max} Y{y_max} F{speed*60}
G0 X{x_max} Y{y_min} F{speed*60} G0 X{x_max} Y{y_min} F{speed*60}
# Small pattern diagonals # Small pattern diagonals
G0 X{x_center_min} Y{y_center_min} F{speed*60} G0 X{x_center_min} Y{y_center_min} F{speed*60}
G0 X{x_center_max} Y{y_center_max} F{speed*60} G0 X{x_center_max} Y{y_center_max} F{speed*60}
@@ -89,7 +97,7 @@ gcode:
G0 X{x_center_min} Y{y_center_max} F{speed*60} G0 X{x_center_min} Y{y_center_max} F{speed*60}
G0 X{x_center_max} Y{y_center_min} F{speed*60} G0 X{x_center_max} Y{y_center_min} F{speed*60}
# Small patternbox # Small pattern box
G0 X{x_center_min} Y{y_center_min} F{speed*60} G0 X{x_center_min} Y{y_center_min} F{speed*60}
G0 X{x_center_min} Y{y_center_max} F{speed*60} G0 X{x_center_min} Y{y_center_max} F{speed*60}
G0 X{x_center_max} Y{y_center_max} F{speed*60} G0 X{x_center_max} Y{y_center_max} F{speed*60}
@@ -97,7 +105,11 @@ gcode:
{% endfor %} {% endfor %}
# Restore max speed/accel/accel_to_decel to their configured values # Restore max speed/accel/accel_to_decel to their configured values
SET_VELOCITY_LIMIT VELOCITY={printer.configfile.settings.printer.max_velocity} ACCEL={printer.configfile.settings.printer.max_accel} ACCEL_TO_DECEL={printer.configfile.settings.printer.max_accel_to_decel} {% if printer.configfile.settings.printer.minimum_cruise_ratio is defined %}
SET_VELOCITY_LIMIT VELOCITY={printer.configfile.settings.printer.max_velocity} ACCEL={printer.configfile.settings.printer.max_accel} MINIMUM_CRUISE_RATIO={printer.configfile.settings.printer.minimum_cruise_ratio}
{% else %}
SET_VELOCITY_LIMIT VELOCITY={printer.configfile.settings.printer.max_velocity} ACCEL={printer.configfile.settings.printer.max_accel} ACCEL_TO_DECEL={printer.configfile.settings.printer.max_accel_to_decel}
{% endif %}
# Re-home and get position again for comparison: # Re-home and get position again for comparison:
M400 # Finish moves - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/66 M400 # Finish moves - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/66
@@ -109,4 +121,5 @@ gcode:
GET_POSITION GET_POSITION
# Restore previous gcode state (absolute/relative, etc) # Restore previous gcode state (absolute/relative, etc)
RESTORE_GCODE_STATE NAME=TEST_SPEED RESTORE_GCODE_STATE NAME=TEST_SPEED

View File

@@ -5,13 +5,13 @@ timeout: 600
enable_force_move: True enable_force_move: True
# NOTE If you're using a Raspberry Pi, you can uncomment the next 2 lines, optionally. # NOTE If you're using a Raspberry Pi, you can uncomment the next 2 lines, optionally.
# [temperature_sensor raspberry_pi] #[temperature_sensor raspberry_pi]
# sensor_type: temperature_host #sensor_type: temperature_host
# NOTE If you're using a an Orange Pi, you can uncomment the next 3 lines, optionally. # NOTE If you're using a an Orange Pi, you can uncomment the next 3 lines, optionally.
# [temperature_sensor Orange_Pi] [temperature_sensor Orange_Pi]
# sensor_type: temperature_host sensor_type: temperature_host
# sensor_path: /sys/class/thermal/thermal_zone0/temp sensor_path: /sys/class/thermal/thermal_zone0/temp
[virtual_sdcard] [virtual_sdcard]
path: /home/pi/printer_data/gcodes path: /home/pi/printer_data/gcodes
@@ -29,9 +29,11 @@ gcode:
SET_FILAMENT_SENSOR SENSOR=filament_sensor ENABLE=0 SET_FILAMENT_SENSOR SENSOR=filament_sensor ENABLE=0
[gcode_macro _globals] [gcode_macro _globals]
variable_filament_sensor_enabled: 0 # NOTE Enable(1) or disable(0) the filament sensor, if one is connected # NOTE 0 = false; 1 = true
variable_filament_sensor_enabled: 1 # NOTE Enable(1) or disable(0) the filament sensor, if one is connected
variable_beeping_enabled: 1 # NOTE Enable(1) or disable(0) beeping everywhere except during gantry calibration variable_beeping_enabled: 1 # NOTE Enable(1) or disable(0) beeping everywhere except during gantry calibration
variable_bed_temp_over: 10 # NOTE Start print if bed temperature is over by this amount, otherwise wait for temperature drop variable_bed_temp_over: 10 # NOTE Start print if bed temperature is over by this amount, otherwise wait for temperature drop
variable_bed_temp_not_exact: 1 # NOTE Start print if bed temperature is `target temperature - 1` but continue to heat until target is reached
variable_kamp_enable: 0 # NOTE Enable(1) or disable(0) KAMP (adaptive mesh) variable_kamp_enable: 0 # NOTE Enable(1) or disable(0) KAMP (adaptive mesh)
variable_pre_purge_prime_length: 1.40 variable_pre_purge_prime_length: 1.40
gcode: gcode:
@@ -75,12 +77,20 @@ gcode:
[gcode_macro M190] [gcode_macro M190]
rename_existing: M99190 rename_existing: M99190
gcode: gcode:
#Parameters # Variables
{% set bedtempNotExact = printer["gcode_macro _globals"].bed_temp_not_exact|default(1)|int %}
# Parameters
{% set s = params.S|float %} {% set s = params.S|float %}
M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %} ; Set bed temp M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %} ; Set bed temp
{% if s != 0 %} {% if s != 0 %}
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1} ; Wait for bed temp (within 1 degree) {% if bedtempNotExact == 1 %}
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s-1} MAXIMUM={s+1} ; set & wait for bed temp (within -1 or +1 degree)
M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %} ; set & don't wait for bed temp
{% else %}
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1} ; Wait for bed temp (within +1 degree)
{% endif %}
{% endif %} {% endif %}
[gcode_macro PURGE_LINE] [gcode_macro PURGE_LINE]
@@ -97,7 +107,7 @@ gcode:
# Set safe speeds # Set safe speeds
{% set maxVelocity = printer.configfile.settings.printer.max_velocity|default(200)|int %} {% set maxVelocity = printer.configfile.settings.printer.max_velocity|default(200)|int %}
{% set maxVelocityAdjusted = (0.95 * maxVelocity * 60)|int %} {% set maxVelocityAdjusted = (0.95 * maxVelocity * 60)|int %}
G92 E0.0 ; reset extruder G92 E0.0 ; reset extruder
G90 ; Absolute positioning G90 ; Absolute positioning
@@ -132,7 +142,7 @@ gcode:
{% set bedtempSlicer = bedtemp %} {% set bedtempSlicer = bedtemp %}
{% set bedtempOver = printer["gcode_macro _globals"].bed_temp_over|default(0)|int %} {% set bedtempOver = printer["gcode_macro _globals"].bed_temp_over|default(0)|int %}
{% set maxVelocity = printer.configfile.settings.printer.max_velocity|default(200)|int %} {% set maxVelocity = printer.configfile.settings.printer.max_velocity|default(200)|int %}
{% set maxVelocityAdjusted = (0.90 * maxVelocity * 60)|int %} {% set maxVelocityAdjusted = (0.90 * maxVelocity * 60)|int %}
{% set kampEnabled=printer["gcode_macro _globals"].kamp_enable|default(0)|int %} {% set kampEnabled=printer["gcode_macro _globals"].kamp_enable|default(0)|int %}
{% if printer.configfile.settings.safe_z_home %} {% if printer.configfile.settings.safe_z_home %}
@@ -195,8 +205,8 @@ gcode:
# Set safe speeds # Set safe speeds
{% set zVelocity = printer.configfile.settings.printer.max_z_velocity|default(15)|int %} {% set zVelocity = printer.configfile.settings.printer.max_z_velocity|default(15)|int %}
{% set maxVelocity = printer.configfile.settings.printer.max_velocity|default(200)|int %} {% set maxVelocity = printer.configfile.settings.printer.max_velocity|default(200)|int %}
{% set zVelocityAdjusted = (0.95 * zVelocity * 60)|int %} {% set zVelocityAdjusted = (0.95 * zVelocity * 60)|int %}
{% set maxVelocityAdjusted = (0.95 * maxVelocity * 60)|int %} {% set maxVelocityAdjusted = (0.95 * maxVelocity * 60)|int %}
# Get Boundaries # Get Boundaries
{% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %} {% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %}
@@ -326,4 +336,4 @@ gcode:
G4 P{dur} G4 P{dur}
SET_PIN PIN=beeper VALUE=0 SET_PIN PIN=beeper VALUE=0
G4 P{dur} G4 P{dur}
{% endfor %} {% endfor %}

424
cfgs/timelapse.cfg Normal file
View File

@@ -0,0 +1,424 @@
# Timelapse klipper macro definition
#
# Copyright (C) 2021 Christoph Frei <fryakatkop@gmail.com>
# Copyright (C) 2021 Alex Zellner <alexander.zellner@googlemail.com>
#
# This file may be distributed under the terms of the GNU GPLv3 license
#
# Macro version 1.14
#
##### DO NOT CHANGE ANY MACRO!!! #####
##########################################################################
# #
# GET_TIMELAPSE_SETUP: Print the Timelapse setup to console #
# #
##########################################################################
[gcode_macro GET_TIMELAPSE_SETUP]
description: Print the Timelapse setup
gcode:
{% set tl = printer['gcode_macro TIMELAPSE_TAKE_FRAME'] %}
{% set output_txt = ["Timelapse Setup:"] %}
{% set _dummy = output_txt.append("enable: %s" % tl.enable) %}
{% set _dummy = output_txt.append("park: %s" % tl.park.enable) %}
{% if tl.park.enable %}
{% set _dummy = output_txt.append("park position: %s time: %s s" % (tl.park.pos, tl.park.time)) %}
{% set _dummy = output_txt.append("park cord x:%s y:%s dz:%s" % (tl.park.coord.x, tl.park.coord.y, tl.park.coord.dz)) %}
{% set _dummy = output_txt.append("travel speed: %s mm/s" % tl.speed.travel) %}
{% endif %}
{% set _dummy = output_txt.append("fw_retract: %s" % tl.extruder.fw_retract) %}
{% if not tl.extruder.fw_retract %}
{% set _dummy = output_txt.append("retract: %s mm speed: %s mm/s" % (tl.extruder.retract, tl.speed.retract)) %}
{% set _dummy = output_txt.append("extrude: %s mm speed: %s mm/s" % (tl.extruder.extrude, tl.speed.extrude)) %}
{% endif %}
{% set _dummy = output_txt.append("verbose: %s" % tl.verbose) %}
{action_respond_info(output_txt|join("\n"))}
################################################################################################
# #
# Use _SET_TIMELAPSE_SETUP [ENABLE=value] [VERBOSE=value] [PARK_ENABLE=value] [PARK_POS=value] #
# [PARK_TIME=value] [CUSTOM_POS_X=value] [CUSTOM_POS_Y=value] #
# [CUSTOM_POS_DZ=value][TRAVEL_SPEED=value] [RETRACT_SPEED=value] #
# [EXTRUDE_SPEED=value] [EXTRUDE_DISTANCE=value] #
# [RETRACT_DISTANCE=value] [FW_RETRACT=value] #
# #
################################################################################################
[gcode_macro _SET_TIMELAPSE_SETUP]
description: Set user parameters for timelapse
gcode:
{% set tl = printer['gcode_macro TIMELAPSE_TAKE_FRAME'] %}
##### get min and max bed size #####
{% set min = printer.toolhead.axis_minimum %}
{% set max = printer.toolhead.axis_maximum %}
{% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch']
else False %}
{% set park = {'min' : {'x': (min.x / 1.42)|round(3) if round_bed else min.x|round(3),
'y': (min.y / 1.42)|round(3) if round_bed else min.y|round(3)},
'max' : {'x': (max.x / 1.42)|round(3) if round_bed else max.x|round(3),
'y': (max.y / 1.42)|round(3) if round_bed else max.y|round(3)},
'center': {'x': (max.x-(max.x-min.x)/2)|round(3),
'y': (max.y-(max.y-min.y)/2)|round(3)}} %}
##### set new values #####
{% if params.ENABLE %}
{% if params.ENABLE|lower is in ['true', 'false'] %}
SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=enable VALUE={True if params.ENABLE|lower == 'true' else False}
{% else %}
{action_raise_error("ENABLE=%s not supported. Allowed values are [True, False]" % params.ENABLE|capitalize)}
{% endif %}
{% endif %}
{% if params.VERBOSE %}
{% if params.VERBOSE|lower is in ['true', 'false'] %}
SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=verbose VALUE={True if params.VERBOSE|lower == 'true' else False}
{% else %}
{action_raise_error("VERBOSE=%s not supported. Allowed values are [True, False]" % params.VERBOSE|capitalize)}
{% endif %}
{% endif %}
{% if params.CUSTOM_POS_X %}
{% if params.CUSTOM_POS_X|float >= min.x and params.CUSTOM_POS_X|float <= max.x %}
{% set _dummy = tl.park.custom.update({'x':params.CUSTOM_POS_X|float|round(3)}) %}
{% else %}
{action_raise_error("CUSTOM_POS_X=%s must be within [%s - %s]" % (params.CUSTOM_POS_X, min.x, max.x))}
{% endif %}
{% endif %}
{% if params.CUSTOM_POS_Y %}
{% if params.CUSTOM_POS_Y|float >= min.y and params.CUSTOM_POS_Y|float <= max.y %}
{% set _dummy = tl.park.custom.update({'y':params.CUSTOM_POS_Y|float|round(3)}) %}
{% else %}
{action_raise_error("CUSTOM_POS_Y=%s must be within [%s - %s]" % (params.CUSTOM_POS_Y, min.y, max.y))}
{% endif %}
{% endif %}
{% if params.CUSTOM_POS_DZ %}
{% if params.CUSTOM_POS_DZ|float >= min.z and params.CUSTOM_POS_DZ|float <= max.z %}
{% set _dummy = tl.park.custom.update({'dz':params.CUSTOM_POS_DZ|float|round(3)}) %}
{% else %}
{action_raise_error("CUSTOM_POS_DZ=%s must be within [%s - %s]" % (params.CUSTOM_POS_DZ, min.z, max.z))}
{% endif %}
{% endif %}
{% if params.PARK_ENABLE %}
{% if params.PARK_ENABLE|lower is in ['true', 'false'] %}
{% set _dummy = tl.park.update({'enable':True if params.PARK_ENABLE|lower == 'true' else False}) %}
{% else %}
{action_raise_error("PARK_ENABLE=%s not supported. Allowed values are [True, False]" % params.PARK_ENABLE|capitalize)}
{% endif %}
{% endif %}
{% if params.PARK_POS %}
{% if params.PARK_POS|lower is in ['center','front_left','front_right','back_left','back_right','custom','x_only','y_only'] %}
{% set dic = {'center' : {'x': park.center.x , 'y': park.center.y , 'dz': 1 },
'front_left' : {'x': park.min.x , 'y': park.min.y , 'dz': 0 },
'front_right' : {'x': park.max.x , 'y': park.min.y , 'dz': 0 },
'back_left' : {'x': park.min.x , 'y': park.max.y , 'dz': 0 },
'back_right' : {'x': park.max.x , 'y': park.max.y , 'dz': 0 },
'custom' : {'x': tl.park.custom.x, 'y': tl.park.custom.y, 'dz': tl.park.custom.dz},
'x_only' : {'x': tl.park.custom.x, 'y': 'none' , 'dz': tl.park.custom.dz},
'y_only' : {'x': 'none' , 'y': tl.park.custom.y, 'dz': tl.park.custom.dz}} %}
{% set _dummy = tl.park.update({'pos':params.PARK_POS|lower}) %}
{% set _dummy = tl.park.update({'coord':dic[tl.park.pos]}) %}
{% else %}
{action_raise_error("PARK_POS=%s not supported. Allowed values are [CENTER, FRONT_LEFT, FRONT_RIGHT, BACK_LEFT, BACK_RIGHT, CUSTOM, X_ONLY, Y_ONLY]"
% params.PARK_POS|upper)}
{% endif %}
{% endif %}
{% if params.PARK_TIME %}
{% if params.PARK_TIME|float >= 0.0 %}
{% set _dummy = tl.park.update({'time':params.PARK_TIME|float|round(3)}) %}
{% else %}
{action_raise_error("PARK_TIME=%s must be a positive number" % params.PARK_TIME)}
{% endif %}
{% endif %}
SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=park VALUE="{tl.park}"
{% if params.TRAVEL_SPEED %}
{% if params.TRAVEL_SPEED|float > 0.0 %}
{% set _dummy = tl.speed.update({'travel':params.TRAVEL_SPEED|float|round(3)}) %}
{% else %}
{action_raise_error("TRAVEL_SPEED=%s must be larger than 0" % params.TRAVEL_SPEED)}
{% endif %}
{% endif %}
{% if params.RETRACT_SPEED %}
{% if params.RETRACT_SPEED|float > 0.0 %}
{% set _dummy = tl.speed.update({'retract':params.RETRACT_SPEED|float|round(3)}) %}
{% else %}
{action_raise_error("RETRACT_SPEED=%s must be larger than 0" % params.RETRACT_SPEED)}
{% endif %}
{% endif %}
{% if params.EXTRUDE_SPEED %}
{% if params.EXTRUDE_SPEED|float > 0.0 %}
{% set _dummy = tl.speed.update({'extrude':params.EXTRUDE_SPEED|float|round(3)}) %}
{% else %}
{action_raise_error("EXTRUDE_SPEED=%s must be larger than 0" % params.EXTRUDE_SPEED)}
{% endif %}
{% endif %}
SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=speed VALUE="{tl.speed}"
{% if params.EXTRUDE_DISTANCE %}
{% if params.EXTRUDE_DISTANCE|float >= 0.0 %}
{% set _dummy = tl.extruder.update({'extrude':params.EXTRUDE_DISTANCE|float|round(3)}) %}
{% else %}
{action_raise_error("EXTRUDE_DISTANCE=%s must be specified as positiv number" % params.EXTRUDE_DISTANCE)}
{% endif %}
{% endif %}
{% if params.RETRACT_DISTANCE %}
{% if params.RETRACT_DISTANCE|float >= 0.0 %}
{% set _dummy = tl.extruder.update({'retract':params.RETRACT_DISTANCE|float|round(3)}) %}
{% else %}
{action_raise_error("RETRACT_DISTANCE=%s must be specified as positiv number" % params.RETRACT_DISTANCE)}
{% endif %}
{% endif %}
{% if params.FW_RETRACT %}
{% if params.FW_RETRACT|lower is in ['true', 'false'] %}
{% if 'firmware_retraction' in printer.configfile.settings %}
{% set _dummy = tl.extruder.update({'fw_retract': True if params.FW_RETRACT|lower == 'true' else False}) %}
{% else %}
{% set _dummy = tl.extruder.update({'fw_retract':False}) %}
{% if params.FW_RETRACT|capitalize == 'True' %}
{action_raise_error("[firmware_retraction] not defined in printer.cfg. Can not enable fw_retract")}
{% endif %}
{% endif %}
{% else %}
{action_raise_error("FW_RETRACT=%s not supported. Allowed values are [True, False]" % params.FW_RETRACT|capitalize)}
{% endif %}
{% endif %}
SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=extruder VALUE="{tl.extruder}"
{% if printer.configfile.settings['gcode_macro pause'] is defined %}
{% set _dummy = tl.macro.update({'pause': printer.configfile.settings['gcode_macro pause'].rename_existing}) %}
{% endif %}
{% if printer.configfile.settings['gcode_macro resume'] is defined %}
{% set _dummy = tl.macro.update({'resume': printer.configfile.settings['gcode_macro resume'].rename_existing}) %}
{% endif %}
SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=macro VALUE="{tl.macro}"
##########################################################################
# #
# TIMELAPSE_TAKE_FRAME: take the next picture #
# #
##########################################################################
######################### definition #########################
## enable: enable or disable the next frame. Valid inputs: [True, False]
## takingframe: internal use. Valid inputs: [True, False]
##
## park.enable: enable or disable to park the head while taking a picture. Valid inputs: [True, False]
## park.pos : used position for parking. Valid inputs: [center, front_left, front_right, back_left, back_right, custom, x_only, y_only]
## park.time : used for the debug macro. Time in s
## park.custom.x, park.custom.y: coordinates of the custom parkposition. Unit [mm]
## park.custom.dz : custom z hop for the picture. Unit [mm]
## park.coord : internal use
##
## extruder.fw_retract: enable disable fw retraction [True,False]
## extruder.extrude : filament extruded at the end of park. Unit [mm]
## extruder.retract : filament retract at the start of park. Unit [mm]
##
## speed.travel : used speed for travel from and to the park positon. Unit: [mm/min]
## speed.retract: used speed for retract [mm/min]
## speed.extrude: used speed for extrude [mm/min]
##
## verbose: Enable mesage output of TIMELAPSE_TAKE_FRAME
##
## restore.absolute.coordinates: internal use
## restore.absolute.extrude : internal use
## restore.speed : internal use
## restore.e : internal use
## restore.factor.speed : internal use
## restore.factor.extrude : internal use
##
## macro.pause : internal use
## macro.resume : internal use
##
## is_paused: internal use
###############################################################
[gcode_macro TIMELAPSE_TAKE_FRAME]
description: Take Timelapse shoot
variable_enable: False
variable_takingframe: False
variable_park: {'enable': False,
'pos' : 'center',
'time' : 0.1,
'custom': {'x': 0, 'y': 0, 'dz': 0},
'coord' : {'x': 0, 'y': 0, 'dz': 0}}
variable_extruder: {'fw_retract': False,
'retract': 1.0,
'extrude': 1.0}
variable_speed: {'travel': 100,
'retract': 15,
'extrude': 15}
variable_verbose: True
variable_restore: {'absolute': {'coordinates': True, 'extrude': True}, 'speed': 1500, 'e':0, 'factor': {'speed': 1.0, 'extrude': 1.0}}
variable_macro: {'pause': 'PAUSE', 'resume': 'RESUME'}
variable_is_paused: False
gcode:
{% set hyperlapse = True if params.HYPERLAPSE and params.HYPERLAPSE|lower =='true' else False %}
{% if enable %}
{% if (hyperlapse and printer['gcode_macro HYPERLAPSE'].run) or
(not hyperlapse and not printer['gcode_macro HYPERLAPSE'].run) %}
{% if park.enable %}
{% set pos = {'x': 'X' + park.coord.x|string if park.pos != 'y_only' else '',
'y': 'Y' + park.coord.y|string if park.pos != 'x_only' else '',
'z': 'Z'+ [printer.gcode_move.gcode_position.z + park.coord.dz, printer.toolhead.axis_maximum.z]|min|string} %}
{% set restore = {'absolute': {'coordinates': printer.gcode_move.absolute_coordinates,
'extrude' : printer.gcode_move.absolute_extrude},
'speed' : printer.gcode_move.speed,
'e' : printer.gcode_move.gcode_position.e,
'factor' : {'speed' : printer.gcode_move.speed_factor,
'extrude': printer.gcode_move.extrude_factor}} %}
SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=restore VALUE="{restore}"
{% if not printer[printer.toolhead.extruder].can_extrude %}
{% if verbose %}{action_respond_info("Timelapse: Warning, minimum extruder temperature not reached!")}{% endif %}
{% else %}
{% if extruder.fw_retract %}
G10
{% else %}
M83 ; insure relative extrusion
G0 E-{extruder.retract} F{speed.retract * 60}
{% endif %}
{% endif %}
SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=is_paused VALUE=True
{macro.pause} ; execute the klipper PAUSE command
SET_GCODE_OFFSET X=0 Y=0 ; this will insure that the head parks always at the same position in a multi setup
G90 ; insure absolute move
{% if "xyz" not in printer.toolhead.homed_axes %}
{% if verbose %}{action_respond_info("Timelapse: Warning, axis not homed yet!")}{% endif %}
{% else %}
G0 {pos.x} {pos.y} {pos.z} F{speed.travel * 60}
{% endif %}
SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=takingframe VALUE=True
UPDATE_DELAYED_GCODE ID=_WAIT_TIMELAPSE_TAKE_FRAME DURATION=0.5
M400
{% endif %}
_TIMELAPSE_NEW_FRAME HYPERLAPSE={hyperlapse}
{% endif %}
{% else %}
{% if verbose %}{action_respond_info("Timelapse: disabled, take frame ignored")}{% endif %}
{% endif %}
[gcode_macro _TIMELAPSE_NEW_FRAME]
description: action call for timelapse shoot. must be a seperate macro
gcode:
{action_call_remote_method("timelapse_newframe",
macropark=printer['gcode_macro TIMELAPSE_TAKE_FRAME'].park,
hyperlapse=params.HYPERLAPSE)}
[delayed_gcode _WAIT_TIMELAPSE_TAKE_FRAME]
gcode:
{% set tl = printer['gcode_macro TIMELAPSE_TAKE_FRAME'] %}
{% set factor = {'speed': printer.gcode_move.speed_factor, 'extrude': printer.gcode_move.extrude_factor} %}
{% if tl.takingframe %}
UPDATE_DELAYED_GCODE ID=_WAIT_TIMELAPSE_TAKE_FRAME DURATION=0.5
{% else %}
{tl.macro.resume} VELOCITY={tl.speed.travel} ; execute the klipper RESUME command
SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=is_paused VALUE=False
{% if not printer[printer.toolhead.extruder].can_extrude %}
{action_respond_info("Timelapse: Warning minimum extruder temperature not reached!")}
{% else %}
{% if tl.extruder.fw_retract %}
G11
{% else %}
G0 E{tl.extruder.extrude} F{tl.speed.extrude * 60}
G0 F{tl.restore.speed}
{% if tl.restore.absolute.extrude %}
M82
G92 E{tl.restore.e}
{% endif %}
{% endif %}
{% endif %}
{% if tl.restore.factor.speed != factor.speed %} M220 S{(factor.speed*100)|round(0)} {% endif %}
{% if tl.restore.factor.extrude != factor.extrude %} M221 S{(factor.extrude*100)|round(0)} {% endif %}
{% if not tl.restore.absolute.coordinates %} G91 {% endif %}
{% endif %}
####################################################################################################
# #
# HYPERLAPSE: Starts or stops a Hyperlapse video #
# Usage: HYPERLAPSE ACTION=START [CYCLE=time] starts a hyperlapse with cycle time (default 30 sec) #
# HYPERLAPSE ACTION=STOP stops the hyperlapse recording #
# #
####################################################################################################
######################### definition #########################
## cycle: cycle time in seconds
## run: internal use [True/False]
###############################################################
[gcode_macro HYPERLAPSE]
description: Start/Stop a hyperlapse recording
variable_cycle: 0
variable_run: False
gcode:
{% set cycle = params.CYCLE|default(30)|int %}
{% if params.ACTION and params.ACTION|lower == 'start' %}
{action_respond_info("Hyperlapse: frames started (Cycle %d sec)" % cycle)}
SET_GCODE_VARIABLE MACRO=HYPERLAPSE VARIABLE=run VALUE=True
SET_GCODE_VARIABLE MACRO=HYPERLAPSE VARIABLE=cycle VALUE={cycle}
UPDATE_DELAYED_GCODE ID=_HYPERLAPSE_LOOP DURATION={cycle}
TIMELAPSE_TAKE_FRAME HYPERLAPSE=True
{% elif params.ACTION and params.ACTION|lower == 'stop' %}
{% if run %}{action_respond_info("Hyperlapse: frames stopped")}{% endif %}
SET_GCODE_VARIABLE MACRO=HYPERLAPSE VARIABLE=run VALUE=False
UPDATE_DELAYED_GCODE ID=_HYPERLAPSE_LOOP DURATION=0
{% else %}
{action_raise_error("Hyperlapse: No valid input parameter
Use:
- HYPERLAPSE ACTION=START [CYCLE=time]
- HYPERLAPSE ACTION=STOP")}
{% endif %}
[delayed_gcode _HYPERLAPSE_LOOP]
gcode:
UPDATE_DELAYED_GCODE ID=_HYPERLAPSE_LOOP DURATION={printer["gcode_macro HYPERLAPSE"].cycle}
TIMELAPSE_TAKE_FRAME HYPERLAPSE=True
##########################################################################
# #
# TIMELAPSE_RENDER: Render the video at print end #
# #
##########################################################################
######################### definition #########################
## render: internal use. Valid inputs: [True, False]
## run_identifier: internal use. Valid input [0 .. 3]
###############################################################
[gcode_macro TIMELAPSE_RENDER]
description: Render Timelapse video and wait for the result
variable_render: False
variable_run_identifier: 0
gcode:
{action_respond_info("Timelapse: Rendering started")}
{action_call_remote_method("timelapse_render", byrendermacro="True")}
SET_GCODE_VARIABLE MACRO=TIMELAPSE_RENDER VARIABLE=render VALUE=True
{printer.configfile.settings['gcode_macro pause'].rename_existing} ; execute the klipper PAUSE command
UPDATE_DELAYED_GCODE ID=_WAIT_TIMELAPSE_RENDER DURATION=0.5
[delayed_gcode _WAIT_TIMELAPSE_RENDER]
gcode:
{% set ri = printer['gcode_macro TIMELAPSE_RENDER'].run_identifier % 4 %}
SET_GCODE_VARIABLE MACRO=TIMELAPSE_RENDER VARIABLE=run_identifier VALUE={ri + 1}
{% if printer['gcode_macro TIMELAPSE_RENDER'].render %}
M117 Rendering {['-','\\','|','/'][ri]}
UPDATE_DELAYED_GCODE ID=_WAIT_TIMELAPSE_RENDER DURATION=0.5
{% else %}
{action_respond_info("Timelapse: Rendering finished")}
M117
{printer.configfile.settings['gcode_macro resume'].rename_existing} ; execute the klipper RESUME command
{% endif %}
##########################################################################
# #
# TEST_STREAM_DELAY: Helper macro to find stream and park delay #
# #
##########################################################################
[gcode_macro TEST_STREAM_DELAY]
description: Helper macro to find stream and park delay
gcode:
{% set min = printer.toolhead.axis_minimum %}
{% set max = printer.toolhead.axis_maximum %}
{% set act = printer.toolhead.position %}
{% set tl = printer['gcode_macro TIMELAPSE_TAKE_FRAME'] %}
{% if act.z > 5.0 %}
G0 X{min.x + 5.0} F{tl.speed.travel|int * 60}
G0 X{(max.x-min.x)/2}
G4 P{tl.park.time|float * 1000}
_TIMELAPSE_NEW_FRAME HYPERLAPSE=FALSE
G0 X{max.x - 5.0}
{% else %}
{action_raise_error("Toolhead z %.3f to low. Please place head above z = 5.0" % act.z)}
{% endif %}

60
crowsnest.conf Normal file
View File

@@ -0,0 +1,60 @@
#### crowsnest.conf
#### This is a typical default config.
#### Also used as default in mainsail / MainsailOS
#### See:
#### https://github.com/mainsail-crew/crowsnest/blob/master/README.md
#### for details to configure to your needs.
#####################################################################
#### #####
#### Information about ports and according URL's #####
#### #####
#####################################################################
#### #####
#### Port 8080 equals /webcam/?action=[stream/snapshot] #####
#### Port 8081 equals /webcam2/?action=[stream/snapshot] #####
#### Port 8082 equals /webcam3/?action=[stream/snapshot] #####
#### Port 8083 equals /webcam4/?action=[stream/snapshot] #####
#### #####
#####################################################################
#### RTSP Stream URL: ( if enabled and supported ) #####
#### rtsp://<ip>:<rtsp_port>/stream.h264 #####
#####################################################################
[crowsnest]
log_path: /home/pi/printer_data/logs/crowsnest.log
log_level: verbose # Valid Options are quiet/verbose/debug
delete_log: false # Deletes log on every restart, if set to true
no_proxy: false
[cam 1]
mode: ustreamer # ustreamer - Provides mjpg and snapshots. (All devices)
# camera-streamer - Provides webrtc, mjpg and snapshots. (rpi + Raspi OS based only)
enable_rtsp: false # If camera-streamer is used, this enables also usage of an rtsp server
rtsp_port: 8554 # Set different ports for each device!
port: 8080 # HTTP/MJPG Stream/Snapshot Port
device: /dev/video0 # See Log for available ...
# resolution: 640x480 # 4:3
# resolution: 800x600 # 4:3
# resolution: 960x720 # 4:3
# resolution: 1024x768 # 4:3
# resolution: 1152x864 # 4:3
# resolution: 1280x960 # 4:3
# resolution: 1400x1050 # 4:3
# resolution: 1440x1080 # 4:3
# resolution: 1600x1200 # 4:3
# resolution: 1856x1392 # 4:3
# resolution: 1920x1440 # 4:3
# resolution: 640x360 # 16:9 nHD
# resolution: 854x480 # 16:9 FWVGA
# resolution: 960x540 # 16:9 qHD
# resolution: 1024x576 # 16:9 WSVGA
resolution: 1280x720 # 16:9 HD
# resolution: 1366x768 # 16:9 FWXGA
# resolution: 1600x900 # 16:9 HD+
# resolution: 1920x1080 # 16:9 Full HD
max_fps: 30 # If Hardware Supports this it will be forced, otherwise ignored/coerced.
#custom_flags: # You can run the Stream Services with custom flags.
#v4l2ctl: # Add v4l2-ctl parameters to setup your camera, see Log what your cam is capable of.

6
differences.md Normal file
View File

@@ -0,0 +1,6 @@
# Differences
| Property | Marlin | OSS Klipper Config |
| ------------------------- | ------ | ------------------ |
| `stepper_z` `run_current` | 0.800 | 0.900 |
| `microsteps` | 16 | 128 |

BIN
images/octahedroflake.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 510 KiB

View File

@@ -1,48 +1,63 @@
echo:; Linear Units: Recv: echo:; Linear Units:
echo: G21 ; (mm) Recv: echo: G21 ; (mm)
echo:; Temperature Units: Recv: echo:; Temperature Units:
echo: M149 C ; Units in Celsius Recv: echo: M149 C ; Units in Celsius
echo:; Filament settings (Disabled): Recv: echo:; Filament settings (Disabled):
echo: M200 S0 D1.75 Recv: echo: M200 S0 D1.75
echo:; Steps per unit: Recv: echo:; Steps per unit:
echo: M92 X80.00 Y80.00 Z800.00 E691.50 Recv: echo: M92 X80.00 Y80.00 Z800.00 E691.50
echo:; Max feedrates (units/s): Recv: echo:; Max feedrates (units/s):
echo: M203 X500.00 Y500.00 Z10.00 E30.00 Recv: echo: M203 X200.00 Y200.00 Z12.00 E120.00
echo:; Max Acceleration (units/s2): Recv: echo:; Max Acceleration (units/s2):
echo: M201 X500.00 Y500.00 Z100.00 E5000.00 Recv: echo: M201 X1000.00 Y1000.00 Z200.00 E5000.00
echo:; Acceleration (units/s2) (P<print-accel> R<retract-accel> T<travel-accel>): Recv: echo:; Acceleration (units/s2) (P<print-accel> R<retract-accel> T<travel-accel>):
echo: M204 P500.00 R500.00 T1000.00 Recv: echo: M204 P1000.00 R1250.00 T1500.00
echo:; Advanced (B<min_segment_time_us> S<min_feedrate> T<min_travel_feedrate> X<max_x_jerk> Y<max_y_jerk> Z<max_z_jerk> E<max_e_jerk>): Recv: echo:; Advanced (B<min_segment_time_us> S<min_feedrate> T<min_travel_feedrate> J<junc_dev>):
echo: M205 B20000.00 S0.00 T0.00 X8.00 Y8.00 Z0.40 E5.00 Recv: echo: M205 B20000.00 S0.00 T0.00 J0.01
echo:; Home offset: Recv: echo:; Home offset:
echo: M206 X0.00 Y0.00 Z0.00 Recv: echo: M206 X0.00 Y0.00 Z0.00
echo:; Auto Bed Leveling: Recv: echo:; Unified Bed Leveling:
echo: M420 S0 Z10.00 ; Leveling OFF Recv: echo: M420 S1 Z10.00 ; Leveling ON
echo:; Material heatup parameters: Recv: Unified Bed Leveling System v1.01 active
echo: M145 S0 H185.00 B60.00 F255 Recv: echo:Active Mesh Slot 0
echo: M145 S1 H240.00 B80.00 F255 Recv: echo:EEPROM can hold 2 meshes.
echo:; Hotend PID: Recv: echo:; X-Twist Correction:
echo: M301 P15.95 I1.30 D48.96 Recv: M423 A0.00 I110.00
echo:; Bed PID: Recv: M423 X0 Z0.00
echo:echo: M304 P110.38 I6.12 D497.30 Recv: M423 X1 Z0.00
echo:; User thermistors: Recv: M423 X2 Z0.00
echo: M305 P0 R4700.0 T94162.0 B4160.0 C0.000000000 ; HOTEND 0 Recv: echo:; Material heatup parameters:
echo:; Power-loss recovery: Recv: echo: M145 S0 H200.00 B60.00 F0
echo: M413 S1 ; ON Recv: echo: M145 S1 H240.00 B70.00 F0
echo:; Z-Probe Offset: Recv: echo: M145 S2 H205.00 B45.00 F0
echo: M851 X25.00 Y-25.00 Z0.00 ; (mm) Recv: echo: M145 S3 H260.00 B70.00 F0
echo:; Stepper driver current: Recv: echo:; Hotend PID:
echo: M906 X860 Y900 Z800 Recv: echo: M301 P23.48 I2.99 D46.09
echo: M906 T0 E550 Recv: echo:; Bed PID:
echo:; Hybrid Threshold: Recv: echo: M304 P163.96 I28.03 D639.32
echo: M913 X183 Y183 Z41 Recv: echo:; User thermistors:
echo: M913 T0 E60 Recv: echo: M305 P0 R4700.0 T94162.0 B4160.0 C0.000000000 ; HOTEND 0
echo:; StallGuard threshold: Recv: echo:; Power-loss recovery:
echo: M914 X68 Y70 Recv: echo: M413 S0 ; OFF
echo:; Driver stepping mode: Recv: echo:; Z-Probe Offset:
echo: M569 S1 X Y Z Recv: echo: M851 X28.00 Y-20.00 Z-2.02 ; (mm)
echo: M569 S1 T0 E Recv: echo:; Stepper driver current:
echo:; Linear Advance: Recv: echo: M906 X860 Y900 Z1000
echo: M900 K0.04 Recv: echo: M906 T0 E550
echo:; Filament load/unload: Recv: echo:; Hybrid Threshold:
echo: M603 L0.00 U50.00 ; (mm) Recv: echo: M913 X183 Y183 Z41
Recv: echo: M913 T0 E60
Recv: echo:; StallGuard threshold:
Recv: echo: M914 X65 Y68
Recv: echo:; Driver stepping mode:
Recv: echo: M569 S1 X Y Z
Recv: echo: M569 S1 T0 E
Recv: echo:; Input Shaping:
Recv: echo: M593 X F40.00 D0.15
Recv: echo: M593 Y F40.00 D0.15
Recv: echo:; Linear Advance:
Recv: echo: M900 K0.05
Recv: echo:; Filament load/unload:
Recv: echo: M603 L0.00 U50.00 ; (mm)
Recv: echo:; Filament runout sensor:
Recv: echo: M412 S0 ; Sensor OFF

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -38,4 +38,23 @@ path: ~/mainsail
[file_manager] [file_manager]
# NOTE Cancel objects feature is enabled. If you're using a low powered device, set to False. # NOTE Cancel objects feature is enabled. If you're using a low powered device, set to False.
# Also see [exclude_object] section in printer.cfg. # Also see [exclude_object] section in printer.cfg.
enable_object_processing: True enable_object_processing: True
# Crowsnest update_manager entry
[update_manager crowsnest]
type: git_repo
path: ~/crowsnest
origin: https://github.com/mainsail-crew/crowsnest.git
managed_services: crowsnest
install_script: tools/pkglist.sh
[update_manager timelapse]
type: git_repo
primary_branch: main
path: ~/moonraker-timelapse
origin: https://github.com/mainsail-crew/moonraker-timelapse.git
managed_services: klipper moonraker
[timelapse]
output_path: ~/printer_data/timelapse/
frame_path: /tmp/timelapse/printer

View File

@@ -4,8 +4,10 @@
[include ./cfgs/CALIBRATION.cfg] [include ./cfgs/CALIBRATION.cfg]
[include ./cfgs/kamp/KAMP_Settings.cfg] [include ./cfgs/kamp/KAMP_Settings.cfg]
[include ./cfgs/TEST_SPEED.cfg] [include ./cfgs/TEST_SPEED.cfg]
[include ./cfgs/GET_VARIABLE.cfg]
[include ./cfgs/timelapse.cfg]
# NOTE Uncomment the ONE of the following lines if you're using an adxl345 # NOTE Uncomment the ONE of the following lines if you're using an adxl345
# [include ./cfgs/adxl-rp2040.cfg] # [include ./cfgs/adxl-rp2040.cfg]
# [include ./cfgs/adxl-rpi-pico-2x.cfg] # [include ./cfgs/adxl-rpi-pico-2x.cfg]
# [include ./cfgs/adxl-direct.cfg] # [include ./cfgs/adxl-rpi-direct.cfg]

View File

@@ -8,13 +8,15 @@
[mcu] [mcu]
# NOTE Obtain definition by "ls -l /dev/serial/by-path/" or "ls -l /dev/serial/by-id/" # NOTE Obtain definition by "ls -l /dev/serial/by-path/" or "ls -l /dev/serial/by-id/"
serial: /dev/serial/by-path/platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.2:1.0-port0 #serial: /dev/serial/by-path/platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.2:1.0-port0
#serial: /dev/serial/by-path/platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.1:1.0-port0
serial: /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
restart_method: command restart_method: command
[printer] [printer]
kinematics: cartesian kinematics: cartesian
max_velocity: 200 max_velocity: 300
max_accel: 3000 max_accel: 11000
max_z_velocity: 15 max_z_velocity: 15
max_z_accel: 45 max_z_accel: 45
square_corner_velocity: 8.0 square_corner_velocity: 8.0
@@ -37,10 +39,10 @@ homing_retract_dist: 0
[tmc2209 stepper_x] [tmc2209 stepper_x]
uart_pin: PC1 uart_pin: PC1
run_current: 0.860 run_current: 0.900 # 0.860 marlin & master
stealthchop_threshold: 0 stealthchop_threshold: 0
interpolate: False interpolate: False
sense_resistor: 0.150 sense_resistor: 0.110 # 0.150
uart_address: 3 uart_address: 3
driver_SGTHRS: 81 driver_SGTHRS: 81
diag_pin: PA5 diag_pin: PA5
@@ -62,7 +64,7 @@ uart_pin: PC0
run_current: 0.900 run_current: 0.900
stealthchop_threshold: 0 stealthchop_threshold: 0
interpolate: False interpolate: False
sense_resistor: 0.150 sense_resistor: 0.110 # 0.150
uart_address: 3 uart_address: 3
driver_SGTHRS: 81 driver_SGTHRS: 81
diag_pin: PA6 diag_pin: PA6
@@ -74,16 +76,16 @@ enable_pin: !PC3
microsteps: 128 microsteps: 128
rotation_distance: 4 rotation_distance: 4
endstop_pin: probe:z_virtual_endstop endstop_pin: probe:z_virtual_endstop
position_min: -4 position_min: -3
position_max: 258 # NOTE You can adjust this if you have more room position_max: 258 # NOTE You can adjust this if you have more room
homing_speed: 5 homing_speed: 5
[tmc2209 stepper_z] [tmc2209 stepper_z]
uart_pin: PA15 uart_pin: PA15
run_current: 1.000 run_current: 0.800 # 0.900 prev personal # 0.800 marlin # 1.000 master
stealthchop_threshold: 0 stealthchop_threshold: 0
interpolate: False interpolate: False
sense_resistor: 0.150 sense_resistor: 0.110 # 0.150
uart_address: 3 uart_address: 3
diag_pin: PA7 diag_pin: PA7
@@ -102,14 +104,11 @@ filament_diameter: 1.750
heater_pin: PA1 heater_pin: PA1
sensor_type: EPCOS 100K B57560G104F sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC5 sensor_pin: PC5
control: pid
pid_kd: 86.991
pid_kp: 21.479
pid_ki: 1.326
min_temp: 0 min_temp: 0
max_temp: 300 max_temp: 300
max_extrude_only_distance: 150.0 max_extrude_only_distance: 150.0
max_extrude_cross_section: 5 # NOTE Needed for KAMP purge max_extrude_cross_section: 5 # NOTE Needed for KAMP purge
pressure_advance: 0.031 # 0.0435 # 0.0465 # 0.044
[tmc2209 extruder] [tmc2209 extruder]
uart_pin: PC14 uart_pin: PC14
@@ -127,10 +126,6 @@ uart_address: 3
heater_pin: PA2 heater_pin: PA2
sensor_type: EPCOS 100K B57560G104F sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC4 sensor_pin: PC4
control: pid
pid_kp: 64.440
pid_ki: 0.773
pid_kd: 1343.571
min_temp: 0 min_temp: 0
max_temp: 110 max_temp: 110
@@ -142,7 +137,7 @@ max_temp: 110
pin: PB1 pin: PB1
x_offset: 27 x_offset: 27
y_offset: -20 y_offset: -20
z_offset: 0 # z_offset: 0
samples: 3 samples: 3
samples_result: median samples_result: median
samples_tolerance: 0.01 samples_tolerance: 0.01
@@ -188,6 +183,12 @@ sid_pin: PB15
encoder_pins: ^PB14, ^PB10 encoder_pins: ^PB14, ^PB10
click_pin: ^!PB2 click_pin: ^!PB2
[input_shaper]
shaper_freq_x: 50.4 # 55.8 # 55.2 # 53.4 # 56.0 # 56.6 # 55.0 ; recommend accel <7500; 9200
shaper_type_x: mzv
shaper_freq_y: 41.4 # 42.4 # 43.2 # 45.4 # 48.4 ; recommend accel < 5000;5300
shaper_type_y: mzv
[bed_screws] [bed_screws]
screw1_name: front left screw1_name: front left
screw1: 26.5, 31 screw1: 26.5, 31
@@ -229,3 +230,83 @@ runout_gcode:
M117 Runout Detected M117 Runout Detected
{ action_respond_info("Runout Detected") } { action_respond_info("Runout Detected") }
CONDITIONAL_BEEP i=3 dur=300 freq=400 CONDITIONAL_BEEP i=3 dur=300 freq=400
#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [extruder]
#*# control = pid
#*# pid_kp = 29.273
#*# pid_ki = 3.049
#*# pid_kd = 70.256
#*#
#*# [heater_bed]
#*# control = pid
#*# pid_kp = 67.629
#*# pid_ki = 1.338
#*# pid_kd = 854.657
#*#
#*# [probe]
#*# z_offset = 1.300
#*#
#*# [axis_twist_compensation]
#*# z_compensations = 0.086615, -0.020885, -0.065729
#*# compensation_start_x = 27.0
#*# compensation_end_x = 195.0
#*#
#*# [bed_mesh default-1]
#*# version = 1
#*# points =
#*# 0.038482, 0.061556, 0.047131, 0.009098, -0.055469
#*# -0.033862, 0.002963, 0.008381, -0.014808, -0.099375
#*# -0.095737, -0.047819, -0.040213, -0.062620, -0.132031
#*# -0.102768, -0.048131, -0.042088, -0.064808, -0.124688
#*# -0.036206, 0.030931, 0.037131, 0.011598, -0.052656
#*# min_x = 27.0
#*# max_x = 222.0
#*# min_y = 6.0
#*# max_y = 203.0
#*# x_count = 5
#*# y_count = 5
#*# mesh_x_pps = 2
#*# mesh_y_pps = 2
#*# algo = lagrange
#*# tension = 0.2
#*#
#*# [bed_mesh default-0]
#*# version = 1
#*# points =
#*# 0.037145, 0.055020, 0.034770, -0.006886, -0.072291
#*# -0.035980, -0.003730, 0.000395, -0.026104, -0.109323
#*# -0.095512, -0.047480, -0.047261, -0.073292, -0.135573
#*# -0.091918, -0.042793, -0.043824, -0.073136, -0.132760
#*# -0.026449, 0.032520, 0.031801, -0.001886, -0.079010
#*# min_x = 27.0
#*# max_x = 222.0
#*# min_y = 6.0
#*# max_y = 203.0
#*# x_count = 5
#*# y_count = 5
#*# mesh_x_pps = 2
#*# mesh_y_pps = 2
#*# algo = lagrange
#*# tension = 0.2
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*# 0.029919, 0.051593, 0.042329, -0.005485, -0.076198
#*# -0.035550, 0.010968, 0.015923, -0.012203, -0.101979
#*# -0.095706, -0.038564, -0.032827, -0.059860, -0.134323
#*# -0.098988, -0.036220, -0.031733, -0.060641, -0.127292
#*# -0.035238, 0.039718, 0.042954, 0.004047, -0.067135
#*# x_count = 5
#*# y_count = 5
#*# mesh_x_pps = 2
#*# mesh_y_pps = 2
#*# algo = lagrange
#*# tension = 0.2
#*# min_x = 27.0
#*# max_x = 222.0
#*# min_y = 6.0
#*# max_y = 203.0

1
timelapse.cfg Symbolic link
View File

@@ -0,0 +1 @@
/home/pi/moonraker-timelapse/klipper_macro/timelapse.cfg