Dev.2 einrichten, Verständisfragen

edited January 2021 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.
  • Jo,

    hab das hier in printer.cpp eingebaut (ohne zu verstehen, was das bedeutet):
        // HAL::serialSetBaudrate(115200);
        // Start serial
        HAL::hwSetup();

        EEPROM::initBaudrate();
        HAL::serialSetBaudrate(baudrate);
        Com::printFLN(Com::tStart);
        Com::printFLN("Pos 1");

        HAL::showStartReason();
    #if defined(ENABLE_POWER_ON_STARTUP) && ENABLE_POWER_ON_STARTUP && (PS_ON_PIN > -1)

    Konsole zeigt an:


    Send:18:25:52.920: N0 M110 N0
    Send:18:25:52.920: N1 M999 ; In case we did not reset recover from fatal state
    Send:18:25:52.920: N0 M110 N0
    Send:18:25:52.920: N2 M115 ; Check firmware and capabilities
    Send:18:25:52.920: N3 M220 S100 ; set speed multiplier
    Send:18:25:52.921: N4 M221 S100 ; set flow multiplier
    Send:18:25:52.921: N5 M355 ; get light status
    Recv:18:25:52.934: .
    Mesg:18:26:01.317: Dtr: true Rts: true
    Mesg:18:26:01.317: Connection started
    Mesg:18:26:01.318: Dtr: false Rts: false
    Mesg:18:26:01.338: Dtr: true Rts: true
    Recv:18:26:01.778: ...


    darüber hinaus habe ich die Basis.Config und config_io nochmal abgeglichen von hier:


    aufgefallen in config.h

    hier ist noch der "alte Stand" mit beidem - also Num_Tools + Num_Extruder --> hatte verstanden, dass Num_Extruder raus kann!?
    #define NUM_TOOLS 2
    #define NUM_EXTRUDER 2
    / The follwing variables are required early to decide on the right modules.


    #########################
    aufegallen in config_io

    hier steht der Kram mid dem Humidty Sensor noch drin.: Zeile ~197

    // SENSOR_DHT_22(DHTSensor, IODHT)
    #undef HUMIDITY_SENSOR_ADDRESS
    #define HUMIDITY_SENSOR_ADDRESS nullptr
    // IO_INPUT_PULLUP(IODHT, DHT_INOUT_PIN)


    daraus leite ich ab, dass evtl. diese beiden dateien - meine Vorlagen, nicht mehr zum Rest der Firmware passen.

    Fehler aus meiner Sicht und fehlenden Kenntnis z.B.
    config.h sagt Bed-Leveling mit Motoren, diese sind auch einzeln definiert, es fehlt aber was in dieser Form:

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

    Zum nachbauen wäre ganz toll, wenn die "Originale" config.h + config_io
    a) zueinander passen
    b) stimmig sind und dem letzen Stand entsprechen


    Wenn ich hier irgendwas testen und unterstützen kann, gerne melden. Bin aber in Sachen Programmierung eher so der Beginner..
  • edited January 2021
    Die Firmware von der Du schreibst ist nicht die originale Repetier, sondern eine überarbeitete (experimentelle) von Absolute catalyst , daher auch der Humidity Sensor ,den gibts offiziell (noch) nicht.
    Wenn Du also mit Vorlagen aus "forks" arbeitest ist es schwierig das nachzuvollziehen.

    Die Originale Version und Vorlagen findest Du hier:


    wenn du Deine config.h und config_io irgendwo teilst bzw. postest kann man mal drüberschauen was passt oder nicht passt

  • Hi,

    danke für den Hinweis mit der falschen Version. Dachte ich hätte die richtige erwischt..

    Nun denn, alles nochmal neu eingestellt und überspielt - -> 1. Teilerfolg. Verbindung Server-Drucker funktioniert schon mal.
    was auch geht: Endstopps und z-probe mit M119, ergebnis wie erwartet.
    Bed lässt sich auch heizen.
    Was nicht geht:
    Homing, Achsen verfahren
    Fan läuft auch nicht.
    Extr. heizen startet, bricht dann aber ab..

    falls jemand da weiterhelfen könnte:

  • Meine config.h

    /*
        This file is part of Repetier-Firmware.

        Repetier-Firmware is free software: you can redistribute it and/or modify
        it under the terms of the GNU General Public License as published by
        the Free Software Foundation, either version 3 of the License, or
        (at your option) any later version.

        Repetier-Firmware is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        GNU General Public License for more details.

        You should have received a copy of the GNU General Public License
        along with Repetier-Firmware.  If not, see <http://www.gnu.org/licenses/>.

    */

    #pragma once

    /**************** READ FIRST ************************

       This configuration file was created with the configuration tool. For that
       reason, it does not contain the same informations as the original Configuration.h file.
       It misses the comments and unused parts. Open this file file in the config tool
       to see and change the data. You can also upload it to newer/older versions. The system
       will silently add new options, so compilation continues to work.

       This file is optimized for version 1.0.0dev

       If you are in doubt which named functions use which pins on your board, please check the
       pins.h for the used name->pin assignments and your board documentation to verify it is
       as you expect.

    */

    // The follwing variables are required early to decide on the right modules.
    #define NUM_TOOLS 3
    #define NUM_EXTRUDER 3
    #define NUM_SERVOS 0                  // Number of serves available
    #define MOTHERBOARD MOTHERBOARD_RADDS // 405
    #define EEPROM_MODE 3
    #define RFSERIAL Serial
    //#define EXTERNALSERIAL  use Arduino serial library instead of build in. Requires more ram, has only 63 byte input buffer.
    // Uncomment the following line if you are using Arduino compatible firmware made for Arduino version earlier then 1.0
    // If it is incompatible you will get compiler errors about write functions not being compatible!
    //#define COMPAT_PRE1
    #define BLUETOOTH_SERIAL 101
    #define BLUETOOTH_BAUD 115200
    #define WAITING_IDENTIFIER "wait"
    #define JSON_OUTPUT 1
    #define FEATURE_WATCHDOG 0
    #define FEATURE_RETRACTION 1
    #define NUM_AXES 4 // X,Y,Z and E for extruder A,B,C would be 5,6,7
    // #define STEPPER_FREQUENCY 153000     // Maximum stepper frequency.
    #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          // Number of blocks with constant stepper rate per second.
    #define VELOCITY_PROFILE 2           // 0 = linear, 1 = cubic, 2 = quintic velocity shape
    #define Z_SPEED 10                   // Z positioning speed
    #define XY_SPEED 150                 // XY positioning speed for normal operations
    #define E_SPEED 2                    // Extrusion speed
    #define G0_FEEDRATE 0                // Speed for G0 moves. Independent from set F value! Set 0 to use F value.
    #define MAX_ROOM_TEMPERATURE 25      // No heating below this temperature!
    #define TEMPERATURE_CONTROL_RANGE 20 // Start with controlling if temperature is +/- this value to target temperature
    #define HOST_RESCUE 1                // Enable host rescue help system
    //#define DEBUG_RESCUE                 // Uncomment to add power loss entry in debug menu while printing
    #define POWERLOSS_LEVEL 2       // How much time do we have on powerloss, 0 = no move, 1 = short just raise Z, 2 = long full park move
    #define POWERLOSS_UP 5          // How much to move up if mode 1 is active
    #define Z_PROBE_TYPE 1          // 0 = no z probe, 1 = default z probe, 2 = Nozzle as probe
    #define Z_PROBE_BORDER 2        // Safety border to ensure position is allowed
    #define Z_PROBE_TEMPERATURE 170 // Temperature for type 2

    // 0 = Cartesian, 1 = CoreXYZ, 2 = delta, 3 = Dual X-Axis
    #define PRINTER_TYPE 1
    // steps to include as babysteps per 1/BLOCK_FREQUENCY seconds. Must be lower then STEPPER_FREQUENCY/BLOCK_FREQUENCY and be low enough to not loose steps.
    #define BABYSTEPS_PER_BLOCK \
        { 10, 10, 10 }
    // If all axis end stops are hardware based we can skip the time consuming tests each step
    #define NO_SOFTWARE_AXIS_ENDSTOPS
    // Normally only a delta has motor end stops required. Normally you trigger using axis endstops.
    #define NO_MOTOR_ENDSTOPS

    #define FEATURE_CONTROLLER CONTROLLER_SPARKLCD_ADAPTER //  CONTROLLER_FELIX_DUE
    // Use more memory to speedup display updates
    #define DISPLAY_FULL_BUFFER 1
    // Direction 1 or -1
    // #define ENCODER_DIRECTION -1
    // Encoder speed 0 = fastest, 1 or 2 = slowest - set so 1 click is one menu move
    // Default is 2 if not set by controller. Us eonly to fix wrong setting
    #define ENCODER_SPEED 2
    // Default materials in temperature menus. First value is extruder temp, then bed and chamber temperature. 0 = do not show.
    #define DEFAULT_MATERIALS \
        DEFAULT_MATERIAL(Com::tMatPLA, 215, 60, 0) \
        DEFAULT_MATERIAL(Com::tMatPET, 230, 55, 0) \
        DEFAULT_MATERIAL(Com::tMatASA, 260, 105, 0) \
        DEFAULT_MATERIAL(Com::tMatPC, 275, 110, 0) \
        DEFAULT_MATERIAL(Com::tMatABS, 255, 100, 0) \
        DEFAULT_MATERIAL(Com::tMatHIPS, 220, 100, 0) \
        DEFAULT_MATERIAL(Com::tMatPP, 254, 100, 0) \
        DEFAULT_MATERIAL(Com::tMatFLEX, 240, 50, 0)

    /* Ratios for core xyz. First index denotes motor and second axis.
    For each motor you can set the ratio of x,y,z position that adds
    to the position. 0 = no contribution. */
    // X motor = x + y
    #define COREXYZ_X_X 1
    #define COREXYZ_X_Y 1
    #define COREXYZ_X_Z 0
    // Y motor = x - y
    #define COREXYZ_Y_X 1
    #define COREXYZ_Y_Y -1
    #define COREXYZ_Y_Z 0
    // Z motor = z
    #define COREXYZ_Z_X 0
    #define COREXYZ_Z_Y 0
    #define COREXYZ_Z_Z 1

    // Special geometry definition if printer type is delta
    /*  =========== Parameter essential for delta calibration ===================

                C, Y-Axis
                |                        |___| Carriage horizontal offset
                |                        |   \------------------------------------------
                |_________ X-axis        |    \                                        |
               / \                       |     \  DELTA_DIAGONAL (length)    Each move this Rod Height
              /   \                             \                                 is calculated
             /     \                             \    Carriage is at printer center!   |
             A      B                             \_____/--------------------------------
                                                  |--| End effector horizontal offset (recommend set it to 0)
                                             |----| DELTA_HORIZONTAL_RADIUS (Horizontal rod pivot to pivot measure)

        Column angles are measured from X-axis counterclockwise
        "Standard" positions: alpha_A = 210, alpha_B = 330, alpha_C = 90
    */
    #define DELTA_DIAGONAL 350.0f
    #define DELTA_HORIZONTAL_RADIUS 210.0f
    #define DELTA_PRINT_RADIUS 200.0f
    #define DELTA_ANGLE_A 210.0f
    #define DELTA_ANGLE_B 330.0f
    #define DELTA_ANGLE_C 90.0f
    #define DELTA_CORRECTION_A 0.0f
    #define DELTA_CORRECTION_B 0.0f
    #define DELTA_CORRECTION_C 0.0f
    #define DELTA_RADIUS_CORRECTION_A 0.0f
    #define DELTA_RADIUS_CORRECTION_B 0.0f
    #define DELTA_RADIUS_CORRECTION_C 0.0f
    #define DELTA_HOME_OFFSET_A 0.0f
    #define DELTA_HOME_OFFSET_B 0.0f
    #define DELTA_HOME_OFFSET_C 0.0f

    #define DISABLE_X 0
    #define DISABLE_Y 0
    #define DISABLE_Z 0

    #define FEATURE_AXISCOMP 1
    #define AXISCOMP_TANXY 0
    #define AXISCOMP_TANYZ 0
    #define AXISCOMP_TANXZ 0

    // Next 7 lines are required to make the following work, do not change!
    #include "boards/pins.h"
    #undef IO_TARGET
    #define IO_TARGET 4
    #undef CONFIG_EXTERN
    #define CONFIG_EXTERN extern
    #include "drivers/drivers.h"
    #include "io/redefine.h"

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

    /** Axes are homed in order of priority (0..10) if homing direction is not 0. */
    #define X_HOME_PRIORITY 0
    #define Y_HOME_PRIORITY 1
    #define Z_HOME_PRIORITY 2

    // All fans in this list list become controllable with M106/M107
    // by selecteing the fan number with P0..P<NUM_FANS-1>
    #define NUM_FANS 1
    #define FAN_LIST \
        { &Fan1PWM }

    #define NUM_HEATED_BEDS 1
    #define HEATED_BED_LIST \
        { &HeatedBed1 }

    #define NUM_HEATED_CHAMBERS 0
    #define HEATED_CHAMBER_LIST \
        { }

    #define SERVO_LIST \
        { }

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

    // Heaters enumerate all heaters, so we can loop over them
    // or call commands on a specific heater number.
    // Suggested order: extruder heaters, heated beds, heated chambers, additional heaters
    #define NUM_HEATERS 2
    #define HEATERS \
        { &HeaterExtruder1, &HeatedBed1 }

    // 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") }

    // Some common settings for trinamic driver settings
    /**
     Chopper timing is an array with
     {toff, hend, hstrt}
     See TMC datasheets for more details. There are some predefined values to get you started:
     CHOPPER_TIMING_DEFAULT_12V = { 3, -1, 1 }
     CHOPPER_TIMING_DEFAULT_19V = { 4, 1, 1 }
     CHOPPER_TIMING_DEFAULT_24V = { 4, 2, 1 }
     CHOPPER_TIMING_DEFAULT_36V = { 5, 2, 4 }
     CHOPPER_TIMING_PRUSAMK3_24V = { 3, -2, 6 }

    */
    #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
    #define STORE_MOTOR_MICROSTEPPING 1
    #define STORE_MOTOR_CURRENT 1
    #define STORE_MOTOR_HYBRID_TRESHOLD 1
    #define STORE_MOTOR_STEALTH 1
    #define STORE_MOTOR_STALL_SENSITIVITY 1

    #define X_HOME_DIR 1
    #define Y_HOME_DIR 1
    #define Z_HOME_DIR 1
    #define X_MAX_LENGTH 499
    #define Y_MAX_LENGTH 295
    #define Z_MAX_LENGTH 294.520
    #define X_MIN_POS 0
    #define Y_MIN_POS 0
    #define Z_MIN_POS 0
    #define BED_X_MIN X_MIN_POS
    #define BED_X_MAX (X_MIN_POS + X_MAX_LENGTH)
    #define BED_Y_MIN Y_MIN_POS
    #define BED_Y_MAX (Y_MIN_POS + Y_MAX_LENGTH)

    // Park position used when pausing from firmware side
    #if PRINTER_TYPE == 2
    #define PARK_POSITION_X (0)
    #define PARK_POSITION_Y (70)
    #define PARK_POSITION_X (X_MIN_POS)
    #define PARK_POSITION_Y (Y_MIN_POS + Y_MAX_LENGTH)
    #define PARK_POSITION_Z_RAISE 10

    #define MAX_ACCELERATION_UNITS_PER_SQ_SECOND_X 1100
    #define MAX_ACCELERATION_UNITS_PER_SQ_SECOND_Y 1100
    #define MAX_ACCELERATION_UNITS_PER_SQ_SECOND_Z 100
    #define MAX_TRAVEL_ACCELERATION_UNITS_PER_SQ_SECOND_X 1100
    #define MAX_TRAVEL_ACCELERATION_UNITS_PER_SQ_SECOND_Y 1100
    #define MAX_TRAVEL_ACCELERATION_UNITS_PER_SQ_SECOND_Z 100
    #define XAXIS_STEPS_PER_MM 321.1780
    #define YAXIS_STEPS_PER_MM 321.1780
    #define ZAXIS_STEPS_PER_MM 3200

    // ################## 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

    #define KILL_IF_SENSOR_DEFECT 0
    #define RETRACT_ON_PAUSE 2
    #define PAUSE_START_COMMANDS ""
    #define PAUSE_END_COMMANDS ""

    #define AUTORETRACT_ENABLED 0
    #define RETRACTION_LENGTH 3
    #define RETRACTION_LONG_LENGTH 13
    #define RETRACTION_SPEED 40
    #define RETRACTION_Z_LIFT 0
    #define RETRACTION_UNDO_EXTRA_LENGTH 0
    #define RETRACTION_UNDO_EXTRA_LONG_LENGTH 0
    #define RETRACTION_UNDO_SPEED 25
    #define FILAMENTCHANGE_X_POS 5
    #define FILAMENTCHANGE_Y_POS 5
    #define FILAMENTCHANGE_Z_ADD 2
    #define FILAMENTCHANGE_REHOME 1
    #define FILAMENTCHANGE_SHORTRETRACT 2.5
    #define FILAMENTCHANGE_LONGRETRACT 50
    #define JAM_METHOD 1
    #define JAM_ACTION 1

    #define RETRACT_DURING_HEATUP true
    #define PID_CONTROL_RANGE 20
    #define EXTRUDE_MAXLENGTH 160

    // ############# Heated bed configuration ########################

    #define SKIP_M190_IF_WITHIN 5
    #define MIN_EXTRUDER_TEMP 150
    #define MILLISECONDS_PREHEAT_TIME 30000

    // ################ Endstop configuration #####################

    #define DOOR_PIN -1
    #define DOOR_PULLUP 1
    #define DOOR_INVERTING 1
    #define ENDSTOP_X_BACK_MOVE 3
    #define ENDSTOP_Y_BACK_MOVE 3
    #define ENDSTOP_Z_BACK_MOVE 1
    #define ENDSTOP_X_RETEST_REDUCTION_FACTOR 2
    #define ENDSTOP_Y_RETEST_REDUCTION_FACTOR 2
    #define ENDSTOP_Z_RETEST_REDUCTION_FACTOR 2
    #define ENDSTOP_X_BACK_ON_HOME 0.5
    #define ENDSTOP_Y_BACK_ON_HOME 0.5
    #define ENDSTOP_Z_BACK_ON_HOME 0
    #define ALWAYS_CHECK_ENDSTOPS 1
    #define MOVE_X_WHEN_HOMED 0
    #define MOVE_Y_WHEN_HOMED 0
    #define MOVE_Z_WHEN_HOMED 0

    // ################# XYZ movements ###################

    #define PREVENT_Z_DISABLE_ON_STEPPER_TIMEOUT 1

    // ##########################################################################################
    // ##                           Movement settings                                          ##
    // ##########################################################################################

    #define FEATURE_BABYSTEPPING 1
    #define BABYSTEP_MULTIPLICATOR 64

    // Delta settings
    #define DELTA_HOME_ON_POWER 0

    #define STEPPER_INACTIVE_TIME 360L
    #define MAX_INACTIVE_TIME 1200L
    #define MAX_FEEDRATE_X 250
    #define MAX_FEEDRATE_Y 250
    #define MAX_FEEDRATE_Z 20
    #define HOMING_FEEDRATE_X 80
    #define HOMING_FEEDRATE_Y 80
    #define HOMING_FEEDRATE_Z 10
    // Raise z before homing (1)
    #define ZHOME_PRE_RAISE 1
    // How much mm should z raise before homing
    #define ZHOME_PRE_RAISE_DISTANCE 2
    #define ZHOME_MIN_TEMPERATURE 0
    #define ZHOME_HEAT_ALL 0
    // Height in mm after homing.
    #define ZHOME_HEIGHT 10
    // Home Z at a fixed xy position (1)
    #define FIXED_Z_HOME_POSITION 1
    #define ZHOME_X_POS 140
    #define ZHOME_Y_POS 45
    // Raise extruders before switching tools. Used to prevent touching objects while switching.
    #define RAISE_Z_ON_TOOLCHANGE 2

    #define ENABLE_BACKLASH_COMPENSATION 0
    #define X_BACKLASH 0
    #define Y_BACKLASH 0
    #define Z_BACKLASH 0
    #define MAX_JERK 5
    #define MAX_ZJERK 0.3
    #define PRINTLINE_CACHE_SIZE 32
    #define MOVE_CACHE_LOW 10
    #define EXTRUDER_SWITCH_XY_SPEED 100
    #define FEATURE_DITTO_PRINTING 0

    // ################# Misc. settings ##################

    #define BAUDRATE 115200
    #define ENABLE_POWER_ON_STARTUP 1
    #define POWER_INVERTING 0
    #define KILL_METHOD 1
    #define ACK_WITH_LINENUMBER 1
    #define KEEP_ALIVE_INTERVAL 2000
    #define ECHO_ON_EXECUTE 1
    #undef PS_ON_PIN
    #define PS_ON_PIN -1

    // #################### Z-Probing #####################

    #define Z_PROBE_COATING 0
    #define Z_PROBE_Z_OFFSET_MODE 1
    #define UI_BED_COATING 1
    #define EXTRUDER_IS_Z_PROBE 1
    #define Z_PROBE_DISABLE_HEATERS 1
    #define Z_PROBE_BED_DISTANCE 6
    #define Z_PROBE_X_OFFSET 0
    #define Z_PROBE_Y_OFFSET 51.8
    #define Z_PROBE_SPEED 2
    #define Z_PROBE_SWITCHING_DISTANCE 1
    // How often should we test a position 1 .. x. Averages result over all tests.
    #define Z_PROBE_REPETITIONS 1
    // 0 = use average, 1 = use middle value after ordering z
    #define Z_PROBE_USE_MEDIAN 1
    // Nozzle distance to bed when z probe triggers
    #define Z_PROBE_HEIGHT 0.942
    // Delay in ms before we go down again. For BLTouch so signal can disable
    #define Z_PROBE_DELAY 0
    #define Z_PROBE_START_SCRIPT ""
    #define Z_PROBE_FINISHED_SCRIPT ""
    #define Z_PROBE_RUN_AFTER_EVERY_PROBE ""
    #define Z_PROBE_REQUIRES_HEATING 1
    #define Z_PROBE_MIN_TEMPERATURE 150
    #define Z_PROBE_PAUSE_HEATERS 0         // Pause all heaters when probing to reduce EMI artifacts
    #define Z_PROBE_PAUSE_BED_REHEAT_TEMP 5 // Stop and reheat the bed if we leave the target temp by this much.

    // How to correct rotated beds
    // 0 = Software side by rotating coordinates
    // 1 = Move bed physically using 2 motors
    #define LEVELING_CORRECTOR 1
    // Bed fixture coordinates for motor leveling
    #define LC_P1_X 252
    #define LC_P1_Y 373
    #define LC_P2_X 591
    #define LC_P2_Y 7
    #define LC_P3_X -90
    #define LC_P3_Y 7
    #define LC_P2_MOTOR ZMotorLH
    #define LC_P3_MOTOR ZMotorRH
    #define LC_STEPS_PER_MM 3200
    #define LC_Z_SPEED 0.2
    // > 0 will move bed down and wait for removal (heater removed) and will pause another LC_WAIT_BED_REMOVE seconds
    #define LC_WAIT_BED_REMOVE 2
    // Uncomment to limit correction per autoleveling iteration. Value is the max. correction in mm
    // #define LIMIT_MOTORIZED_CORRECTION 0.5

    // Leveling method
    // 0 = none, 3 = 3 points, 1 = grid, 2 = 4 point symmetric
    #define LEVELING_METHOD 3
    #define L_P1_X 254
    #define L_P1_Y 216
    #define L_P2_X 144
    #define L_P2_Y 96
    #define L_P3_X 384
    #define L_P3_Y 96
    #define MAX_GRID_SIZE 5                   // Maximum grid size allocation in memory, imported grid can be smaller
    #define ENABLE_BUMP_CORRECTION 1          // CPU intensive, so only activate if required
    #define BUMP_CORRECTION_START_DEGRADE 0.5 // Until this height we correct 100%
    #define BUMP_CORRECTION_END_HEIGHT 2      // From this height on we do no correction
    #define BUMP_LIMIT_TO 0                   // Maximum allowed correction up/down, <= 0 off.

    #ifndef SDSUPPORT // Some boards have sd support on board. These define the values already in pins.h
    #define SDSUPPORT 1
    #undef SDCARDDETECT
    #define SDCARDDETECT ORIG_SDCARDDETECT
    #define SDCARDDETECTINVERTED 0
    #define SD_EXTENDED_DIR 1 /** Show extended directory including file length. Don't use this with Pronterface! */
    #define SD_RUN_ON_STOP ""
    #define SD_STOP_HEATER_AND_MOTORS_ON_STOP 1
    #define ARC_SUPPORT 0
    #define FEATURE_MEMORY_POSITION 1
    #define FEATURE_CHECKSUM_FORCED 0
    #define UI_PRINTER_NAME "Sparlcube XXXL"
    #define UI_PRINTER_COMPANY "Repetier_V2"
    #define UI_PAGES_DURATION 4000
    #define UI_SPEEDDEPENDENT_POSITIONING 0
    #define UI_DISABLE_AUTO_PAGESWITCH 1
    #define UI_AUTORETURN_TO_MENU_AFTER 30000
    #define FEATURE_UI_KEYS 0
    #define UI_ENCODER_SPEED 2
    #define UI_REVERSE_ENCODER 0
    #define UI_KEY_BOUNCETIME 10
    #define UI_KEY_FIRST_REPEAT 500
    #define UI_KEY_REDUCE_REPEAT 50
    #define UI_KEY_MIN_REPEAT 50
    #define CASE_LIGHTS_PIN 25
    #define CASE_LIGHT_DEFAULT_ON 1
    #define UI_START_SCREEN_DELAY 2000

    //#define CUSTOM_EVENTS



  • meine config_io

    /*

    This file defines io solutions used. This is the lowest level and is the base
    for all higher level functions using io operations. At several places we need
    subsets of these list of operations. To make configuration easy and easy to 
    understand, we use a technique called "x macros". This requires that only
    predefined macro names for IO are used here. Do NOT add anything else here
    or compilation/functionality will break.

    Rules:
    1. Each definition will create a class that is named like the first parameter.
    This class is later used as input to templates building higher functions. By
    convention the names should start with IO followed by something that helps you
    identify the function. 
    2. Do not use a semicolon at the end. Macro definition gets different meanings
    and will add the semicolon if required.

    */

    /* Define motor pins here. Each motor needs a setp, dir and enable pin. */

    ENDSTOP_NONE(endstopNone)
    // For use when no output is wanted, but possible
    IO_OUTPUT_FAKE(fakeOut)

    // 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 Mitte hinten

    IO_OUTPUT(IOZMHStep, ORIG_E3_STEP_PIN)
    IO_OUTPUT_INVERTED(IOZMHDir, ORIG_E3_DIR_PIN)
    IO_OUTPUT(IOZMHEnable, ORIG_E3_ENABLE_PIN)

    // Z-Motor Vorne LH

    IO_OUTPUT(IOZLHStep, ORIG_E5_STEP_PIN)
    IO_OUTPUT_INVERTED(IOZLHDir, ORIG_E5_DIR_PIN)
    IO_OUTPUT(IOZLHEnable, ORIG_E5_ENABLE_PIN)

    // Z-Motor Vorne RH

    IO_OUTPUT(IOZRHStep, ORIG_E4_STEP_PIN)
    IO_OUTPUT_INVERTED(IOZRHDir, ORIG_E4_DIR_PIN)
    IO_OUTPUT(IOZRHEnable, ORIG_E4_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)

    // Servo output

    //IO_OUTPUT(Servo1Pin, 5)

    // Define your endstops inputs

    // Endstopp der Achsen
    IO_INPUT(IOEndstopXMax, ORIG_X_MAX_PIN)
    IO_INPUT(IOEndstopYMax, ORIG_Y_MAX_PIN)
    IO_INPUT(IOEndstopZMax, ORIG_Z_MAX_PIN)

    // Jam-Endstopp-Mapping
    IO_INPUT(IOJam1, ORIG_X_MIN_PIN)
    IO_INPUT(IOJam2, ORIG_Y_MIN_PIN)
    IO_INPUT(IOJam3, ORIG_Z_MIN_PIN)

    //Z-Probe als Input
    IO_INPUT_INVERTED(IOEndstopZProbe, 59)

    // Controller input pins

    #if defined(UI_ENCODER_CLICK) && UI_ENCODER_CLICK >= 0
    IO_INPUT_INVERTED_PULLUP(ControllerClick, UI_ENCODER_CLICK)
    IO_INPUT_DUMMY(ControllerClick, false)
    #if defined(UI_ENCODER_A) && UI_ENCODER_A >= 0
    IO_INPUT_INVERTED_PULLUP(ControllerEncA, UI_ENCODER_A)
    IO_INPUT_DUMMY(ControllerEncA, false)
    #if defined(UI_ENCODER_B) && UI_ENCODER_B >= 0
    IO_INPUT_INVERTED_PULLUP(ControllerEncB, UI_ENCODER_B)
    IO_INPUT_DUMMY(ControllerEncB, false)
    #if defined(UI_BACK_PIN) && UI_BACK_PIN >= 0
    IO_INPUT_PULLUP(ControllerBack, UI_BACK_PIN)
    IO_INPUT_DUMMY(ControllerBack, false)
    #if defined(UI_RESET_PIN) && UI_RESET_PIN >= 0
    IO_INPUT_PULLUP(ControllerReset, UI_RESET_PIN)
    IO_INPUT_DUMMY(ControllerReset, false)

    // Define our 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

    // Define fans

    IO_OUTPUT(IOFan1, ORIG_FAN_PIN)
    IO_PWM_SOFTWARE(Fan1NoKSPWM, IOFan1, 0)
    // IO_PWM_HARDWARE(Fan1PWM, 37,5000)
    // IO_PDM_SOFTWARE(Fan1NoKSPWM, IOFan1) // alternative to PWM signals
    IO_PWM_KICKSTART(Fan1PWM, Fan1NoKSPWM, 20, 85)
    // For debugging - reports new values and then calls real pwm
    // IO_PWM_REPORT(Fan1Report, Fan1PWM)
    // Define temperature sensors

    // Typically they require an analog input (12 bit) so define
    // them first.

    IO_ANALOG_INPUT(IOAnalogBed1, TEMP_1_PIN, 5)
    IO_ANALOG_INPUT(IOAnalogExt1, TEMP_0_PIN, 5)
    //IO_ANALOG_INPUT(IOAnalogExt2, TEMP_2_PIN, 5)

    // Need a conversion table for epcos NTC
    IO_TEMP_TABLE_NTC(TempTable3950, NTC_3950)

    // Now create the temperature inputs

    IO_TEMPERATURE_TABLE(TempBed1, IOAnalogBed1, TempTable3950)
    IO_TEMPERATURE_TABLE(TempExt1, IOAnalogExt1, TempTable3950)
    //IO_TEMPERATURE_TABLE(TempExt2, IOAnalogExt2, TempTableEpcos)

    // Use PWM outputs to heat. If using hardware PWM make sure
    // that the selected pin can be used as hardware pwm otherwise
    // select a software pwm model whcih works on all pins.

    #if MOTHERBOARD == 405
    IO_PWM_HARDWARE(PWMExtruder1, HEATER_0_PIN, 1000)
    IO_PWM_HARDWARE(PWMExtruder2, HEATER_2_PIN, 1000)
    IO_PWM_HARDWARE(PWMBed1, HEATER_1_PIN, 1000)
    IO_OUTPUT(IOExtr1, HEATER_0_PIN)
    //IO_OUTPUT(IOExtr2, HEATER_2_PIN)
    IO_OUTPUT(IOBed1, HEATER_1_PIN)
    IO_PWM_SOFTWARE(PWMExtruder1, IOExtr1, 1)
    //IO_PWM_SOFTWARE(PWMExtruder2, IOExtr2, 1)
    IO_PWM_SOFTWARE(PWMBed1, IOBed1, 1)
    // IO_OUTPUT(IOCooler1, FAN2_PIN)
    // IO_PWM_SOFTWARE(PWMCoolerExt1, FAN2_PIN, 0)

    // 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)

    // Servos
    //SERVO_ANALOG(Servo1, 0, Servo1Pin, 500, 2500, 1050)

    // Heat manages are used for every component that needs to
    // control temperature. Higher level classes take these as input
    // and simple heater like a heated bed use it directly.

    HEAT_MANAGER_PID(HeatedBed1, 'B', 0, TempBed1, PWMBed1, 120, 255, 1000, 5, 30000, 12.0, 33.0, 290.0, 80, 255, true)
    HEAT_MANAGER_PID(HeaterExtruder1, 'E', 0, TempExt1, PWMExtruder1, 260, 255, 1000, 10, 20000, 20.0, 0.6, 65.0, 40, 220, false)
    //HEAT_MANAGER_PID(HeaterExtruder2, 'E', 1, TempExt2, PWMExtruder2, 260, 255, 1000, 10, 20000, 20.0, 0.6, 65.0, 40, 220, false)

    // HEAT_MANAGER_DYN_DEAD_TIME(HeaterExtruder1, 'E', 0, TempExt1, PWMExtruder1, 260, 255, 100, 10, 20000, 150, 7, 7, 200, 7, 7, false)
    // HEAT_MANAGER_DYN_DEAD_TIME(HeaterExtruder2, 'E', 1, TempExt2, PWMExtruder2, 260, 255, 100, 10, 20000, 150, 7, 7, 200, 7, 7, false)

    // Coolers are stand alone functions that allow it to control
    // a fan with external sensors. Many extruders require a cooling
    // fan pointer to the extruder to prevent heat rising up.
    // These can be controlled by the cooler. Since it is
    // independent you just tell what part needs cooling.
    // Other use cases are board cooling and heated chambers.

    // 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)

    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)


    //TOOL_EXTRUDER(ToolExtruder1, 0, 0, 0, HeaterExtruder1, /*AL1Motor */ E1Motor, 1.75, 147.0, 5, 30, 5000, 40, "M117 Extruder 1", "", &Fan1PWM)
    //TOOL_EXTRUDER(ToolExtruder2, 16.775, 0.615, -0.97, HeaterExtruder2, /*AL2Motor */ E2Motor, 1.75, 147.0, 5, 30, 5000, 40, "M117 Extruder 2\nM400\nM340 P0 S1500 R600\nG4 P300", "M340 P0 S800 R600\nG4 P300", &Fan1PWM)
    //TOOL_LASER(Laser3, 0, 0, 0, Fan1NoKSPWM, fakeOut, fakeOut, 3000, 1, 100, 150.0, 1.5, "", "")
    //TOOL_CNC(CNC4, 0, 0, 0, Fan1NoKSPWM, fakeOut, fakeOut, fakeOut, 7000, 3000, "", "")

    // 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, E3Motor, IOJam3, ToolExtruder3, 220, 10, 500)

    // Use a signal that is high, when filament is loaded
    //FILAMENT_DETECTOR(FilamentDetector1, IOJam1, ToolExtruder1)
    //FILAMENT_DETECTOR(FilamentDetector2, IOJam2, ToolExtruder2)



  • wenn das verfahren der achsen nicht tut versuch mal

    IO_OUTPUT(IOX1Enable, ORIG_X_ENABLE_PIN)     -> IO_OUTPUT_INVERTED(IOX1Enable, ORIG_X_ENABLE_PIN)

    ich weiss nicht welche treiber du nutzt , manche brauchen enable auf 0 , andere auf 1
  • Nutze für die Extruder die RAPS Treiber. Die müssen Enable = inverted.
    Alle anderen sind TMC2130 aber noch im Step-modus.

    In der Dev. 1 laufen die alle mit EN= normal,
    Die Radds mit EN=inverted
    mh..

    Ansonsten haut mein Fan jetzt auch hin - hab die am Board umgepinnt. passt jetzt also auch.

    Da gar kein Motor funktioniert, ist da wohl irgendeine übergeordnete Funktion blockiert? Kann ich das irgendwie debuggen?
  • edited January 2021
    V2 ist wie Du schon gemerkt hast komplett anders

    Ich hab bei den DRV8825 / TMC5160  die alle enable auf low brauchen

    IO_OUTPUT_INVERTED(IOX1Enable, ORIG_X_ENABLE_PIN)

    das inverted bedeutet hier enable = 0

    also einfach umdrehen und dann müsste es auch laufen.





  • das war es!! :*
    habe alle EN-Pins jetz umgedreht. XYZ - Achsen bewegen sich jetzt. Krasses Teil!

    bisschen rumprobieren und einstellungen testen jetze.
Sign In or Register to comment.