Autokalibrieren /Autoleveling

In letzter Zeit habe ich mich mit dem Autokalibrieren (oder wie manche sagen Autoleveling) beschäftigt. Dazu wird ein separater Endstop neben dem Hotend befestigt. Dieser Endstop ist durch einen Mechanismus beweglich und kann nach unten schoben werden, sodass er knapp über das Hotend raus steht. Angeschlossen wird der Endstop an einen bestehenden Eingang an dem Ramps, der sonst für die Endstops vorgesehen wäre, die den maximalen Verfahrweg begrenzen sollten. Wir an unserem Rostock nutzen diese aber nicht und so habe ich den Pin verwendet.

Mit dem Befehl G29 wird das Ausklappen ausgelöst und der Drucker tastet dann an 37 Punkten (3er-,5er-,7er-,7er-,7er-,5er-,3er-Reihe) die Druckfläche ab. Das Muster ist im 25mm Raster und für runde Druckbetten ausgelegt, es geht natürlich auch mit quadratischen. Das Ausklappen erfolgt ähnlich einem Kugelschreiber bei dem man die Kappe verdreht sodass die Mine zurückspringt. Nur, dass das Ein- und Ausklappen vertauscht ist. Am Besten erklärt sich die Mechanik über die Fotos bei Flickr, die Videos bei Youtube und die BOM auf Reprap.org.

Zum Abtasten fährt die Plattform mit dem Hotend und dem ausgeklappten Taster über den ersten Punkt in X, Y, und Z+100mm. Von dort aus dann solange in Z-Richtung bis der Schalter auslöst. Der Z-Wert wird dann gespeichert und so mit den weiteren 36 Punkten ebenso verfahren. (Dann aber nur 2mm hoch statt der 100mm wie zu Beginn) In der Firmware wird das dann verrechnet und die sonst entstandene Abweichungen minimiert. Danach kann der ganz normale Druckvorgang gestartet werden. Man kann den Befehl G29 einfach in den Custom-G-Code einfügen und der Drucker macht die ganze Sache dann selbstständig. Da alles nur ein paar Sekunden dauert kann ist es kein Problem, wenn man es vor jedem Druck durchführt. Bei einem direkt an den Rechner angeschlossenen Drucker können die Werte auch angezeigt werden, da diese bei der seriellen Kommunikation übertragen werden. Die Daten kann man dann auch nutzen um sich die Verformung des Druckbetts grafisch darstellen zu lassen. In Excel geht es rudimentär, besser ist bestimmt Matlab o.ä. Dazu findet sich bestimmt im www ne Lösung.

Alles zusammen ist die Autokalibrierung echt clever gemacht. Vor Johann der das ganze entwickelt hat, habe ich echt Respekt!

Hier noch ein Bild von dem Taster mit dem ich derzeit arbeite/experimentiere.
image

Advertisements

Servo (Modellbau) an Ramps 1.4 und Befehl M280

Um einen Servo an den Ramps anzuschließen muss einiges beachtet werden…. da ich mir damit schwer getan habe die nötigen Infos im www zu finden dokumentiere ich sie hier.

  1. In der Firmware (bei mir modifizierte Marlin-Firmware vom johann – Entwickler des Rostock  https://github.com/jcrocholl/Marlin) muss  in der Configuration.h  „#define NUM_SERVOS 3“ unkommentiert sein und die Anzahl der Servos angegeben werden. Maximal gehen 4, d.h.  =  „#define NUM_SERVOS 3“
  2. Auf den Ramps muss ein Jumper gesetzt werden. Er muss muss den mit 5V markierten Pin und den mit VCC markierten verbinden. Man finden die Pins beim Resettaster. Ohne diese Verbindung haben die Servos keine Spannung und zucken nicht mal.  Weitere Infos dazu gibts unter http://reprap.org/wiki/RAMPS_1.4#Power_Supply
  3. Die Ansteuerung funktioniert über den Befehl „M280 P0 S1500“. Die 0 gibt den Servo an und 1500 die Position. Etwas verwirrend mit P und S aber es ist so….. P geht je nach Anzahl der Servos von 0-3 und S von 500-2500, was den Endpositionen entspricht. 1500 ist die Mittelstellung. (Anmerkung: bei mir hat der Befeh l“M280 P0 S500″ nicht funktioniert.  mit S550 hingegen schon…..)

PID Wert für Heizdüse herausfinden

Um die PID Werte für eine neue Heizdüse herauszufinden kann man via Pronterface den Befehl M303 in der Marlin Firmware automatisch ermitteln lassen. Dazu sendet man z.B.: M303 S260 für die Ziel Temperatur 206° an das RAMPS Board. Die Firmware wird dann automatisch einige Minuten lang ermitteln mit welchen PID Werten die gewünschte Temperatur am besten erreicht und gehalten werden kann.

LED 9 auf Schaltplan

LED 9 leuchtet, wenn das Hotend erhitzt wird.

Sollte es zu einem Timout Fehler kommen, den M303 Befehl erst absenden wenn die Heizspitze (Hotend) schon aufgeheizt ist.

Ohne direkt in die Firmware einzugreifen, kann dieser Befehl auch einfach in einer Datei mit der Endung .gcode gespeichert werden und an den Drucker via Pronterface oder SD Karte geschickt werden.

PID im GCODE setzen

pid setzenDie PID Werte (P, I und D) regeln das Aufheizen der Heizdüse. Diese Werte setzt man normalerweise in der Firmware, wenn man aber keinen Zugriff mehr auf die Firmware hat, kann man die PID Werte in den GCODE schreiben, dann werden sie jeweils beim Start eines Modells in die Firmware eingelesen.

Um die PID Werte in Slic3r zu setzen muss man auf den Reiter „Printer Settings“ klicken, dann „Custom G-code“ und dann rechts bei „Start G-code“ die PID Werte im Format

M303P[P-Wert] I[I-Wert] D[P-Wert]

einfügen. Beispiel Werte für das J-Head Hotend sind M301 P26.89 I1.42 D127.33 .

Erster Test in München

image

Noch arbeitet der Drucker meistens im Liegen, da noch keine gescheiten Füße gedruckt wurden. Außerdem kommt man so an die Elektronik (Ramps 1.4) an der Unterseite.

Heute plane ich noch den alle nötige Software (Slic3r) zu installieren. Danach werde ich versuchen in der Firmware das Heizbett und das Hotend zu aktivieren, weil die in den Tests derzeit deaktiviert sind. Und dann kann’s losgehen mit Drucken-hoffe ich….

@all: wo bekommt man am besten und günstigsten (schwarzes) 3mm ABS Filament?

Mit Sketchup STL Dateien verändern

Mit dem kostenlosen 3D Editor Sketchup (vormals von Google) ist es möglich bestehende STL Dateien z.B. von Thingiverse zu importieren und zu bearbeiten.


Installation des STL Importers

oder

  • Importer herunterladen
  • Die heruntergeladene Datei mit einem ZIP Program zippen und mit der Dateiendung „.rbz“ statt „.zip“ speichern.
  • In Sketchup (Version 8) unter Fenster >Voreinstellungen >Erweiterungen > Erweiterungen installieren, die *.rbz Datei auswählen und installieren.

Im Menü unter Datei > Importieren… erscheint ein neuer Eintrag „STL Importer…“ 🙂

Export nach STL

Unter Werkzeuge erscheint nach der Installation des Importeres ein neuer Punkt „Export to STL“ oder man installiert ein weiteres Plugin.

Unser aktuelles ABS Slic3r Profil

Es ist ein Slic3r Profil für ABS und den GRRF PRotos Drucker. Wir verwenden die Slic3r Version 0.9.3:

# generated by Slic3r 0.9.3 on Wed Oct 31 17:14:28 2012
acceleration = 0
bed_size = 200,200
bed_temperature = 110
bridge_fan_speed = 100
bridge_flow_ratio = 1
bridge_speed = 70
brim_width = 0
complete_objects = 0
cooling = 1
disable_fan_first_layers = 1
duplicate = 1
duplicate_distance = 6
duplicate_grid = 1,1
end_gcode = M107\n; M104 S0 ; turn off extruder temperature\n; M140 S0 ; turn off plate\nM104 S255 ; turn off extruder temperature\nM140 S110 ; turn off plate\nG28 X0 ; home X axis\nG28 Y0 ; home Y axis\n;G1 Y+100\nM84 ; disable motors\n; M240
external_perimeter_speed = 100%
extra_perimeters = 1
extruder_clearance_height = 20
extruder_clearance_radius = 20
extruder_offset = 0x0
extrusion_axis = E
extrusion_multiplier = 3.9
extrusion_width = 0
fan_always_on = 1
fan_below_layer_time = 60
filament_diameter = 2.9
fill_angle = 90
fill_density = 0.6
fill_pattern = rectilinear
first_layer_bed_temperature = 110
first_layer_extrusion_width = 0
first_layer_height = 85%
first_layer_speed = 80%
first_layer_temperature = 255
g0 = 0
gcode_arcs = 0
gcode_comments =
gcode_flavor = reprap
infill_acceleration = 50
infill_every_layers = 1
infill_extruder = 1
infill_extrusion_width = 0
infill_speed = 70
layer_gcode = ; M240
layer_height = 0.4
max_fan_speed = 100
min_fan_speed = 100
min_print_speed = 10
notes =
nozzle_diameter = 0.45
only_retract_when_crossing_perimeters = 0
output_filename_format = [input_filename_base]_PRotos.gcode
perimeter_acceleration = 25
perimeter_extruder = 1
perimeter_extrusion_width = 0
perimeter_speed = 40
perimeters = 2
post_process =
print_center = 100,100
randomize_start = 1
retract_before_travel = 4
retract_length = 4
retract_length_toolchange = 3
retract_lift = 0.1
retract_restart_extra = 0
retract_restart_extra_toolchange = 0
retract_speed = 200
rotate = 0
scale = 1
skirt_distance = 5
skirt_height = 1
skirts = 3
slowdown_below_layer_time = 15
small_perimeter_speed = 40
solid_fill_pattern = rectilinear
solid_infill_below_area = 70
solid_infill_every_layers = 0
solid_infill_speed = 70
solid_layers = 2
start_gcode = ;PRotos Profile\nG28 ; home all axis\n;M301 P13.82 I0.84 D56.60 ;2PrintBeta Heater\nM301 P26.89 I1.42 D127.33 ;GRRF Heater\n;M301 P50.76 I4.08 D158.02
support_material =
support_material_angle = 0
support_material_extruder = 1
support_material_extrusion_width = 0
support_material_pattern = honeycomb
support_material_spacing = 2.5
support_material_threshold = 45
temperature = 255
threads = 10
top_solid_infill_speed = 50
travel_speed = 150
use_relative_e_distances = 0
z_offset = 0

Unser Profil ist eine angepasste Kopie von Thomas’s Slic3r Profil.

Slic3r Error „The model has overlapping or self-intersecting facets“ beheben

Manchmal kommt bei Slic3r folgende Fehlermeldung

The model has overlapping or self-intersecting facets. I tried to repair it, however you might want to check the result or repair the input file and retry.

wenn man versucht aus einem STL ein GCODE zu erstellen. Ein neu erzeugen des STLs mit anderen Parametern ist dann meist nicht hilfreich. Aber die Reperatur eines defekten STL geht ganz einfach:

Lösung/Solution:

  1. Gehe zu cloud.netfabb.com
  2. Lade Dein Model hoch und gib Deine E-Mail-Adresse an
  3. Repariertes und funktionierendes STL wird Dir zugeschickt! 🙂

Alle Rechte an den hoch geladenen Dateien bleiben beim Urheber! 🙂

Verbesserungen

Neben dem Einbau der Teile von der Wunschliste, könnte noch folgendes (an Weihnachten) verbessert werden:

  • Heizbett Netzteil fest befestigen
  • Y-Achsenverkabelung verlängern
  • Z-Achsen Opto Stop mit Schraube höhenverstellbar machen
  • Die senkrechten Stangen vorne isolieren, damit beim herausnehmen des Bleches kein Kurzschluss entstehen kann.
  • Kühlkanal für den aktiven Lüfter auf der Elektronik
    • größerer/stärkerer Lüfter
  • Kühlkörper für die Mosfets
  • Kühlkörper für die F1 Sicherung
  • Halterung für Pinzette u.ä
  • Box für die Blech Klammern festschrauben
  • Filament Umleitung zur Rolle sichern
  • Heizbett Kabel sauberer verlegen (ggf. kleine Klammern drucken die die Kabel halten)
  • Box verkleinern(?)
  • X-Achse kaputt? Austauschen? Kunststofflager?
  • Kabelkanal für Heizbett Kabel
  • LED Leiste besser befestigen, mit gedrucktem Clip? Clip mit Stromisolierschutz auf Heizbett Höhe.
  • LED Leiste Leiungen besser legen
  • Wade Extruder neu, verbessert drucken
  • Pulley für X-Achse auf dem Kugellager, als bessere Umleitung für Zahnriemen

Weiteres

  • Die komplette X-Achse etwas nach rechts verschieben, damit der Druckkopf das gesammte Bett ausnutzen kann. Im Moment stößt ist der Druckkopf ca. 2 cm im Druckbett wenn der Nema Motor am rechten Rand an die Z-Achse stößt. Es dürfte genügen den Druckkopf zu drehen! Wenn der Motor nach hinten zeigt ist rechts genügend Platz!
  • Hintere linke Ecke des Druckbetts etwas anheben, scheint niedriger zu sein als die anderen.
  • Kabel des Thermistors am Extruder neu anschließen und Kabelende mit Lötspitze versehen.

Neue Spur beim „Mosfet“ Problem? (Ramps Sicherung F1 wird heiß)

Der Drucker stürzt regelrecht ab wenn größere filigrane Modelle gedruckt werden. Die Motoren fangen dann an zu brummen und ruckeln ein bisschen auf der Stelle hin und her, im Pronterface geht alles weiter als wäre nichts gewesen.

Nachdem ich versucht habe das Problem zu reproduzieren um während dessen mit dem Finger die Temperatur der Pololu Treiber zu „messen“ stellte ich fest, dass die Treiber und auch die Mosfets nicht besonders heiß waren. Aber bei der Sicherung F1 (gelbes Bauteil) habe ich mir fast die Finger verbrannt. Eine Google Suche nach Ramps F1 und hot brachten mich zum diesem Foreneintrag bei GRRF: Elektronik zerschossen? von Host Weidle und dieser exzellenten Antwort die das Problem sehr genau (u.a. mit Wärmebildkamera) untersuchte! Fazit: Diese Sicherung ist für die Absicherung des Heizstromes da. Sie wird schnell überlastet wenn die Treiber nicht gut eingestellt sind. Aber eigentlich sollte sie ausreichend dimensioniert sein. Als Lösung wird u.a. empfohlen einen aktiven Kühler daran zu machen… Ich werde wohl erst einmal die Treiber wieder einmal neu einstellen und evtl einen Kühlkanal um die Boards bauen, damit alle Bauteile besser gekühlt werden und mich nach einem passivem Kühlkörpervergrößerer umsehen.

Update
Auf my3dprinter.wordpress.com wird beschrieben wie man statt der F1 und F2 andere Sicherungen verwenden kann.

Wünsche

  • 1en neuen Schrittmotor 20 Euro (ist gekauft)
  • Neue Stepper Treiber 50 Euroggf. reicht ein Pololu Black Edition für die Z-Achse
  • J-Head Hotend 60 Euro (ist bestellt)
  • Kühlkörper für die drei Mosfets 5 Euro
  • Kühlkörper für die F1 Sicherung
  • LE Display 50 Euro (ist gekauft)
  • LED Netzteil, für stabilere Leistung und mit Anschraubmöglichkeit. 20-50 Euro
  • Extra Blechplatte für Heizbett um schneller tauschen zu können.
  • Aceton (ist gekauft)
  • Stabiler Teflon Bouwden Schlauch als Zuleitung zur Filamentbox (4 Euro bei GRRF)
  • Wellenkupplungen für Z-Achse 6$ bei eBay (ist bestellt)
  • Rauchmelder

Summe ohne Versand: 205-235 Euro ohne Versand. Da muss ich wohl erst meine Frau fragen :-/

Mosfet Kühler

Probleme mit der Steuerung des Heizbettes können mit überhitzen Mosfets zu tun haben.

Lösung: ein Kühler für den Mosfet der für das Heizbett zuständig ist.

Ich glaube das ist das auf der linken Seite mit Q3 markierte Bauteil mit den drei Anschlüssen auf diesem Schaltplan des RAMPS 1.4:

Die verwendeten Mosfets sind in der TO-220 Bauform. Folgende Kühler habe ich gefunden (Suchparameter mosfet heatsink/kühlkörper 220):

Update: siehe auch F1 Sicherung springt schnell an.

Stepper Treiber

(Pololu) Stepper Treiber (auch Schrittmotor Treiber genannt) sind kleine Hardwarechips a4988 die die Steuerung der Schrittmotoren übernehmen. Sie sind die Ursache für viele Probleme mit Prusa/PRotos/Mendel Druckern.

Wenn der Strom nicht korrekt auf dem Mini-Potentiometer eingestellt wurde können folgende Fehler auftreten: zu wenig Strom: Motoren brummen nicht, Schritte werden ausgelassen. Zu viel Strom Motoren brummen stärker, die Stepper Treiber erhitzen wesentlich schneller und wenn sie zu heiß werden werden Schritte falsch (meist gar nicht) ausgeführt.

Wegen der Überhitzungsgefahr gibt es kleine Kühlkörper auf den Chips sowie die aktive Kühlung via Ventilator auf dem RAMPS Board.

Überhitzung der Stepper Treiber vermeiden:

  • Lüfter korrekt einstellen, Luftzug muss gut auf die Treiber treffen.
  • Lüfter muss einen starken Luftstrom erzeugen können.
  • Luftstrom mit einer Hülle direkt an den Treibern vorbei leiten.
  • Statt Pololu Treibern StepSticks Treiber verwenden.
  • Kühler mit Wärmeleitpaste ankleben, statt das beiliegende Klebeband zu verwenden(?)

RAMPS 1.4 mit SD

RAMPS 1.4 mit SD Karte versucht zum laufen zu bringen. Leider erfolglos. Aktuelle Firmware von GRRF eingespielt aber Motoren reagieren nicht.

20120504-003715.jpg

Slic3r in neuer Version

Habe gerade entdeckt, dass Slic3r seit März in einer neuen Version 0.7.1 vorliegt. Noch nicht getestet, im Changelog findet sich ein Hinweis auf die Möglichkeit ein Heizbett zu steuern „bed temperature control“. Dies klingt sehr interessant, da ich schon selbst versucht hatte durch einfügen von „M140 120“ im GCODE das Heizbett selbst zu steuern. Funktionierte aber nicht, das Heizbett kühlte trotzdem während des Druckens schnell ab.

Heizbett arbeitet schlecht mit Software zusammen

Simon arbeitet am Drucker. Temperatur am Bett fällt zu schnell ab. Hängt wohl am nicht unterstützten RAMPS 1.2 der offiziellen GRRF Marlin Firmware. Siehe auch Logbuch

aktuelle Software aus unserer Dropbox

  1. Pronterface und Slic3r aus dem Ordner „Druckprogramm und Tools“ kopieren und entpacken.
  2. Slic3r starten und eine der neusten Einstellung aus dem Ordner „Einstellungen und Profile für Software“ in Slic3r importieren.
  3. STL Datei in Slic3r mit „Load/Slice“ laden und konvertieren.
  4. Pronterface starten und verbinden, konvertierte GCode Datei laden und drucken.

Heizbett funktioniert – es regelt jetzt korrekt

Nach einigen Stunden Fehlersuche, bis hin zum debuggen der Firmware, habe ich endlich den Grund gefunden weshalb das Heizbett nicht regelte: eine fehlerhafte Lötstelle auf dem Ramps Board. Ein Mosfett wurde komplett durchgeschaltet. Dies kann auch der Grund für die geringe Spannung auf dem Board und damit auch für das langsame aufheizen des Hot-Ends sein.

Update: Manuel stellt Überlegungen zum Heizbett und den Auswirkungen auf das Modell an.

Folge mir auf Twitter