Mixing Nozzle / different steps per mm
Hello,
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!
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 3200 steps/mm for EXT0 and EXT1 [ 1
Turn per mm - 200steps*16µStepping=3200 ]
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 - 3200 steps/mm [1 turn per mm] and EXT1
- 6400 steps/mm [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!!