Mixing Extruder with 3 seperate heaters

Hi,

I want to use the mixing extruder feature but also heat up all three heaters. I have a special designed nozzle that is not a diamond hotend.

How can I do that? Everytime I select the feature in the configuration tool I can only heat up 1 heater. I tried to change the firmware manually and I can see all 3 temperatures now but when I start to heat only the first heater starts heating like before.

Comments

  • YOu need to find the places in extruder.cpp where temperatures get set and controlled and remove the mixing extruder condition there. Especially setTemperature, manageTemperatures and report tempertures should be checked here. I think these are the 3 places you need to test.
  • edited June 3
    I changed nearly all the conditions for mixing extruder but it still does not work. But I dont know how to change this part:
    #if NUM_EXTRUDER > 2
        ,{
            2,EXT2_X_OFFSET,EXT2_Y_OFFSET,EXT2_Z_OFFSET,EXT2_STEPS_PER_MM,EXT2_ENABLE_PIN,EXT2_ENABLE_ON,
            EXT2_MAX_FEEDRATE,EXT2_MAX_ACCELERATION,EXT2_MAX_START_FEEDRATE,0,EXT2_WATCHPERIOD
            ,EXT2_WAIT_RETRACT_TEMP,EXT2_WAIT_RETRACT_UNITS
    #if USE_ADVANCE
    #if ENABLE_QUADRATIC_ADVANCE
            ,EXT2_ADVANCE_K
    #endif
            ,EXT2_ADVANCE_L,EXT2_ADVANCE_BACKLASH_STEPS
    #endif
    #if MIXING_EXTRUDER > 0
            ,10,10,{10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10}
    #endif
            ,{
                2,EXT2_TEMPSENSOR_TYPE,EXT2_SENSOR_INDEX,EXT2_HEAT_MANAGER,0,0,0,0
    #if TEMP_PID
                ,0,EXT2_PID_INTEGRAL_DRIVE_MAX,EXT2_PID_INTEGRAL_DRIVE_MIN,EXT2_PID_PGAIN_OR_DEAD_TIME,EXT2_PID_I,EXT2_PID_D,EXT2_PID_MAX,0,0,0,{0,0,0,0}
    #endif
                ,0,0,0,EXT2_DECOUPLE_TEST_PERIOD
            }
            ,ext2_select_cmd,ext2_deselect_cmd,EXT2_EXTRUDER_COOLER_SPEED,0,0,0
    #if EXTRUDER_JAM_CONTROL
            ,0,0,10,0,0
    #endif
        }
    #endif
    everytime I change this part I get a compilation error saying: braces around scalar initializer for type 'int'
    How do I need to change this code? I think this is the important part to change?

  • There is absolutely no reason to change that part. All relevant parameters can get set in configuration.h. Changing this part is so critical that no one should try it. It all depends on order of variables in base classes and one comma wrong and nothing works.Look only for code like this:

    #if MIXING_EXTRUDER
            if(controller > 0 && controller < NUM_EXTRUDER) continue; // Mixing extruder only test for ext 0
    #endif // MIXING_EXTRUDER

    where you see that when MIXING_EXTRUDER is defined code parts get omitted for extruder > 0 which is just what you do not want in your case.
Sign In or Register to comment.