Diamond Head / Cyclops Hotend - Mixing Head Extruder > 1 Not Working

I have a mini Kossel,  I am trying to get more than 1 color working and having problems.
Searching around, a lot of tips and tricks but nothing seems to work.
I did not want to hijack someone else's post.

I have RAMPS 1.4, Arduino Mega, forget the diamond head for now, I am trying to get the Cyclops head to work - 2 colors.
Using the web configurator.   I believe this is 0.92 of Repetier firmware, how do I find out for sure?  

The problem is that both extruder motors turn at the same time.   

I've set heater pin -1 as mentioned in another post, this seems to have helped by making the motors do the same thing all the time.

In Marlin, I was able to set the extruder motor to use in Slic3r, but was never able to use both without the Z axis going wonky and plastic being extruded in air.

To me, it acts like it is in duplicate mode, or mirror mode but have never been able to let it run long enough because it is a mixing head and plastic goes everywhere. 

Here is the relevant section of the configuration.h file...  

#define MIXING_EXTRUDER 1

#define DRIVE_SYSTEM 3
#define XAXIS_STEPS_PER_MM 100
#define YAXIS_STEPS_PER_MM 100
#define ZAXIS_STEPS_PER_MM 100
#define EXTRUDER_FAN_COOL_TEMP 50
#define PDM_FOR_EXTRUDER 0
#define PDM_FOR_COOLER 0
#define DECOUPLING_TEST_MAX_HOLD_VARIANCE 20
#define DECOUPLING_TEST_MIN_TEMP_RISE 1
#define KILL_IF_SENSOR_DEFECT 1
#define RETRACT_ON_PAUSE 2
#define PAUSE_START_COMMANDS ""
#define PAUSE_END_COMMANDS ""
#define SHARED_EXTRUDER_HEATER 1
#define EXT0_X_OFFSET 0
#define EXT0_Y_OFFSET 0
#define EXT0_Z_OFFSET 0
#define EXT0_STEPS_PER_MM 370
#define EXT0_TEMPSENSOR_TYPE 1
#define EXT0_TEMPSENSOR_PIN TEMP_0_PIN
#define EXT0_HEATER_PIN HEATER_0_PIN
#define EXT0_STEP_PIN ORIG_E0_STEP_PIN
#define EXT0_DIR_PIN ORIG_E0_DIR_PIN
#define EXT0_INVERSE 1
#define EXT0_ENABLE_PIN ORIG_E0_ENABLE_PIN
#define EXT0_ENABLE_ON 0
#define EXT0_MIRROR_STEPPER 0
#define EXT0_STEP2_PIN ORIG_E0_STEP_PIN
#define EXT0_DIR2_PIN ORIG_E0_DIR_PIN
#define EXT0_INVERSE2 0
#define EXT0_ENABLE2_PIN ORIG_E0_ENABLE_PIN
#define EXT0_MAX_FEEDRATE 50
#define EXT0_MAX_START_FEEDRATE 20
#define EXT0_MAX_ACCELERATION 5000
#define EXT0_HEAT_MANAGER 3
#define EXT0_WATCHPERIOD 1
#define EXT0_PID_INTEGRAL_DRIVE_MAX 230
#define EXT0_PID_INTEGRAL_DRIVE_MIN 40
#define EXT0_PID_PGAIN_OR_DEAD_TIME 7
#define EXT0_PID_I 2
#define EXT0_PID_D 40
#define EXT0_PID_MAX 255
#define EXT0_ADVANCE_K 0
#define EXT0_ADVANCE_L 0
#define EXT0_ADVANCE_BACKLASH_STEPS 0
#define EXT0_WAIT_RETRACT_TEMP 150
#define EXT0_WAIT_RETRACT_UNITS 0
#define EXT0_SELECT_COMMANDS ""
#define EXT0_DESELECT_COMMANDS ""
#define EXT0_EXTRUDER_COOLER_PIN -1
#define EXT0_EXTRUDER_COOLER_SPEED 255
#define EXT0_DECOUPLE_TEST_PERIOD 12000
#define EXT0_JAM_PIN -1
#define EXT0_JAM_PULLUP 0
#define EXT1_X_OFFSET 0
#define EXT1_Y_OFFSET 0
#define EXT1_Z_OFFSET 0
#define EXT1_STEPS_PER_MM 370
#define EXT1_TEMPSENSOR_TYPE 1
#define EXT1_TEMPSENSOR_PIN TEMP_2_PIN
//#define EXT1_HEATER_PIN HEATER_2_PIN
#define EXT1_HEATER_PIN -1
#define EXT1_STEP_PIN ORIG_E1_STEP_PIN
#define EXT1_DIR_PIN ORIG_E1_DIR_PIN
#define EXT1_INVERSE 1
#define EXT1_ENABLE_PIN ORIG_E1_ENABLE_PIN
#define EXT1_ENABLE_ON 0
#define EXT1_MIRROR_STEPPER 0
#define EXT1_STEP2_PIN ORIG_E1_STEP_PIN
#define EXT1_DIR2_PIN ORIG_E1_DIR_PIN
#define EXT1_INVERSE2 0
#define EXT1_ENABLE2_PIN ORIG_E1_ENABLE_PIN
#define EXT1_MAX_FEEDRATE 50
#define EXT1_MAX_START_FEEDRATE 20
#define EXT1_MAX_ACCELERATION 5000
#define EXT1_HEAT_MANAGER 3
#define EXT1_WATCHPERIOD 1
#define EXT1_PID_INTEGRAL_DRIVE_MAX 230
#define EXT1_PID_INTEGRAL_DRIVE_MIN 40
#define EXT1_PID_PGAIN_OR_DEAD_TIME 7
#define EXT1_PID_I 2
#define EXT1_PID_D 40
#define EXT1_PID_MAX 255
#define EXT1_ADVANCE_K 0
#define EXT1_ADVANCE_L 0
#define EXT1_ADVANCE_BACKLASH_STEPS 0
#define EXT1_WAIT_RETRACT_TEMP 150
#define EXT1_WAIT_RETRACT_UNITS 0
#define EXT1_SELECT_COMMANDS ""
#define EXT1_DESELECT_COMMANDS ""
#define EXT1_EXTRUDER_COOLER_PIN -1
#define EXT1_EXTRUDER_COOLER_SPEED 255
#define EXT1_DECOUPLE_TEST_PERIOD 12000
#define EXT1_JAM_PIN -1
#define EXT1_JAM_PULLUP 0

#define FEATURE_RETRACTION 1
#define AUTORETRACT_ENABLED 0
#define RETRACTION_LENGTH 3
#define RETRACTION_LONG_LENGTH 13
#define RETRACTION_SPEED 40
#define RETRACTION_Z_LIFT 0
#define RETRACTION_UNDO_EXTRA_LENGTH 0
#define RETRACTION_UNDO_EXTRA_LONG_LENGTH 0
#define RETRACTION_UNDO_SPEED 20
#define FILAMENTCHANGE_X_POS 0
#define FILAMENTCHANGE_Y_POS 0
#define FILAMENTCHANGE_Z_ADD  2
#define FILAMENTCHANGE_REHOME 2
#define FILAMENTCHANGE_SHORTRETRACT 5
#define FILAMENTCHANGE_LONGRETRACT 50
#define JAM_STEPS 220
#define JAM_SLOWDOWN_STEPS 320
#define JAM_SLOWDOWN_TO 70
#define JAM_ERROR_STEPS 500
#define JAM_MIN_STEPS 10
#define JAM_ACTION 0

#define RETRACT_DURING_HEATUP true
#define PID_CONTROL_RANGE 8
#define SKIP_M109_IF_WITHIN 2
#define SCALE_PID_TO_MAX 1
#define TEMP_HYSTERESIS 0
#define EXTRUDE_MAXLENGTH 160
#define NUM_TEMPS_USERTHERMISTOR0 0
#define USER_THERMISTORTABLE0 {}
#define NUM_TEMPS_USERTHERMISTOR1 0
#define USER_THERMISTORTABLE1 {}
#define NUM_TEMPS_USERTHERMISTOR2 0
#define USER_THERMISTORTABLE2 {}
#define GENERIC_THERM_VREF 5
#define GENERIC_THERM_NUM_ENTRIES 33
#define HEATER_PWM_SPEED 0


Comments

  • Well, I found the version in the config file -

       This file is optimized for version 0.92


  • I have EEPROM disabled.

    #define EEPROM_MODE 0


  • I find a comment to another post, but do not understand the table or the concept of a virtual extruder, is this my problem?
    And I need EEPROM enabled?


    Text from other reply -
    Mixing extruder has been sucessfully used. Did you read


    your description sound slike you did not setup the mixing ratios in eeprom. Especially when upgrading with such new features you often end up with garbage and the default if it works is to have all extrude the same. Check what happens if one has 100% and other 0. If it still extudes 3x then you need to set it to 1/3. But I guess your ratios are set 0/0/0 so all do the same which does not happen with correct ratios.

  • OK this post seems to help me understand -

    Where is the EEPROM editor?

  • I don't get what this code is doing..

    M163 S0 P100
    M163 S1 P0
    M163 S2 P0
    M164 S0
    M163 S0 P0
    M163 S1 P100
    M163 S2 P0
    M164 S1
    M163 S0 P0
    M163 S1 P0
    M163 S2 P100
    M164 S2

    It looks like it sets each extruder with the same priority, then stores it?

    How do I use just Extruder0, or just Extruder1, or just Extruder2?

    I don't get the table.

    sorry for all the replies, trying to get to the bottom of this.

  • You need eeprom to store mixing ratios permanently.

    Read this to get started

  • Should the configuration.h file on that wiki page  compile as-is?  It does not.

    I upload it to the configurator linked in the article (092), make my edits (I have a Delta printer) and get different errors when compiling.


    As-Is generates this error:


    sketch\Extruder.cpp: In static member function 'static void Extruder::selectExtruderById(uint8_t)':

    Extruder.cpp:708: error: 'EXTRUDER_SWITCH_XY_SPEED' was not declared in this scope

             Printer::moveToReal(cx, cy, cz, IGNORE_COORDINATE, EXTRUDER_SWITCH_XY_SPEED);

                                                                ^

    exit status 1
    'EXTRUDER_SWITCH_XY_SPEED' was not declared in this scope





    With my modified configuration.h (uploading what is on the Wiki and changing printer type to Delta and some other settings), errors (too many to list), the configurator also shows 4 extruders when loading the file from the wiki



    In file included from sketch\HAL.h:83:0,

                     from sketch\Repetier.h:539,

                     from sketch\Extruder.cpp:22:

    sketch\Extruder.cpp: In static member function 'static void Extruder::initExtruder()':

    fastio.h:36: error: 'DIOORIG_E3_DIR_PIN_DDR' was not declared in this scope

     #define  _SET_OUTPUT(IO)  do {DIO ##  IO ## _DDR |=  MASK(DIO ## IO ## _PIN); } while (0)

                                   ^

    sketch\fastio.h:56:26: note: in expansion of macro '_SET_OUTPUT'

     #define  SET_OUTPUT(IO)  _SET_OUTPUT(IO)

                              ^

    sketch\Extruder.cpp:533:5: note: in expansion of macro 'SET_OUTPUT'

         SET_OUTPUT(EXT3_DIR_PIN);

         ^

    In file included from sketch\HAL.h:83:0,

                     from sketch\Repetier.h:539,

                     from sketch\Extruder.cpp:22:

    fastio.h:36: error: 'DIOORIG_E3_DIR_PIN_PIN' was not declared in this scope

    etc...
  • No that file is expired. You need to upload it to config tool and download again with all added parameter. Tool will add missing parts automatically.
  • Got it.

Sign In or Register to comment.