Weird Constructor / Posts / WeirdCube 3D Printer - Devlog 3 - The Z Axis and Mainboard

WeirdCube 3D Printer - Devlog 3 - The Z Axis and Mainboard

In this WeirdCube 3D Printer article I show the build of the Z axis, bed gantry and how I wired the mainboard. Building the Z axis was quite a challenge!

Let me start this article off with a piece of new gear! I ordered a 3D Touch sensor on Aliexpress for the whole bed leveling and Z tilt adjustment for the WeirdCube.

Triangle Lab 3D Touch Sensor
Triangle Lab 3D Touch Sensor

After the frame was built, I quickly started to design and print the first prototypes for the Z axis. WeirdCube will have two Z axis with linear bearings that sit ond linear rods and a Z screw for each of them. The Z screw is held by bearings that have grub screws to hold the Z screw, so that it does not apply force directly to the motor shaft.

Lets go from top to bottom. At the top we have the stepper motor mount for the Z axis in blue. With 4 M3x35mm screws it holds the top axis mount part (in red in the image).

Z Axis - motor mount in blue, top axis mount in red
Z Axis - motor mount in blue, top axis mount in red

At the bottom we have the bottom holder:

Z Axis - bottom holder
Z Axis - bottom holder

You will see later, that I changed the design of the bottom part a bit after I realized how well the linear rods were held by fixing it with screws.

Screw Nut Cutouts In The Bottom

I want to highlight a little thing, that I took me a few iterations in other projects. If you want to insert a nut at the bottom of a printed part, you usually have a very overhanging layer where the slicer tries to print the circles for the hole into air:

Slicer prints hole over nut cutout directly into the air
Slicer prints hole over nut cutout directly into the air

This overhang often leads to very messy holes after printing. And I like to print my parts without any support. By experimenting a bit I found, that I could give the slicer a few hints by inserting bridges already at the CAD stage.

For this I cut a ramp and a bridge one or two layers (~ 0.6mm) under the top of the M4 nut cutout:

M4 nut cutouts in the bottom Z axis holder
M4 nut cutouts in the bottom Z axis holder

It makes the slicer insert proper bridges to lay the hole on:

Slicer floating hole, the angled bridge lets it reduce the space it has to bridge over later.
Slicer floating hole, the angled bridge lets it reduce the space it has to bridge over later.
Proper straight bridges to lay on the circles on the next layers.
Proper straight bridges to lay on the circles on the next layers.
The circle for the screw hole is now not printed into thin air anymore and has proper support.
The circle for the screw hole is now not printed into thin air anymore and has proper support.

Z Axis Prototyping

After the first models of the Z axis were made, I started printing the prototype of the Z axis. Here is the printed first version of the Z axis bottom holder:

First version Z axis bottom holder
First version Z axis bottom holder

The stepper motor mount were printed next and I added it to the frame:

Z axis motor mount on the frame
Z axis motor mount on the frame

I modeled the top holder for the Z rods next. I changed my idea of friction fitting the rods to a mount with 2 M4x10 screws. Which I then applied to the bottom Z axis holder too! The top holder would be mounted with 4 M3x35mm screws directly to the motor.

Z axis top holder designed
Z axis top holder designed

Next step was to print it all out and assemble it to see if everything fits as intended.

Z holder motor and axis parts
Z holder motor and axis parts

And then assemble everything to the frame.

Z motor and axis holders all assembled
Z motor and axis holders all assembled

There were no problems encountered and this design turned out to work nicely. I designed and printed a helper piece for positioning the motor mount on top and the rod holder on the bottom on the frame. It has two lengths, one for the motor mount on top and one for the bottom holder.

Z axis parts positioning tool
Z axis parts positioning tool

Design Of The Z Bed Gantry Mount

Next up was the first iteration of the linear rod bearing holder and guide for the print bed. As well as the Z nut holder to push/pull the bed up/down. I started with modeling a holder for the LM10UU bearing and then added an adjustable Z nut holder.

First iteration of the print bed holder and Z nut holder
First iteration of the print bed holder and Z nut holder

I printed the parts and assembled them and started testing a bit.

First iteration of Z guide bearing holders
First iteration of Z guide bearing holders

The bearing holders worked fine so far. And next up was the Z nut mount. I designed it to leave some extra play for inaccuracies of the bed gantry construction. The reality was about 0.5mm off, so I had to design for some play.

Z nut mount first design
Z nut mount first design

Printing and testing was next. Here are a few steps of the assembly for the Z nut mount:

Z nut mount assembly
Z nut mount assembly

This was the first time I tested the whole mechanics and the Z screw, and it seemed to work very fine so far.

Testing the first iteration of the Z nut mount

Next up was giving the motors some juice and see some real action.

Setup Marlin on the Big Tree Tech Octopus

My first choice as firmware for this 3D printer was Marlin.

But first I had to assemble the hardware and add some cables. Here is the design for my MakerGrid LCD12864 holder.

MakerGrid LCD12864 Holder Design
MakerGrid LCD12864 Holder Design

You can find the files for this in the WeirdCube Github repository: lcd12864_mount-base.stl.

Here are shots of the first setup of the mainboard and the display.

Big Tree Tech Octopus with LCD on the MakerGrid Sideview
Big Tree Tech Octopus with LCD on the MakerGrid Sideview
Big Tree Tech Octopus with LCD on the MakerGrid Frontview
Big Tree Tech Octopus with LCD on the MakerGrid Frontview

Compiling Marlin was not an issue, and after 1-2 hours I successfully uploaded a self compiled Marlin firmware and got to check if the motor drivers would work.

Testing the Big Tree Tech Octopus and steppers

Unfortunately on testing I noticed that I could not get the extruder motor (Motor 4) to work at all. More and more testing revealed, that it was not a hardware issue with the stepper drivers or the motor, but a software issue. I swapped pins around in Marlin until I was sure it was not the hardware.

I was not the first one to stumble across this problem with Marlin and the Octopus mainboard.

And there were several other issues. Diving down these reports did not reveal any way forward with Marlin. While I am a confident C/C++ programmer, I did not feel like hacking on Marlin until I get this to work. So for the future I will consider using Klipper for the WeirdCube 3D printer.

But anyways, moving motors looked motivating and connecting the Z motors was just one step away. So next up I tested if the Z axis would work at all.

Testing the first iteration of the Z axis

The Cheap Bearings From Motedis

When testing the Z axis, I noticed that the axis was somtimes stalling a very very tiny bit and then rattle a bit. It's hard to show, because it was only a faint vibration you could only mostly hear and feel. But I tested the LM10UU bearings. And it revealed the following problem:

Cheap LM10UU DZH bearings not working nicely on the 10mm rod

There is definitively too much resistance when sliding the bearing on the rod. That is something you have to try and test yourself before realizing that this is not supposed to be. I compared the bearing with a different rod, but as it seems the other rod was of even lower quality and too thin:

Checking with a cheaper 10mm rod, that was apparently too thin.

I ordered new LM10UU bearings. This time from a brand that I could at least find on google: MSM LM10UU. Here is a demo video of testing the new bearings. They would slide very easily on the same rod as the other bearings from Motedis. The brand of the Motedis is largely unknown, I could not find any DZH LM10UU bearings via google.

Comparing cheap DZH LM10UU bearings from Motedis with MSM LM10UU bearings from Bohrers

Final Z Bed Gantry Design

Despite figuring out the bearings to be the source of the binding problems with the Z axis I decided to redesign the complete Z nut mount. So next up was disassembling the old Z bed gantry.

Disassembling the first Z bed gantry iteration
Disassembling the first Z bed gantry iteration

I decided on a new design, which would be much more rigid. The Z nut would be in the same part that holds the LM10UU bearings.

New Z nut and LM10UU bearing holder
New Z nut and LM10UU bearing holder

There was still a slight inaccuracy involved in the printed part in the end and the bearings would show still a slight resistance. The source of this slight resistance were probably inaccuracies in the printed part. But they felt not too bad and I continued assembling.

Final assembly of the Z nut mount and bed gantry
Final assembly of the Z nut mount and bed gantry

To be sure that the slight binding of the bearings would not affect the print quality later I checked with a dial gauge I got for 11€ from Bohrers.

Checking the Z axis on one side with a dial gauge

The final test was with the whole bed gantry assembled.

Final dial gauge test with the Z bed gantry

And this concludes the whole Z gantry design and assembly. Next up on the list is designing the X/Y gantry kinematics and Core X/Y pulley holders.

Weird Constructor Avatar
Weird Constructor

Nice end 30 y/o guy, geek and F(L)OSS developer that messes with: Linux, Windows, Networking, Interpreters/Compilers, Games, Audio, GUIs, C/C++, Rust, Scheme/Lisp, 3D printing, electronics and more.


For updates follow me either (preferably) on Mastodon or Instagram.

All the F(L)OSS development on my projects happens in my spare time. If you find what I do useful, entertaining or just want to support me, you can do this via Liberapay:

Donate using Liberapay