Rationale
With the Klipper development goals for 2024 the intention was formulated to improve the fan controlling possibilities in Klipper.
Today’s state:
- Current fan controls mainly focus on part fans and hotend fans
- An abundance of Pull Requests are existing that try to improve upon it (not exhaustive)
- Update temperature_fan.py to have working PID option by sunbowch · Pull Request #6547 · Klipper3d/klipper · GitHub
- controller_fan: add ability to watch temperature_sensors too by slaesh · Pull Request #6479 · Klipper3d/klipper · GitHub
- Controller fan idle speed by bmkahl · Pull Request #6448 · Klipper3d/klipper · GitHub
- feature: shutdown klipper when fan failure by wuyoutech · Pull Request #6429 · Klipper3d/klipper · GitHub
- fan: Support multiple printer fans by viesturz · Pull Request #6341 · Klipper3d/klipper · GitHub
- Normalising Fan PWM power by kubaracek · Pull Request #6307 · Klipper3d/klipper · GitHub
- heater_fan: added hysteresis by chestwood96 · Pull Request #6213 · Klipper3d/klipper · GitHub
- controller_fan: Add min_speed configuration by trippwill · Pull Request #5792 · Klipper3d/klipper · GitHub
- add the reverse mode of temperature_fan by CF3B5 · Pull Request #4983 · Klipper3d/klipper · GitHub
- Add TEMPERATURE_WAIT_EQUILIBRIUM command by garethky · Pull Request #4273 · Klipper3d/klipper · GitHub
- All of them surely have their use cases, but they only “spotlight” certain features or aspects
- It is Klipper’s goal to uphold a concise and maintainable code-base without “engrafting” change upon change in an existing base, but to offer the needed flexibility with a minimum amount of options and settings
The Big Picture
This topic is intended to serve as a collection of use cases that are relevant in 3D printing today. It should be a collection of ideas and concepts of what is needed while being agnostic to a potential future solution.
Important:
- This thread makes no claims whatsoever that anything listed here or below will ever be implemented.
- Equally makes no claims about when and how this might happen.
Use Cases
Applications
- Support of water-cooled hotends: The “new cool kid on the block” are water-cooled hotends, which require a radiator that reduces the temperature via a fan.
- Support of air filters: Controlling filters like Nevermore and similar devices
- Chamber heaters: Controlling the temperature within the printer’s enclosure. Catering for intake, exhaust and recirculation
- IDEX: Flexible control of multiple part cooling fans attach to different hotends
Process controls
- PID / Fan Curves / Bang-Bang steering: Different control principles depending on the application needs
- Normalizing Fan Power: Make sure that upper and lower bounds of fan speeds keeps a linear control between 0% and 100%
- Hysteresis: Introduce a “dead-band” to avoid oscillation around set-points
- Direction Control: Use fans for heating, cooling and recirculation purposes
- “Combined Objects”: Flexibly combine heaters and sensors with fans
- Slope Control: Control fans according to rate of temperature changes
- Always On: Allow fans to always run at a minimum speed, but to speed up when needed
- Fan Safety: Create an error when system critical fans fail (requires fans with a tachometer signal)
As this list is not complete, please add your use cases below and explain, why you think it would benefit Klipper and its users.