Tronxy X5SA-600 Klipper Conversion Part 3 – The Anxious Bit – Octopus Pro Hookup

Tronxy X5SA-600 Klipper Conversion Part 3 – The Anxious Bit – Octopus Pro Hookup

In this third instalment of my Tronxy Klipper conversion, I’m going to cover how I went about hooking everything up to the Octopus Pro motherboard using the extended wiring looms I created in part 2. If you haven’t been following my Klipper shenanigans here are the links to the previous posts:

The Octopus Pro is a relatively high end 3D printer motherboard. Some of its features include:

  • Cortex M4 32 bit processor (I went for the F429 version which gives up a little clock speed for 1Mb flash memory which is needed for RepRap firmware if I ever decide to go that way)
  • 8 Support for up to 8 motors
  • USBC port
  • 8 Fan controllers
  • Fused circuits to protect the board against short circuits

Driver Operation Mode Configuration

The first step was to configure the stepper motor operational mode to UART. This is done by removing / adding jumpers. Why UART mode? I think it’s one of those things that’s obvious to everyone, but no one actually explains the difference. I certainly couldn’t find a concise answer when I Googled it. In simple terms I think UART mode means is software configurable and allows 2 way communication between the hardware and software, while step/standalone mode required soldering or moving jumpers around to change settings. On top of this, the Klipper configuration guide states this:

Klipper can also use Trinamic drivers in their “standalone mode”. However, when the drivers are in this mode, no special Klipper configuration is needed and the advanced Klipper features discussed in this document are not available.

https://www.klipper3d.org/TMC_Drivers.html

So, really it was a no-brainer to use UART mode after reading that.

So, here are the jumper settings used to put the drivers into UART mode on the motherboard:

Motor drivers in UART mode

By default the Octopus Pro motherboard has 4 jumpers in place for each motor, so I had to remove 24 of them.

Installing The Drivers

The drivers shipped from Biqu, came in a box of 4, with the heatsinks not yet attached. Attaching the heatsinks was simply a matter of removing the backing off the double sided tape on the bottom of the heat sink and then gently placing it on the driver board over the gold coloured pad. A little bit of pressure to make sure it’s stuck down may have helped.

BTT TMC2209 Driver

The driver also came with a little jumper cable, but I don’t know what it’s for. I assume it’s for use in standalone mode, but I never used it with the driver. Having 8 of them did come in handy when I was connecting my Raspberry Pi to the Octopus Pro board, but more about that later.

The next step was to install the drivers into the board. I needed 5 installed as follows:

Driver PortMotor
Motor0X Motor
Motor1Y Motor
Motor2Z1 Motor
Motor3Z2 Motor
Motor4Extruder Motor
Stepper Motor Drivers
Drivers installed onto the Octopus Pro motherboard

You might notice I have 6 drivers installed on the above pic. The 6th one was for testing when I was having trouble getting the extruder to work. The problem turned out to be a software config error, that I’ll describe in part 4.

I’m not sure if all TMC drivers are like this, but the BTT ones were colour-coded with the BTT Octopus Pro motherboard. So when inserting them into the board I made sure that I aligned the red pins with the red part of the socket. Care needs to be taken here as it’s quite easy to misalign the pins.

Sensorless Homing Stallguard

In some 3D printers they use sensorless homing by effectively crashing into the end of the frame. This causes a change in current and the motherboard can then send the signal to stop the motor. Since the Tronxy uses end-stops, I’m not using Stallguard and the Stallguard jumpers for the drivers need to be removed from the motherboard. I initially didn’t remove these jumpers and found that my end-stops were being ignored.

The following image shows their location:

Connecting The Motors

With the drivers installed, it was now easy to install the plugs for the stepper motors. They were plugged ins as follows:

SocketStepper Motor
Motor0X – Axis
Motor1Y – Axis
Motor2_1Z1 – Axis
Motor2_2Unused!
Motor3Z2 – Axis
Motor4Extruder Motor
Stepper Motor Wiring

Notice how Motor2 has 2 sockets? This isn’t 2 independent sockets, but rather a split of motor 2 that use the same driver. What this means is that if you have 2 motors plugged into these 2 sockets, the 2 motors will move in time with one another. It sounds like what I want with the Z motors but it’s not. Sometimes (more like anytime) when the Tronxy is idle, the stepper motors lose their current and the weight of the bed with gravity means the bed falls down to 0.

In theory both sides should move in sync, but there’s no guarantee of that. So I need the 2 motors to work semi-independently of one another. This means using 2 drivers and motor ports. The Klipper firmware will take care of keeping them in sync. If the 2 motors were connected with a belt which is a common ”upgrade” on these Tronxy printers, it may be feasible to use Motor2_1 and Motor2_2 as they would then be guaranteed to be in sync.

End Stops

With the drivers and motors set up, my next area of focus was the end-stops. This was much simpler than setting up the motors as there were no jumpers to set. It was just a matter of plugging in my wires to the board. There are 8 end-stops on the Octopus board that can align to the 8 motors. In theory you can you and motor with any end-stop, but to keep things simple, I made sure that I matched the end-stop number with the motor number:

Octopus End-StopPhysical End-Stop
Stop0X-Axis end-stop
Stop1Y-Axis end-stop
Stop2Z1-Axis end-stop
Stop3Z2-Axis end-stop
Stop4Extruder end-stop
Octopus Pro End Stop Wiring

BLTouch

For the BLTouch, I purchased a BLTouch from Creality. Creality sells a genuine Antclabs BLTouch, but it comes with different coloured wiring to the standard BLTouch. Creality has swapped the brown wire with a blue wire. Other than this, everything is exactly the same. The Octopus Pro has a BLTouch socket built into the mother board. So it was simply a matter of connecting the extension wires I described in Part 2 to the BLTouch socket on the motherboard.

BLTouch wiring

Fans

Fans came next. Much simpler than everything else so far. There’s only 2 fans in this system so far – a hot-end fan and a part cooling fan:

Octopus Fan PortPhysical Fan
Fan0Hot-end fan
Fan1Part cooling fan
Octopus Pro Fan Wiring

The fans also need to run in 24V mode. This is configured by setting the fan voltage jumpers:

24V Fan Voltage

Each fan can be set individually for 5, 12 or 24V. I set them all to 24V as I intend to keep things 24V across the board. This reduces the risk of plugging in a fan of the wrong voltage and blowing something.

Hot-End and Heat-Bed Wiring

The hot-end wiring was likewise relatively simple and went into the HE0 socket, however the wiring for the heated bed required a bit more work.

Octopus Heater PortPhysical Heater Device
HE0Hot-end heater cartridge
HE1MOSFET board for heat bed
Octopus Pro Heater Wiring

This is where it start to get tricky. As powerful as the Octopus Pro board is, it just doesn’t have the capacity to power a bed a big as the 600x600mm on the Tronxy X5SA-600. To adequately supply power to this, I needed to add a MOSFET board and run an extra set of power cables from the existing power supply. The main power supply therefore runs 2 sets of outputs. One goes from to the input of the Octopus Pro, the other goes to the input of the MOSFET board. HE1 from the Octopus Pro goes to the Bed input on the MOSFET and the Hotbed output on the MOSFET goes to the bed. Confused? Here’s a diagram that shows how it’s all connected:

Octopus Pro heat-bed wiring

You might want to zoom in on that one and read some of the detail. Note that on the output side, the polarity of the wiring to the heat-bed does not matter. This is why the Tronxy and I assume others have 2 read cables for the heat-bed wiring. I’ve decided to run all power for this machine from a single power supply, however it is entirely possible to use seperate power supplies for this purpose. The Octopus Pro even has another power input to allow a seperate power supply for the motors. Remember, this is an off-the-shelf motherboard, so it’s use is not limited to 3D printers like the Tronxy. There’s potential for other styles of 3D printers to be used with this board. Those giant 3D printers they use to build houses need a motherboard too. Could this be scaled up to that? I think it could!

Thermistors

Now that the heaters are hooked up, it’s time for the thermistors. These were very simple as the extended wires just plugged straight into the Octopus Pro thermistor ports. No jumpers or other fiddly bits to deal with.

Octopus Pro Thermistor wiring

Connecting The Raspberry Pi

When it came time to connecting the Raspberry Pi, I made the decision to use the SPI pin headers of the Raspberry Pi and leave the USB ports free. The main reason for this was that I planned to create a custom enclosure for the electronics with most of the expansion ports accessible from the outside and I didn’t want a USB cable coming out and then going back into the enclosure.

This is where the little Dupont cables that came with my Stepper drivers came in useful. Since I didn’t need them for the stepper drivers, they were the perfect size for this purpose. One small caveat is that these wires are extremely thin. I have been getting undervoltage warnings on my Raspberry Pi and reading up about this online, it seems that using undersized wire for the 5V connections could cause this. Upgrading these wires is on my TODO list.

I found the user manual that came with the Octopus Pro to be lacking somewhat in detail when it came to how to actually making this connection. My last resort was to post online in a Facebook group to get the answer and this is what it looks like:

Raspberry Pi wiring from Octopus Pro

IMPORTANT: If you are connecting using the SPI interface as I am here you need to make sure that there’s no USBC or other power connections made to the Raspberry Pi. This will almost surely blow the circuits on the Raspberry Pi and could extend to taking out the Octopus Pro and other connected devices with it.

Octopus Pro J26 UART2 Pin NameRaspbery Pi Pin NumberRaspberry Pi Pin Name
5V25V
5V45V
Ground6Ground
RX8UART TX
TX10UART RX

Of course, no facebook user group comment section is complete without someone becoming abusive! There was an exchange of words between a couple of users about why you would want to do it this way since USB is so much faster, which was quickly shut down with “you’re an idiot” type comments about how it’s not slower. In the end I’m not sure if it is or not, but everyone at least seemed to agree it’s adequate for the purposes of 3D printing.

BOOT0 Jumper

Removing the BOOT0 jumper from the Octopus Pro motherboard allows it load new firmware from the SD card. It took me a few days to figure out that was the reason my Klipper firmware was not being installed.

BOOT0 Jumper location

The BOOT0 jumper is located just under the bottom left corner of the MOTOR7 driver socket.

Connecting The BTT TFT70 LCD

I found this part a bit disappointing. I went out and bought a nice big LCD Touch screen to use with Klipper and the Octopus Pro only to find that Klipper is not compatible with any touch screen. Klipper only works with emulated 12864 mode. Which basically means a 128 x 64 pixel LCD screen with a button / dial to control it. I hooked it up anyway, because it is useful, but had I realised this I probably would have just gone for a TFT35 and saved some hard earned cash. I looked into using this with the Raspberry Pi, but it’s unfortunately not compatible. There is a Raspberry Pi specific version that needs to be purchased.

The TFT 70 comes shipped with 3 ribbon cables, 1 of them is for use as a touch screen and the others are for the 12864 emulated mode. I hooked up all three of these thinking I’d be able to switch between them 🙁

This wiring was straight forward. EXP1 to EXP1, EXP2 to EXP2 and RS232 to TFT on the Octopus Pro.

TFT70 Pin HeaderOctopus Pro Pin HeaderOctopus Pro Pinout Number
EXP1EXP1J39
EXP2EXP2J43
RS232TFTJ70
BTT TFT70 wiring to Octopus Pro

Adding an Accelerometer

The final piece of wiring was to add an accelerometer. The accelerometer is used to measure resonances created by the 3D printer when making fast movements. It then counters these resonances in the stepper motor movements to reduce ringing or ghosting in prints. The wiring is as follows:

Raspberry Pi wiring of ADXL345 accelerometer

Note that the accelerometer is wired to the Raspberry Pi and not to the Octopus Pro motherboard. Klipper takes care of this processing on the Raspberry Pi.

Octopus Pro Wiring

And that’s all the wiring done! Here’s a diagram I created that shows exactly where I plugged everything into the Octopus Pro board.

Octopus Pro wiring diagram

Leave a Reply

Your email address will not be published. Required fields are marked *