Dev.2 einrichten, Verständisfragen

edited January 13 in General
Hi,

vorab: Toll das es dieses Forum gibt und viele verrückte, die sich den Kram hier so ausdenken!

wie hier beschrieben versuche ich mich bei der Konfiguration der Dev.2
Mein Drucker:
Cartesian Corexy
  • Z-Achse: 3 Motoren für motorisches Bed Leveling, Endstopp auf max
  • x-Achse, Endstopp auf max
  • y-Achse, Endstopp auf max
  • 3 Extruder mit je Jam-Überwachung, aber nur 1 Hotend quasi als Mixing, 1 Heater
  • Heated Bed
  • SparkLCD
Da habe ich ein paar viele Fragen mal vorbereitet.

1. Frage: config.h

// The follwing variables are required early to decide on the right modules.
#define NUM_TOOLS 3
#define NUM_EXTRUDER 3
#define NUM_SERVOS 0

Gebe ich hier Tools = 3 an, da 3 Extruder oder reicht nur #define NUM_TOOLS 3 oder nur #define NUM_EXTRUDER 3 oder wirklich beides?
Ein Extruder ist ja Quasi = ein Tool oder?

2. Frage config.h

define NUM_AXES 4 // X,Y,Z and E for extruder A,B,C would be 5,6,7
x,y,z-Achse soweit klar, macht 3 + 1 = 4 da immer nur 1 Extruder arbeitet oder 3 (für die Achsen + 3(für die Extruder) = 6 wegen mixing Extruder?

3. Frage config.h

#define STEPPER_FREQUENCY 100000     // Maximum stepper frequency.
#define PREPARE_FREQUENCY 1000       // Update frequency for new blocks. Must be higher then PREPARE_FREQUENCY.
#define BLOCK_FREQUENCY 500

OK für Radds mit Due -> fehlt mir eine Tabelle bzw. Referenz zur Abschätzung was geht und was nicht.

4. Frage config.h

// Define ZProbe by referencing a endstop defined
CONFIG_VARIABLE_EQ(EndstopDriver, *ZProbe, &endstopZMin)

Mein ZProbe hängt an D59-Pin
Muss ich jetzt dazu in der config_io einen IO definieren: "
IO_INPUT(ZProbe, 59)?

oder wäre dann so richtig:
CONFIG_VARIABLE_EQ(EndstopDriver, *ZProbe, &59)

5. Frage config.h

// Define a common humidity sensor for M105 reporting if we have one
CONFIG_VARIABLE_EQ(Sensor, *HumiditySensor, HUMIDITY_SENSOR_ADDRESS)

--> hab ich nicht.
hab ich nicht -  einfach auskommentieren?
//CONFIG_VARIABLE_EQ(Sensor, *HumiditySensor, HUMIDITY_SENSOR_ADDRESS)

kann ich generell Zeilen einfach auskommentieren/löschen wenn ich sie nicht brauche?


6. Frage config.h


#define SERVO_LIST \
    { &Servo1 }

hab ich nicht -  einfach auskommentieren?
//#define SERVO_LIST \
//    { &Servo1 }

7. Frage config.h


#define TOOLS \
    { &ToolExtruder1, &ToolExtruder2,&ToolExtruder3 }
da 3 Extruder - so korrekt?

8. Frage config.h


#define NUM_MOTORS 6
#define MOTORS \
    { &XMotor, &YMotor, &ZMotor }
#define MOTOR_NAMES \
    { PSTR("X"), PSTR("Y"), PSTR("Z") }

--> Motoren sind ja 1x"X"; 1x "Y", 3x"Z" 1x Extr. 1, 1x Extr.2, 1x Extr.3

Z-Achse dennoch einzeln zählen, da ja eigentlich 2 Motoren "gemirrored" werden..? --> Also 6?
Habe bisher in keiner Beispielconfig gesehen, dass jemand wie in der Doku beschrieben irgendwo  das Schema hier verwendet hat:

STEPPER_MIRROR3(name, motor1, motor2, motor3, minEndstop, maxEndstop)
wäre das in der Config_io einzubauen oder in der config.h?


9. Frage config.h

// ################## EDIT THESE SETTINGS MANUALLY ################
// ################ END MANUAL SETTINGS ##########################

#undef Y_MIN_PIN
#define Y_MIN_PIN -1
#undef X_MAX_PIN
#define X_MAX_PIN 1
#undef Y_MAX_PIN
#define Y_MAX_PIN ORIG_Y_MIN_PIN
#undef Z_MAX_PIN
#define Z_MAX_PIN -1

Meine Endstopps hängen alle jeweils an den Max.Pins, Home auch auf Max-Richtung.
demnach:

#undef X_MIN_PIN
#define X_MAX_PIN 1

#undef Y_MIN_PIN
#define Y_MAX_PIN 1

#undef Z_MIN_PIN
#define Z_MAX_PIN 1

Korrekt?

####################################

10. Frage config_io

// Define your endstops solutions
// You need to define all min and max endstops for all
// axes except E even if you have none!

ENDSTOP_SWITCH_HW(endstopXMax, IOEndstopXMax, X_AXIS, true)
ENDSTOP_SWITCH_HW(endstopYMax, IOEndstopYMax, Y_AXIS, true)
ENDSTOP_SWITCH_HW(endstopZMax, IOEndstopZMax, Z_AXIS, true)
ENDSTOP_NONE(endstopXMin)
ENDSTOP_NONE(endstopYMin)
ENDSTOP_NONE(endstopZMin)

--> alle Min und Max endstopps damit ausreichend definiert?

11. Frage config_io

Motorendefinition der Pins + weitere Verwendung habe ich wie folgt zusammenkopiert, abgeschrieben und angepasst - alles mit halbwissen:

// X Motor

IO_OUTPUT(IOX1Step, ORIG_X_STEP_PIN)
IO_OUTPUT_INVERTED(IOX1Dir, ORIG_X_DIR_PIN)
IO_OUTPUT(IOX1Enable, ORIG_X_ENABLE_PIN)

// Y Motor

IO_OUTPUT(IOY1Step, ORIG_Y_STEP_PIN)
IO_OUTPUT(IOY1Dir, ORIG_Y_DIR_PIN)
IO_OUTPUT(IOY1Enable, ORIG_Y_ENABLE_PIN)

// Z Motor

IO_OUTPUT(IOZ1Step, ORIG_E3_STEP_PIN)
IO_OUTPUT_INVERTED(IOZ1Dir, ORIG_E3_DIR_PIN)
IO_OUTPUT(IOZ1Enable, ORIG_E3_ENABLE_PIN)

// E1 Motor

IO_OUTPUT(IOE1Step, ORIG_E0_STEP_PIN)
IO_OUTPUT(IOE1Dir, ORIG_E0_DIR_PIN)
IO_OUTPUT_INVERTED(IOE1Enable, ORIG_E0_ENABLE_PIN)

// E2 Motor

IO_OUTPUT(IOE2Step, ORIG_E1_STEP_PIN)
IO_OUTPUT(IOE2Dir, ORIG_E1_DIR_PIN)
IO_OUTPUT_INVERTED(IOE2Enable, ORIG_E1_ENABLE_PIN)

// E3 Motor

IO_OUTPUT(IOE3Step, ORIG_E2_STEP_PIN)
IO_OUTPUT(IOE3Dir, ORIG_E2_DIR_PIN)
IO_OUTPUT_INVERTED(IOE3Enable, ORIG_E2_ENABLE_PIN)

// Autolevel Motor 1

IO_OUTPUT(IOAL1Step, 29)
IO_OUTPUT_INVERTED(IOAL1Dir, 27)
IO_OUTPUT(IOAL1Enable, 31)

// Autolevel Motor 2

IO_OUTPUT(IOAL2Step, 67)
IO_OUTPUT_INVERTED(IOAL2Dir, 66)
IO_OUTPUT(IOAL2Enable, 68)

##################

so weiter verwendet - besonders Z-Achse bitte mal quer checken:
// Define all stepper motors used

//X-Motor
STEPPER_SIMPLE(XMotor, IOX1Step, IOX1Dir, IOX1Enable, endstopNone, endstopNone)
//Y-Motor
STEPPER_SIMPLE(YMotor, IOY1Step, IOY1Dir, IOY1Enable, endstopNone, endstopNone)

//Z-Motoren und Autolevel
STEPPER_SIMPLE(ZMotor, IOZ1Step, IOZ1Dir, IOZ1Enable, endstopNone, endstopNone)
STEPPER_SIMPLE(AL1Motor, IOAL1Step, IOAL1Dir, IOAL1Enable, endstopNone, endstopNone)
STEPPER_SIMPLE(AL2Motor, IOAL2Step, IOAL2Dir, IOAL2Enable, endstopNone, endstopNone)

STEPPER_MIRROR3(ZMotor, ZMotor, AL1Motor, AL2Motor, endstopNone, endstopNone)

// Extruder-Motoren
STEPPER_SIMPLE(E1MotorBase, IOE1Step, IOE1Dir, IOE1Enable, endstopNone, endstopNone)
STEPPER_SIMPLE(E2MotorBase, IOE2Step, IOE2Dir, IOE2Enable, endstopNone, endstopNone)
STEPPER_SIMPLE(E3MotorBase, IOE2Step, IOE2Dir, IOE2Enable, endstopNone, endstopNone)

//Extruder-Fake-Motoren für Jam-Controlle
STEPPER_OBSERVEABLE(E1Motor, E1MotorBase)
STEPPER_OBSERVEABLE(E2Motor, E2MotorBase)
STEPPER_OBSERVEABLE(E2Motor, E3MotorBase)
############

dann hier teilweise weiter verwurstet:

// Define tools. They get inserted into a tool array in configuration.h
// Typical tools are:
// TOOL_EXTRUDER(name, offx, offy, offz, heater, stepper, resolution, yank, maxSpeed, acceleration, advance, startScript, endScript, Fan bzw. nullptr wenn keiner da ist)

TOOL_EXTRUDER(ToolExtruder1, 0, 0, 0, HeaterExtruder1, E1MotorBase, 1.75, 1470.65, 40, 50, 4500, 40, "G92 E0 \n G1 E5 F250", "M602 P0 \n G92 E0 \n G1 E-5 F1800",nullptr)

TOOL_EXTRUDER(ToolExtruder2, 0, 0, 0, HeaterExtruder1, E2MotorBase, 1.75, 1470.65, 40, 50, 4500, 40, "G92 E0 \n G1 E5 F250", "M602 P0 \n G92 E0 \n G1 E-5 F1800",nullptr)

TOOL_EXTRUDER(ToolExtruder3, 0, 0, 0, HeaterExtruder1, E3MotorBase, 1.75, 1470.65, 40, 50, 4500, 40, "G92 E0 \n G1 E5 F250", "M602 P0 \n G92 E0 \n G1 E-5 F1800",nullptr)

// Use a signal that changes while extruder moves
JAM_DETECTOR_HW(JamExtruder1, E1Motor, IOJam1, ToolExtruder1, 220, 10, 500)
JAM_DETECTOR_HW(JamExtruder2, E2Motor, IOJam2, ToolExtruder2, 220, 10, 500)
JAM_DETECTOR_HW(JamExtruder3, E2Motor, IOJam3, ToolExtruder3, 220, 10, 500)

konkret nicht klar:

advance The variable name of the tool. --> ?? wofür und woher

yank 200% of the possible start speed. --> also start-Speed x2 ( in dev.1.05 hab ich 20 stehen, daher jetzt 40?)

Frage 12
Mein Ziel im 1. Schritt: Drucker soll erstmal laufen, im 2. Schritt würde ich dann auf Trinamic2130 umkompilieren - laufen im Moment noch im Standard mode. Kollidiert das ggf. mit den Con.h Settings?


#define TMC_CHOPPER_TIMING CHOPPER_TIMING_DEFAULT_24V
// true = interpolate to 256 microsteps for smoother motion
#define TMC_INTERPOLATE true
// Current used when motor stands still
#define TMC_HOLD_MULTIPLIER 0.5
// Reduce current on over temperature warnings by x milli ampere, 0 = disable
#define TMC_CURRENT_STEP_DOWN 50
// Define which data should be stored to eeprom

Soweit ersteinmal.
Thema Temperaturen und PWM dann wohl morgen..












Comments

  • vielleicht ilft das schon mal weiter:


  • 1. In v1 was es NUM_EXTRUDER jetzt ist es universeller daher NUM_TOOLS

    2. Frage config.h

    define NUM_AXES 4 // X,Y,Z and E for extruder A,B,C would be 5,6,7
    x,y,z-Achse soweit klar, macht 3 + 1 = 4 da immer nur 1 Extruder arbeitet oder 3 (für die Achsen + 3(für die Extruder) = 6 wegen mixing Extruder?

    4 achsen, E ist austauschbar. Problem ist aber das in V2 mixing extruder noch nicht programmiert sind. Hab selber keinen und brauche einen der etwas firm ist und es testen würde wenn ich es portiere. Als mixing extruder wäre es auch nur 1 tool mit 3 Motoren in diesem Fall. Wird anders arbeiten als in V1.

    3. Frage config.h


    Bei kartesischen Druckern sollte noch eine verdopplung möglich sein.

    4. Frage config.h

    // Define ZProbe by referencing a endstop defined
    CONFIG_VARIABLE_EQ(EndstopDriver, *ZProbe, &endstopZMin)

    Mein ZProbe hängt an D59-Pin
    Muss ich jetzt dazu in der config_io einen IO definieren: "
    IO_INPUT(ZProbe, 59)?

    oder wäre dann so richtig:
    CONFIG_VARIABLE_EQ(EndstopDriver, *ZProbe, &59)

    https://docfirmwarev2.repetier.com/config/bed_calibration
    // Define ZProbe by referencing a endstop defined CONFIG_VARIABLE_EQ(EndstopDriver, *ZProbe, ZPROBE_ADDRESS)

    Ist eigentlich in dem Fall immer richtig, wobei ZProbe in Configuratio_io.h definiert wird

    #undef ZPROBE_ADDRESS #define ZPROBE_ADDRESS &IOEndstopZMin

    IOEndstopZMin ist der endstop der für die zprobe definiert wurde.

    5. Frage config.h

    // Define a common humidity sensor for M105 reporting if we have one
    CONFIG_VARIABLE_EQ(Sensor, *HumiditySensor, HUMIDITY_SENSOR_ADDRESS)

    --> hab ich nicht.
    hab ich nicht -  einfach auskommentieren?
    //CONFIG_VARIABLE_EQ(Sensor, *HumiditySensor, HUMIDITY_SENSOR_ADDRESS)

    kann ich generell Zeilen einfach auskommentieren/löschen wenn ich sie nicht brauche?

    Ja.Feuchtigekietssensor haben wir gar nicht wo kommt das her?

    6. Frage config.h


    #define SERVO_LIST \
        { &Servo1 }

    hab ich nicht -  einfach auskommentieren?
    //#define SERVO_LIST \
    //    { &Servo1 }

    Nein aber Zähler auf 0 und &Servo1 aus der Liste nehmen weil kein Servo da ist.

    7. Frage config.h


    #define TOOLS \
        { &ToolExtruder1, &ToolExtruder2,&ToolExtruder3 }
    da 3 Extruder - so korrekt?

    Alle die definiert sind also NUM_TOOLS - bei echtem mixing extruder einer wenn die separat als einzelextruder (nicht mixend) gesteuert werden 3 stück.

    8. Frage config.h


    #define NUM_MOTORS 6
    #define MOTORS \
        { &XMotor, &YMotor, &ZMotor }
    #define MOTOR_NAMES \
        { PSTR("X"), PSTR("Y"), PSTR("Z") }

    --> Motoren sind ja 1x"X"; 1x "Y", 3x"Z" 1x Extr. 1, 1x Extr.2, 1x Extr.3

    Z-Achse dennoch einzeln zählen, da ja eigentlich 2 Motoren "gemirrored" werden..? --> Also 6?
    Habe bisher in keiner Beispielconfig gesehen, dass jemand wie in der Doku beschrieben irgendwo  das Schema hier verwendet hat:

    https://docfirmwarev2.repetier.com/config/motors#stepper_mirror3

    D.h. du definniertst MotorZ1 - MotorZ2 und machst daraus ein MotorZ über die mirror Funktion. Dann fürs calibrieren mit z sensor
    https://docfirmwarev2.repetier.com/config/bed_calibration#mm_hw3

    da gibst du ja 2 der 3 Motoren an also Z2Motor und Z3Motor zusammen mit den Spindelkoordinaten. Der Motor wird dann zum verstellen intern kurz E zugeordnet, angepasst und danach ist Z wieder alle 3 gleichzeitig.
  • Hi,

    vielen Dank schon einmal für die Antworten.
    Frage 1-3 soweit klar.

    4. Frage

    habe ich jetzt so umgesetz:
    in config.h

    // Define ZProbe by referencing a endstop defined
    CONFIG_VARIABLE_EQ(EndstopDriver, *ZProbe, &endstopZProbe)

    in config_io

    // Define your endstops solutions
    // You need to define all min and max endstops for all
    // axes except E even if you have none!

    ENDSTOP_SWITCH_HW(endstopXMax, IOEndstopXMax, X_AXIS, true)
    ENDSTOP_SWITCH_HW(endstopYMax, IOEndstopYMax, Y_AXIS, true)
    ENDSTOP_SWITCH_HW(endstopZMax, IOEndstopZMax, Z_AXIS, true)
    ENDSTOP_NONE(endstopXMin)
    ENDSTOP_NONE(endstopYMin)
    ENDSTOP_NONE(endstopZMin)

    ENDSTOP_SWITCH_HW(endstopZProbe, IOEndstopZProbe, ZPROBE_AXIS, false)

    #undef ZPROBE_ADDRESS
    #define ZPROBE_ADDRESS &endstopZProbe

    kann das so gehen?


    5. Frage config.h


    Ja.Feuchtigekietssensor haben wir gar nicht wo kommt das her?

    --> eigentlich aus einer SampleConfig von hier:

    habs aber eben nicht mehr entdeckt..ausgedacht hab ich mir das nicht..

    6. Frage config.h

    OK.
    Was mir dabei auffiel:


    Zeile1 #define NUM_FANS 1
    Zeile2 #define FAN_LIST \
    Zeile3     { &Fan1PWM }

    Zeile4 #define NUM_HEATED_BEDS 1
    Zeile5 #define HEATED_BED_LIST \
    Zeile6     { &HeatedBed1 }

    Zeile7 #define NUM_HEATED_CHAMBERS 0
    Zeile8 #define HEATED_CHAMBER_LIST \
    Zeile9     { }

    Zeile10 #define SERVO_LIST \
    Zeile11     { }

    Zeile12 #define TOOLS \
    Zeile13     { &ToolExtruder1, &ToolExtruder2,&ToolExtruder3 }

    Zeile1,4,7 --> hier steht direkt eine 1 oder 0
    entgegen in Zeile 10 nix nur "\"

    das "#define NUM_SERVOS 0  " steht "ganz oben" in der konf

    aber jetzt ok.

    8. Frage config.h

    so gelöst in config.h
    // Array to call motor related commands like microstepping/current if supported.
    // Id's start at 0 and depend on position in this array.
    #define NUM_MOTORS 6
    #define MOTORS \
        { &XMotor, &YMotor, &ZMotor,&E1MotorBase ,&E2MotorBase , &E3MotorBase }
    #define MOTOR_NAMES \
        { PSTR("X"), PSTR("Y"), PSTR("Z"), PSTR("E0"),PSTR("E1"),PSTR("E2") }

    in config_io


    // Define all stepper motors used

    //X-Motor
    STEPPER_SIMPLE(XMotor, IOX1Step, IOX1Dir, IOX1Enable, endstopNone, endstopNone)
    //Y-Motor
    STEPPER_SIMPLE(YMotor, IOY1Step, IOY1Dir, IOY1Enable, endstopNone, endstopNone)

    //Z-Motoren und Autolevel
    STEPPER_SIMPLE(ZMotorMH, IOZMHStep, IOZMHDir, IOZMHEnable, endstopNone, endstopNone)
    STEPPER_SIMPLE(ZMotorLH, IOZLHStep, IOZLHDir, IOZLHEnable, endstopNone, endstopNone)
    STEPPER_SIMPLE(ZMotorRH, IOZRHStep, IOZRHDir, IOZRHEnable, endstopNone, endstopNone)

    STEPPER_MIRROR3(ZMotor, ZMotorMH, ZMotorLH, ZMotorRH, endstopNone, endstopNone)

    // Extruder-Motoren
    STEPPER_SIMPLE(E1MotorBase, IOE1Step, IOE1Dir, IOE1Enable, endstopNone, endstopNone)
    STEPPER_SIMPLE(E2MotorBase, IOE2Step, IOE2Dir, IOE2Enable, endstopNone, endstopNone)
    STEPPER_SIMPLE(E3MotorBase, IOE3Step, IOE3Dir, IOE3Enable, endstopNone, endstopNone)

    //Extruder-Fake-Motoren für Jam-Controlle
    STEPPER_OBSERVEABLE(E1Motor, E1MotorBase)
    STEPPER_OBSERVEABLE(E2Motor, E2MotorBase)
    STEPPER_OBSERVEABLE(E3Motor, E3MotorBase)

    Korrekt?


    Ansonsten hab ich jetzt überspielt.
    Repetier-Server vernindet sich nicht mit dem Drucker-  dieser wird durch diesen regelmäßig resettet.
    Was kann das sein. Eprom hatte ich schon einmal auf 0. Keine Besserung.


  • 4. Ja sollte so gehen. Es gibt allerdings offenbar aktuell ein problem mit ENDSTOP_SWITCH_HW das ich grad am lösen bin, also auf nächsten commit aufpassen und einbauen!
    5. ok. Möglicherweise als beispiel aber nciht funktionsfähig.
    6. Kann passieren. Config.h hat 2 Teile - bevor und nach include config_io - manche parameter müssen davor stehen um gewisse sachen zu aktivieren, z.b. servos, anzahl tools. Andere die variablen aus config_io nutzen wie zprobe müssen darunter stehen. Bei vielen ist es egal. Aber am besten an die Positionen im demo halten.
    6. Sieht gut aus. \ sagt dem compiler in der nächsten Zeile geht es weiter. Ob du das also so lässt oder ohne \ in eine Zeile packst ist egal.

    Dein resetten kommt vom watchdog denke ich. Wenn er nicht resettet wird gibt es ein reset, siehst du auch in der Konsole als Begründung für neustart. eeprom ist hier der klassische Grund. Stell auch sicher das die sd karte nicht eingelegt ist.

    Frage ist letztlich wo blockiert er. In void Printer::setup() { in printer.cpp kannst du nach
    Com::printFLN(Com::tStart);

    Testausgaben wie
    Com::printFLN("Pos 1");
    einbauen. Und dann an der Konsole sehen wie weit du kommst. Wenn du die Funktion kennst kannst du darin weiter suchen um eine idee zu bekommen welcher Teil es verursacht. Es kann auch ein pin oder funktion sein die null sind, daher prüf am besten zuerst ob es watchdog oder was anderes ist. Wenn es nicht der watchdog ist musst du nämlich ggf
    HAL::delayMilliseconds(10);
    hinter der print schrieben damit es gesendet wird befor der fehler einen Reset aulöst. Was hilft es wenn er keine Zeit mehr hatte die Meldung zu senden, dann wirst du in die Irre geführt.
Sign In or Register to comment.