New Firmware flavour "MarlinHOH"
After nearly one year of understanding and improvement of the basic
printing function I started to activate my second extruder.
I tried some dual nozzle prints at the very beginning, having a lot of
trouble with nozzle adjustment, in x-direction as well as in Z direction. I
tried some workarounds but finally failed in the first time.
In the meantime I have some upgraded nozzle design (details later), so I had
to deal with the nozzle offset only. I thought of an alignment procedure,
which helps to adjust the nozzles and gives an easy approach for the offset
correction of the nozzles.
This offset correction has to be done within the printer, and the Marlin
firmware has the option to do this. Unfortunately I failed by using the
implemented way, finally a small modification was necessary.
However, this was the initial reason for a review of the firmware (once
again).
So based on my first modification I checked possible improvements and my own
expectations for a proper firmware and did some programming work. The
results is the firmware flavor "MarlinHOH".
This firmware is implementing the following features:
- correct PID control of all heaters
- Hardware-PCM control for all heaters
- Autotune-procedure for all heaters
- Decoupling of temperature measurement by separate interrupt routine.
- updated SD-Card library with support of long filenames
- changed internal GCODE handling, small support programs can be implemented
nearly as-is
- checksum protection of printer parameters: in case of error the failsave
settings will be loaded
- the internationalisation of the messages is installed for en/de/fr and can
be selected within the menu.
- menu support for nozzle alignment (two heads only)
- time critical tasks now completely interrupt driven.
In parallel I removed subsequently some unused hardware options and, for the
SD card handling, the nesting function (at least temporary).
The Internationalization is implemented and I provide two examples for a
different language than english yet : german and french. I think that the
translations can become a little bit better, but for the beginning it is a
good proof of concept. For additional languages see my request below.
When using two extruders the offset handling is implemented as a function of
the firmware. The slicer has to provide the tool-commands only (T0, T1), the
slicing shall be done without offset between the extruders. Within the
firmware the lext extruder is taken as T1, the right one T0. This definition
is maintained for the LCD display too.
I tested the program with my own printer: all functions are working with one
or two extruder and nowadays a heat
bed (my printer is always running with the latest version).
The adaptation for your printer has to be done in the "configuration.h"
file:
#define EXTRUDERS <n> put here your extruder count 1
or 2 and select the proper thermistor type
#define TEMP_SENSOR_BED 0 is disabling the heat bed, by setting a proper
thermistor type the heat bed is enabled.
Before installation I recommend to note all optimisations, they will be
overridden by the default values in the new firmware. After first switch on
of the new firmware you can put the values in manually and store them in the
EEPROM. They will maintain unchanged in the next revisions (no further
activity necessary).
After installation I strongly recommend a tuning of the PID-Parameter
because the settings will differ for each assembly and I have no statistics
available for a good starting set.
You need to run "M303 Ex Syyy U" for each extruder, with x the tool number
and yyy the target temperature for your material. The resulting parameters
must be stored into the eeprom finally.
For the compilation of the program you need an arduino version of 1.6.5 or
higher (tested with Arduino 1.8.3).
The latest source file archive can be downloaded here:
MarlinHOH V0.7a (04.012018)
Changes to 0.7:
- Error handling for heat bed disabled when there is no T-Sensor defined
- Translation errors corrected
Changes to 0.6:
- language selection by menu: en/de/fr
- error handling reviewed
- soft ramp up for heaters implemented (especially for my heated bed)
- small bugfixes.
Actually this version is in between Alpha version: the basic functionality
is given, special features are mostly tested. Therefore I would appreciate
any feedback on bugs, problems or urgent feature requests.
For the language support I would be happy if anyone would like to have his
own language in the menu. Therefore I put in the languages folder a template
file (language_INT.h), which can be translated by a contributor in his
mother toung.
You can mail me the file to my dedicated email account.
Good luck and happy printing.
Older versions are:
MarlinHOH V0.6 (12.12.2017)
As referernce you can find my compiled version (two heads, no bed,
Thermistor type 1 for both extruders):
MarlinHOH.hex (v0.6, 2 heads) (15.12.2017)
Changes to 0.5:
- Communication protocol with external controllers like octoprint reviewed
and corrected
- EEPROM storage extended: Pressure advance parameters and language
selection will be stored
- GCODE M110 implemented
- small bugfixes.
MarlinHOH
V0.5 (21.11.2017)
As referernce you can find my compiled version (two heads, no bed,
Thermistor type 1 for both extruders):
MarlinHOH.hex (v0.5, 2 heads) (21.11.2017)
Changes to 0.4:
- data loss on usb-connection prevented (timing issue for RX data, now fully
and only interrupt driven)
- Menu selection for extrusion parameters refined (finer resolution)
- Pressure advance mechanism switched to interrupt.
- small bugfixes.
MarlinHOH_V0.4 (21.9.2017)
As referernce you can find my compiled version (two heads, no bed,
Thermistor type 1 for both extruders):
MarlinHOH.hex (v0.4, 2 heads) (21.9.2017)
Changes to V0.3:
-Procedure call from gcode files has been disabled (not working with
buffered commands as implemented)
-external communication "protocol" has been reviewed and corrected.
-Heater optimisation routine reviewed.
-All messages prepared for internationalisation
-general bug removals.
MarlinHOH_v0.3 (27.8.2017)
As reference you can get my compiled version as reference (two heads, no
bed, Thermistor type 1 for both extruders):
MarlinHOH.hex (v0.3, 2 heads) (27.8.2017)