Mini rambo cooling

Cooling of the Mini Rambo board in our 6 Mini 1s has been a problem. I’m looking for a better solution that what I have done. I have wired the 80mm fan directly to 24V of the power supply. Now they run continuously and make too much noise.

Problem comes from stepper motors missing steps.
Z step skips have caused layer bulging. That is for sure.
X and Y not so sure about.
Extruder skips leave extrusion gaps that show in the outer skin perimeter. solved that by slowing the outer perimeter feed rate to 25mm/s (G1 F25 X…Y…E…). Slows production but make less trash.

As observed, the 80 mm fan never runs at full speed. The 80mm fan comes on when a print starts and goes off when a print finishes. That is good. But, the fan never runs at full speed.

I suspect the firmware sets the fan speed to control the processor’s temperature. Unfortunately the stepper drivers get hotter and mal-function.

When the 1st Z stepper driver failed and killed the mini Rambo , I replace the mini-Rambo and add
heat sinks. to the driver chips. Have since added heat sinks to all. That was not enough to stop the skipping.

A solution would be to change the fan logic in the firmware. That would have me maintaining parallel versions of firmware to the Lulzbot releases. Ughhh

Also though of insulating the processor by apply a layer of tape on the chip to insulate it. Have to study that further. Not certain about fan logic and location of temp sensor. That might just overheat the processor.

Thank you for reading, Mitch

What temperature is the room you are running the printers in?

69 to 78. varies with time of year and time of day. Printers are semi-enclosed (5 of 6 sides). On a commercial shelf unit. Plenty of gaps. Front is open. Sides and back are sheet material.

Thank you for responding, Mitch

Photo of Printers on shelves and Z skip problem.

Worst offender so far. left printed with factory mini 1 mini-Rambo fan control. Right with full fan (connected to 24V of power supply).

I suspect that the air temperature measured at the inlet for the controller enclosure fan is much higher than 69-78 degrees F. Also I suspect that the air flow is restricted especially for the printers with the controller enclosure right next to the wall. A good thermometer with a remote probe might be a good investment.

An experiment I might perform would be to remove one printer and center the other printer in the middle of the shelf. This should give better air flow.

If I’m right, then some ducting of cooler air to the inlet of the controller enclosure might help.

Thank you so much for engaging this topic.

IR measured the fan inlet and control box next to the power switch. Temps ranged 82F to 92F. Room was at 78F (about 28c).

Thinking about the practice of using an enclosure to print ABS. I expect those control boxes are above my temperatures.

Since I have an insider, I have questions about the fan control.

Fan never runs full speed. Should it?
What logic controls the fan. Temperature, heater status, other?
Can the mini Rambo temperature be read out and how?
Where is the Rambo temperature sensor?

Thank you again, Mitch

Sorry to disappoint but I’m just a TAZ 6 owner. I have an enclosure for printing ABS but the controller enclosure is outside of it. The current version for the Mini.

The answer to some of your questions can be found in the Marlin sources. From Conditionals_LulzBot.h:

    // The TMC drivers need a bit more cooling.
    #define LULZBOT_CONTROLLERFAN_SPEED                    255
#elif defined(LULZBOT_IS_MINI)
    // The Mini fan runs rather loud at full speed.
    #define LULZBOT_CONTROLLERFAN_SPEED         120
#elif defined(LULZBOT_IS_TAZ)
    #define LULZBOT_CONTROLLERFAN_SPEED         255

From Configuration_adv.h:

 * Controller Fan
 * To cool down the stepper drivers and MOSFETs.
 * The fan will turn on automatically whenever any stepper is enabled
 * and turn off after a set period after all steppers are turned off.
  #define CONTROLLER_FAN_PIN 2           // Set a custom pin for the controller fan
  #define CONTROLLERFAN_SECS 60          // Duration in seconds for the fan to run after all motors are disabled
  #define CONTROLLERFAN_SPEED 130        // 255 == full speed

From Marlin_main.cpp:


  void controllerFan() {
    static millis_t lastMotorOn = 0, // Last time a motor was turned on
                    nextMotorCheck = 0; // Last time the state was checked
    const millis_t ms = millis();
    if (ELAPSED(ms, nextMotorCheck)) {
      nextMotorCheck = ms + 2500UL; // Not a time critical function, so only check every 2.5s
        #if HAS_HEATED_BED
          || thermalManager.soft_pwm_amount_bed > 0
          || E0_ENABLE_READ == E_ENABLE_ON // If any of the drivers are enabled...
          #if E_STEPPERS > 1
            || E1_ENABLE_READ == E_ENABLE_ON
            #if HAS_X2_ENABLE
              || X2_ENABLE_READ == X_ENABLE_ON
            #if E_STEPPERS > 2
              || E2_ENABLE_READ == E_ENABLE_ON
              #if E_STEPPERS > 3
                || E3_ENABLE_READ == E_ENABLE_ON
                #if E_STEPPERS > 4
                  || E4_ENABLE_READ == E_ENABLE_ON
                #endif // E_STEPPERS > 4
              #endif // E_STEPPERS > 3
            #endif // E_STEPPERS > 2
          #endif // E_STEPPERS > 1
      ) {
        lastMotorOn = ms; //... set time to NOW so the fan will turn on

      // Fan off if no steppers have been enabled for CONTROLLERFAN_SECS seconds
      const uint8_t speed = (lastMotorOn && PENDING(ms, lastMotorOn + (CONTROLLERFAN_SECS) * 1000UL)) ? CONTROLLERFAN_SPEED : 0;
      controllerFanSpeed = speed;

      // allows digital or PWM fan output to be used (see M42 handling)
      analogWrite(CONTROLLER_FAN_PIN, speed);


I forgive you for sounding like a Luzbot-er and thank you again. Code segment is helpful. As I read it the Mini’s fan is set for 130/255, about 1/2 speed. Used as a constant I would not be changeable by an M-Command.

Started thinking I could include M42 command in my start code to set fan full on.

Do you read it the same way I did?

Further study seems to show fan speed is written every 2.5 seconds. Either to
CONTROLLERFAN_SPEED or 0. That would cancel out an M42 in the start code.


Next though is to wire a relay or transistor to power the fan based on the Rambo’s FAN output. Mechanical of the relay would hopefully filter out the duty cycle switching.

Or maybe use a 12V fan. Hummm? And a capacitor. Double Hummmm?

Nice enclosure. Looks to do the job well.

Regards, Mitch

I’m not sure what you mean by “based on the Rambo’s FAN output” but if that is the part cooling fan, I think that would be a bad idea. IMO, wiring the fan to run all the time would be a better choice. You could use a resistor or a buck converter to run the fan at 80% instead of 50%. Additionally, consider using a fan with a higher CFM. Noctua fans are well known for being quiet.

I believe the fan is a Pelonis C8015H24BPLP1b-7 (specs on page 27).

I think some sort of duct for the enclosure fan to draw in cooler air might be helpful. Leaving the existing fan alone and modifying the enclosure for an additional fan might help as well.

Yeah “Rambo’s FAN output” was non-specific. I mean output to the Rambo Cooling Fan in the control box. The output we have been discussing.

Not in favor of external ducting. Thinking of internal ducting to increase the air flow to the parts that need it. Possibly a warped “cone/ funnel” directed to the motor drivers. Possibly a centrifugal blower with ducting to aim at the motor drivers.

Trying to avoid cutting that beautiful box. Seriously. do not want to hack the box.

Regards, Mitch