Jump to content

Fan "Kick" Start


Recommended Posts

Posted · Fan "Kick" Start



I'm printing a lot with low fan speed settings. (15%-20%)


At these speeds the fans won't automatically start without been given a "nudge"


Is there an easy way, say through a plugin(?) to add a 100% kick briefly to the fan to get it started and then once started revert back to 15%?

If not, could I suggest this be added to Cura as a tick box?


(Cura 4.1 & Ultimaker 2+ with custom fan shroud)

  • Link to post
    Share on other sites

    Posted · Fan "Kick" Start

    This would be a good plugin.  It's pretty simple.  Each time there is a fan speed change already in the gcode, if it's less than X% then go to 100% for 1/2 second then to that goal speed.


    This feature is ALREADY IN MARLIN except it only does this when going from off to on.  It should do it for every speed change.  The problem is that by default cura does 0% fan for the first layer then increases the fan (typically 1/5) for each layer until at "full" speed.  If "full" speed is 15% then it will do 3% for second layer, 6% for third and so on.  So it never triggers the built in "kick start" feature in Marlin.  Well it triggers it for the 3% speed but then the fan typically stops anyway and doesn't trigger it for the remaining.


    Ideally this should be fixed in Marlin.


    Now for the UM3 and S5 the fans have built in tachometers and they don't need any kickstarting.  So UM Cura programmers may put this feature request as a low priority.  But it's not hard to write yourself.   Look at the example cura plugins - it's really very simple to modify one.  You want the simplest type of plugin: "post processing plugins".

  • Link to post
    Share on other sites

    Posted · Fan "Kick" Start

    Actually it's hard to go backwards in gcode (edit a previous line once you find a fan speed change).  and you don't want to delay a whole half second as it will create a blob at the fan change spot.


    So instead I would replace the fan speed to 100% but remember the value, then after 15 more G1 codes have occurred I would insert the original fan gcode back in.


    In other words no delay/sleep/wait gcode (whatever it's called).


    G1 codes are extruding moves and each move will take a little time.


  • Link to post
    Share on other sites

    Posted (edited) · Fan "Kick" Start

    if it's less than X% then go to 100% for 1/2 second then to that goal speed.


    Yep! 🙂


    Thanks for your reply and Marlin explanation. I guess that makes it trickier to incorporate into Cura. Hmmm... shame as having that in Cura would be ideal, not just for us UM2 "oldies" but generally as well to benefit other makes of printers possibly? 😉


    I did start earlier today looking at "how to write your own plugin" thanks for the hint to the examples and in particular "post proessing plugins" I'll see how I go with it.


    In another post about fan speed I found "M106 S255 P0" - from what I understand, this in Gcode means  "Fan 0 100%" so I think I now have my first step of what to look for and what it should be briefly modified to for a "kick" start.


    From what you say, I'm guessing the sequence for this "post processor" then needs to be something like  -


    1. Read in all the gcode

    2. Search for M106.

    3. Read and store that entire line

    4. Replace that line with "M106 S255 P0"

    5. Count 15 or so lines further on (as per your suggestion)

    6. Insert stored line in there

    7. Write out the amended gcode to a new file.


    I think the programming language is "python like" or actually Python. Not something I have a lot of knowledge of.

    So it's going to be a bit up hill. But I'm up for giving it a go!


    Downloaded https://github.com/nallath/PostProcessingPlugin




    Edited by chrisr
  • Link to post
    Share on other sites

    Posted · Fan "Kick" Start

    Your pseudo code is good but you don't have to worry about step 1 and 7.


    You need to literally pick an existing plugin and locate where the file is physically located and open up that file and copy it so you can edit it.  You only need to add maybe 4 lines of code and modify one or two lines.  Plus alter the name of the plugin.


    Yes, it's python.


  • Link to post
    Share on other sites

    Posted · Fan "Kick" Start

    Could'nt you just put at fan stop right before speed change and then a fan start with Blip-time 2 s or something like that? 



  • Link to post
    Share on other sites

    Posted · Fan "Kick" Start

    we neeeed this plugin i have a theory that the fan not spinning at these low speeds is bad for the fans. i think it builds up heat in the coil and slowly cooks


  • Link to post
    Share on other sites

    Posted · Fan "Kick" Start

    So write it?  Start with an existing plugin and it will be very little code that you need to add to the plugin.  Maybe you have a friend who knows a little bit about programming - they don't need to know Python as this change is pretty minor.


    My Ultimaker Original fan wouldn't turn on until around 25%.  So I've printed hours in this state where the fan speed is too slow to actually turn the fan.  Never damaged my fan.  This doesn't disprove your theory - it's still an interesting theory to me.


    But doing full power and then lowering to the new fan speed is not going to always spin up the fan.  You might have to wait for the next layer where the fan speed is higher.


    Most printers use Marlin and Marlin has a feature that if you go from say 0% fan to 20% fan it does 100% fan first for just a short period (maybe 100ms) and then down to the 20%.  But if you go from 19% to 20% many version of Marlin don't do that extra boost.  But that's an easy firmware fix that I assume is in the main code of Marlin by now.


    Ultimaker printers since the UM3 (including S5 and S3 printers) will run just fine at 1% (probably even at 0.3% fan).  This is not a firmware fix - this is a strangely "smart" fan with complicated electronics in it.  Probably cheaper to make a fan with a tiny computer in it than without.

  • Link to post
    Share on other sites

    Posted · Fan "Kick" Start


    The Search and Replace plugin will accept newline characters in the "Replace" box.

    If you were to have "Initial Fan Speed" at 15% and the regular fan speed at 16% (something different) then within the search and replace dialog:

           Search for:  M106 S38.3

           Replace: M106 S255\nG4 S2\nM106 S38.3

    That results in this:


           M106 S38.3 ;initial fan at 15%

    being changed to this:

           M106 S255 ;fan to 100%
           G4 S2 ;Dwell for 2 seconds
           M106 S38.3 ;Fan to 15%


    Bear in mind that every occurrence of M106 S38.3 in the file will be changed, not just the first one.

    At any rate maybe there is something you can do with that.

  • Link to post
    Share on other sites

    Posted · Fan "Kick" Start

    The UM2(+) firmware is open source. Best place is to make the change there; simpler to change than writing a Cura plugin and also more effective.
    Building the software isn't difficult, it's just an Arduino project.



    Create a pull request with your modifications and I can add it to this repository.

  • Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now
    • Our picks

      • UltiMaker Cura 5.7 stable released
        Cura 5.7 is here and it brings a handy new workflow improvement when using Thingiverse and Cura together, as well as additional capabilities for Method series printers, and a powerful way of sharing print settings using new printer-agnostic project files! Read on to find out about all of these improvements and more. 
          • Like
        • 7 replies
      • S-Line Firmware 8.3.0 was released Nov. 20th on the "Latest" firmware branch.
        (Sorry, was out of office when this released)

        This update is for...
        All UltiMaker S series  
        New features
        Temperature status. During print preparation, the temperatures of the print cores and build plate will be shown on the display. This gives a better indication of the progress and remaining wait time. Save log files in paused state. It is now possible to save the printer's log files to USB if the currently active print job is paused. Previously, the Dump logs to USB option was only enabled if the printer was in idle state. Confirm print removal via Digital Factory. If the printer is connected to the Digital Factory, it is now possible to confirm the removal of a previous print job via the Digital Factory interface. This is useful in situations where the build plate is clear, but the operator forgot to select Confirm removal on the printer’s display. Visit this page for more information about this feature.
          • Like
        • 0 replies
    • Create New...