schon seit einiger Zeit bastele ich an einer eigenen Firmware-Modifikation, da ich wenig Zeit hatte, bin ich aber nur sehr langsam voran gekommen. Nun scheint mir der Zeitpunkt gekommen zu sein, meine Entwicklung mit euch zu teilen. Die modifizierte Firmware kann unmittelbar vor dem Druck den Abstand zwischen Extruder und Heizbett durch Scannen eines einzelnen Messpunktes der Heat Bed Matrix kalibrieren.
Benutzungsanleitung:
Dazu habe ich einen neuen Befehl eingeführt: M3900. Dieser Befehl hat keine Parameter und ersetzt im Prinzip das Homen. Der Befehl sollte natürlich idealerweise nach dem Aufheizen ausgeführt werden, da sich der Extruder ja in der Länge verändert, wenn er heiß ist.
Wird der Befehl ausgeführt, werden zunächst alle Achesen gehomed, die Z-Kompensation ausgeschaltet (sofern sie an ist) und die erste Position des Head Bed Scans angefahren. An dieser Stelle wird wie beim Head Bed Scan gescannt (nur mit erhöhten Grenzwerten für den Druck, da typischerweise ja Filament eingelegt sein wird, was den Scan andernfalls unzuverlässig macht). Das Ergebnis wird mit dem Wert in der Matrix verglichen und die Matrix entsprechend um die Differenz korrigiert. Die so geänderte Matrix wird nicht im EEPROM abgelegt, so dass diese Korrektur nach einem Neustart verloren geht.
Es gibt einige Konfigurations-Parameter in der Datei RF1000.h (unter "configuration for the head bet offset search (M3900 command)"), die die Funktionsweise des Befehls beeinflussen:
- SEARCH_HEAT_BED_OFFSET_CONTACT_PRESSURE_DELTA, SEARCH_HEAT_BED_OFFSET_RETRY_PRESSURE_DELTA und SEARCH_HEAT_BED_OFFSET_IDLE_PRESSURE_DELTA stellen die Kraft ein, die die Dehnungsmessstreifen beim Scan messen (analog zu den entsprechenden Parametern von Heatbedscan).
- SEARCH_HEAT_BED_OFFSET_SCAN_POSITION_INDEX_X und SEARCH_HEAT_BED_OFFSET_SCAN_POSITION_INDEX_Y definieren den Index des Messpunktes aus dem Heatbedscan, an dem der Offset gescannt wird. Der Index zählt von 1 an, wenn also beides auf 1 gesetzt wird, wird der Scan vorne links durchgeführt.
- SEARCH_HEAT_BED_OFFSET_RETRACT_BEFORE_SCAN ist aktuell ungenutzt (das Feature funktioniert nicht und wurde deaktiviert)
- SEARCH_HEAT_BED_OFFSET_SCAN_ITERATIONS legt die Zahl der Messwiederholungen fest. Der größte gemessene Offset wird verwendet.
Warnung / Wichtiger Hinweis / Haftungsausschluss:
Ausprobieren der Firmware erfolgt auf eigene Gefahr! Weder ich noch Conrad können und werden für eventuelle Schäden an eurem Drucker haften! Conrad ist an dieser Entwicklung vollkommen unbeteiligt, und ich stelle diese Firmware so zur Verfügung, wie sie ist - ohne Garantien etc. Unbedingt solltet ihr zu aller erst die neue Funktion genauestens mit eurem Drucker und in eurem üblichen Arbeitsablauf testen. Ich habe solche Tests bisher nur unzureichend durchführen können, weshalb es zu Fehlverhalten kommen kann! Diese Firmware richtet sich erstmal an experimentierfreudige Experten, die das nötige Wissen haben, wie man solche Tests sicher durchführt!
Wer ganz sicher gehen möchte, selbst am Code etwas verändert hat oder Probleme beobachtet, kann mit folgender Methode einen sicheren Test durchführen, ohne Hardwareschäden zu riskieren:
Bitte beachtet folgende bekannte Probleme:
- Im Falle eines Scan-Abbruchs wird der Druck nicht abgebrochen. Mir ist aktuell noch unklar, wie man das realisieren könnte (ohne den Drucker komplett einzufrieren, dass er einen Hardware-Reset braucht)
- Der Mod ist nur im RF1000-Verzeichnis enthalten. Für den RF2000 kann ich nichts testen und damit auch nichts entwicklen, da ich keinen habe...
- Ungültige Konfigurationswerte werden nicht abgefangen (z.B. zu große Werte für SEARCH_HEAT_BED_OFFSET_SCAN_POSITION_INDEX_X/Y werden zu undefiniertem Verhalten führen!)
Und noch etwas: Solltet ihr nicht alles verstanden haben, was ich hier schreibe, bitte probiert die Firmware erstmal NICHT aus, sondern fragt nach!
Download:
Ihr findet den Sourecode in unserem Community Repository auf GitHub, zusammen mit weiteren Modifikationen:
https://github.com/RF1000community/Repetier-Firmware/
Letztes Update dieses Posts: 24.03.2017
Letztes Update auf Github: laufend
Für den RF2000 empfehle ich die Lektüre dieses Posts von Nibbels:
http://www.rf1000.de/viewtopic.php?f=7& ... 529#p15514