Monthly Archives: July 2018

3D Printing: Wheels on Alu Extrusions

Status: This is a work in progress – and will likely will receive more updates, files not yet released.


  • 2018/09/14: Added H Plate (4 wheels) and h_plate() reference.
  • 2018/09/01: Added v_plate() variables and numbers for common wheels
  • 2018/07/28: Adding another example with Z axis X gantry adapter & X gantry horizontal beam mount.
  • 2018/07/21: Supporting Delrin R 21.5 or 23mm/7mm wheel as well.
  • 2018/07/20: Version 0.6 added, with ordered mounting holes and nut insets, screw which controls distance inside the plate to reduce overhead
  • 2018/07/19: New version 0.2 with M3 has controlling distance of the 3rd wheel
  • 2018/07/17: First basic design (Version 0.1), few tests made


As part of developing various designs around Aluminium extrusions, a few tests. Early tests I printed the wheels in PLA just for sake of testing the dynamics, once the wheels arrived real applications were sought:


The possible parts are 2020 alu extrusions and Dual V wheel by OpenRail:

and the “Delrin R” V type nylon wheel (21.5/23mm diameter, 7/7.3mm thickness and 5mm hole):


Later in the research the difference between 7.0mm and 7.3mm thickness nylon wheels were significantly, as the shape of the wheel differ, and the ticker one (7.3mm) actually sat better in the T slot groove.

2020 V-Slot with Double V Wheels

The V-Slot alu extrusions usage test.


V Plate (Version 0.6)

Ordered mounting holes (2x 30mm apart horizontally x 2 20mm vertically apart) plus 24mm apart near center, all with M3 nut insets so both surfaces (inside and outside) are nearly flat and mounts easily attached.

Hole-to-hole distance: 40.5mm (20.5 + 20)

2020 T-Slot Diagonal with Double V Wheel

Using the traditional T-slot Aluminium extrusion without proper wheel groove but rotating so the edges are used as rail and the 90 degree inner groove of the Dual V wheel.

2020 Nut 6 B - 999991_1

Version 0.6

Moving the adjuster into the plate to save some space, and adding some insets for the M3 mount holes (2x 30mm apart and 20mm height distance, 2x 24mm apart (Prusa i3 extruder).

Hole-to-hole distance: 47.1mm (27.1 + 20)

2020 T-Slot with Delrin R Wheels

Since the V plate is parametric designed (controlling thickness, distances etc) I thought to support also the “Delrin R” nylon wheels:

V Plate (Version 0.6)

Hole-to-hole distance:

  • 21.5mm diameter wheel: 37.4mm (17.4 + 20)
  • 23.0mm diameter wheel: 38.9mm (18.9 + 20)

V-Slot vs Diagonal




Mounting Holes

Since the V plate, either used with V Slot alu profile or diagonal, has 6 fixed holes with nut insets to attach adapters:

  • 2x 30mm apart horizontally, 2nd row 20mm apart vertically
  • 2x 24mm apart horizontally centered vertically on the plate

An adapter plate or area of 40 x 35mm is guaranteed to be flat, and 5mm thick, with the given mounting holes as mentioned.




2x V plates (top/bottom) with its 3x wheels each are made so I can use it as a “V module”:

Prusa i3 Style

  • X extruder: 1x V module with extruder adapter
  • X gantry: 2x V module with Z axis threaded rod adapter
  • Y gantry: 3x V module without adapter, but mounting top V plates direct to Y carriage

OpenSCAD v_plate()

v_plate() takes multiple arguments:

  1. d: distance of holes (-20mm)
  2. h: height/distance of the wheel to plate
  3. orientation: -1 or 1 (back / front)
  4. f: multiplier horizontal distance gap (default: 1)
  5. g: multiplier vertical distance gap  (default: 1)

Here for 2020 T Slot B-Type in groove usage:

  • Nylon wheel 23.0mm OD / 7.3mm width: d=17.2, h=9.0
  • Nylon wheel 23.00mm OD / 7.0mm width: d=18.3, h=9.0
  • OpenRail Double V 24.4mm OD / 11mm width: d=22.0, h=5.85


  • 1x screw M3 x 16 with M3 nut (push it carefully yet forcefully so it aligns top/bottom flat) for distance control, put a drop of oil on the tip of the M3 screw before you screw the first time.
  • 3x screw M5 x 30mm with cylinder head with hex inset, and 3 M5 nuts to mount the wheels per double V plate to make up a V module


Four Wheels: H Plate

For the X carriage with the hotend I thought to add another wheel to improve tilt rigidity (e.g. when overruning bumpy unclean or over-extrusions) – ideally triangle like with V plate/module it’s easy to adjust, four wheels means two wheels need to be adjustable, and those are harder to align properly.

H Plate (Version 0.1)

First version I decided to use a simple solution, have some larger vertical extended 5mm holes and M3 screw which carves its own thread to control the distance – this means the H plate should be used in double to make up a H module, this is the short/narrow 48mm wide H plate:

The plate contains a set of 30mm and 20mm spaced mounting holes, all M3 – requires support from bed only (not “everywhere”) so the M5 nut and screw heads insets are printed nicely for the wheels:

h_plate() settings – same as for v_plate():

  • Nylon wheel 23.0mm OD / 7.3mm width: d=17.2, h=9.0
  • Nylon wheel 23.00mm OD / 7.0mm width: d=18.3, h=9.0
  • OpenRail Double V 24.4mm OD / 11mm width: d=22, h=5.85

For the short version, width=48 (less won’t work).


Extruder/Hotend Adapter

Attaching E3D V6 hotend on a pair of 30mm holes with M3x8 (M3x10 might work as well) with M3 nuts (in this example printed in purple PLA):

Z Axis Adapter

A simple Z axis adapter, here with M6 threaded rod with M6 nut:

The adapter is 4mm thick, and M3 x 10 should work (in this example I used M3 x 16 which are too long, but still work).

X Gantry Horizontal Beam Mount

A small simple piece to mount the 2020 horizontal X axis on Z axis V module:

Additional holes to fasten beam with T nuts as well (top and bottom of the bridge).

V and H modules used as part of the Ashtar K 3D Printer:




Related Projects

End of Page

3D Printing: Fixing Z Banding

Using a low-cost 3D printer like CTC DIY I3 Pro B (Geeetech I3 Pro B clone) with M8 threaded rods as Z axis with loose or floating ends is what you get – and so also some wobble or banding on the X axis due slightly bent M8 threaded rods – they barely come straight. I hesitated to use lead screws due decrease of resolution (M8: 1 cycle = 1.25mm height, lead screw like TR8x8 (8mm dia, 4 starts, 2mm pitch, 8mm lead => 1 cycle = 8mm height) but otherwise gaining pretty straight lead.

Anyway, I searched Thingiverse for Z mounts for the CTC DIY and found a few, and adapted one design and made a remix Geeetech / CTC Prusa i3 DIY – Z Axis Bracket Remix with printable Bearing:

  • changed structural holes (larger hole -> smaller holes)
  • bearing hole widened to have more floating
  • printable bearing added to restrict end (optional)

New Z bracket mounts (black), without/with printed bearing (white):


And I did a few tests:


Left to right (close-ups photos below):

  1. original Z bracket (wood) apprx. 4mm play
  2. new Z bracket without printed bearing, apprx. 10mm play
  3. new Z bracket with printed bearings (with loose tolerance)
  4. new Z bracket with printed bearings (tight tolerance)

Now comes the surprise, the best surface (best to worst):

  1. no bearings / open floating: gives the smoothest surface, most straight Z edge
  2. tight bearings: gives very good surface, slightly worse than with no bearings
  3. loose bearings: noticeable artifacts / wobble, Z edge wobbly
  4. original bracket: worst wobble of all, Z edge wobbly

Which means, either give it a lot of space so the upper end of the Z threaded rods can float, and thereby the X gantry can stay fixed (and not wobble) – or – fix the threaded rods and suppress wobble (there is still wobble but restricted).  Giving it some space on the top means the inherent wobble of the rod is distributed between top and X gantry – giving wobble artifacts on the print . . .

The issue isn’t simple: with or without fixation gives good results, some fixation gives more bad print results.

Open Ends / Floating

The new Z bracket provides more space for the threaded M8 rods than the original wooden bracket:


Printed Bearings

You may print two bearings (OD 22mm, ID 8mm), make sure to test inner diameter, so the threaded rod slides smoothly – if required use a 8mm drill to widen the inner hole.



Worst Z wobble was with original Z mount with ~4mm play or the loose bearing with apprx. 1-2mm play.

Best results I achieved with floating ends or with tight bearing – in other words, either leave it open or make it stay close, but worst is to give it a little play and threaded rods will show their unevenness on the prints.

I would also guess, the unevenness of the threaded rods and their position to each other also matters, e.g. whether left and right go the same way or cancel each other wobble out. What I noticed was, once I used the printable bearings for a print, and removed it, the threaded rods wobble already less – but as said, best results I achieved with no bearing and wide floating ends or with the tight bearings.

Recommendation: print the mounts, print the two bearings, and print the XYZ Calibration Cube or whatever reference item, and see yourself which option works better for you.

Addendum: M6 Z Axis Conversion

I made a small package Geeetech / CTC DIY I3 Pro B M6 Z Axis Conversion to use M6 threaded rods instead of M8. It made little difference:

  • less wobble, but still wobble despite of “straight” M6 threaded rods
  • wobble seems mostly introduced by the couplers (either printed or PVC pipe):
    • out of center alignment = wobble
    • tilted mounted rods = wobble

It is hard to mount the rods perfectly with the couplers, a little misalignment and one introduces wobble (X/Y wiggle).

Anyway, M6 gives slightly higher resolution in Z axis with 0.005mm per motor step.

3D Printing: Layer Height

Printing with different layer heights with the same nozzle diameter (e.g. 0.4mm) gives quite a range of printing quality and printing time – the higher the quality or lower the layer height the more printing time it takes, the 20mm height XYZ Calibration Cube as an example:


0.05mm layer height / 398 layers / 1.38 hrs

0.1mm lh / 200 layers / 0.73 hrs

0.2mm lh / 100 layers / 0.37 hrs

0.3mm lh / 66 layers / 0.25 hrs

0.32mm lh / 62 layers / 0.23 hrs

0.32mm layer height is 80% of the nozzle diameter, and supposed to be the maximum of layer height.

0.14mm – 0.39mm lh / 64 layers / 0.21 hrs

using the Adaptive Layer Height feature of Cura.

0.4mm lh / 50 layers / 0.18 hrs

obviously too high layer height with 0.4mm on a 0.4mm nozzle, some layers have gaps.

0.4mm w/ 0.6mm nozzle / 50 layers / 0.11 hrs

using 0.6mm nozzle on E3D Volcano clone – not quite tuned with under extrusion on the top (90% flow, with 100% flow the X/Y surfaces were terribly over extruded).

All printed with

  • 60mm/s print @ 190C
  • 80mm/s infill
  • 150mm/s travel
  • 1st layer: 20mm/s print @ 200C


  • a heavily improved CTC DIY I3 Pro B (Geeetech DIY I3 Pro B clone) with
  • Bowden setup and E3D V6 clone hotend,
  • sliced with Cura 3.4,
  • printed with white PLA-R (recycled PLA) by Fabru – it was a custom extrusion based on recycled white PLA, they usually sell only black recycled PLA as of 2018.

While reviewing all the samples, I noticed I could improve the Z banding issue, which still showed a bit – addressed in 3D Printing: Fixing Z Banding; done after all my layer tests.


Layer height 0.05mm and 0.1mm look very alike with this XYZ Calibration Cube – so it’s not really worth 0.05mm but 0.1mm would be sufficient. The Adaptive Layer Height turned out quite well, near the same speed as 0.32mm layer height.

The top surfaces of 0.05mm and 0.1mm are very nice, whereas 0.2mm already shows significant artifacts – best choice would be to print the last layer at 0.1mm layer height.

If one prints large volume, it’s worth to consider a larger nozzle, e.g. 0.6mm nozzle diameter, which outputs 2.25x more material already yet direct drive recommended – I struggled with complex prints with retractions with the Bowden setup.

I usually print at 0.2mm layer height, and if a larger piece is required I increase to 0.3mm – for the future I might switch the Adaptive Layer Height feature in Cura in that case.