# Mixing Nozzle / different steps per mm

does Repetier 0.92 support different -steps per mm- values for the extruder when using a mixing nozzle? (Not an option in der config tool).

I could also adjust the mixing ratio to get close, but adjusting steps would be a much "cleaner" solution.

Cheers!

## Comments

thanks a lot!

I did some testing related to mixing ratios today and as long

the steps/mm value is the same for every extruder it works pretty good:

For example

3200steps/mm forEXT0andEXT1[1- 200steps*16µStepping=3200 ]Turn per mm

10mm, ratio: 1:1 --- EXT0: 5 turns, EXT1: 5 turns -----> 10 mm, material

ratio 1:1

10mm, ratio: 2:1 --- EXT0: 6,6 turns, EXT1: 3,3 turns -----> 10 mm, material

ratio 2:1

10mm, ratio: 4:1 --- EXT0: 8 turns, EXT1: 2 turns -----> 10 mm, material

ratio 4:1

But if I change steps:

EXT0 - 3200steps/mm[1 turn per mm]andEXT1steps/mm- 6400

[2 turns per mm]the ratio of extruded material is not correct anymore (factor 2 - same as step

ratio) and also the total amount of extruded material is to high.

10mm, ratio: 1:1 --- EXT0: 7.5 turns, EXT1: 7.5 turns -----> 7.5 mm + 3,75mm

= 11,25 mm, material ratio 2:1

10mm, ratio: 2:1 --- EXT0: 8.8 turns, EXT1: 4.4 turns -----> 8.8 mm + 2.2 mm

= 11,00 mm, material

ratio 4:1

10mm, ratio: 4:1 --- EXT0: 9.6 turns, EXT1: 2.4 turns -----> 9.6 mm + 1.2 mm

= 10,80 mm, material ratio 8:1

Maybe a small change in the step calculation is

enough to fix this? :-)

void Extruder::recomputeWeights() {

float sum = 0.0;

float newWeight = 0.0;

float part_ext[NUM_EXTRUDER] = {0.0};

int stepMixingW = 0;

mixingS = 0;

Com::printFLN(PSTR("Recalculation of weights"));

for(fast8_t i = 0; i < NUM_EXTRUDER; i++) {

sum += extruder[i].stepsPerMM * extruder[i].mixingW; // steps of virtual axis with original weights

}

for(fast8_t i = 0; i < NUM_EXTRUDER; i++) {

part_ext[i] = (extruder[i].stepsPerMM * extruder[i].mixingW) / sum; // calculate new ratio for extruder

newWeight = 10000*part_ext[i]; // prepare for conversion to integer

stepMixingW = static_cast<int>(newWeight);

extruder[i].mixingW = stepMixingW;

extruder[i].mixingE = stepMixingW;

mixingS += extruder[i].mixingW;

}

}

Skript for Repetier Host:

;color 1

M163 S0 P1;

M163 S1 P5;

M165; recomputeWeights()

M164 S0 P1;

Now the ratios and the total amount of extruded material seems fine.

The only Problem is that I have to resend the script after every tool change, because a recalculation of "e-axis steps per mm" is necessary after every tool change. And to get correct e-axis steps per mm the original ratio (not the recomputed one) is needed. For a clean soultion it should be stored somewhere (maybe also in EEPROM?)

It seems to work correctly now! :-) Thank you very much for the implementation!!