moonglow / FlashForge_Marlin

:shark: Marlin firmware for FlashForge Dreamer/Dreamer NX/Inventor, Bosch Dremel 3D20 3D, PowerSpec Ultra 3D and Monoprice Inventor 1
87 stars 26 forks source link

Part Cooling Fan commands do not work after Select Tool command #104

Open mik077 opened 2 years ago

mik077 commented 2 years ago

I am having an issue with GCode generated in Cura where the parts cooling fan does not turn on. Cura inserts a Select Tool command to select the second extruder (T1) at the start of the file. After this command is sent to the printer the Set Fan Speed command (M106) does not work if the fan index is not given. For example M106 S255 does not work, but M106 S255 P0 does work. There is no option in Cura that I can see to make it add the fan index to the M106 commands.

I tested this by sending T1 command to the printer and M106 S255. The fan does move momentarily sometimes but stops. Then when M106 S255 P0 is sent the fan runs as normal.

mik077 commented 2 years ago

I forgot to mention this is on a FlashForge Inventor running the precompiled firmware.

moonglow commented 2 years ago

Hi @mik077 ! I will try to check it soon, but i has only 1 head machine... anyway i will try to check firmware logic for such case. Thanx for report.

mik077 commented 2 years ago

No problem. I switched to the firmware with the hotend swap and it's resolved my Cura issue with the part cooling fan not turning on. Great job with the FF Marlin firmware by the way.

Mrnt commented 2 years ago

@moonglow line 2977 in configuration.h needs to be enabled: //#define NUM_M106_FANS 1 I just verified this.

It looks like marlin assumes there is a part cooling fan for each head unless you specify the actual number of fans using NUM_M106_FANS. When you do M106 S255 it sets the speed for the fan associated with the active extruder, so selecting T1 means M106 S255 will try to turn on a non existent fan. You can specify the fan by using the fan index: M106 P0 S255

moonglow commented 2 years ago

Thank you @Mrnt ! I check it right now and all works as expected, cooling fan works OK for both extruders ! Thank you !

moonglow commented 2 years ago

@Mrnt Hm... take a look please HERE. Looks like we need to stay FAN counts as it was and maybe create fake FAN for second extruder and make CHAMBER FAN has index 3 ?... it will looks like FAN1 and FAN2 is actually same FAN... hm need to find a logic about how does Marlin control cooling fans for two extruders.

Mrnt commented 2 years ago

Will take a look

Mrnt commented 2 years ago

Looks like making a second dummy fan for the same fan does not work, ie FAN_PIN = real cooling fan, FAN1_PIN = FAN_PIN, FAN2_PIN as chamber fan - I can't get the cooling fan to turn on with M106 P0 S255 or M106 P1 S255 with that configuration.

What does work is defining FAN_PIN only and then setting CHAMBER_AUTO_FAN_PIN to be the chamber fan - this will automatically turn on the chamber fan when it gets to 45 degrees, but M106 will no longer control the chamber fan...

Mrnt commented 2 years ago

Reading through the bug reports in Marlin related to chamber fans it appears that M106 is meant only for part cooling - if you want to control the chamber fans manually they are suggesting using M42. The implementation of fan control seems very convoluted and not very flexible...

moonglow commented 2 years ago

I found a nice ( actually not ^_^ ) solution to make rear case fan works as expected and part cooling fan together, i will update such patches for next 2.0.9.5 release pack, after fix some other issue due Marlin another big source code updates :)

moonglow commented 2 years ago

@mik077 and @Mrnt you can now try latest builds ( 0.15.0 ) now all works as expected ( some fixes was applied to Marlin code base ).