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.
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.
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.
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?
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:
#define LULZBOT_USE_CONTROLLER_FAN
#if defined(LULZBOT_IS_MINI) && defined(LULZBOT_USE_EINSY_RETRO)
// The TMC drivers need a bit more cooling.
#define LULZBOT_CONTROLLERFAN_SPEED 255
#define LULZBOT_CONTROLLERFAN_SPEED_WHEN_ONLY_Z_ACTIVE 120
#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
#endif
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 USE_CONTROLLER_FAN
#if ENABLED(USE_CONTROLLER_FAN)
#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
#endif
From Marlin_main.cpp:
#if ENABLED(USE_CONTROLLER_FAN)
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 (X_ENABLE_READ == X_ENABLE_ON || Y_ENABLE_READ == Y_ENABLE_ON || Z_ENABLE_READ == Z_ENABLE_ON
#if HAS_HEATED_BED
|| thermalManager.soft_pwm_amount_bed > 0
#endif
|| 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
#endif
#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)
WRITE(CONTROLLER_FAN_PIN, speed);
#if defined(LULZBOT_CONTROLLERFAN_SPEED_WHEN_ONLY_Z_ACTIVE)
if(X_ENABLE_READ != X_ENABLE_ON && Y_ENABLE_READ != Y_ENABLE_ON)
analogWrite(CONTROLLER_FAN_PIN, speed ? LULZBOT_CONTROLLERFAN_SPEED_WHEN_ONLY_Z_ACTIVE : 0);
else
#endif
analogWrite(CONTROLLER_FAN_PIN, speed);
}
}
#endif // USE_CONTROLLER_FAN
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.
Barnacles!
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?
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 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.