Page 1 of 1

Marlin 1.1.9 firmware for A10M with a mixing extruder, by arifg

Posted: Mon Nov 19, 2018 10:51 am
by arifg
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

Code: Select all

#define BLTOUCH
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:

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
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:

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.

Re: Marlin 1.1.9 firmware for A10M with a mixing extruder

Posted: Wed Nov 21, 2018 5:48 pm
by arifg
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
;-----------------------------------------------------------

Re: Marlin 1.1.9 firmware for A10M with a mixing extruder

Posted: Wed Dec 12, 2018 2:33 am
by lakarusman
thank's arifg, I will test that and come back to tell you what happened with my 3dprint.

Re: Marlin 1.1.9 firmware for A10M with a mixing extruder

Posted: Tue Dec 25, 2018 2:56 pm
by arifg
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.

Re: Marlin 1.1.9 firmware for A10M with a mixing extruder

Posted: Wed Jan 09, 2019 6:07 am
by goyo
Hello arifg.
Thanks for sharing your version of Marlin 1.1.9
I just bought an A10M. I DON'T HAVE the BLTOUCH and I have commented the line to deactivate it, as you say in your post

Code: Select all

//#define BLTOUCH
If I comment the line to deactivate it, SanityCheck.h throws several errors and, as I am a newbie, I do not know how to fix it and be able to update the Firmware to Marlin 1.1.9 WITHOUT BLTOUCH

I've used Arduino 1.8.5 and also I tried with Arduino 1.8.7 with the same errors output

Can you help me please?
Thanks in advance. Best regards

Errors:
Arduino:1.8.5 (Windows 10), Tarjeta:"Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

In file included from sketch\MarlinConfig.h:42:0,

from sketch\G26_Mesh_Validation_Tool.cpp:27:

SanityCheck.h:475: error: #error "BABYSTEP_ZPROBE_OFFSET requires a probe."

#error "BABYSTEP_ZPROBE_OFFSET requires a probe."

^

SanityCheck.h:873: error: #error "Auto Bed Leveling requires one of these: PROBE_MANUALLY, FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or a Z Servo."

#error "Auto Bed Leveling requires one of these: PROBE_MANUALLY, FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or a Z Servo."

^

SanityCheck.h:877: error: #error "Z_MIN_PROBE_REPEATABILITY_TEST requires a probe: FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or Z Servo."

#error "Z_MIN_PROBE_REPEATABILITY_TEST requires a probe: FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or Z Servo."

^

exit status 1
#error "BABYSTEP_ZPROBE_OFFSET requires a probe."

Este reporte podría tener más información con
"Mostrar salida detallada durante la compilación"
opción habilitada en Archivo -> Preferencias.

Re: Marlin 1.1.9 firmware for A10M with a mixing extruder, by arifg

Posted: Sun Jan 20, 2019 7:09 am
by demmy
Hi, arifg
Thanks for your job but i can`t see download or repo link

Re: Marlin 1.1.9 firmware for A10M with a mixing extruder, by arifg

Posted: Mon Jan 21, 2019 12:42 am
by chrisvallot
I installed it and it works great. I do however have a question do you have the .ino folder before you compiled it into .hex? im going to be making a lot of changes to mine and i want to have a good baseline to compile with.

Re: Marlin 1.1.9 firmware for A10M with a mixing extruder, by arifg

Posted: Sun Feb 03, 2019 3:31 am
by ITGuruWoo
Hi Arifg,

Hopefully you can help. I use your firmware with a couple of value changes and I cannot get it to save and load to eeprom correctly crc errors.
I have tried everything:
initialise eeprom, m502, m500, 501 - works ok mostly ( I have had it fail though I think)

If i do this and make a change for example z offset using menu or changing the filament sensor option and then m500. M501 then has crc error.

I am a dev and have looked through the load and save code but not found the issue.

Any ideas?

Thanks