Moin nach langer Zeit mal wieder!
Also der SparkCube läuft inzwischen recht gut und hat auch schon anständige Benchys produziert. Nun wollte ich mich an den nächsten Schritt machen und auf Multifilament umrüsten.
Ganz grundsätzlich wollte ich den Weg von dem Prusa i3 Kit gehen, Details
hier.
Als ich dann den Cube im ersten Schritt auf Bowden umgebaut hab, war ich etwas schockiert, wie schwer es ist damit vernünftige Teile zu drucken. Oozing und resume after retract sind echt die Hölle.
Also möchte ich nun wieder einen Extruder direkt am Hotend haben, davor die Bowdenweiche und an geeigneter Stelle die Feeder (Extruder) für die einzelnen Filamente.
Dabei muss ich dann natürlich die Schrittmotoren am Extruder (EXT_0) und Feeder synchron ansteuern. Da ich gerade auch keinen freien Stepper Treiber hab (3xZ-Achse), habe ich das so wie hier gelöst:
Skizze
Um nun die Eingänge des Relaisboards anzusteuern habe ich in der Firmware (Repetier) für jeden Extruder MIRROR_STEPPER 1 gesetzt.
Die Pin definition sieht dann z.B. für EXT1 so aus:
#define EXT1_STEP_PIN ORIG_E0_STEP_PIN
#define EXT1_DIR_PIN ORIG_E0_DIR_PIN
#define EXT1_ENABLE_PIN ORIG_E0_ENABLE_PIN
#define EXT1_MIRROR_STEPPER 1
#define EXT1_STEP2_PIN 66
#define EXT1_DIR2_PIN 67
#define EXT1_ENABLE2_PIN 31
Hier sind step2 und dir2 an ungenutzte pins geroutet, weil die brauche ich ja nicht und die sollen den Treiber nicht stören. Den enable greife ich ab und verbinde ihn zum Eingang des Relaisboards.
Das funktioniert soweit auch prima, nur dass ich der Firmware nicht sagen kann "Bei Wechsel auf Etruder1, enable EXT1 dauerhaft, alle anderen aus".
So wie es jetzt ist, schaltet die Firmware den Extruder immer sofort nach einer Bewegung aus und zur nächsten wieder an (#define DISABLE_E 1). Dann schaltet zwar das Relaisboard beim Wechsel auf den richtigen Motor, aber dadurch dass das Relais recht träge schaltet, verliert man ständig Schritte.
Oder man setzt #define DISABLE_E 0, dann schaltet er aber immer
alle Motoren auf enabled - mit der Folge, dass die Relais alle schalten und somit immer nur der selbe Motor läuft.
Ich bin leider kein cpp Kenner, daher stehe ich gerade wie der Hase vor der Schlange
Hat noch jemand ne rettende Idee?