Willkommen! Anmelden Ein neues Profil erzeugen

Erweiterte Suche

Ordbot Hadron Autoleveling - meine Lösung

geschrieben von chattermark 
Re: Ordbot Hadron Autoleveling - meine Lösung
31. March 2016 13:28
Moin,
wenn ich mich nicht irre, habe ich den Offset im Slicer eingestellt. Da ist es am einfachsten. Denn zumindest bei mir waren z.B. für PETG - und da auch noch je nach Pigmentgehalt unterschiedlich - andere Werte (+- 0.05mm, aber relevant!) einzustellenals für PLA.

Die Fließeigenschaften (und auch ein Spielen mit der Flowrate) zeigten, daß diese Einstellung am praktischsten im Slicer funktioniert (bei mir zumindest), slic3r und S3D (letzteres imho insgesamt großer Mist, aber es hat auch seine guten Seiten).

Bin gespannt, wie Deine Zufriedenheit sein wird.

Gruß,
U.
Re: Ordbot Hadron Autoleveling - meine Lösung
31. March 2016 13:35
Hmm, ich nutze Repetier-Host mit Cura. Ich wüsste jetzt nicht wo ich das einstellen sollte. Außer im Gcode (was ich ja bereits versucht habe).

Aber Danke für deine Antwort chattermark!
Re: Ordbot Hadron Autoleveling - meine Lösung
31. March 2016 15:50
Hallo Elton,

ich hoffe, dass ich das Problem richtig verstehe.
Normal stellst du das nur einmal ein wenn dein System stabil läuft und zwar in der Firmware unter "#define Z_PROBE_HEIGHT -0.8"
Die -0.8 sind der Wert den du auf dein System anpassen musst!
Mit meinem Arduino due kann man diesen Parameter auch innerhalb von Repetier unter "Eeprom Firmware" oder so direkt im Programm einstellen ohne die Firmware neu aufspielen zu müssen, was ja etwas nervig ist.

Dann kannst du mit jedem Slicer ohne sonstige Anpassungen arbeiten!

LG

Wolfgang
Re: Ordbot Hadron Autoleveling - meine Lösung
31. March 2016 22:36
Hallo Wolfgang,

was hast du denn für einen eigenartigen nickname? Hat der eine Bedeutung?
Zum Problem:
Ohoh, kann es sein, dass es dieses Feature gar nicht in Marlin gibt? Ich kann in der config.h nur den Z-offset einstellen. aber der muss ja auf 0 bleiben. Habe Marlin RC (vor ca. 8 Wochen runtergeladen).

BG, Elton
Re: Ordbot Hadron Autoleveling - meine Lösung
01. April 2016 04:04
Hallo Elton,

der Nickname kommt von meinem anderen Hobby!smoking smiley
Ok, dass du Marlin verwendest hatte ich wohl übersehen!
Warum muss der Z-Offset auf 0 bleiben? Wenn man damit nichts anpassen könnte gäb es dafür auch keinen Parameter!

LG

Wolfgang
Re: Ordbot Hadron Autoleveling - meine Lösung
01. April 2016 06:57
Quote
derschutzhund
Warum muss der Z-Offset auf 0 bleiben? Wenn man damit nichts anpassen könnte gäb es dafür auch keinen Parameter!
Wenn man im Auge behält, was man wo an Offset verstellt hat, kann man natürlich auch den Z-Offset in Marlin ändern. Ich habe den letztlich bei mir auf 0 gelassen und verstell den Wert nur im Slicer (wo er nicht immer einfach zu finden ist, in S3D steht der originellerweise unter der Registerkarte Gcode).
Re: Ordbot Hadron Autoleveling - meine Lösung
02. April 2016 02:40
Quote
derschutzhund
Hallo Elton,

der Nickname kommt von meinem anderen Hobby!smoking smiley
Ok, dass du Marlin verwendest hatte ich wohl übersehen!
Warum muss der Z-Offset auf 0 bleiben? Wenn man damit nichts anpassen könnte gäb es dafür auch keinen Parameter!

LG

Wolfgang

Na ja, den Z offset kann man in marlin aber leider nur in den minus bereich verstellen! Bei der neuen Methode mit der Düsen-Messung (Gibts dafür eigentlich einen Offiziellen Namen? Wie wärs mit NozzleABL?) muss ich ja in den plus bereich. Ich habe mir nun aber auch repetier zugelegt. schon wegen der 3 z motoren für meinen nächsten drucker eine tolle sache.

BG, Elton

3-mal bearbeitet. Zuletzt am 02.04.16 02:47.
Re: Ordbot Hadron Autoleveling - meine Lösung
02. April 2016 03:22
Ich glaube, ich erkläre es noch einmal anhand eines Fotos. Der komplette rote Kasten und die X Linearführungen verwinden sich etwas beim ABL. Daher muss ich zu Druckbeginn einige zehntel mm nach oben mit der Z-Achse. Ich hoffe, ich habe es nun unmissverständlich rüber gebracht.

edit: Habe den Fehler gefunden! Sorry, aber der Fehler lag wie so oft zwischen den Ohren eye rolling smiley Habe statt -0.8mm -0.08mm eingegeben. Dass sich da nicht viel bewegt ist ja klar. Asche auf mein Haupt. War ja direkt eine tolle Einführung in diesem Forum... Na ja, zumindest besitze ich die Größe eigene Fehler zuzugeben spinning smiley sticking its tongue out

Ps.: Wie kann man das Foto hier direkt einstellen, ohne erst auf öffnen klicken zu müssen?

BG, Elton

1-mal bearbeitet. Zuletzt am 02.04.16 03:43.
Anhänge:
Öffnen | Download - 20160402_085940.jpg (264.3 KB)
Re: Ordbot Hadron Autoleveling - meine Lösung
02. April 2016 06:42
Und nun ist natürlich spannend, ob Du mit dem ABL-Ergebnis so langsam zufrieden wirst? Aus Erfahrung nochmal auch hier: Es lohnt sich, auch noch mit kleinen Offset-Variationen +-0.05mm zu spielen, dann auch mit der Erstschicht-Temperatur, auch da können ein paar Grad mehr oder weniger nicht nur über die optimale Haftung, sondern dann auch die optimale Lösbarkeit (wichtig auch die Bettemperatur - PETG mag kein Absenken, PLA hingegen kommt damit gut klar) entscheiden.

Ich schalte z.B. auch den Teilekühler erst dann ein, wenn ein solider Sockel gebaut ist, der sich nicht mehr verformen kann.

Und vor allem: Die erste Schicht so langsam wie nur irgendwie möglich auf die Platte bringen. Das hat sich als mit am wichtigsten erwiesen.

Es greift alles ineinander. Auch bei gleichem Material ist die Flowrate, je nach Pigmentfarbe und -anteil, um bis zu 10% zu optimieren.
Aber nun erstmal das ABL richtig zu haben, ist eine gute Voraussetzung.
Re: Ordbot Hadron Autoleveling - meine Lösung
02. April 2016 07:53
Ja, läuft so weit alles, aber leider macht die Z Achse keinerlei Anstalt auszugleichen während des Drucks. Habe repetier version 0.92.9. Vieleicht ist es ein Bug oder eine falsche Einstellung? Probiere nun schon ein paar Stunden und muss doch noch mal um Hilfe bitten.

Hier noch die configuration.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 [www.gnu.org].

*/

#ifndef CONFIGURATION_H
#define CONFIGURATION_H

/**************** 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 0.92
   generator: [www.repetier.com]

   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.

*/

#define NUM_EXTRUDER 1
#define MOTHERBOARD 33
#include "pins.h"

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

#undef FAN_BOARD_PIN
#define FAN_BOARD_PIN -1
#define FAN_THERMO_PIN -1
#define FAN_THERMO_MIN_PWM 128
#define FAN_THERMO_MAX_PWM 255
#define FAN_THERMO_MIN_TEMP 45
#define FAN_THERMO_MAX_TEMP 60
#define FAN_THERMO_THERMISTOR_PIN -1
#define FAN_THERMO_THERMISTOR_TYPE 1

//#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  -1
#define BLUETOOTH_BAUD  115200
#define MIXING_EXTRUDER 0

#define DRIVE_SYSTEM 0
#define XAXIS_STEPS_PER_MM 80
#define YAXIS_STEPS_PER_MM 80
#define ZAXIS_STEPS_PER_MM 4000
#define EXTRUDER_FAN_COOL_TEMP 50
#define PDM_FOR_EXTRUDER 0
#define PDM_FOR_COOLER 0
#define DECOUPLING_TEST_MAX_HOLD_VARIANCE 20
#define DECOUPLING_TEST_MIN_TEMP_RISE 1
#define KILL_IF_SENSOR_DEFECT 0
#define RETRACT_ON_PAUSE 2
#define PAUSE_START_COMMANDS ""
#define PAUSE_END_COMMANDS ""
#define SHARED_EXTRUDER_HEATER 0
#define EXT0_X_OFFSET 0
#define EXT0_Y_OFFSET 0
#define EXT0_Z_OFFSET 0
#define EXT0_STEPS_PER_MM 146
#define EXT0_TEMPSENSOR_TYPE 14
#define EXT0_TEMPSENSOR_PIN TEMP_0_PIN
#define EXT0_HEATER_PIN HEATER_0_PIN
#define EXT0_STEP_PIN ORIG_E0_STEP_PIN
#define EXT0_DIR_PIN ORIG_E0_DIR_PIN
#define EXT0_INVERSE 0
#define EXT0_ENABLE_PIN ORIG_E0_ENABLE_PIN
#define EXT0_ENABLE_ON 0
#define EXT0_MIRROR_STEPPER 0
#define EXT0_STEP2_PIN ORIG_E0_STEP_PIN
#define EXT0_DIR2_PIN ORIG_E0_DIR_PIN
#define EXT0_INVERSE2 0
#define EXT0_ENABLE2_PIN ORIG_E0_ENABLE_PIN
#define EXT0_MAX_FEEDRATE 150
#define EXT0_MAX_START_FEEDRATE 20
#define EXT0_MAX_ACCELERATION 1000
#define EXT0_HEAT_MANAGER 3
#define EXT0_WATCHPERIOD 1
#define EXT0_PID_INTEGRAL_DRIVE_MAX 230
#define EXT0_PID_INTEGRAL_DRIVE_MIN 40
#define EXT0_PID_PGAIN_OR_DEAD_TIME 7
#define EXT0_PID_I 2
#define EXT0_PID_D 40
#define EXT0_PID_MAX 255
#define EXT0_ADVANCE_K 0
#define EXT0_ADVANCE_L 0
#define EXT0_ADVANCE_BACKLASH_STEPS 0
#define EXT0_WAIT_RETRACT_TEMP 150
#define EXT0_WAIT_RETRACT_UNITS 0
#define EXT0_SELECT_COMMANDS ""
#define EXT0_DESELECT_COMMANDS ""
#define EXT0_EXTRUDER_COOLER_PIN -1
#define EXT0_EXTRUDER_COOLER_SPEED 255
#define EXT0_DECOUPLE_TEST_PERIOD 12000
#define EXT0_JAM_PIN -1
#define EXT0_JAM_PULLUP 0

#define FEATURE_RETRACTION 1
#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 20
#define FILAMENTCHANGE_X_POS 0
#define FILAMENTCHANGE_Y_POS 0
#define FILAMENTCHANGE_Z_ADD  2
#define FILAMENTCHANGE_REHOME 1
#define FILAMENTCHANGE_SHORTRETRACT 5
#define FILAMENTCHANGE_LONGRETRACT 50
#define JAM_STEPS 220
#define JAM_SLOWDOWN_STEPS 320
#define JAM_SLOWDOWN_TO 70
#define JAM_ERROR_STEPS 500
#define JAM_MIN_STEPS 10
#define JAM_ACTION 0

#define RETRACT_DURING_HEATUP true
#define PID_CONTROL_RANGE 20
#define SKIP_M109_IF_WITHIN 2
#define SCALE_PID_TO_MAX 0
#define TEMP_HYSTERESIS 0
#define EXTRUDE_MAXLENGTH 160
#define NUM_TEMPS_USERTHERMISTOR0 0
#define USER_THERMISTORTABLE0 {}
#define NUM_TEMPS_USERTHERMISTOR1 0
#define USER_THERMISTORTABLE1 {}
#define NUM_TEMPS_USERTHERMISTOR2 0
#define USER_THERMISTORTABLE2 {}
#define GENERIC_THERM_VREF 5
#define GENERIC_THERM_NUM_ENTRIES 33
#define HEATER_PWM_SPEED 0

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

#define HAVE_HEATED_BED 1
#define HEATED_BED_MAX_TEMP 120
#define SKIP_M190_IF_WITHIN 3
#define HEATED_BED_SENSOR_TYPE 14
#define HEATED_BED_SENSOR_PIN TEMP_1_PIN
#define HEATED_BED_HEATER_PIN HEATER_1_PIN
#define HEATED_BED_SET_INTERVAL 5000
#define HEATED_BED_HEAT_MANAGER 0
#define HEATED_BED_PID_INTEGRAL_DRIVE_MAX 255
#define HEATED_BED_PID_INTEGRAL_DRIVE_MIN 80
#define HEATED_BED_PID_PGAIN_OR_DEAD_TIME   196
#define HEATED_BED_PID_IGAIN   33
#define HEATED_BED_PID_DGAIN 290
#define HEATED_BED_PID_MAX 255
#define HEATED_BED_DECOUPLE_TEST_PERIOD 300000
#define MIN_EXTRUDER_TEMP 25
#define MAXTEMP 320
#define MIN_DEFECT_TEMPERATURE -10
#define MAX_DEFECT_TEMPERATURE 340

// ##########################################################################################
// ##                             Laser configuration                                      ##
// ##########################################################################################

/*
If the firmware is in laser mode, it can control a laser output to cut or engrave materials.
Please use this feature only if you know about safety and required protection. Lasers are
dangerous and can hurt or make you blind!!!

The default laser driver only supports laser on and off. Here you control the eíntensity with
your feedrate. For exchangeable diode lasers this is normally enough. If you need more control
you can set the intensity in a range 0-255 with a custom extension to the driver. See driver.h
and comments on how to extend the functions non invasive with our event system.

If you have a laser - powder system you will like your E override. If moves contain a
increasing extruder position it will laser that move. With this trick you can
use existing fdm slicers to laser the output. Laser width is extrusion width.

Other tools may use M3 and M5 to enable/disable laser. Here G1/G2/G3 moves have laser enabled
and G0 moves have it disables.

In any case, laser only enables while moving. At the end of a move it gets
automatically disabled.
*/

#define SUPPORT_LASER 0
#define LASER_PIN -1
#define LASER_ON_HIGH 1

// ##                              CNC configuration                                       ##

/*
If the firmware is in CNC mode, it can control a mill with M3/M4/M5. It works
similar to laser mode, but mill keeps enabled during G0 moves and it allows
setting rpm (only with event extension that supports this) and milling direction.
It also can add a delay to wait for spindle to run on full speed.
*/

#define SUPPORT_CNC 0
#define CNC_WAIT_ON_ENABLE 300
#define CNC_WAIT_ON_DISABLE 0
#define CNC_ENABLE_PIN -1
#define CNC_ENABLE_WITH 1
#define CNC_DIRECTION_PIN -1
#define CNC_DIRECTION_CW 1


#define DEFAULT_PRINTER_MODE 0

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

#define ENDSTOP_PULLUP_X_MIN true
#define ENDSTOP_X_MIN_INVERTING true
#define MIN_HARDWARE_ENDSTOP_X true
#define ENDSTOP_PULLUP_Y_MIN true
#define ENDSTOP_Y_MIN_INVERTING true
#define MIN_HARDWARE_ENDSTOP_Y true
#define ENDSTOP_PULLUP_Z_MIN true
#define ENDSTOP_Z_MIN_INVERTING false
#define MIN_HARDWARE_ENDSTOP_Z true
#define ENDSTOP_PULLUP_X_MAX true
#define ENDSTOP_X_MAX_INVERTING false
#define MAX_HARDWARE_ENDSTOP_X false
#define ENDSTOP_PULLUP_Y_MAX true
#define ENDSTOP_Y_MAX_INVERTING false
#define MAX_HARDWARE_ENDSTOP_Y false
#define ENDSTOP_PULLUP_Z_MAX true
#define ENDSTOP_Z_MAX_INVERTING false
#define MAX_HARDWARE_ENDSTOP_Z false
#define max_software_endstop_r true

#define min_software_endstop_x false
#define min_software_endstop_y false
#define min_software_endstop_z false
#define max_software_endstop_x true
#define max_software_endstop_y true
#define max_software_endstop_z true
#define ENDSTOP_X_BACK_MOVE 5
#define ENDSTOP_Y_BACK_MOVE 5
#define ENDSTOP_Z_BACK_MOVE 2
#define ENDSTOP_X_RETEST_REDUCTION_FACTOR 3
#define ENDSTOP_Y_RETEST_REDUCTION_FACTOR 3
#define ENDSTOP_Z_RETEST_REDUCTION_FACTOR 3
#define ENDSTOP_X_BACK_ON_HOME 1
#define ENDSTOP_Y_BACK_ON_HOME 1
#define ENDSTOP_Z_BACK_ON_HOME 0
#define ALWAYS_CHECK_ENDSTOPS 1

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

#define X_ENABLE_ON 0
#define Y_ENABLE_ON 0
#define Z_ENABLE_ON 0
#define DISABLE_X 0
#define DISABLE_Y 0
#define DISABLE_Z 0
#define DISABLE_E 0
#define INVERT_X_DIR 0
#define INVERT_Y_DIR 1
#define INVERT_Z_DIR 0
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1
#define X_MAX_LENGTH 180
#define Y_MAX_LENGTH 300
#define Z_MAX_LENGTH 200
#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0
#define DISTORTION_CORRECTION 1
#define DISTORTION_CORRECTION_POINTS 5
#define DISTORTION_CORRECTION_R 100
#define DISTORTION_PERMANENT 1
#define DISTORTION_UPDATE_FREQUENCY 15
#define DISTORTION_START_DEGRADE 0.5
#define DISTORTION_END_HEIGHT 1
#define DISTORTION_EXTRAPOLATE_CORNERS 0
#define DISTORTION_XMIN 10
#define DISTORTION_YMIN 20
#define DISTORTION_XMAX 170
#define DISTORTION_YMAX 280

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

#define FEATURE_BABYSTEPPING 1
#define BABYSTEP_MULTIPLICATOR 1

#define DELTA_SEGMENTS_PER_SECOND_PRINT 180 // Move accurate setting for print moves
#define DELTA_SEGMENTS_PER_SECOND_MOVE 70 // Less accurate setting for other moves
#define EXACT_DELTA_MOVES 1

// Delta settings
#define DELTA_HOME_ON_POWER 0

#define DELTASEGMENTS_PER_PRINTLINE 24
#define STEPPER_INACTIVE_TIME 360L
#define MAX_INACTIVE_TIME 0L
#define MAX_FEEDRATE_X 300
#define MAX_FEEDRATE_Y 300
#define MAX_FEEDRATE_Z 3
#define HOMING_FEEDRATE_X 40
#define HOMING_FEEDRATE_Y 40
#define HOMING_FEEDRATE_Z 3
#define HOMING_ORDER HOME_ORDER_XYZ
#define ZHOME_MIN_TEMPERATURE 0
#define ZHOME_HEAT_ALL 1
#define ZHOME_HEAT_HEIGHT 20
#define ZHOME_X_POS 999999
#define ZHOME_Y_POS 999999
#define ENABLE_BACKLASH_COMPENSATION 0
#define X_BACKLASH 0
#define Y_BACKLASH 0
#define Z_BACKLASH 0
#define RAMP_ACCELERATION 1
#define STEPPER_HIGH_DELAY 0
#define DIRECTION_DELAY 0
#define STEP_DOUBLER_FREQUENCY 12000
#define ALLOW_QUADSTEPPING 1
#define DOUBLE_STEP_DELAY 0 // time in microseconds
#define MAX_ACCELERATION_UNITS_PER_SQ_SECOND_X 1000
#define MAX_ACCELERATION_UNITS_PER_SQ_SECOND_Y 1000
#define MAX_ACCELERATION_UNITS_PER_SQ_SECOND_Z 1000
#define MAX_TRAVEL_ACCELERATION_UNITS_PER_SQ_SECOND_X 1000
#define MAX_TRAVEL_ACCELERATION_UNITS_PER_SQ_SECOND_Y 1000
#define MAX_TRAVEL_ACCELERATION_UNITS_PER_SQ_SECOND_Z 100
#define INTERPOLATE_ACCELERATION_WITH_Z 0
#define ACCELERATION_FACTOR_TOP 100
#define MAX_JERK 20
#define MAX_ZJERK 0.3
#define PRINTLINE_CACHE_SIZE 16
#define MOVE_CACHE_LOW 10
#define LOW_TICKS_PER_MOVE 250000
#define EXTRUDER_SWITCH_XY_SPEED 100
#define DUAL_X_AXIS 0
#define FEATURE_TWO_XSTEPPER 0
#define X2_STEP_PIN   ORIG_E1_STEP_PIN
#define X2_DIR_PIN    ORIG_E1_DIR_PIN
#define X2_ENABLE_PIN ORIG_E1_ENABLE_PIN
#define FEATURE_TWO_YSTEPPER 0
#define Y2_STEP_PIN   ORIG_E1_STEP_PIN
#define Y2_DIR_PIN    ORIG_E1_DIR_PIN
#define Y2_ENABLE_PIN ORIG_E1_ENABLE_PIN
#define FEATURE_TWO_ZSTEPPER 0
#define Z2_STEP_PIN   ORIG_E1_STEP_PIN
#define Z2_DIR_PIN    ORIG_E1_DIR_PIN
#define Z2_ENABLE_PIN ORIG_E1_ENABLE_PIN
#define FEATURE_THREE_ZSTEPPER 0
#define Z3_STEP_PIN   ORIG_E2_STEP_PIN
#define Z3_DIR_PIN    ORIG_E2_DIR_PIN
#define Z3_ENABLE_PIN ORIG_E2_ENABLE_PIN
#define FEATURE_DITTO_PRINTING 0
#define USE_ADVANCE 0
#define ENABLE_QUADRATIC_ADVANCE 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 WAITING_IDENTIFIER "wait"
#define ECHO_ON_EXECUTE 1
#define EEPROM_MODE 1
#undef PS_ON_PIN
#define PS_ON_PIN ORIG_PS_ON_PIN
#define JSON_OUTPUT 0

/* ======== Servos =======
Control the servos with
M340 P S   / ServoID = 0..3  pulseInUs = 500..2500
Servos are controlled by a pulse width normally between 500 and 2500 with 1500ms in center position. 0 turns servo off.
WARNING: Servos can draw a considerable amount of current. Make sure your system can handle this or you may risk your hardware!
*/
#define FEATURE_SERVO 0
#define SERVO0_PIN 11
#define SERVO1_PIN -1
#define SERVO2_PIN -1
#define SERVO3_PIN -1
#define SERVO0_NEUTRAL_POS  -1
#define SERVO1_NEUTRAL_POS  -1
#define SERVO2_NEUTRAL_POS  -1
#define SERVO3_NEUTRAL_POS  -1
#define UI_SERVO_CONTROL 0
#define FAN_KICKSTART_TIME  200

        #define FEATURE_WATCHDOG 1

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

#define Z_PROBE_Z_OFFSET 0
#define Z_PROBE_Z_OFFSET_MODE 0
#define UI_BED_COATING 1
#define FEATURE_Z_PROBE 1
#define Z_PROBE_BED_DISTANCE 2
#define Z_PROBE_PIN ORIG_Z_MIN_PIN
#define Z_PROBE_PULLUP 1
#define Z_PROBE_ON_HIGH 0
#define Z_PROBE_X_OFFSET 0
#define Z_PROBE_Y_OFFSET 0
#define Z_PROBE_WAIT_BEFORE_TEST 0
#define Z_PROBE_SPEED 2
#define Z_PROBE_XY_SPEED 130
#define Z_PROBE_SWITCHING_DISTANCE 1
#define Z_PROBE_REPETITIONS 1
#define Z_PROBE_HEIGHT 0
#define Z_PROBE_START_SCRIPT ""
#define Z_PROBE_FINISHED_SCRIPT ""
#define Z_PROBE_REQUIRES_HEATING 1
#define Z_PROBE_MIN_TEMPERATURE 25
#define FEATURE_AUTOLEVEL 1
#define Z_PROBE_X1 10
#define Z_PROBE_Y1 20
#define Z_PROBE_X2 170
#define Z_PROBE_Y2 20
#define Z_PROBE_X3 10
#define Z_PROBE_Y3 280
#define BED_LEVELING_METHOD 0
#define BED_CORRECTION_METHOD 0
#define BED_LEVELING_GRID_SIZE 5
#define BED_LEVELING_REPETITIONS 5
#define BED_MOTOR_1_X 0
#define BED_MOTOR_1_Y 0
#define BED_MOTOR_2_X 200
#define BED_MOTOR_2_Y 0
#define BED_MOTOR_3_X 100
#define BED_MOTOR_3_Y 200
#define BENDING_CORRECTION_A 0
#define BENDING_CORRECTION_B 0
#define BENDING_CORRECTION_C 0
#define FEATURE_AXISCOMP 0
#define AXISCOMP_TANXY 0
#define AXISCOMP_TANYZ 0
#define AXISCOMP_TANXZ 0

#ifndef SDSUPPORT  // Some boards have sd support on board. These define the values already in pins.h
#define SDSUPPORT 0
#undef SDCARDDETECT
#define SDCARDDETECT -1
#define SDCARDDETECTINVERTED 0
#endif
#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 1
#define FEATURE_MEMORY_POSITION 1
#define FEATURE_CHECKSUM_FORCED 0
#define FEATURE_FAN_CONTROL 1
#define FEATURE_FAN2_CONTROL 0
#define FEATURE_CONTROLLER 0
#define ADC_KEYPAD_PIN -1
#define LANGUAGE_EN_ACTIVE 1
#define LANGUAGE_DE_ACTIVE 1
#define LANGUAGE_NL_ACTIVE 0
#define LANGUAGE_PT_ACTIVE 1
#define LANGUAGE_IT_ACTIVE 1
#define LANGUAGE_ES_ACTIVE 1
#define LANGUAGE_FI_ACTIVE 0
#define LANGUAGE_SE_ACTIVE 0
#define LANGUAGE_FR_ACTIVE 1
#define LANGUAGE_CZ_ACTIVE 0
#define LANGUAGE_PL_ACTIVE 1
#define LANGUAGE_TR_ACTIVE 1
#define UI_PRINTER_NAME "RepRap"
#define UI_PRINTER_COMPANY "Home made"
#define UI_PAGES_DURATION 4000
#define UI_ANIMATION 0
#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 1
#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 FEATURE_BEEPER 0
#define CASE_LIGHTS_PIN -1
#define CASE_LIGHT_DEFAULT_ON 1
#define UI_START_SCREEN_DELAY 1000
#define UI_DYNAMIC_ENCODER_SPEED 1
        /**
Beeper sound definitions for short beeps during key actions
and longer beeps for important actions.
Parameter is delay in microseconds and the secons is the number of repetitions.
Values must be in range 1..255
*/
#define BEEPER_SHORT_SEQUENCE 2,2
#define BEEPER_LONG_SEQUENCE 8,8
#define UI_SET_PRESET_HEATED_BED_TEMP_PLA 60
#define UI_SET_PRESET_EXTRUDER_TEMP_PLA   190
#define UI_SET_PRESET_HEATED_BED_TEMP_ABS 110
#define UI_SET_PRESET_EXTRUDER_TEMP_ABS   240
#define UI_SET_MIN_HEATED_BED_TEMP  30
#define UI_SET_MAX_HEATED_BED_TEMP 120
#define UI_SET_MIN_EXTRUDER_TEMP   170
#define UI_SET_MAX_EXTRUDER_TEMP   260
#define UI_SET_EXTRUDER_FEEDRATE 2
#define UI_SET_EXTRUDER_RETRACT_DISTANCE 3


#define NUM_MOTOR_DRIVERS 0



#endif

/* Below you will find the configuration string, that created this Configuration.h

========== Start configuration string ==========
{
    "editMode": 1,
    "processor": 0,
    "baudrate": 115200,
    "bluetoothSerial": -1,
    "bluetoothBaudrate": 115200,
    "xStepsPerMM": 80,
    "yStepsPerMM": 80,
    "zStepsPerMM": 4000,
    "xInvert": 0,
    "xInvertEnable": 0,
    "eepromMode": 1,
    "yInvert": "1",
    "yInvertEnable": 0,
    "zInvert": 0,
    "zInvertEnable": 0,
    "extruder": [
        {
            "id": 0,
            "heatManager": 3,
            "pidDriveMin": 40,
            "pidDriveMax": 230,
            "pidMax": 255,
            "sensorType": 14,
            "sensorPin": "TEMP_0_PIN",
            "heaterPin": "HEATER_0_PIN",
            "maxFeedrate": 150,
            "startFeedrate": 20,
            "invert": "0",
            "invertEnable": "0",
            "acceleration": 1000,
            "watchPeriod": 1,
            "pidP": 7,
            "pidI": 2,
            "pidD": 40,
            "advanceK": 0,
            "advanceL": 0,
            "waitRetractTemp": 150,
            "waitRetractUnits": 0,
            "waitRetract": 0,
            "stepsPerMM": 146,
            "coolerPin": -1,
            "coolerSpeed": 255,
            "selectCommands": "",
            "deselectCommands": "",
            "xOffset": 0,
            "yOffset": 0,
            "zOffset": 0,
            "xOffsetSteps": 0,
            "yOffsetSteps": 0,
            "zOffsetSteps": 0,
            "stepper": {
                "name": "Extruder 0",
                "step": "ORIG_E0_STEP_PIN",
                "dir": "ORIG_E0_DIR_PIN",
                "enable": "ORIG_E0_ENABLE_PIN"
            },
            "advanceBacklashSteps": 0,
            "decoupleTestPeriod": 12,
            "jamPin": -1,
            "jamPullup": "0",
            "mirror": "0",
            "invert2": "0",
            "stepper2": {
                "name": "Extruder 0",
                "step": "ORIG_E0_STEP_PIN",
                "dir": "ORIG_E0_DIR_PIN",
                "enable": "ORIG_E0_ENABLE_PIN"
            }
        }
    ],
    "uiLanguage": 0,
    "uiController": 0,
    "xMinEndstop": 1,
    "yMinEndstop": 1,
    "zMinEndstop": 2,
    "xMaxEndstop": 0,
    "yMaxEndstop": 0,
    "zMaxEndstop": 0,
    "motherboard": 33,
    "driveSystem": 0,
    "xMaxSpeed": 300,
    "xHomingSpeed": 40,
    "xTravelAcceleration": 1000,
    "xPrintAcceleration": 1000,
    "yMaxSpeed": 300,
    "yHomingSpeed": 40,
    "yTravelAcceleration": 1000,
    "yPrintAcceleration": 1000,
    "zMaxSpeed": 3,
    "zHomingSpeed": 3,
    "zTravelAcceleration": 100,
    "zPrintAcceleration": 1000,
    "xMotor": {
        "name": "X motor",
        "step": "ORIG_X_STEP_PIN",
        "dir": "ORIG_X_DIR_PIN",
        "enable": "ORIG_X_ENABLE_PIN"
    },
    "yMotor": {
        "name": "Y motor",
        "step": "ORIG_Y_STEP_PIN",
        "dir": "ORIG_Y_DIR_PIN",
        "enable": "ORIG_Y_ENABLE_PIN"
    },
    "zMotor": {
        "name": "Z motor",
        "step": "ORIG_Z_STEP_PIN",
        "dir": "ORIG_Z_DIR_PIN",
        "enable": "ORIG_Z_ENABLE_PIN"
    },
    "enableBacklash": "0",
    "backlashX": 0,
    "backlashY": 0,
    "backlashZ": 0,
    "stepperInactiveTime": 360,
    "maxInactiveTime": 0,
    "xMinPos": 0,
    "yMinPos": 0,
    "zMinPos": 0,
    "xLength": 180,
    "yLength": 300,
    "zLength": 200,
    "alwaysCheckEndstops": "1",
    "disableX": "0",
    "disableY": "0",
    "disableZ": "0",
    "disableE": "0",
    "xHomeDir": "-1",
    "yHomeDir": "-1",
    "zHomeDir": "-1",
    "xEndstopBack": 1,
    "yEndstopBack": 1,
    "zEndstopBack": 0,
    "deltaSegmentsPerSecondPrint": 180,
    "deltaSegmentsPerSecondTravel": 70,
    "deltaDiagonalRod": 445,
    "deltaHorizontalRadius": 209.25,
    "deltaAlphaA": 210,
    "deltaAlphaB": 330,
    "deltaAlphaC": 90,
    "deltaDiagonalCorrA": 0,
    "deltaDiagonalCorrB": 0,
    "deltaDiagonalCorrC": 0,
    "deltaMaxRadius": 150,
    "deltaFloorSafetyMarginMM": 15,
    "deltaRadiusCorrA": 0,
    "deltaRadiusCorrB": 0,
    "deltaRadiusCorrC": 0,
    "deltaXOffsetSteps": 0,
    "deltaYOffsetSteps": 0,
    "deltaZOffsetSteps": 0,
    "deltaSegmentsPerLine": 24,
    "stepperHighDelay": 0,
    "directionDelay": 0,
    "stepDoublerFrequency": 12000,
    "allowQuadstepping": "1",
    "doubleStepDelay": 0,
    "maxJerk": 20,
    "maxZJerk": 0.3,
    "moveCacheSize": 16,
    "moveCacheLow": 10,
    "lowTicksPerMove": 250000,
    "enablePowerOnStartup": "1",
    "echoOnExecute": "1",
    "sendWaits": "1",
    "ackWithLineNumber": "1",
    "killMethod": 1,
    "useAdvance": "0",
    "useQuadraticAdvance": "0",
    "powerInverting": 0,
    "mirrorX": 0,
    "mirrorXMotor": {
        "name": "Extruder 1",
        "step": "ORIG_E1_STEP_PIN",
        "dir": "ORIG_E1_DIR_PIN",
        "enable": "ORIG_E1_ENABLE_PIN"
    },
    "mirrorY": 0,
    "mirrorYMotor": {
        "name": "Extruder 1",
        "step": "ORIG_E1_STEP_PIN",
        "dir": "ORIG_E1_DIR_PIN",
        "enable": "ORIG_E1_ENABLE_PIN"
    },
    "mirrorZ": "0",
    "mirrorZMotor": {
        "name": "Extruder 1",
        "step": "ORIG_E1_STEP_PIN",
        "dir": "ORIG_E1_DIR_PIN",
        "enable": "ORIG_E1_ENABLE_PIN"
    },
    "mirrorZ3": "0",
    "mirrorZ3Motor": {
        "name": "Extruder 2",
        "step": "ORIG_E2_STEP_PIN",
        "dir": "ORIG_E2_DIR_PIN",
        "enable": "ORIG_E2_ENABLE_PIN"
    },
    "dittoPrinting": "0",
    "featureServos": "0",
    "servo0Pin": 11,
    "servo1Pin": -1,
    "servo2Pin": -1,
    "servo3Pin": -1,
    "featureWatchdog": "1",
    "hasHeatedBed": "1",
    "enableZProbing": "1",
    "extrudeMaxLength": 160,
    "homeOrder": "HOME_ORDER_XYZ",
    "featureController": 0,
    "uiPrinterName": "RepRap",
    "uiPrinterCompany": "Home made",
    "uiPagesDuration": 4000,
    "uiAnimation": "0",
    "uiDisablePageswitch": "1",
    "uiAutoReturnAfter": 30000,
    "featureKeys": "0",
    "uiEncoderSpeed": 1,
    "uiReverseEncoder": "0",
    "uiKeyBouncetime": 10,
    "uiKeyFirstRepeat": 500,
    "uiKeyReduceRepeat": 50,
    "uiKeyMinRepeat": 50,
    "featureBeeper": "0",
    "uiPresetBedTempPLA": 60,
    "uiPresetBedABS": 110,
    "uiPresetExtruderPLA": 190,
    "uiPresetExtruderABS": 240,
    "uiMinHeatedBed": 30,
    "uiMaxHeatedBed": 120,
    "uiMinEtxruderTemp": 170,
    "uiMaxExtruderTemp": 260,
    "uiExtruderFeedrate": 2,
    "uiExtruderRetractDistance": 3,
    "uiSpeeddependentPositioning": "0",
    "maxBedTemperature": 120,
    "bedSensorType": 14,
    "bedSensorPin": "TEMP_1_PIN",
    "bedHeaterPin": "HEATER_1_PIN",
    "bedHeatManager": 0,
    "bedUpdateInterval": 5000,
    "bedPidDriveMin": 80,
    "bedPidDriveMax": 255,
    "bedPidP": 196,
    "bedPidI": 33,
    "bedPidD": 290,
    "bedPidMax": 255,
    "bedDecoupleTestPeriod": 300,
    "caseLightPin": -1,
    "caseLightDefaultOn": "1",
    "bedSkipIfWithin": 3,
    "gen1T0": 25,
    "gen1R0": 100000,
    "gen1Beta": 4036,
    "gen1MinTemp": -20,
    "gen1MaxTemp": 300,
    "gen1R1": 0,
    "gen1R2": 4700,
    "gen2T0": 25,
    "gen2R0": 100000,
    "gen2Beta": 4036,
    "gen2MinTemp": -20,
    "gen2MaxTemp": 300,
    "gen2R1": 0,
    "gen2R2": 4700,
    "gen3T0": 25,
    "gen3R0": 100000,
    "gen3Beta": 4036,
    "gen3MinTemp": -20,
    "gen3MaxTemp": 300,
    "gen3R1": 0,
    "gen3R2": 4700,
    "userTable0": {
        "r1": 0,
        "r2": 4700,
        "temps": [],
        "numEntries": 0
    },
    "userTable1": {
        "r1": 0,
        "r2": 4700,
        "temps": [],
        "numEntries": 0
    },
    "userTable2": {
        "r1": 0,
        "r2": 4700,
        "temps": [],
        "numEntries": 0
    },
    "tempHysteresis": 0,
    "pidControlRange": 20,
    "skipM109Within": 2,
    "extruderFanCoolTemp": 50,
    "minTemp": 25,
    "maxTemp": 320,
    "minDefectTemp": -10,
    "maxDefectTemp": 340,
    "arcSupport": "1",
    "featureMemoryPositionWatchdog": "1",
    "forceChecksum": "0",
    "sdExtendedDir": "1",
    "featureFanControl": "1",
    "fanPin": "ORIG_FAN_PIN",
    "featureFan2Control": "0",
    "fan2Pin": "ORIG_FAN2_PIN",
    "fanThermoPin": -1,
    "fanThermoMinPWM": 128,
    "fanThermoMaxPWM": 255,
    "fanThermoMinTemp": 45,
    "fanThermoMaxTemp": 60,
    "fanThermoThermistorPin": -1,
    "fanThermoThermistorType": 1,
    "scalePidToMax": 0,
    "zProbePin": "ORIG_Z_MIN_PIN",
    "zProbeBedDistance": 2,
    "zProbePullup": "1",
    "zProbeOnHigh": "0",
    "zProbeXOffset": 0,
    "zProbeYOffset": 0,
    "zProbeWaitBeforeTest": "0",
    "zProbeSpeed": 2,
    "zProbeXYSpeed": 130,
    "zProbeHeight": 0,
    "zProbeStartScript": "",
    "zProbeFinishedScript": "",
    "featureAutolevel": "1",
    "zProbeX1": 10,
    "zProbeY1": 20,
    "zProbeX2": 170,
    "zProbeY2": 20,
    "zProbeX3": 10,
    "zProbeY3": 280,
    "zProbeSwitchingDistance": 1,
    "zProbeRepetitions": 1,
    "sdSupport": "0",
    "sdCardDetectPin": -1,
    "sdCardDetectInverted": "0",
    "uiStartScreenDelay": 1000,
    "xEndstopBackMove": 5,
    "yEndstopBackMove": 5,
    "zEndstopBackMove": 2,
    "xEndstopRetestFactor": 3,
    "yEndstopRetestFactor": 3,
    "zEndstopRetestFactor": 3,
    "xMinPin": "ORIG_X_MIN_PIN",
    "yMinPin": "ORIG_Y_MIN_PIN",
    "zMinPin": "ORIG_Z_MIN_PIN",
    "xMaxPin": "ORIG_X_MAX_PIN",
    "yMaxPin": "ORIG_Y_MAX_PIN",
    "zMaxPin": "ORIG_Z_MAX_PIN",
    "deltaHomeOnPower": "0",
    "fanBoardPin": -1,
    "heaterPWMSpeed": 0,
    "featureBabystepping": "1",
    "babystepMultiplicator": 1,
    "pdmForHeater": "0",
    "pdmForCooler": "0",
    "psOn": "ORIG_PS_ON_PIN",
    "mixingExtruder": "0",
    "decouplingTestMaxHoldVariance": 20,
    "decouplingTestMinTempRise": 1,
    "featureAxisComp": "0",
    "axisCompTanXY": 0,
    "axisCompTanXZ": 0,
    "axisCompTanYZ": 0,
    "retractOnPause": 2,
    "pauseStartCommands": "",
    "pauseEndCommands": "",
    "distortionCorrection": "1",
    "distortionCorrectionPoints": 5,
    "distortionCorrectionR": 100,
    "distortionPermanent": "1",
    "distortionUpdateFrequency": 15,
    "distortionStartDegrade": 0.5,
    "distortionEndDegrade": 1,
    "distortionExtrapolateCorners": "0",
    "distortionXMin": 10,
    "distortionXMax": 170,
    "distortionYMin": 20,
    "distortionYMax": 280,
    "sdRunOnStop": "",
    "sdStopHeaterMotorsOnStop": "1",
    "featureRetraction": "1",
    "autoretractEnabled": "0",
    "retractionLength": 3,
    "retractionLongLength": 13,
    "retractionSpeed": 40,
    "retractionZLift": 0,
    "retractionUndoExtraLength": 0,
    "retractionUndoExtraLongLength": 0,
    "retractionUndoSpeed": 20,
    "filamentChangeXPos": 0,
    "filamentChangeYPos": 0,
    "filamentChangeZAdd": 2,
    "filamentChangeRehome": 1,
    "filamentChangeShortRetract": 5,
    "filamentChangeLongRetract": 50,
    "fanKickstart": 200,
    "servo0StartPos": -1,
    "servo1StartPos": -1,
    "servo2StartPos": -1,
    "servo3StartPos": -1,
    "uiDynamicEncoderSpeed": "1",
    "uiServoControl": 0,
    "killIfSensorDefect": "0",
    "jamSteps": 220,
    "jamSlowdownSteps": 320,
    "jamSlowdownTo": 70,
    "jamErrorSteps": 500,
    "jamMinSteps": 10,
    "jamAction": 0,
    "primaryPort": 0,
    "numMotorDrivers": 0,
    "motorDrivers": [
        {
            "t": "None",
            "s": "",
            "invertEnable": "0",
            "invertDirection": "0",
            "stepsPerMM": 100,
            "speed": 10,
            "dirPin": -1,
            "stepPin": -1,
            "enablePin": -1
        },
        {
            "t": "None",
            "s": "",
            "invertEnable": "0",
            "invertDirection": "0",
            "stepsPerMM": 100,
            "speed": 10,
            "dirPin": -1,
            "stepPin": -1,
            "enablePin": -1
        },
        {
            "t": "None",
            "s": "",
            "invertEnable": "0",
            "invertDirection": "0",
            "stepsPerMM": 100,
            "speed": 10,
            "dirPin": -1,
            "stepPin": -1,
            "enablePin": -1
        },
        {
            "t": "None",
            "s": "",
            "invertEnable": "0",
            "invertDirection": "0",
            "stepsPerMM": 100,
            "speed": 10,
            "dirPin": -1,
            "stepPin": -1,
            "enablePin": -1
        },
        {
            "t": "None",
            "s": "",
            "invertEnable": "0",
            "invertDirection": "0",
            "stepsPerMM": 100,
            "speed": 10,
            "dirPin": -1,
            "stepPin": -1,
            "enablePin": -1
        },
        {
            "t": "None",
            "s": "",
            "invertEnable": "0",
            "invertDirection": "0",
            "stepsPerMM": 100,
            "speed": 10,
            "dirPin": -1,
            "stepPin": -1,
            "enablePin": -1
        }
    ],
    "manualConfig": "",
    "zHomeMinTemperature": 0,
    "zHomeXPos": 999999,
    "zHomeYPos": 999999,
    "zHomeHeatHeight": 20,
    "zHomeHeatAll": "1",
    "zProbeZOffsetMode": 0,
    "zProbeZOffset": 0,
    "uiBedCoating": "1",
    "langEN": "1",
    "langDE": "1",
    "langNL": "0",
    "langPT": "1",
    "langIT": "1",
    "langES": "1",
    "langFI": "0",
    "langSE": "0",
    "langFR": "1",
    "langCZ": "0",
    "langPL": "1",
    "langTR": "1",
    "interpolateAccelerationWithZ": 0,
    "accelerationFactorTop": 100,
    "bendingCorrectionA": 0,
    "bendingCorrectionB": 0,
    "bendingCorrectionC": 0,
    "preventZDisableOnStepperTimeout": "0",
    "supportLaser": "0",
    "laserPin": -1,
    "laserOnHigh": "1",
    "defaultPrinterMode": 0,
    "supportCNC": "0",
    "cncWaitOnEnable": 300,
    "cncWaitOnDisable": 0,
    "cncEnablePin": -1,
    "cncEnableWith": "1",
    "cncDirectionPin": -1,
    "cncDirectionCW": "1",
    "startupGCode": "",
    "jsonOutput": "0",
    "bedLevelingMethod": 0,
    "bedCorrectionMethod": 0,
    "bedLevelingGridSize": 5,
    "bedLevelingRepetitions": 5,
    "bedMotor1X": 0,
    "bedMotor1Y": 0,
    "bedMotor2X": 200,
    "bedMotor2Y": 0,
    "bedMotor3X": 100,
    "bedMotor3Y": 200,
    "zProbeRequiresHeating": "1",
    "zProbeMinTemperature": 25,
    "adcKeypadPin": -1,
    "sharedExtruderHeater": "0",
    "extruderSwitchXYSpeed": 100,
    "dualXAxis": "0",
    "hasMAX6675": false,
    "hasMAX31855": false,
    "hasGeneric1": false,
    "hasGeneric2": false,
    "hasGeneric3": false,
    "hasUser0": false,
    "hasUser1": false,
    "hasUser2": false,
    "numExtruder": 1,
    "version": 92.9,
    "primaryPortName": ""
}
========== End configuration string ==========

*/

Gruß, elton

1-mal bearbeitet. Zuletzt am 02.04.16 07:56.
Re: Ordbot Hadron Autoleveling - meine Lösung
16. June 2016 05:59
Das mit dem Drucksensor und/oder Mikroschalter ist ja eine gute Idee aber aus meiner Sicht total überlüssig. Mein Hotend (E3D) ist sowieso auf der Z-Achse "federnd gelagert" - das heisst es kann sich bei Berührüngen mit dem Bett oder auch mit dem Printobjekt gegen eine einstellbare Federkraft um etwa 1mm nach oben bewegen. (Ich benötige dieses weil ich auch große Objekte mit einer 0.8mm Düse drucke mit 0.3-0,4mm Schichtstärke - Wer schon mal in dieser Auflösung gedruckt hat weiss, das da öfter mal die Düse über das bereits gedruckte Material "rubbelt" und die einzige Rettung vor Schrittverlusten, nur das Ausweichen nach oben ist)
Es wäre somit keine große Anstrengung, einen Kontakt zu setzen, der beim aufsetzen der Düse und somit beim geringstem anheben des Hoetnds öffnet !!!! und nicht schließt - also kein Mikroschalter - einfach nur ein Kontakt !!!

Mein Problem liegt aber in der weiteren Umsetzung ! Was mache ich mit dem Signal ? - ich würde gerne mit 2 oder sogar auch 3 Servomotoren mein Bett ausrichten. Ein "Autobett leveling" über Software kommt für mich nicht in Frage - Bei Repetier ist das ja noch in etwa beschrieben bei Marlin aber leider garnicht und ich habe Marlin.

Verstanden habe ich, das ich dieses Signal als "Z-Probe" setzen könnte - aber was passiert dann damit ?...... ok die Z-Achse fährt hoch gegen Z-MIN....dann zu Z-Probe - wenn ich nur 2 Servos unterm Bett habe müsste sie sich dann ja die Position schon mal merken......dann das Hotend zum Nächsten Punkt - hier könnte ja ein Servo unterm Bett sitzen..... aber wer dreht jetzt an dem Servo...oder fährt die Z-Achse gegen Z-Probe..... und dann wird am Servo gedreht ?

Mir ist das alles nicht klar - kann mir da mal jemand bitte helfen ?

1-mal bearbeitet. Zuletzt am 16.06.16 06:00.
Re: Ordbot Hadron Autoleveling - meine Lösung
16. June 2016 08:06
Moin moin aus HU.
Bei mir ist das Hotend auch federnd gelagert. Habe dazu einnen Schlitten konstruiert, der auf der Basisplatte des Pruse hochrutscht. An die Basisplatte habe ich einen induktiver Sensor befestigt und am Hotendschlitten Kupferfolie geklebt. Bem ABL wrd jetzt das HE etwas hochgedrückt, bis der Sensor auslöst. Das macht er an drei Ecken und die Höhe stimmt. Ich muss nur einmal Z-probe height einstellen. Nun kann ich alle Düsenlängen und größen fahren, ohne den Wert neu zu messen.


Liebe Grüße aus Kaltenkirchen.
Frithjof
Meine Seite
[www.facebook.com]
Re: Ordbot Hadron Autoleveling - meine Lösung
16. June 2016 09:16
Warum machst du dir das Leben so schwer ? - warum so ein riesiger Sensor der nicht einmal sofort anspricht ? Dein Hotentschlitten liegt doch sowieso an einer Stelle auf der Basisplatte auf - hier setzt du einfach einen Kontakt der sich sofort öffnet wenn die Düse was am Bett berührt....

Ich bin aber jetzt noch nicht weiter gekommen......wie bitte stellt du dein bett auf die richtige Höhe ?........klingt bei Dir auch mehr nach einer "Softwarelösung" die für den Ausgleich sorgt - das geht bei mir leider nicht - habe sowieso schon Probleme mit dem Board und der Geschwindichkeit - wenn jetzt noch der Z-Achsen-Ausgleich dazu kommt ist Ende mit dem Prozessor und es ruckelt.

1-mal bearbeitet. Zuletzt am 16.06.16 09:22.
Re: Ordbot Hadron Autoleveling - meine Lösung
16. June 2016 12:05
Moin moin aus HU.
Das mit dem Kontakt ist immer so eine Sache. Wenn der verdreckt, geht was kaputt. Bisher funktionierte das mit dem Sensor prima.

Ich werde den Sensor allerdings demnächst gegen einen Drucksensor tauschen. Dafür muss ich allerdings noch eine Elektronik entwickeln. Das passiert aber im Zuge der Umrüstung meones großen Druckers zur Fräse. Da will ich auch seitwärts noch Sensoren einbauen.


Liebe Grüße aus Kaltenkirchen.
Frithjof
Meine Seite
[www.facebook.com]
Re: Ordbot Hadron Autoleveling - meine Lösung
16. June 2016 12:15
Hallo Fridi,

wenn der Kontakt als öffner ausgelegt ist dann passiert da garnix!
Sollte er mal verdreckt sein könnte es nur sein, dass er nicht mehr schließt und dann fährt die Z-Achse nicht mehr auf den Tisch!

LG

Wolfgang
Re: Ordbot Hadron Autoleveling - meine Lösung
16. June 2016 15:50
genau....aber wie bitte bekomme ich das jetzt auf meine servomotoren um das bett zu verstellen ? ....... ich habe keine idee in welcher reihenfolge das mit dem verstellen passieren soll. hat so etwas noch noie jemand gemacht ?

1-mal bearbeitet. Zuletzt am 16.06.16 15:59.
Re: Ordbot Hadron Autoleveling - meine Lösung
16. June 2016 16:18
Warum einfach, wenn es auch kompliziert geht? @ Wolfgang, mit einem FSR brauchst Du wirklich nur einen 74xx14 und einen Widerstand, um das Signal zu erzeugen. Die Schaltung hab ich entweder hier oder in der Themennachbarschaft ja mal hingekrickelt. Notfalls such ich sie nochmal raus.

@ Jansinger: wie aufwendig willst Du es denn noch machen? Den Tisch mit Servos verstellen, das ist doch nun wirklich ganz unnötig, zumal Du Marlin hast. Hab ich auch, da ist das Autoleveling doch schon komplett vorgekaut, man muß es nur aktivieren, ein paar Parameter setzen - es ist auch sehr gut dokumentiert, sonst wäre ich da gar nicht rangegangen. Warum verstellt denn niemand seinen Tisch mit Servos? Weil es nicht zweckmäßig ist.

Ich hab neulich das erste Mal Taulmann 618 verarbeitet. Nach einigen Versuchen stellte sich heraus, daß das wirklich gut nur auf angerauhtem Hartpapier (Pertinax & Co) haftet, und das ab ca. 95°C. Dann aber wirklich gut. Glasplatte durch Hartpapier ersetzt, das lag etwas krumm nach dem Erwärmen, auf einer Seite fester angeklemmt als auf der anderen, machte nichts, Autoleveling sorgte für beste Verhältnisse. Genauso nach Düsentausch, Änderungen in der Tischgeometrie, allen möglichen Frickeleien - wobei X-Achse und Tisch oft genug nicht mehr sauber ausgerichtet waren. Scheet di wat, Autolevel, und gut ist.

Der einzige Bereicht, wo Auto-bedleveling wirklich noch problematisch ist, ist bei Zwei- oder mehr Düsen-Hotends. Aber auch da gibt es genug Möglichkeiten. Stichwort Düsenwippe oder Revolverkopf wie beim Mikroskop.

Gruß,
U.
Re: Ordbot Hadron Autoleveling - meine Lösung
16. June 2016 16:32
So eine Justierfunktion hat schon mal jemand gemacht allerdings ist die wohl in das normale autoleveling eingebaut.
Es weiß bestimmt hier jemand wo das zu finden ist, ich kann es nicht sagen.
Mir ist absolut klar wie du dir das vom Ablauf vorstellst.
1. Die Justierung des Druckbetts ist eine eigene Funktion die unabhängig vom normalen bedleveling der FW ausgeführt werden kann.
2. bei jedem Druckstart fährt die Z-Achse nur einmal über die "Schaltfunktion an der Düse" auf 0

So in der Art hatte ich mir das auch schon mal überlegt.
Servomotoren für die Verstellung ist sicher nicht optimal. Das würde man besser mit kleinen Schrittmotoren machen.
Jeder Stepper braucht natürlich eine eigene Endstufe.
Will man diese Funktion einbauen so gibt es aus meiner Sicht drei Möglichkeiten:
1. es gibt dafür eine neue Procedure in der FW was schon gewisse Programmierkenntnisse voraussetzt
2. man steuert die Stepper mit einem zusätzlichen Controller an.
Das hört sich jetzt zunächst mal aufwändig an, ist es aber nicht.
Das Problem dabei sind nicht die drei Stepper am Tisch sondern du musst ja auch noch die X,Y,Z-Achse der Maschine verfahren.
Man müsste dazu externe Takt und Richtungssignale auf die Treiber des boards legen können.
3. wenn das board 7 Stepper ansteuern kann dann kann es vermutlich allein mit den Druckerbefehlen als script realisiert werden.
Problem ist nur, dass die boards (z.B. das RADDS-Board) nur 6 Motoren ansteuern kann.
Man bräuchte aber mindestens x,y,z-Achse, Extruder + die drei Motoren für den Tisch!

LG

Wolfgang
Re: Ordbot Hadron Autoleveling - meine Lösung
16. June 2016 16:41
@Chattermark
Quote
Warum einfach, wenn es auch kompliziert geht? @ Wolfgang, mit einem FSR brauchst Du wirklich nur einen 74xx14 und einen Widerstand, um das Signal zu erzeugen. Die Schaltung hab ich entweder hier oder in der Themennachbarschaft ja mal hingekrickelt. Notfalls such ich sie nochmal raus.
Die Frage war zwar nicht von mir aber aus meiner Sicht gibt es keinen Grund einen FSR + Elektronik zu verwenden wenn es genauso gut ohne geht!
Ich habe auch schon mit FSR getestet und keinen Vorteil zum einfachen Kontakt feststellen können.
Was will man mehr als eine Genauigkeit von 0,01mm???

LG

Wolfgang
Re: Ordbot Hadron Autoleveling - meine Lösung
16. June 2016 17:05
There are many ways to skin a cat. Mich motivierte die elegante Einstellbarkeit der Auslösekraft, der inhärente Schutz gegen Kontaktoxidation, und die < 1.00 Euro für die "Elektronik" tun mir nicht sonderlich weh. Der FSR kostet ein paar Taler, am besten verdient daran dann immer noch DHL, aber sei's drum.
Aber natürlich geht es auch anders, wie man sieht. Mal besser, mal weniger gut. Es gibt auch Lösungen mit Piezo-Kristallen, da bin ich noch am Rumprobieren. Dann allerdings teils mit erheblich mehr Elektronik. Ich bin nun aber seit rund 50 Jahren auch hardware-affin, daher steht mir das nicht im Weg.

Gruß,
U.
Re: Ordbot Hadron Autoleveling - meine Lösung
16. June 2016 17:41
Bei meinen Geschwindichkeiten und einer Druckbettgröße von 350x350 kann ich keine tanzende Z-achse gebrauchen. Das macht mein Rumba nicht mehr mit. Dann müste ich sowieso auf Reperier umsteigen und ein schnelleres
Board nehmen. Ich werde es noch einmal testen aber ich denke nicht das ich damit über 200mm/sec drucken kann. Habe lange gebaucht, um einen Drucker zu bauen der ohne Probleme auf ein riesiges Druckbett mit wirklichen 300mm/sec drucken kann. Die Z-Achse braucht 7000 Schritte pro mm und das dann hin und zurück über´s Druckbett...... wie gesagt - das Rumba kommt jetzt schon nicht mehr wirklich mit......und die Stellmotoren am Bett wären das kleinste Problem...
...und das mit dem Drucksensor habe ich immer noch nicht wirklich verstanden - auch wenn ich sehr lange überlege sehe ich in dem Ding keinen Vorteil. Einem spitzer Nagel und ein Stück Alufolie hat den gleichen Effekt ;-)

2-mal bearbeitet. Zuletzt am 16.06.16 17:57.
Re: Ordbot Hadron Autoleveling - meine Lösung
16. June 2016 17:57
Quote
Jansinger
...Die Z-Achse braucht 7000 Schritte pro mm ...

140 nm pro Schritt - mit welcher Mechanik löst Du das denn auf?
Re: Ordbot Hadron Autoleveling - meine Lösung
16. June 2016 18:02
8x1.0 Spindel, 1,8er Schrittwinkel, 32 Microschritte ....ok, sind nicht ganz 7000 ( =6400)
Re: Ordbot Hadron Autoleveling - meine Lösung
16. June 2016 18:43
Quote
Jansinger
..
...und das mit dem Drucksensor habe ich immer noch nicht wirklich verstanden - auch wenn ich sehr lange überlege sehe ich in dem Ding keinen Vorteil. Einem spitzer Nagel und ein Stück Alufolie hat den gleichen Effekt ;-)

Da geb ich dir sowas von Recht!smileys with beer

Ich war anfangs auch sehr angetan von Chattermarks System und habe das zu adaptieren versucht. Mit sehr mäßigem Erfolg. Die Drucksensoren müssen halt elektronisch und mechanisch justiert werden. Ein simpler Öffner-Kontakt braucht: NIX. Und macht auch nix kaputt, weil er gar nicht homed, wenn er nicht funktioniert (also offen ist).

ich habe eine ähnliche Konfiguration wie Wolfgang seit ein paar Wochen am Laufen und bin sehr angetan!

Gruß
Stefan
Re: Ordbot Hadron Autoleveling - meine Lösung
16. June 2016 18:55
Moin moin aus HU.
Ja stimmt, mit dem Öffner macht man nichts kaputt.Leider kann ich Spiel bei der Fräse nicht gebrauchen.


Liebe Grüße aus Kaltenkirchen.
Frithjof
Meine Seite
[www.facebook.com]
Re: Ordbot Hadron Autoleveling - meine Lösung
17. June 2016 04:27
Für eine Fräse ist das nichts, klar. Aber da gibt es ja auch andere Lösungen - und Anforderungen.

Gruß,
U.
Re: Ordbot Hadron Autoleveling - meine Lösung
17. June 2016 05:52
Sorry, ich verstehe immer noch nicht, wozu Du 6400 Schritte für einen Millimeter in Z brauchst. Warum 32 Mikroschritte? Welche Feingewindespindel weist denn die entsprechende Obeflächenqualität und vor allem Linearität über einen größeren Bereich auf, daß das sinnvoll wäre? Was ver- oder bearbeitest Du denn mit dem Gerät?
Re: Ordbot Hadron Autoleveling - meine Lösung
17. June 2016 06:04
Quote
chattermark
Sorry, ich verstehe immer noch nicht, wozu Du 6400 Schritte für einen Millimeter in Z brauchst. Warum 32 Mikroschritte? Welche Feingewindespindel weist denn die entsprechende Obeflächenqualität und vor allem Linearität über einen größeren Bereich auf, daß das sinnvoll wäre? Was ver- oder bearbeitest Du denn mit dem Gerät?
Regelmäßig werden 8000 Schritte benötigt bei einer M5 Stange. So beim Prusa I3.


Liebe Grüße aus Kaltenkirchen.
Frithjof
Meine Seite
[www.facebook.com]
Re: Ordbot Hadron Autoleveling - meine Lösung
17. June 2016 07:36
hi,
die Schritte haben sich bei Jansinger halt einfach so ergeben durch die Steigung und die 32er Treiber. Theoretisch könnte er auch Vollschritt fahren auf der Z-Achse (0,05mm/Schritt). Aber wozu? Bei der Z-Achse entsteht dadurch kein anderer Rechenaufwand.

Fridi,
bei der Fräse funktioniert das mit FSR dann aber auch nicht.

Beim aktuellen Stand meiner Lösung habe ich eine leichte Vorspannung durch ein gedrucktes Gelenk. Zusätzlich wird das Hotend noch durch einen Permanent-Haltemagneten fixiert. Die Magnetiesierung schalte ich beim Homing ab, so dass ein ganz leichtes Aufsetzen genügt. Sabberndes Filament wird gerade so plattgedrückt.

Nur den Kontakt muss ich noch verbessern - der besteht momentan aus 2 Schrauben grinning smiley

Gruß
Stefan
Re: Ordbot Hadron Autoleveling - meine Lösung
18. June 2016 06:57
Quote
Jansinger
Bei meinen Geschwindichkeiten und einer Druckbettgröße von 350x350 kann ich keine tanzende Z-achse gebrauchen. Das macht mein Rumba nicht mehr mit. Dann müste ich sowieso auf Reperier umsteigen und ein schnelleres
Board nehmen. Ich werde es noch einmal testen aber ich denke nicht das ich damit über 200mm/sec drucken kann. Habe lange gebaucht, um einen Drucker zu bauen der ohne Probleme auf ein riesiges Druckbett mit wirklichen 300mm/sec drucken kann. Die Z-Achse braucht 7000 Schritte pro mm und das dann hin und zurück über´s Druckbett...... wie gesagt - das Rumba kommt jetzt schon nicht mehr wirklich mit......und die Stellmotoren am Bett wären das kleinste Problem...
...und das mit dem Drucksensor habe ich immer noch nicht wirklich verstanden - auch wenn ich sehr lange überlege sehe ich in dem Ding keinen Vorteil. Einem spitzer Nagel und ein Stück Alufolie hat den gleichen Effekt ;-)

Hallo Jansinger,

mich würden ein paar Fotos von deinem Drucker interessieren mit dem du mit 300mm/s drucken kannst!
Mit welchem Filament, Hotend und mit welchem Druckergebnis!smoking smiley

LG

Wolfgang
In diesem Forum dürfen leider nur registrierte Teilnehmer schreiben.

Klicke hier, um Dich einzuloggen