Marlin 1.1.9 firmware for A10M with a mixing extruder, by arifg
Posted: Mon Nov 19, 2018 10:51 am
This is Marlin 1.1.9 Firmware for Geeetech A10M printers with mixing extruder. I ported all Geeetech features from Geeetech's 1.1.8 version, which include:
Full BLTouch support with my hack allowing to fine tune small build plate tilts which could not be eliminated by autolevel alone; BLTouch is enabled by default, disable it by commenting line in the Configuration.h file if needed.
Power loss recovery/resume. I tried to activate a native Marlin power loss feature but it turned out that it won't compile due to global variable's memory exhaustion. Finally I decided to port a limited Geeetech's version of this feature which appeared working pretty good.
Gradient mix/Filament mixer features. Current Marlin version has just a rudimentary support for mixing extruders, there still a lot of bugs and sub-optimal code implementations in this extent. I made some chacnges in the original Marlin code to make a mixing extruder work fine. As such I made a number of bug fixes for Filament Change feature, including the implementation of M701/M702 g-codes.
Fine-tuned extrusion parameters, as such I calibrated the extruders increasing Steps per mm value from 340 to 430.
Runout sensors enabled;
Other tweaks and tune ups.
A couple of words about tilting compensation hack. My experience of working with different machines using auto-level feature under Marlin firmware shows that all hardware has a consistent auto-level error causing a tilt of the build plate to one of the corners which can reach tenths of mm in some cases. Every hardware I used had this tilt error of unclear nature which may differ in a particular corner to tilt to, but it doesn't depend on a sensor type (I used inductive, capacitive and, of course, BLTouch - all of them had that tilt error). So after a lot of unsuccessful attempts to tweak this using Marlin features alone, I made my own hack in the Marlin code to resolve this issue. I added a few lines to the Configuration.h file to control this feature:
These are values that work for my machine, which may or may not fit your one. In the case you see a distinctive tilt into one or both sides of the build plate, first try to disable this feature and perform a test print. Tweak X_TILT_COMP and Y_TILT_COMP if needed to achieve an absolutely flat first layer printout. Use "leveling_test.stl" model to test auto-level accuracy.
I made some work tests of this firmware but there still could be bugs there, so use it on your own risk. Enjoy!
Update 1:
My Start and End G-codes in Cura working well with this firmware:
;-----------------------------------------------------------
;-----------------------------------------------------------
;-----------------------------------------------------------
;-----------------------------------------------------------
Update 2: Important Found a bug in the e-factor for the extruders feed rate, causing the second extruter to perform incorrectly in some circumstances (thanks to the user szerwi). Firmware file updated, please download the latest version and re-flash.
Full BLTouch support with my hack allowing to fine tune small build plate tilts which could not be eliminated by autolevel alone; BLTouch is enabled by default, disable it by commenting
Code: Select all
#define BLTOUCH
Power loss recovery/resume. I tried to activate a native Marlin power loss feature but it turned out that it won't compile due to global variable's memory exhaustion. Finally I decided to port a limited Geeetech's version of this feature which appeared working pretty good.
Gradient mix/Filament mixer features. Current Marlin version has just a rudimentary support for mixing extruders, there still a lot of bugs and sub-optimal code implementations in this extent. I made some chacnges in the original Marlin code to make a mixing extruder work fine. As such I made a number of bug fixes for Filament Change feature, including the implementation of M701/M702 g-codes.
Fine-tuned extrusion parameters, as such I calibrated the extruders increasing Steps per mm value from 340 to 430.
Runout sensors enabled;
Other tweaks and tune ups.
A couple of words about tilting compensation hack. My experience of working with different machines using auto-level feature under Marlin firmware shows that all hardware has a consistent auto-level error causing a tilt of the build plate to one of the corners which can reach tenths of mm in some cases. Every hardware I used had this tilt error of unclear nature which may differ in a particular corner to tilt to, but it doesn't depend on a sensor type (I used inductive, capacitive and, of course, BLTouch - all of them had that tilt error). So after a lot of unsuccessful attempts to tweak this using Marlin features alone, I made my own hack in the Marlin code to resolve this issue. I added a few lines to the Configuration.h file to control this feature:
Code: Select all
#define TILT_COMPENSATION
#if ENABLED(TILT_COMPENSATION)
#define X_TILT_COMP 0.04 // lower value - left bed edge higher
#define Y_TILT_COMP 0.3 // lower value - front bed edge higher
#endif
I made some work tests of this firmware but there still could be bugs there, so use it on your own risk. Enjoy!
Update 1:
My Start and End G-codes in Cura working well with this firmware:
Code: Select all
;Start G-Code
G21 ;metric values
G90 ;absolute positioning
M107 ;start with the fan off
G28 ;move X/Y/Z to min endstops (Homing)
G29 ;start auto level
G1 Z15.0 F9000 ;move the platform down 15mm
G92 E0 ;zero the extruded length
G0 F7200.000000 X1.0 Y160 Z0.300 ;move the caret to the left edge of the bed
G1 F1800.000 X1.0 Y110.0 E10 ;purge filament
G1 X0 Y110 E13 ;purge more filament
G1 X0 Y60 E16.0 ;purge even more
G92 E0 ;zero the extruded length again
G1 F1500 E-6.5 ;retract
G1 Z30.0 Y-5.0 ;rise the caret
T0 ;switch to extruder 0
M420 S1 ;resume Auto-leveling after extruder change
M117 Printing...
Code: Select all
;End G-Code:
M104 S0 ;extruder heater off
M140 S0 ;heated bed heater off (if you have it)
G91 ;relative positioning
G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure
G1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more
G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way
M84 ;steppers off
G90 ;absolute positioning
Code: Select all
;Switch Extruder 1 G-Code
M420 S1 ;resume Auto-leveling after extruder change
Code: Select all
;Switch Extruder 2 G-Code
M420 S1 ;resume Auto-leveling after extruder change
Update 2: Important Found a bug in the e-factor for the extruders feed rate, causing the second extruter to perform incorrectly in some circumstances (thanks to the user szerwi). Firmware file updated, please download the latest version and re-flash.