1 / 3
Flashforge AD5M\pro nozzle brush using Bambulab A1 silicone brush — zdjęcie 1
1 / 3

Flashforge AD5M\pro nozzle brush using Bambulab A1 silicone brush

Zamów wydruk tego modelu

Obliczymy ostateczną cenę na podstawie wybranego pliku. Sprawdzisz ją i zaakceptujesz przed płatnością.

Zapisane na tym urządzeniu.

A nozzle brush mode for Flashforge AD5M series.

Ocena
5 / 5
Polubienia
219
Pobrania
567
Wydruki
4
Wyświetlenia
6634
Oceny
5

Aktualizacja u źródła:

Informacje o modelu

Źródło
Printables
Licencja
Creative Commons — Attribution

[Changelog MK2] 20251103

User @CoreyRogers_489647 reported interference with bed issue. Lightly remix to increase clearance.

UNTESTED.

-----------------------------------------------------------------------------------------

As suggested per title.

 

I printed using PET-CF since my bed gets to 110. ABS\ASA might work as well. PC\NYLON variant should be even better.

 

You want to use heat resistant and tough material so PET-CF might not be ideal.

 

Printed with support, see photo. Reuse the existing M4 plastic screws.

 

I modified START_PRINT macro to do the brush before meshing. I am also using KAMP.

Thanks to @dimaj_298345's macro! This should work with vanilla AD5M setup I suppose. Link here: https://gist.github.com/dimaj/6b2007d76105feb7cbee29d0f2305aec

 

Now I can also post mine here for your reference since we've got something working : )

Here is my nozzle clean routine. You have to find your own coordinate boundary for your brush since obviously I have moved my origin to (0,0). 

[gcode_macro NOZZLE_CLEAN]
gcode:
; define region for the brush
   {% set brush_x_min = 92 %}
   {% set brush_x_max = 125 %}
   {% set brush_y_min = 216.5 %}
   {% set brush_y_max = 220 %}
   {% set brush_z_min = 4 %}
   {% set brush_z_max = 5 %}
   {% set extruder_temp = params.EXTRUDER_TEMP|default(180)|float %}  ; extruder temp, usually set by slicer
   {% set x_random = brush_x_min + (brush_x_max - brush_x_min) * (range(0, 100) | random) / 100 %}
   {% set y_random = brush_y_min + (brush_y_max - brush_y_min) * (range(0, 100) | random) / 100 %}
   RESPOND MSG="Moving over the brush: X{x_random} Y{y_random}"
   G1 X{ x_random} Y{y_random} F6000
   ; set extruer temp 30 degree cooler than material extruding temp but not exceeding 260 
   M104 S{(extruder_temp - 30) if (extruder_temp - 30) <= 260 else 260 }
   RESPOND MSG="Heating up nozzle..."
   TEMPERATURE_WAIT SENSOR=extruder MINIMUM={extruder_temp-33}
   RESPOND MSG="Wiping..."
   G1 Z{ brush_z_max} F300
   ; brush 10 moves
   {% for i in range(10) %}
       {% set x_random = brush_x_min + 0.5*(range(0, 100) | random) / 100 %}
       {% set y_random = brush_y_min + (brush_y_max - brush_y_min) * (range(0, 100) | random) / 100 %}
       {% set z_random = brush_z_min + (brush_z_max - brush_z_min) * (range(0, 10) | random) / 10 %}
       G1 X{ x_random|float } Y{ y_random|float } Z{z_random|float} F3000
       {% set x_random = brush_x_max + 0.5*(range(0, 100) | random) / 100 %}
       {% set y_random = brush_y_min + (brush_y_max - brush_y_min) * (range(0, 100) | random) / 100 %}
       {% set z_random = brush_z_min + (brush_z_max - brush_z_min) * (range(0, 10) | random) / 10 %}
       G1 X{ x_random|float } Y{ y_random|float } Z{z_random|float} F3000
   {% endfor %}
   ; cool off to probing nozzle temp
   M104 S120
   M106 S255
   TEMPERATURE_WAIT SENSOR=extruder MAXIMUM={140}
   ; brush 5 moves to remove cold filament
   {% for i in range(5) %}
       {% set x_random = brush_x_min + 0.5*(range(0, 100) | random) / 100 %}
       {% set y_random = brush_y_min + (brush_y_max - brush_y_min) * (range(0, 100) | random) / 100 %}
       {% set z_random = brush_z_min + (brush_z_max - brush_z_min) * (range(0, 10) | random) / 10 %}
       G1 X{ x_random|float } Y{ y_random|float } Z{z_random|float} F1800
       {% set x_random = brush_x_max + 0.5*(range(0, 100) | random) / 100 %}
       {% set y_random = brush_y_min + (brush_y_max - brush_y_min) * (range(0, 100) | random) / 100 %}
       {% set z_random = brush_z_min + (brush_z_max - brush_z_min) * (range(0, 10) | random) / 10 %}
       G1 X{ x_random|float } Y{ y_random|float } Z{z_random|float} F1800
   {% endfor %}
   M106 S0
   G1 Z10 F300

 

 

This routine is further called in this AUTO_BED_LEVEL routine as part of START_PRINT routine, before it calls BED_MESH_CALIBRATE which is redefined in KAMP.

 

[gcode_macro AUTO_BED_LEVEL]
gcode:
   {% set bed_temp = params.BED_TEMP|default(60)|float %}
   {% set extruder_temp = params.EXTRUDER_TEMP|default(200)|float %}
   {% set profile = params.PROFILE|default("auto") %}
   # clear old mesh and home if necessary
   BED_MESH_CLEAR
   {% if not "xyz" in printer.toolhead.homed_axes %}
       G28
   {% endif %}
   # bed heating
   G90                     ; absolute coordinates
   G1 Z10 F1800            ; raise bed
   M140 S{bed_temp}        ; set bed temp
   # wait for bed to reach temp, don't wait for stabilization
   TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={bed_temp-3}
   LOAD_CELL_TARE          ; reset tare before manual probe
   # nozzle heating for cleaning
   ;M104 S{extruder_temp-30}   ; set nozzle temperature
   # wait for nozzle to reach temp, don't wait for stabilization
   ;TEMPERATURE_WAIT SENSOR=extruder MINIMUM={extruder_temp-30}

NOZZLE_CLEAN EXTRUDER_TEMP={extruder_temp} LOAD_CELL_TARE ; reset tare before manual probe BED_MESH_CALIBRATE PROFILE={profile}

Tagi