Using the custom firmware on the BX
If you decide to go ahead and install any of the custom firmware branches on your BX then you must read this guide before using it as it has been carefully written to cover the most common questions that users of the firmware have.
If you ask a question in the facebook group that is covered in this guide I'm going to scowl at you through my monitor and with three mighty waves of my finger declare "tsk, tsk, tsk".
First things first
This guide has been written to supplement the information within the main readme under the "Using the firmware on the BX" heading over here: https://github.com/looxonline/Marlin. Please make sure that you read both as they are equally important.
The information in this guide is structured so as to cover important usability points or to answer common questions under each sub-heading. This should help you to easily identify a sub-heading which you may be particularly interested in or is closely related to a question that you have.
NB!!! Checking that my z-steppers are connected the correct way around
With the first batch of units that BIQU released, they provided dual, independent z functionality but never enabled Z_STEPPER_AUTO_ALIGN in the firmware and therefore the production process did not aim to connect the z-steppers in any particular order. After having some discussions with them they realized that this is a useful function and agreed to enable it and connect their z-steppers in a specific order. In order to understand the order that they connect their units in vs. the order that the firmware expects you need to have a look at the picture below.
In the picture you'll notice that I have labelled the one stepper driver as ZA and the other as ZB. I intentionally did this instead of labelling them as Z1 and Z2 for reasons that will shortly be made clear. The cables that BIQU use when doing the wiring have Z1 and Z2 written on them, however there is no fixed standard as to whether Z1 runs to the left stepper or to the right stepper. You should therefore use the numbering on the wires simply to identify how your steppers are connected. Let's assume that your Z2 runs to the stepper on the left. You would simply need to plug that into the ZA socket on the motherboard. Likewise if your Z1 runs to the stepper on the left then you would instead plug that into the ZA socket on the motherboard. Essentially you just need to make sure that whatever cable runs to your left stepper plugs into the ZA socket on the motherboard.
When connecting your right stepper take note that there should be a free socket between the ZA and the ZB socket on the motherboard. This is because the ZA socket actually has two sockets associated with it but we only use one and we leave the other one open.
Once you've connected your steppers it would be a good idea to test that they are the correct way around. To do this, power on the BX (with the custom firmware already installed), navigate to the terminal menu in the BTT UI and then enter G34. A sequence should begin that probes the extremities of the X axis with the Y axis centred. Each time the probe changes sides the terminal will print out an error reading. As long as the error reading is getting smaller and not larger you have the steppers the correct way around.
Following directly on from the previous point this firmware enables a feature known as z-stepper auto align. Having two z axes is great but what happens if they go out of alignment and cause the x gantry to no longer be parallel to the bed? "Ah, ABL should sort that out" I hear you say. You are quite correct. ABL should sort that out but it's always good to give ABL as much of a mechanical hand as we can.
This feature probes the bed at each extend of the X axis to see what height the gantry is at relative to the bed at each point. By iteratively probing on each end, Marlin is able to reduce the height difference between each end of the X gantry and the bed down to 0.2mm. If you use the BX profile that is build into Cura (or prior to Cura V5 is available from the facebook group) then this step is already built into the start code before each print.
ABL Probing - Getting consistent results
The BX uses an inductive sensor and an inductive sensor can probe FAST without losing accuracy. The stock firmware had probing that was just too slow for my liking. I sped things up and the grid is now probed at a very high speed. To be sure that I was not sacrificing on probing accuracy I ran tens of probing grids, one after the other, and compared their results to each other. The variance was tiny and most points were within 1.5% of each other on successive grids.
There is one caveat to the above statements. Your probe is very temperature dependent and needs to be warmed to a pre-defined point before doing any probing routines. Parking the probe directly above the bed and allowing it to be heated by the heat of the bed for at least 90s will ensure that you get consistent results. The start code in the cura profile for the BX automatically does this.
During probing the nozzle will be limited to 140C to prevent filament from being spewed all over the bed. After probing is complete the nozzle will be heated to the final temperature.
Setting your Z-offset
This is probably the point that people struggle with the most according to feedback from the facebook groups. This is likely because your z-probe has to be heated before attempting to calibrate the z-offset.
Let's deal with that. Follow the steps below to calibrate your z-offset:
- First go to the terminal screen and then type in M851 Z0 followed by M500. Then reset the machine using the reset button on the TFT. This gives us a nice, clean starting point.
- Next, perform a homing routine which should park the probe just a few mm above the bed.
- Turn on the bed heater to 60C and allow it to settle at 60C.
- After it has settled at 60C leave the probe to warm up for 90 seconds.
- With the probe now warmed up and the bed still on head over to the z-offset menu (movement --> ABL --> z-offset).
- Turn z-offset on and the machine will home and then place the nozzle just off the bed. Why does it place the nozzle off the bed? This location was selected because it ensures that if someone has entered an absurd z-offset and forgotten to clear it out before starting this process then the nozzle will not crash into the bed.
- Once the nozzle is parked you can use the menu to turn off the XY steppers and manually pull the bed forward so that the nozzle sits over it. You may need to use the arrow to scroll through the menu options to get to the one where you can disable the steppers.
- With the nozzle over the bed, step it down until the nozzle is able to pinch a piece of paper between the bed.
- Once the paper is pinched well, but still able to move about a bit, you have found the correct z-offset.
- Save it using the menu option and exit the calibration menu.
As long as you use the Cura start code and follow the steps above you should get perfect first layers every time. I have validated this with many, many prints.
Currents, accelerations and stepper noises
The BX uses 0.9 degree stepper motors. These have a lower holding torque and thereby need higher currents to achieve rapid accelerations. The stock BX firmware has current set to 1050 and acceleration set to 800. I felt that this machine was capable of a more so I boosted the acceleration to 1000 and the current to 1150. I have a thermal imager and have analysed the motor temperature during long prints and found that it sits at around 54 degrees C which is relatively cool for a stepper motor.
The flip side of using high currents and high accelerations is that the steppers tend to make noise. This is just something that happens with 0.9 degree steppers and is well documented. There are more coils and therefore more things to create EM forces and vibrate together. Sometimes the guide bearings on top of the z lead screws vibrate against their holders which make the vibrations a million times worse. If this happens it's probably best to pull your guide bearings out and leave your lead screw loose in there. They don't offer support to the lead screw since they themselves are loose. They are just there to prevent things catching on the tip of the screw.