Huge thanks to my Patrons and Printable's Club supporter without whom this would not exist.
To support my work, the material, time testing, and refining it consider joining my Patreon (also has the ApolloLander shroud) or Printables' club. They have additional bearing and bottom axle size options, and you can request other tweaks as well. They will soon have ender3max support too.
STEP file included on my Patreon and Printables' club (Z linear rails mod has been added) You will also have access to my very chill discord community.
No extended support or request here, I dedicate that limited time to my patrons. -----------------------------------------------------------------------------------------------
One working and tested novelty here is a self tensioning system using a spring ( two specific spring were tested, can be found on Amazon or aliexpress, see BOM ). and belt had excellent tension and both matched each other within 1hz 15mmx8mm yellow and red spring have been tested and work great.
You can technically not use the springs, and only use a screw in place of the spring (M4x16 or 18), where the screw head will push up, forcing the tensioner to go down, as you unscrew it.
To tension the belt easiest is to move the X axis as far up for easier screw head access.
edit: added a v2 XZ plate and tensioner that will make the screw install much easier
July 5th: below is the V2 plates, tested, working great and easier install than before. ( old tensioner are not compatible with v2 plates )
This will possibly get further improvements but as is works great. (edit: only took another day to post an improved model)
I tested it on ender3v2 so no PSU in the way, but for ender3 and 3pro you will need to find a way to relocate the PSU or shift it further back
Direct drive only, there is no platform for an extruder, will likely make one eventually
Other (I don't remember what stock was like so may be needed):
(3x ?) M5x40 for V-wheel axles (button head) - Amazon
(3x ?) 8.3mm spacer on the v-wheels (8.3x5mmID) - can be printed - Amazon (as an example, not 100% those are correct on that link, on my ender3v2 they are actually 8.3mm, the printed one I made are 8.2mm to match layer height)
Individual Z , requires 5 stepper drivers for Z-tilt as each z will likely loose its horizontal when motors are powered off (like dual Z screw)
or
Mechanically linked Z(this wasn't actually tested but should work fine) Motors can share a stepper (or still have individual ones, which is technically better). In theory this can run also on a single motor, but not sure if in practice that would work ( both regarding holding the X axis while motor are powered off or if there could be some mechanical lag between the two Z )
Lower axle info:
Will work with dual stock Z motor (I used the stock Y motor as my second z) and holds in place, might only droop a few mm at least on my machine. You can reuse the stock y motor on ender3/pro/v2, as they are identical. Not sure if you can use the motor as is ( seems like it, but also use a 20t timing pulley for the other motor) you might need to remove the press fit pulley (I Dremel cut mine)
To tighten the belt secure the motor to the motor block, load the belt, and pull on the motor block to tighten the belt and secure the M5 screws as you pull. (you can also slot in a thin wrench for leverage)
if you have to remove the bearing, thought of that too, use a small screwdriver in the gap as shown on the 4th render
Top Axis:
Individual Z setup:
Use a M5x16 or M5x20 as the pulley axle, don't over tighten it !
M5x8 + T-nut to secure it to the extrusion. There are t-nuts that will require a bit of acrobatics, just use a second piece of anything to hold the t-nut while you secure the screw. (They may not even be needed as long as the other side is secured, those are easy.)
Mechanically linked Z setup:
Pretty self explanatory with those pics below
Two heat inserts and m3x6 per side to connect the cover to the pulley block
Leave the grub screw loose and don't put the cover on yet until you have leveled X later on as it will be easier with better pulley access.
XZ plate:
recommended tensioner setup is with the ptfe tubing (4mmOD 3mmID)
Red spring are stiffer so in a sense better, but they do require tighter belt during install as the expansion travel is reduced compared to yellow springs. when calculating backlash using a Beacon/Cartographer the results were better with red springs, but well within good margins with yellow springs.
on front mounted linear rails setup you will need to remove the rail temporarily just enough to gain access to the inner wheel screw head.
Pictured below is an older prototype with another spring I tried which wasn't good (bed springs, which were too soft) but the install idea is the same. M4 hex nut in each tensioner. I also use ptfe tubing 4mmODx3mmID (type used on reverse bowden) around the side screw for less friction.
Middle piece of the clamp (in red) has one side with grooves facing the ZX plate, the clamp otherwise has no top/bottom orientation and was built symmetrically.
You will install the belts while the M4 screws (going through the spring) is tight so the spring is compressed. Have the belt as tight as possible. Then move the X axis to the top of the printer for easier access to the M4 screws to then unscrew them — the spring will expand, if needed you can give it a little help by pushing down on the tension, but with ptfe around the side screw it should move down easily.
Klipper:
if you have a GT2 16t on the motor, set your rotation distance to 8
if you have a GT2 20t on the motors, set the rotation distance to 10
best is to have [screws_tilt_adjust] section setup and ready to go, to help level the bed
on individual z you will also need [z_tilt] section setup.
On individual linked Z
you are mostly done, assuming your bed was leveled already you can then run a Z_TILT_ADJUST command in klipper to line up the X extrusion horizontally. Then if you move the nozzle to z=1 or so, the two belt should sound roughly the same (within 2hz of each other, if one is slightly higher pitch you can slightly push on the tensioner), if there is a huge difference, then the number of belt teeth might not match each other or your X isn't truly horizontal.
If your bed isn't leveled, one approach to level it perfectly is to manually level the X extrusion first. Using block under each side of the X extrusion, sitting on the lower extrusion of the frame (not the bed obviously), then trigger a homing procedure which should very briefly lift Z (if you have save z home enabled) at which point you can remove these blocks quickly.
Then as long as the motors are active you can assume X is horizontal so you can now use the SCREWS_TILT_CALCULATE command to level your bed relative to the leveled X. Once the motor are powered off X will likely go out of alignment, but now that you have a leveled bed you can run Z_TILT_ADJUST during your start print macro to level X perfectly.
On mechanically linked Z setup, with top pulley grubs screw left uptighten, best is to put two identical sizes object under the X extrusion on each side, sitting on the lower extrusion as the bed may not be perfectly flat (you may need to remove the top cover above the pulley for very easy access to it, so you can tighten at least one grub screw on each side, you can do the second grub screws last )
tips, tricks and notes:
Z motor are noisy ( was the case for me with the stock 32mm motors )
Enable stealthchop.
Or with stealthchop disabled, reduce the Z speed (going from 20mm/s down to 15mm/s was night and day difference for me, I have Z acceleration at 500mm/s^2), along with the raised motor mount, so that it doesn't touch the frame.