Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    Variable Fan configuration possible?

    Scheduled Pinned Locked Moved Solved
    Tuning and tweaking
    7
    24
    1.8k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • TimTomundefined
      TimTom @alankilian
      last edited by

      @alankilian

      grml, hmm ok so no easy way out, ok will try on the weekend and post results 🙂

      1 Reply Last reply Reply Quote 0
      • deckingmanundefined
        deckingman @TimTom
        last edited by

        @timtom said in Variable Fan configuration possible?:

        @rjenkinsgb
        Thanks a lot for your input, but it's not really answering the question.

        T40:70 means the association with the two "Heaters" (drivers warnung and MCU) defined in line 1 and 2

        Err no - that isn't the case.

        @All
        So I'm still looking for a way to configure a gradiant fan control as described before. The example does not really help.

        I think you are getting a bit confused here. The M106 example you have been given does indeed give you the gradient control you seek - I know that for fact because I use it myself. It's also documented here https://duet3d.dozuki.com/Wiki/M106.

        Quoting from that linked Wiki .....

        "In firmware 1.19 and later, the T parameter may be of the form Taaa:bbb where aaa is the temperature at/below which the fan should be fully off and bbb is the temperature at which the fan should be fully on. The PWM will be set proportionally if the temperature is between these limits."...end of quote.

        You can also use the L and X parameters in conjunction with the Taaa:bbb for even more granular control. I do just that to eliminate an annoying buzz that I get at 10% fan speed or lower. That is to say I set the temperature range but also use the L parameter such that the fan runs at 20% speed as soon as as the minimum temperature threshold is reached and ramps up to full speed at the maximum temperature threshold, and is off when below the low temperature threshold.

        The driver temperature and overheat flags you mention are simply that - i.e. they are binary flags and either on or off. So while you can have have the fan run proportionally with MCU temperature, you can't do the the same for the overheat flags because they are are simply warning flags which give a binary 1 or 0 and not variable temperature measurements in degrees C.

        Ian
        https://somei3deas.wordpress.com/
        https://www.youtube.com/@deckingman

        TimTomundefined 1 Reply Last reply Reply Quote 2
        • TimTomundefined
          TimTom @deckingman
          last edited by

          @deckingman

          Thanks for your input, saved me some time 🙂

          I just came accross a different issue, maybe you're able to help me with (already reading and trying to understand. Changing the fan to "manual" mode", I figured that I'm only able to set the fan speed to 100% or 0%.

          M950 F3 C"out3" ; create fan 2 on pin out4 and set its frequency
          M106 P3 S0 H-1 C"My Fan"

          Fans are standard 2 wire configurations. Weired is, that the Hotend and Partcooling Fan on out5/6 work just as expected . . .

          HW is a Duet 3 Mini 5+

          deckingmanundefined 1 Reply Last reply Reply Quote 0
          • deckingmanundefined
            deckingman @TimTom
            last edited by

            @timtom said in Variable Fan configuration possible?:

            @deckingman

            Thanks for your input, saved me some time 🙂

            I just came accross a different issue, maybe you're able to help me with (already reading and trying to understand. Changing the fan to "manual" mode", I figured that I'm only able to set the fan speed to 100% or 0%.

            M950 F3 C"out3" ; create fan 2 on pin out4 and set its frequency
            M106 P3 S0 H-1 C"My Fan"

            Fans are standard 2 wire configurations. Weired is, that the Hotend and Partcooling Fan on out5/6 work just as expected . . .

            HW is a Duet 3 Mini 5+

            Not sure that I fully understand what you mean by ".....I figured that I'm only able to set the fan speed to 100% or 0%". Do you see the fan in the web interface and does it have a slider control? If so, are you saying that the slider only allows for 0 and 100 % speed and that you are unable to set any intermediate speed, or are you saying that you can set the speed but the fan doesn't react to it properly and either runs at full speed or no speed regardless of the demand setting?

            Ian
            https://somei3deas.wordpress.com/
            https://www.youtube.com/@deckingman

            TimTomundefined 1 Reply Last reply Reply Quote 0
            • TimTomundefined
              TimTom @deckingman
              last edited by

              @deckingman

              Thanks again for coming back to me.

              The Fan turns up in the Webfrontend. I can set the value between 0 and 100, the fan only turns on, when I set it to 100. (Any value set below 100 e.g. 70,87 or even 99 leave the fan off). Just when I move the slider to 100, it switches on to full blast.

              Alex.crundefined deckingmanundefined 2 Replies Last reply Reply Quote 0
              • Alex.crundefined
                Alex.cr @TimTom
                last edited by

                @timtom

                This could mean that your fan doesn’t like to be PWM’d. You can try adjusting the Q value on M950 to find a value that works.

                Or it could mean that your fan needs a “blip” to get started. This can be controlled with the B command under M106.

                Voron2.4/Duet3 SBC+6HC+3HC+1LC+1HCL(x2) - Delta/Duet2 Wifi - CubePro/Duet2 Wifi+Duex5 - Laser/Duet3 Mini5+ - Cel Robox - U̶p̶3̶0̶0̶+/D̶u̶e̶t̶3̶ ̶6̶H̶C̶+̶LC1̶ - F̶T̶-̶5̶/̶D̶u̶e̶t̶2̶ ̶W̶i̶f̶i̶ - S̶o̶l̶i̶d̶o̶o̶d̶l̶e̶

                1 Reply Last reply Reply Quote 1
                • deckingmanundefined
                  deckingman @TimTom
                  last edited by

                  @timtom I agree with what @Alex-cr has said. I have some similarly temperamental fans and have found that a really low "Q" value of 10 Hz beats them into submission.

                  Ian
                  https://somei3deas.wordpress.com/
                  https://www.youtube.com/@deckingman

                  TimTomundefined 1 Reply Last reply Reply Quote 1
                  • TimTomundefined
                    TimTom @deckingman
                    last edited by

                    @deckingman & @Alex-cr

                    THAT'S IT!
                    Stupid fans, got some SUNON 24V, they work more or less reliable with Q10 (making some noise due to the 10 Hz).

                    They don't turn on on low settings, but with setting the start temperature in M106 to 10°C, I got me expected results:

                    M950 F2 C"out4" Q10
                    M106 P2 H2:3 L0.15 X1 B0.3 T10:50 C"Electronics Bay" B0.5
                    

                    The fans turn slowly in normal operation, providing a nice breeze to the electronics compartment and will speed up with raising temperatures.
                    There is still a notable difference between 99% and 100%, but that should do it for the moment.

                    I added some information on https://duet3d.dozuki.com/Wiki/M950?revisionid=HEAD, maybe that gets accepted and will help others in future.

                    Thanks a lot for your support. For the future I'll experiment with different fans, as DUET allows different voltages on out ports. I assume lower voltage fans might perform better as the operating voltage is not so wide spread.

                    👍 👍 👍

                    Alex.crundefined deckingmanundefined 2 Replies Last reply Reply Quote 0
                    • Alex.crundefined
                      Alex.cr @TimTom
                      last edited by

                      @timtom
                      The biggest thing to look for in fans is a note saying "PWM" capable as a spec. Voltage matters less.

                      Voron2.4/Duet3 SBC+6HC+3HC+1LC+1HCL(x2) - Delta/Duet2 Wifi - CubePro/Duet2 Wifi+Duex5 - Laser/Duet3 Mini5+ - Cel Robox - U̶p̶3̶0̶0̶+/D̶u̶e̶t̶3̶ ̶6̶H̶C̶+̶LC1̶ - F̶T̶-̶5̶/̶D̶u̶e̶t̶2̶ ̶W̶i̶f̶i̶ - S̶o̶l̶i̶d̶o̶o̶d̶l̶e̶

                      TimTomundefined 1 Reply Last reply Reply Quote 0
                      • TimTomundefined
                        TimTom @Alex.cr
                        last edited by

                        @alex-cr
                        Thanks for the input, mostly followed Voron BOM and the fans are 24 Volt, the selection on "easily" available ones in certain dimensions seem limited.

                        Even though I might ask dummy questions and keep busy, I'm super thankful for the support, the experience I'm gaining is priceless.
                        I heavily rely on documentation, and while Duet Documentation is not bad, some more guidance and help on the one or other page would shorten troubleshooting!

                        Alex.crundefined 1 Reply Last reply Reply Quote 0
                        • Alex.crundefined
                          Alex.cr @TimTom
                          last edited by

                          @timtom
                          I am a big fan of my 2.4.
                          The Voron community has done a good job of putting a lot of components in demand.

                          Voron2.4/Duet3 SBC+6HC+3HC+1LC+1HCL(x2) - Delta/Duet2 Wifi - CubePro/Duet2 Wifi+Duex5 - Laser/Duet3 Mini5+ - Cel Robox - U̶p̶3̶0̶0̶+/D̶u̶e̶t̶3̶ ̶6̶H̶C̶+̶LC1̶ - F̶T̶-̶5̶/̶D̶u̶e̶t̶2̶ ̶W̶i̶f̶i̶ - S̶o̶l̶i̶d̶o̶o̶d̶l̶e̶

                          TimTomundefined 1 Reply Last reply Reply Quote 0
                          • deckingmanundefined
                            deckingman @TimTom
                            last edited by

                            @timtom Unless fans actually state that they are PWM compatible, it's largely "pot luck" how well they will work. But I haven't yet come across a fan that I can't get to work reasonably well by playing around with PWM frequency (Q value) and the L, X and B parameters.

                            Ian
                            https://somei3deas.wordpress.com/
                            https://www.youtube.com/@deckingman

                            1 Reply Last reply Reply Quote 0
                            • TimTomundefined
                              TimTom @Alex.cr
                              last edited by

                              @alex-cr

                              Yes definitivly, I started with a Tevo Tarantula several years ago, got it working so so.
                              Still remember my first clogged nozzle (due to bad machinery in hotend) and how long I needed to figure this out. . .

                              Then I got one of the first Prusa MK3, also here it tooks some iterations until it got that stable to become my workhose since (printed all ABS parts for my Voron with it, in an enclosure).

                              Now I'm with Voron, beautiful machine.

                              With each iteration I learned more and more. As I kid I enjoyed Lego Technic, no comparision, what 3D printers bring to the table 🙂

                              even if it's off this topic, do you have some docu/suggestion/information for Z-Level/print start code? - I'll figure out but would appreciate some hints 🙂

                              Alex.crundefined 1 Reply Last reply Reply Quote 0
                              • Alex.crundefined
                                Alex.cr @TimTom
                                last edited by

                                @timtom

                                Sure can! Let me know if you need any explaining. This will need modified to fit your needs but should give you a place to start.

                                My slicer(Superslicer) start code looks like this:

                                ;voron start code
                                
                                M104 S180
                                M190 S[first_layer_bed_temperature]
                                G10 P0 S[temperature]  R180;
                                M116 ; wait for tool temp
                                G32 ; home and level gantry 
                                
                                
                                M207 P0 S0.4 R0.0 F3600 Z1.0; firmware retract defaults
                                M572 D0 S0.05 ;pressure advance for tool 0
                                M291 P"Cycle Start" S1 T30
                                
                                M98 P"/macros/print_scripts/nozzle_purge_wipe.g"
                                M98 P"homez.g"  ; home Z using the home Z file
                                G1 X175 Y175 Z10 F20000
                                

                                Homez.g

                                ; homez.g
                                ; called to home the Z axis
                                ;
                                G90
                                ;G59.1													;select nozzle height sensor coordinate system
                                ;G31 K0 													  ; select nozzle hieght sensor
                                M98 P"/macros/print_scripts/speed_homing.g"   			  ; Setup low speed & accel
                                G1 Y335.0 F9000
                                G1 X230.2
                                G1 X230.2Y349.5 ; probe location
                                G91
                                G1 Z-999 F1000 H1
                                G1 Z5.0 F6000
                                G1 Z-999 F150 H1
                                G90
                                G1 Z1.35 ;set this number to the difference between the bed and nozzle height sensor 
                                G92 Z0.0  
                                ;G4 S5
                                
                                M98 P"/macros/print_scripts/speed_normal.g"   			  ; Setup normal speed & accel
                                G01 Z20.0 F60000
                                G54    ;return coordinates to normal
                                G4 P250
                                

                                Homeall.g

                                ; homeall.g
                                ; called to home all axes
                                ;
                                
                                G91 
                                G54; relative positioning
                                M561                                                      ; Clear any bed transform
                                G1 H2 Z10 F2000
                                M98 P"/macros/print_scripts/speed_homing.g"   			  ; Setup low speed & accel
                                
                                G1 Y-5 H2 F9000     ; Move away from the endstops
                                G1 X600 F2400 H1   ; Coarse home X
                                G1 X-5 F9000
                                G1 X600 F360 H1 			 ; Coarse home X
                                G1 X-5 F9000
                                G1 Y600 H1 F2400  		 ; Coarse home Y
                                G1 Y-5 F9000     ; Move away from the endstops
                                G1 Y600 F360 H1  		 ; Fine home Y
                                G1 Y-5 F9000     ; Move away from the endstops
                                G90;
                                M98 P"homez.g"  ; home Z using the home Z file
                                M98 P"/macros/print_scripts/speed_normal.g"   			  ; Setup normal speed & accel
                                
                                G1 Z20.0
                                G1 X100.0Y344.5
                                ;M98 P"/macros/print_scripts/goto_bucket.g"   			  ; Go to park position
                                G54
                                ;G29 S1 ; load bed map
                                

                                And my G32/bed.g looks like this:

                                ; bed.g
                                ; Called to perform automatic bed compensation via G32
                                
                                ; If the printer hasn't been homed, home it
                                if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed
                                	echo "Homeing"
                                	G28
                                else
                                	M98 P"/sys/homez.g"   			  ; Home Z
                                  
                                
                                G54   												      ; normal coordinate system 
                                M561                                                      ; Clear any bed transform 
                                ;G31 K1 													  ; select height probe 
                                M401 ;Deploy Probe
                                
                                G1 X310 Y310 Z15.0 F20000                               ; move to an inital location
                                M98 P"/macros/print_scripts/speed_homing.g"   			  ; Setup low speed & accel
                                M290 R0 S0 ; clear babystepping
                                G90;
                                echo "Leveling"
                                M558 H6.0 ;dive height for probing
                                while iterations <=1                                      ; Do minimum of 2 passes
                                	G30 P0 X320 Y300 Z-99999
                                	G30 P1 X320 Y50 Z-99999
                                	G30 P2 X30 Y50 Z-99999
                                	G30 P3 X30 Y300 Z-99999 S4
                                
                                M558 H3.0 ;lower dive height
                                while move.calibration.initial.deviation >= 0.01         ; perform additional tramming if previous deviation was over 0.01mm 
                                   if iterations = 5                                      ; Perform 5 checks
                                      M300 S3000 P500                                     ; Sound alert, required deviation could not be achieved
                                      abort "!!! ABORTED !!! Failed to achieve < 0.01 deviation within 5 movements. Current deviation is " ^ move.calibration.initial.deviation ^ "mm."
                                   G30 P0 X320 Y300 Z-99999
                                   G30 P1 X320 Y50 Z-99999
                                   G30 P2 X30 Y50 Z-99999
                                   G30 P3 X30 Y300 Z-99999 S4
                                 
                                echo "Gantry deviation of " ^ move.calibration.initial.deviation ^ "mm obtained."
                                ;set global.gantrylevel=1 ; set variable to true
                                G1 Z{sensors.probes[0].diveHeight+10.0}; lift head
                                
                                M402     ;Retract probe
                                M98 P"homez.g"
                                
                                
                                M98 P"/macros/print_scripts/speed_normal.g"   			  ; Setup normal speed & accel
                                G1 Z20.0
                                M98 P"/macros/print_scripts/goto_bucket.g"   			  ; Go to park position
                                G54
                                G4 P50
                                ;G29 S1 								; load bed map
                                

                                Voron2.4/Duet3 SBC+6HC+3HC+1LC+1HCL(x2) - Delta/Duet2 Wifi - CubePro/Duet2 Wifi+Duex5 - Laser/Duet3 Mini5+ - Cel Robox - U̶p̶3̶0̶0̶+/D̶u̶e̶t̶3̶ ̶6̶H̶C̶+̶LC1̶ - F̶T̶-̶5̶/̶D̶u̶e̶t̶2̶ ̶W̶i̶f̶i̶ - S̶o̶l̶i̶d̶o̶o̶d̶l̶e̶

                                TimTomundefined 1 Reply Last reply Reply Quote 0
                                • TimTomundefined TimTom has marked this topic as solved
                                • TimTomundefined
                                  TimTom @Alex.cr
                                  last edited by

                                  @alex-cr

                                  Thanks a lot for your config, it helped already.

                                  Two more questions.

                                  1. How do you adjust Z-height? I followed the guide https://docs.duet3d.com/User_manual/Connecting_hardware/Z_probe_testing and on 0.0 the nozzle is barely touching the bed (paper test). When starting printing the nozzle moves to 0.2 and the extrusion is to high . . .
                                    Seems like I'm missing something in the concept.
                                  2. How do you handle the two different Z-Sensors (inductive and nozzle tip)? It's still a mystery to me.

                                  Do you prefer inductive or nozzle sensor? Any insights are heavily appeciated!

                                  Alex.crundefined 1 Reply Last reply Reply Quote 0
                                  • Alex.crundefined
                                    Alex.cr @TimTom
                                    last edited by

                                    @timtom

                                    So to answer your first question:

                                    My config is a bit different than some of the publicly available ones. In my homez.g file you will see a line that says:

                                    G1 Z1.35 ;set this number to the difference between the bed and nozzle height sensor 
                                    

                                    The larger this number is adjusted the "higher" the nozzle will be. So if you need to slightly lower the nozzle, make this number smaller.

                                    My setup uses the nozzle tip as the Z minimum end stop and the inductive(or in my case klicky) defined as a probe. This makes things clean IMO.

                                    I use the nozzle height sensor for setting my Z zeros. It was way more repeatable than the inductive probe I was running when I first built the machine. The indictive probe is only used to do the gantry leveling.

                                    Here is my full config for reference. Just as an FYI like I said above, mine is quite a bit different than "normal" V2.4 configs as provided by Flug and a few others.

                                    ; Configuration file for Duet 3 (firmware version 3)
                                    ; executed by the firmware on start-up
                                    ;
                                    ;Voron 2.4 config 350x350x350mm
                                    ;Hardware: Duet3 6HC+3HC+1LC, mosquito hotend, klicky probe, ERCF
                                    
                                    ; General preferences
                                    G90                                                ; send absolute coordinates...
                                    M83                                                ; ...but relative extruder moves
                                    M550 P"voron2"                                     ; set printer name
                                    M669 K1 										   ; switch to CoreXY mode
                                    
                                    ; Network
                                    M552 P0.0.0.0 S1                             ; enable network and acquire dynamic address via DHCP
                                    M586 P0 S1                                   ; enable HTTP
                                    M586 P1 S0                                   ; disable FTP
                                    M586 P2 S0                                   ; disable Telnet
                                    
                                    ;Neopixel RGBW
                                    M150 X3 S16 R0 U255 B255 P60 F0
                                    
                                    M291 P"Controller Boot Sequence" R"Start" S0 T4 
                                    
                                    M80	C"pson"									           ; turn on ATX supply for safety (and trigger button on DWC)
                                    ;Turn on toolboard
                                    M950 F5 C"0.out1"                			;GPIO pin for toolboard power             
                                    ;M42 P0 S1 									;turn on toolboard power
                                    M106 P5 S1 L1 H-1 C"Toolboard power"
                                    
                                    
                                    G4 S3                                              ; wait for Canbus to stabilize 
                                    ; --- drive map ---
                                    ;    _______
                                    ;   | 3 | 4 |
                                    ;   | ----- |
                                    ;   | 2 | 5 |
                                    ;    -------
                                    ;     front
                                    
                                    ; Drives
                                    M569 P0.0 S0                                       ; physical drive 0.0 goes forwards (A Stepper)
                                    M569 P0.1 S0                                       ; physical drive 0.1 goes forwards (B Stepper)
                                    M569 P0.2 S0                                       ; physical drive 0.2 goes forwards
                                    M569 P0.3 S1                                       ; physical drive 0.3 goes backwards
                                    M569 P0.4 S0                                       ; physical drive 0.4 goes forwards
                                    M569 P0.5 S1                                       ; physical drive 0.5 goes backwards
                                    M569 P20.0 S0                                       ; physical drive 20.0 goes forwards (E Stepper)
                                    G4 P50 
                                    M584 X0.1 Y0.0 Z0.2:0.3:0.4:0.5 E20.0               ; set drive mapping
                                    M350 X32 Y32 Z16 E16 I1                            ; configure microstepping with interpolation
                                    M92 X160.00 Y160.00 Z400.0 E406.0                  ; set steps per mm (E417.075 old BMG)
                                    M906 X1500 Y1500 Z1500 E550 I50                    ; set motor currents (mA) and motor idle factor in per cent
                                    M84 S120                                           ; Set idle timeout
                                    G4 P50 
                                    ; Accelerations and speed
                                    M98 P"/macros/print_scripts/speed_normal.g"
                                    
                                    
                                    ; Axis Limits
                                    M208 X0 Y0 Z0 S1                                    ; set axis minima
                                    M208 X350.0 Y350.0 Z330.0 S0                        ; set axis maxima
                                    
                                    ; Endstops
                                    M574 X2 S1 P"0.io2.in"                               ; configure active-high endstop for high end on X via pin io2.in
                                    M574 Y2 S1 P"0.io1.in"                               ; configure active-high endstop for high end on Y via pin io1.in
                                    M574 Z1 S1 P"0.io3.in"                              			     ; 
                                    
                                    ; BLTouch
                                    ;M950 S0 C"0.io7.out"                                 ; create servo pin 0 for BLTouch
                                    ;M558 P9 C"0.io7.in" H5 A3 S0.005 F120 T9000        ; set Z probe type to bltouch and the dive height + speeds (probe 3 times and average)
                                    ;G31  P25 X0.0 Y23.23 z3.5
                                    
                                    ; Nozzle Height sensor
                                    ;M558 P8 C"^0.io3.in" H5 A1 F120 T9000 K0             ; set Z probe type to unfiltered digital and the dive height + speeds 
                                    ;G31 K0 P500 Z-4.0	
                                    
                                    ;NPN NO switch (stock voron sensor)
                                    ;M558 P8 C"^0.io5.in" T18000 F600 H5 A3 S0.01 B0 R0.2 K0
                                    ;G31 K0 P25 X0.0 Y25.0 z2.458					         ; set Z probe trigger value, offset and trigger height, 
                                    
                                    ;Klicky Probe
                                    M558 P8 C"^20.io2.in" T18000 F500:150 H5.0 A1 S0.01 B0 R0.0 K0
                                    G31 K0 P25 X0.0 Y25.0 z8.523
                                    					  		    
                                    ; Bed leveling
                                    M557 X25:325 Y25:325 S50                          	 ; define mesh grid
                                    M671 X-70:-70:420:420 Y-10:460:460:-10 S20         ; Define Z belts locations (Front_Left, Back_Left, Back_Right, Front_Right)
                                    
                                    ; Heaters
                                    ;bed heater - dual sensor config 
                                    ;hex stud thermistor: https://www.amazon.com/gp/product/B07Q5MKSLS/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1
                                    M308 S0 P"0.temp0" Y"thermistor" T100000 B3950 C0.0 A"Build Plate Temp" ; configure sensor 0 as thermistor on pin temp0 
                                    ;Built in Keenovo sensor
                                    M308 S1 P"0.temp1" Y"thermistor" T100000 B4725 C7.06e-8 A"Bed Heater Temp" ; configure sensor 0 as thermistor on pin temp1
                                    M950 H0 C"0.out0" T0 Q60                                ; create bed heater output on out0 and map it to sensor 0
                                    M307 H0 B0 S1.0                                   ; disable bang-bang mode for the bed heater and set PWM limit
                                    ;M307 H0 R0.450 C420.1 D1.06 S1.00 
                                    M307 H0 R0.153 C1735.5 D31.48 S1.00             ; pre 3.4 Beta 7 heater params
                                    M140 H0                                            ; map heated bed to heater 0
                                    M143 H0 S120                                       ; set temperature limit for build plate to 120C
                                    M143 H0 T1 P1 S125 A2                             ; Monitor heater thermistor, if temp goes above 125C temporarily turn off
                                    M143 H0 T1 P2 S132 A3                             ; Monitor heater thermistor, if temp goes above 132C cut "atx"(110V) supply
                                    
                                    
                                    ;Extruder T0 heater
                                    ;Slice Engineering 50W heater+ E3d PT100
                                    M308 S2 P"20.temp0" Y"PT1000" T100000 B3950 A"T0" 	;configure sensor 2 as PT1000 
                                    M950 H1 C"20.out0" T2                                 ; create nozzle heater output on out1 and map it to sensor 2
                                    M307 H1 B0 S1.00                                   ; disable bang-bang mode for the nozzle heater and set PWM limit
                                    ;307 H1 B0 R2.426 C171.9:143.7 D6.21 S1.00 V23.8   ; pre 3.4 Beta 7 params
                                    ;3.4beta7 and later params
                                    ;M307 H1 R1.924 K0.500:0.006 D8.84 E1.35 S1.00 B0 V23.8
                                    M307 H1 R2.125 K0.495:0.023 D7.24 E1.35 S1.00 B0 V23.8
                                    M143 H1 S300                                       ; set temperature limit for heater 1 to 300C
                                    
                                    ;Chamber Monitors
                                    ;Thermisors below: https://www.amazon.com/gp/product/B07D9LSKWK/ref=ppx_yo_dt_b_asin_title_o03_s00?ie=UTF8&psc=1
                                    M308 S3 P"1.temp1" Y"thermistor" T100000 B4725 C7.06e-8 A"Chamber Upper Temp"
                                    M308 S4 P"0.temp2" Y"thermistor" T100000 B4725 C7.06e-8 A"Chamber Gantry Temp"  ; configure sensor 2 as thermistor on pin temp2	
                                    M308 S5 P"0.temp3" Y"thermistor" T100000 B4725 C7.06e-8 A"Z Motor4 Temp"  ; Epoxied to stepper 4	
                                    M308 S10 P"0.spi.cs1" Y"dht22"       A"Chamber Lower Temp"    ; define DHT22 temperature sensor
                                    M308 S11 P"S10.1"     Y"dhthumidity" A"Chamber Hum[%]"  ; Attach DHT22 humidity sensor to secondary output of temperature sensor
                                    ;M308 S12 Y"drivers" A"6HC Steppers"
                                    
                                    
                                    
                                    ;mcu calibration
                                    M308 S7 Y"mcu-temp" A"MCU"                               ; configure MCU as sensor 3
                                    M912 P0 S-13.6                                     ; set CPU temp correction
                                    
                                    
                                    ; Fans/LEDs
                                    ;part cooling fan
                                    M950 F0 C"20.out2" Q500                             ; create fan 0 on pin out1 and set its frequency
                                    M106 P0 S0 H-1 L2 C"Part fan"                                   ; set fan 0 value. Thermostatic control is turned off
                                    ;main extruder heater cooling fan
                                    M950 F1 C"20.out1" Q500                               ; create fan 1 on pin 20.out1 and set its frequency
                                    M106 P1 S255 H2 T45 C"Extruder fan"                                 ; set fan 1 value. Thermostatic control is turned on
                                    ;Electronic cooling fan
                                    M950 F2 C"0.out7" Q100                              ; create fan 2 on pin out7 and set its frequency
                                    ;M106 P2 S.25 H-1 C"MCU fans"
                                    M106 P2 L0.25 X1 H7 T25:32 C"MCU fans"                                   ; set fan 2 value. Thermostatic control is turned on
                                    ;Main LEDs
                                    M950 F3 C"0.out4" Q500                               ; create fan 3 on pin out4 and set its frequency
                                    M106 P3 S0 H-1 C"Lights"                                    ; set fan 3 value. Thermostatic control is turned off
                                    ;Filter fan
                                    M950 F4 C"1.out8" Q100                                ; create fan 4 on pin out8 and set its frequency
                                    M106 P4 S0 H-1 C"Exhaust Fan"                                   ; set fan 4 value. Thermostatic control is turned off
                                    ;F5 and P5 are taken earlier in config
                                    ;Filter fan
                                    M950 F6 C"0.out8" Q100                                ; create fan 4 on pin out8 and set its frequency
                                    M106 P6 S0 H-1 C"Nevermore Fan"                                   ; set fan 4 value. Thermostatic control is turned off
                                    
                                    ; Tools
                                    M563 P0 S"Tool 0" D0 H1 F0                         ; define tool 0
                                    G10 P0 X0 Y0 Z0                                    ; set tool 0 axis offsets
                                    G10 P0 R0 S0                                       ; set initial tool 0 active and standby temperatures to 0C
                                    ;M591 D0 P7 C"1.io0.in" S1 E25 L2.1 R70:130          ; create filament monitor for Tool 0
                                    M572 D0 S0.00                                      ; default pressure advance for Tool 0
                                    M592 D0 A0.0 B0.00 L0.2                            ; Nonlinear extrusion Tool 0
                                                                           
                                    									   
                                    ;Accelerometer
                                    M955 P20.0 I05
                                    ;Input Shaper
                                    ;M593 P"ei3" F45.0 L0.05 ;20.0 improved FFT results across the board ;54.0 is old valueF34.48  ; Cancel ringing
                                    ;M593 P"EI3" F50.0 L0.1  ;(old 8.0)
                                    M593 P"EI3" F10.6 L0.1 
                                    
                                    
                                    ;Work Offsets:
                                    G10L2P1 X0.0Y0.0Z0.0  ;Set G54 offset to be machine coordinates
                                    G10L2P7 X230.2Y349.5Z0.0  ;use G59.1 for tool height probing Z zero is top of the setter when not pressed
                                    G10L2P8 X100.0Y346.5Z4.0  ;use G59.2 for nozzle cleaning, center of brush, top of brush
                                    
                                    ; Motor Stall Detect
                                    M915 X S10 F1 H200 R1
                                    M915 Y S10 F1 H200 R1
                                    M915 Z S10 F1 H200 R1
                                    
                                    
                                    
                                    ;global variable declare
                                    ;global gantryLevel = 0
                                    ;global printstoptime = 0
                                    ;global printcomplete = 0
                                    ;global holdtime = 0
                                    global daemonRun = 1;
                                    
                                    ;GPIO
                                    ;Buttons on the toolboard to retract and extrude
                                    M950 C"20.button0" J0 
                                    M950 C"20.button1" J1
                                    M581 P0 T2 
                                    M581 P1 T3 
                                    
                                    ;Neopixel RGBW
                                    M150 X3 S16 R0 U0 B255 P60 F0
                                    
                                    ; Miscellaneous
                                    M115
                                    M115 B1										   ;Check status of Can-FD exansion board
                                    M115 B20
                                    M911 S19 R22 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss
                                    M207 S0.4 R0.0 F3600 T3600 Z1.0                    ; set default retraction settings
                                    
                                    G54
                                    T0                                                 ; select first tool
                                    ;G31 K0 												;select Bltouch by default
                                    M106 P3 S255 									   ; turn on lights
                                    ;M564 H0 S0; Allow movement outside of max/min and allow movment without homing
                                    
                                    M98 P"ercf/lib/init.g"     ;Set up the ERCF
                                    T0  
                                    
                                    
                                    
                                    

                                    Voron2.4/Duet3 SBC+6HC+3HC+1LC+1HCL(x2) - Delta/Duet2 Wifi - CubePro/Duet2 Wifi+Duex5 - Laser/Duet3 Mini5+ - Cel Robox - U̶p̶3̶0̶0̶+/D̶u̶e̶t̶3̶ ̶6̶H̶C̶+̶LC1̶ - F̶T̶-̶5̶/̶D̶u̶e̶t̶2̶ ̶W̶i̶f̶i̶ - S̶o̶l̶i̶d̶o̶o̶d̶l̶e̶

                                    TimTomundefined 1 Reply Last reply Reply Quote 0
                                    • zaptaundefined
                                      zapta
                                      last edited by

                                      @alankilian said in Variable Fan configuration possible?:

                                      I'm not familiar with the object model and all that, but I think you could use daemon.g to write a loop checking the temperature and sending an appropriate fan speed control.

                                      Using daemon.g to control the fan is very feasible. I am doing something similar to the material cooling fan to avoid duct deformation from the heat.

                                      if {heat.heaters[1].current > 70 && fans[0].actualValue < 0.25}
                                        M106 P0 S0.25  ; Fan too law for a hot heater, set to 25%
                                      elif {heat.heaters[1].current < 50}
                                        M106 P0 S0.0   ; Fan off
                                      

                                      In the same way you can have conditions for a few temperature thresholds and set the fan speed.

                                      TimTomundefined 1 Reply Last reply Reply Quote 2
                                      • TimTomundefined
                                        TimTom @Alex.cr
                                        last edited by

                                        @alex-cr

                                        Thanks a lot for sharing your thoughts and ideas.

                                        Even though I have a "SuperPinda" supposed to be immune to temperature changes, I still noticed that the measuring distance is different in various temperatures (not a lot, but still enough to mess up the first layer).

                                        I adopted your configuration and find it pretty usefull.

                                        So bottom line, my Z1 probe is the nozzle sensor used to determine the distance between nozzle and bed - great strategy as even a nozzle swap automatically adjusts the right height between nozzle and bed. Something to bare in mind for other users, you shall have a waste bin with steel brush to clean the nozzle from debries prior final z-adjustment (after heating the nozzle). If not present, there is the risk, that oozed out filament messes up with the testing (as the nozzle appears "longer" to the printer).

                                        The Z0 probe is the PINDA (inductive sensor), which is only used for gantry leveling and mesh bed compensation. Trigger distances may vary between temperatures, but as only relative values to each other are used as reference, this does not really matter. (aka it does not make a difference if the 4 trigger points are measured at 1.5 or 1.7 mm).

                                        So thanks for your support and insights.

                                        1 Reply Last reply Reply Quote 0
                                        • TimTomundefined
                                          TimTom @zapta
                                          last edited by

                                          @zapta

                                          Thanks for your input, in this thread I figured out, that my main problem was, that the fans are "not" PWM compatible.
                                          That means fiddeling around with the frequency.

                                          Sooner or later, I'll probably switch over to 12V fans. There choice in 24V is pretty limited. Thanks to Duet Hardware, it's pretty easy to run the board with 24V and the fans with 12V (which then can handle PWM).

                                          Then the standard config with M106 should be sufficient.

                                          1 Reply Last reply Reply Quote 0
                                          • First post
                                            Last post
                                          Unless otherwise noted, all forum content is licensed under CC-BY-SA