When only one filament is loading, another filament is unloading at the same time. (NOT unloading, then pressing again and loading). Then when one unloads, a different one loads simultaneously. I do not think this is what is supposed to happen.
Thanks in advance.
Despite you saying that it's working, I would 100% guarantee that it isn't clocking it at 90 degrees... or the selector cam is damaged/not aligned properly or lastly, the bearing are not in place. There is no way it can drive two filaments at the same time if that weren't the case.
Make sure it's a) turning in the right direction, b) doesn't have a damaged cam, which can happen if you happen to accidently swap the motors and try to home it, c) isn't homed before the start of every print, d) don't have the proper timing in the pauses (G4) commands.
And finally,
e) Actually, now that I say that... all the above is assuming good printed parts... and that's key... the parts must all be printed on a single plate and in the same orientation to get the proper lengths... if they're not even .25mm different, then it can cause issues due to the gap between active and active filaments being as small as .5mm.
Bill
I have checked every gear, and they are perfectly aligned. I think it may be a firmware problem. Sometimes, instead of loading a color, lets say T1, it will unload T2 instead. My pinout is correct, as it easily completes this test code while going the correct directions:
#define EN 8 // stepper motor enable, low level effective #define X_DIR 5 //X axis, stepper motor direction control #define Y_DIR 6 //y axis, stepper motor direction control #define Z_DIR 7 //z axis, stepper motor direction control #define X_STP 2 //x axis, stepper motor control #define Y_STP 3 //y axis, stepper motor control #define Z_STP 4 //z axis, stepper motor control /* // Function: step -control the direction and number of steps of the stepper motor // Parameter: dir -direction control, dirPin corresponds to DIR pin, stepperPin correspomds to step pin, steps is the number of steps. // no return value */ void step(boolean dir, byte dirPin, byte stepperPin, int steps) { digitalWrite(dirPin, dir); delay(50); for (int i = 0; i < steps; i++) { digitalWrite(stepperPin, HIGH); delayMicroseconds(800); digitalWrite(stepperPin, LOW); delayMicroseconds(800); } } void setup(){// set the IO pins for the stepper motors as output pinMode(X_DIR, OUTPUT); pinMode(X_STP, OUTPUT); pinMode(Y_DIR, OUTPUT); pinMode(Y_STP, OUTPUT); pinMode(Z_DIR, OUTPUT); pinMode(Z_STP, OUTPUT); pinMode(EN, OUTPUT); digitalWrite(EN, LOW); } void loop(){ step(false, X_DIR, X_STP, 3200); // x axis motor rotates CCW for 1 circle, as in 200 steps step(false, Y_DIR, Y_STP, 3200); // y axis motor rotates CCW for 1 circle, as in 200 steps step(false, Z_DIR, Z_STP, 3200); // z axis motor rotates CCW for 1 circle, as in 200 steps delay(1000); step(true, X_DIR, X_STP, 3200); // X axis motor rotates CW for 1 circle, as in 200 steps step(true, Y_DIR, Y_STP, 3200); // y axis motor rotates CW for 1 circle, as in 200 steps step(true, Z_DIR, Z_STP, 3200); // z axis motor rotates CW for 1 circle, as in 200 steps delay(1000); }
It also says it unloads T0, which is grey, then it says Loading T1, but instead loads the exact same grey filament. Any help is appreciated.
(This is on my setup on my CNC Shield v4. Yes, I have fixed the "Quirks" that this board has)