Willkommen! Anmelden Ein neues Profil erzeugen

Erweiterte Suche

Auto Bed Leveling Prusa i3 Hephestos

geschrieben von Marc1993 
Auto Bed Leveling Prusa i3 Hephestos
15. February 2016 13:46
Hallo Leute,

ich habe mir nun einen Prusa i3 hephestos gegönnt. Mein erster 3D Drucker.thumbs up
Soweit klappt alles wunderbar. Nur möchte ich das Auto Bed Leveling nutzen.

Den Kapazitiven Sensor habe ich montiert und angeschlossen. Der Drucker erkennt den Schaltkontakt. Soweit alles gut thumbs up

Was nicht funktioniert ist das umstellen der Firmware. Da habe ich 2 Probleme.
Die Firmware nehme ich von: [github.com] <- hier.

Kompilieren will ich unter Linux.
Wenn ich bloß das
#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)
auskommentiere macht er 3 Messpunkte. Soweit so gut.
Ich will aber 4 Messpunkte. Also kommentiere ich noch
#define AUTO_BED_LEVELING_GRID
aus.

Aber dann:

  CXX   qr_solve.cpp
  CXX   ConfigurationStore.cpp
  CXX   Action.cpp
  CXX   GuiAction.cpp
GuiAction.cpp: In function 'void action_level_plate()':
GuiAction.cpp:144:21: error: 'ABL_MANUAL_PT_1_X' was not declared in this scope
    target[X_AXIS] = ABL_MANUAL_PT_1_X;
                     ^
GuiAction.cpp:145:21: error: 'ABL_MANUAL_PT_1_Y' was not declared in this scope
    target[Y_AXIS] = ABL_MANUAL_PT_1_Y;
                     ^
GuiAction.cpp:169:21: error: 'ABL_MANUAL_PT_2_X' was not declared in this scope
    target[X_AXIS] = ABL_MANUAL_PT_2_X;
                     ^
GuiAction.cpp:170:21: error: 'ABL_MANUAL_PT_2_Y' was not declared in this scope
    target[Y_AXIS] = ABL_MANUAL_PT_2_Y;
                     ^
GuiAction.cpp:194:21: error: 'ABL_MANUAL_PT_3_X' was not declared in this scope
    target[X_AXIS] = ABL_MANUAL_PT_3_X;
                     ^
GuiAction.cpp:195:21: error: 'ABL_MANUAL_PT_3_Y' was not declared in this scope
    target[Y_AXIS] = ABL_MANUAL_PT_3_Y;
                     ^
GuiAction.cpp: In function 'void set_bed_level_equation_3pts(float, float, float)':
GuiAction.cpp:261:29: error: 'ABL_PROBE_PT_1_X' was not declared in this scope
     vector_3 pt1 = vector_3(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, z_at_pt_1);
                             ^
GuiAction.cpp:261:47: error: 'ABL_PROBE_PT_1_Y' was not declared in this scope
     vector_3 pt1 = vector_3(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, z_at_pt_1);
                                               ^
GuiAction.cpp:262:29: error: 'ABL_PROBE_PT_2_X' was not declared in this scope
     vector_3 pt2 = vector_3(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, z_at_pt_2);
                             ^
GuiAction.cpp:262:47: error: 'ABL_PROBE_PT_2_Y' was not declared in this scope
     vector_3 pt2 = vector_3(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, z_at_pt_2);
                                               ^
GuiAction.cpp:263:29: error: 'ABL_PROBE_PT_3_X' was not declared in this scope
     vector_3 pt3 = vector_3(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, z_at_pt_3);
                             ^
GuiAction.cpp:263:47: error: 'ABL_PROBE_PT_3_Y' was not declared in this scope
     vector_3 pt3 = vector_3(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, z_at_pt_3);
                                               ^
GuiAction.cpp: In function 'void action_get_plane()':
GuiAction.cpp:403:136: error: 'qr_solve' was not declared in this scope
   double *plane_equation_coefficients = qr_solve(AUTO_BED_LEVELING_GRID_POINTS*AUTO_BED_LEVELING_GRID_POINTS, 3, eqnAMatrix, eqnBVector);
                                                                                                                                        ^
GuiAction.cpp:413:57: error: 'set_bed_level_equation_lsq' was not declared in this scope
   set_bed_level_equation_lsq(plane_equation_coefficients);
                                                         ^
GuiAction.cpp: In function 'void action_offset()':
GuiAction.cpp:845:29: error: 'ABL_PROBE_PT_1_X' was not declared in this scope
  float z_at_pt_1 = probe_pt(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, Z_RAISE_BEFORE_PROBING);
                             ^
GuiAction.cpp:845:47: error: 'ABL_PROBE_PT_1_Y' was not declared in this scope
  float z_at_pt_1 = probe_pt(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, Z_RAISE_BEFORE_PROBING);
                                               ^
GuiAction.cpp:847:29: error: 'ABL_PROBE_PT_2_X' was not declared in this scope
  float z_at_pt_2 = probe_pt(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS);
                             ^
GuiAction.cpp:847:47: error: 'ABL_PROBE_PT_2_Y' was not declared in this scope
  float z_at_pt_2 = probe_pt(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS);
                                               ^
GuiAction.cpp:849:29: error: 'ABL_PROBE_PT_3_X' was not declared in this scope
  float z_at_pt_3 = probe_pt(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS);
                             ^
GuiAction.cpp:849:47: error: 'ABL_PROBE_PT_3_Y' was not declared in this scope
  float z_at_pt_3 = probe_pt(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS);
                                               ^
Makefile:385: recipe for target 'bin/GuiAction.o' failed
make: *** [bin/GuiAction.o] Error 1


Zweites Problem:

Der Drucker nimmt die bitte des Druckbettes als 0 Position. Das will ich auch wieder so haben wie in der Originalfirmware.

Danke schon mal smiling bouncing smiley
Re: Auto Bed Leveling Prusa i3 Hephestos
16. February 2016 02:29
Lade dir halt ne neue, aktuelle Version runter.....und passe die an.
Die verlinkte ist schon etwas älter....


[www.facebook.com]

Power is nothing.....without control!
Re: Auto Bed Leveling Prusa i3 Hephestos
16. February 2016 03:07
Die Hephestos-Leute haben ihre Version stark modifiziert. Keine Ahnung was die da alles geändert haben. Ich würde da auf der github-Seite einmal nachfragen.


Triffid Hunter's Calibration Guide --> X <-- Drill for new Monitor Most important Gcode.
Re: Auto Bed Leveling Prusa i3 Hephestos
16. February 2016 11:47
Danke für eure Antworten. Hier im Forum liest man ja das viele AutoBed leveling wieder rausschmeißen.
Ich lass es dann auch einfach sein. Beim versuch ist bereits der Halter für den Z-Endstop gebrochen. Werde nicht noch mehr kaputt machen angry smiley
Jetzt heißt es erst einmal Ersatzteile anfertigen sad smiley
Re: Auto Bed Leveling Prusa i3 Hephestos
21. August 2016 16:01
Mit Marlin 2.3.1 funktioniert die Option AUTO_BED_LEVELING_GRID leider nicht.

Aber "3-point mode" liefert bei mir gute Ergebnisse. Dazu muß man trotzdem einige Anpassungen vornehmen:

Zunächst in der Configuration.h

Je nach eingesetztem Sensor (z.B. bei LJ18A3-8-Z/BY PNP NO) :
const bool Z_MIN_ENDSTOP_INVERTING = false;
Aktivierung von AUTO BED LEVELING:
#define ENABLE_AUTO_BED_LEVELING
Messpunkte und Sensor Offset
#define ABL_PROBE_PT_1_X X_MIN_POS + 15
#define ABL_PROBE_PT_1_Y Y_MIN_POS + 15
#define ABL_PROBE_PT_2_X X_MAX_POS - 40
#define ABL_PROBE_PT_2_Y Y_MIN_POS + 15
#define ABL_PROBE_PT_3_X (ABL_PROBE_PT_1_X+ABL_PROBE_PT_2_X)/2
#define ABL_PROBE_PT_3_Y Y_MAX_POS - 20 + Y_PROBE_OFFSET_FROM_EXTRUDER

#define X_PROBE_OFFSET_FROM_EXTRUDER 0
#define Y_PROBE_OFFSET_FROM_EXTRUDER -70
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0
Diese Werte sollten entsprechend der Position vom Sensor zur Düse angepasst werden ... In meinem Beispiel ist der Sensor 7cm (also auf der Y-Achse) hinter der Düse montiert.
Daher brauche ich bei den zwei vorderen Messpunkte keine großes Veränderungen - ich rücke Minimal den Sensor nur etwas Richtung Mitte (links 15mm und rechts 40mm).
Der hintere Messpunkt liegt auf der X-Achse zwischen de beiden ersten Messpunkten - und auf der Y-Achse 20mm vom Rand Richtung Mitte plus die 70mm Delta von Sensor zur Düse - sonst würde der Sensor ins Leere messen.

Falls der Sensor vor der Düse oder seitlich versetzt montiert ist - müssen die Messpunkte entsprechend angepasst werden.

Homing-Position
#define Z_SAFE_HOMING_X_POINT 0
#define Z_SAFE_HOMING_Y_POINT 0
Unbedingt aufpassen, dass Düse bzw. Sensor beim Homing nicht irgendwo (z.B. an den Klammern) hängen bleibt!

In der Configuration_adv.h muß noch folgendes aktiviert werden
#define ENDSTOPS_ONLY_FOR_HOMING
Sonst lässt sich Z-Achse (für die Düse) im Kernel (mit M851) nicht nachjustieren. Marlin stoppt die Z-Bewegung beim Trigger - die Düse sitzt aber höher als der die Höhe wo der Sensor auslöst - daher muß es möglich sein den Kopf auch dann abzusenken, auch wenn der Sensor ausgelöst hat.

Bei den Testläufen aufpassen, dass der Sensor bei Druckbett auch auslöst - sonst knallt die Düse gegen das Glas ...

Justierung...
G28 ; HOMING
G29 ; AUTOLEVEL
Druckkopf sollte dabei während bzw. nach keinem der Aktionen auf dem Druckbett aufliegen ...

Anschließend Druckkopf absenken - und Blatttest machen ...
G1 Z0
Wenn der Druckkopf zu hoch ist ... z.B. 0.5mm zu hoch ... die Nachjustierung mit M851 vornehmen - und Leveling Vorgang wiederholen, bis es passt ...
M851 Z-.5
Vorsichtig an dem optimalen Wert rantasten ... Druckkopf sollte eigentlich nie zu nieder sein - würde ja bedeuten, dass der Druckkopf auf dem Glas aufsetzt - wäre nicht gesund - in diesem Fall müsste man einen Positiven Wert für M851 einsetzten. cool smiley

Wenn die Justierung passt - dann die Werte mit M500 ins EEPROM speichern
M500
Eine Nachjustierung sollte im Betrieb normalerweise nicht notwendig sein, sofern am Sensor bzw Düse nichts verändert wird.

Als letztes noch gcode-start sequenz anpassen... z.B.
G21 ;metric values
G90 ;absolute positioning
M82 ;set extruder to absolute mode
M107 ;start with the fan off
G28 X0 Y0 ;move X/Y to min endstops
G28 Z0 ;move Z to min endstops
G1 Z15.0 F9000 ;move the platform down 15mm
G92 E0 ;zero the extruded length
G1 F200 E3 ;extrude 3mm of feed stock
G92 E0 ;zero the extruded length again
G1 F9000 ; Put printing message on LCD screen
M 117 Printing...
... und drucken.

Viel Spaß
Re: Auto Bed Leveling Prusa i3 Hephestos
17. September 2016 13:04
Bei der 2.3.1 für den Hephestos gibt es ja auch ein Problem mit den Servo-Einstellungen. Mir ist es bislang nicht gelungen, das ABL mit Servo (oder Bltouch) in die 2.3.1 zu integrieren. Es kommt folgende Fehlermeldung:
...
Marlin_main.cpp:.text._GLOBAL__sub_I_card+0x2e): undefined reference to `Servo:
Servo()'
Marlin_main.cpp:.text._GLOBAL__sub_I_card+0x36): undefined reference to `Servo:
Servo()'
Marlin_main.cpp:.text._GLOBAL__sub_I_card+0x3e): undefined reference to `Servo:
Servo()'
collect2.exe: error: ld returned 1 exit status
make: *** [bin/Marlin.elf] Fehler 1
" RMDIR bin/"
" RM .config_mach"
" RM .config_lang"

Ist hier schon jemand weiter gekommen?

2-mal bearbeitet. Zuletzt am 17.09.16 13:07.
In diesem Forum dürfen leider nur registrierte Teilnehmer schreiben.

Klicke hier, um Dich einzuloggen