Posts mit dem Label MArlin werden angezeigt. Alle Posts anzeigen
Posts mit dem Label MArlin werden angezeigt. Alle Posts anzeigen

Donnerstag, 27. April 2017

Probleme beim Autobedleveling mit dem Z Offset

Setup:
Prusa i3
Marlin
Repetier Host
Slic3r
Win10
Autobedleveling per NPN 4mm induktivem Sensor

Nach dem Update von Repetier Host 1.6.2 auf Version 2.0 war es mir nicht mehr möglich, die Düse so weit herunter zu fahren, dass sie das Druckbett erreichte.
In der alten Version 1.6.2 konnte man über den Z Offset in den EEPROM Parametern bequem die Druckhöhe so anpassen, das man den Versatz durch einen entsprechenden Wert korrigierte. Aktuell wirkt sich ein Wert in den EEPROM Parametern, aber auch im Marlin, nicht mehr aus, so dass die Düse in die Luft extrudiert.
Die Lösung liegt im Slic3r. Er bietet ebenfalls eine Kompensation für Z an und zwar hier unter Printer Settings-General:

Z Offset für Nozzle beim Autobedleveling
Je höher der negative (!)Wert, der hier eingegeben wird, desto näher, also tiefer, die Nozzle am Druckbett.
Daher vorsichtig mit kleinen Werten wie -0.2 anfangen, mit den neuen Einstellungen slicen, Probedruck des ersten Layers fahren und dann eventuell erneut den Wert korrigieren.

Donnerstag, 30. Oktober 2014

Firmware für den Printbot / OneUp flashen

Das Flashen des Speichers des OneUp (= Printrbot Clon ) gestaltet sich als umständlich und war bislang nicht möglich, wie ich in meinem letzten Posting zum Thema berichtet hatte

Allerdings bin ich dem Fehler auf der Spur. Zum einen hatte ich "teensy" groß geschrieben, das wird jetzt geändert zum anderen sind die modifizierten Config Dateien scheinbar im falschen Verzeichnis gelandet. So kann das natürlich nichts werden.. Auf meiner Google Odyssee bin ich dann aber noch auf eine interessante Information gestoßen, die ich nicht vorenthalten will. 
Flip Programmer für den Teensy
Es gibt mit dem Programm "Flip" von Atmel eine weitere Möglichkeit die Firmware des OneUps zu flashen. Allerdings verlangt die Software Hex files. Ob das angepasste OneUp Marlin als Hexfile zu bekommen ist, weisss sich derzeit noch nicht. Es dürfte auch recht umständlich sein, hier etwas zu editieren. Wer aber wie ich sich einen Wolf nach einer Lösung sucht, ist für diese kleine Info vielleicht trotzdem dankbar ;-) Hier geht es zur Website von Printrbot mit ein paar Instruktionen zum Flashen und zum Download von "Flip". 

Printrbot Wiki zum Flashen der Firmware: 

Download Seite 

Hinweis: Wer übrigens dieses Posting indirekt über einen Feed liest (einige Foren nehmen sie einfach als Gastbeitrag auf): 
Bitte immer dran denken, dass in der ersten Veröffentlichung auch mal der eine oder andere Fehler enthalten sein kann, der von mir auf meinem Blog zwar noch korrigiert wird, dann aber nicht mehr im Posting aus dem Feed, die übernehmen immer nur das Ursprungsposting. Wer also Hilfe braucht, weil er nicht weiter kommt, sollte erst mal in meinem Blogposting zum OneUp nachlesen, was der letzte, aktuelle Stand ist.

Donnerstag, 21. November 2013

Heated bed für Rostock Deltabot selber bauen und in Marlin und Repetier einrichten

Mithilfe einer Spiegelkachel aus dem IKEA und dem netten Glaser von nebenan, habe ich mir aus den quadratischen Kacheln runde Spiegel anfertigen lassen.
Bei PLA benötigt man eigentlich kein heated bed, aber besser ist es trotzdem. Ausserdem stand jetzt auch ABS drucken auf dem Plan und hierfür benötigt man es in jedem Fall. Also wurden fünf 11Watt 0.22 Ohm Widerstände zu einem heated bed umfunktioniert.
Schritt1: 5 Hochlastwiderstände unter den Spiegel kleben

Ca. 17 Ohm gesamter Reihenwiderstand

Thermistor hat 112kOhm

Eine M12er Imbusschraube wird mit Lötzinn aufgefüllt, damit sie mehr Fläche hat. Sie wird später in die Mitte der Scheibe geklebt.

80 x 80 mm Alu profil ca. 30mm hoch. von unten her verschraubt.
Durchbrüche für Kabel etc.

Auch die Imbusschraube wurde kopfüber geklebt...

Später noch etwas Heißkleber dazu (Bosch, Hochtemperatur)

Advent Advent. Eine rote Jumbo Kontroll LED mit 330 Ohm Vorwiderstand zeigt an wenn die 12V vom Sanguinololu durchgeschaltet werden. (Das ganze heated bed ist hier natürlich zum Testen noch verkehrt herum aufgelegt und nicht in den Alublock eingeschraubt.

Ein 100k Thermistor aus China dient zur Temperaturkontrolle.
Das ganze Arrangement wurde mit Sekundenkleber auf der Rückseite des Spiegels fixiert. In unserer Firma haben wir früher viel mit einem "Wundermittel" gearbeitet, dass sehr teuer war und als Wärmeleitkleber verwendet wurde. Letztlich war es dem Geruch nach auch Sekundenkleber.
Problematisch war das Aufheizverhalten der Konstruktion. Es dauert sehr lange bis die heißen Widerstände ihre Wärme an die Platte abgeben. Daher flog schon mal die Sicherung raus. Den Thermistor anders zu positionieren bringt auch nichts, da ich ja die Wärme der Platte benötige und nicht die am Heizwiderstand.
Nachdem ich zunächst auf die Idee kam, ein zweites Netzteil und ein Relais an den Sanguinololu anzuschließen um ihn so zu entlasten, sah ich mir die Firmware nochmals an.
Dort findet sich folgender Eintrag:

// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
// average current. The value should be an integer and the heat bed will be turned on for 1 interval of
// HEATER_BED_DUTY_CYCLE_DIVIDER intervals.
//#define HEATER_BED_DUTY_CYCLE_DIVIDER 4

den letzten Eintrag änderte ich erst mal so um, dass es aktiviert wurde (beiden Schrägstriche am Anfang entfernen)

#define HEATER_BED_DUTY_CYCLE_DIVIDER 10 

und lud das Ganze erneut hoch.

Das war nichts, also suchte ich weiter:

// Bed Temperature Control
// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis
//
// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder.
// If your PID_dT above is the default, and correct for your hardware/configuration, that means 7.689Hz,
// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating.
// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater.
// If your configuration is significantly different than this and you don't understand the issues involved, you probably
// shouldn't use bed PID until someone else verifies your hardware works.
// If this is enabled, find your own PID constants below.
//#define PIDTEMPBED
//
//#define BED_LIMIT_SWITCHING

wurde zunächst einmal aktiviert (Schrägstriche entfernen)

#define PIDTEMPBED (hier bin ich mir nicht ganz sicher ob die AKtivierung richtig war. Geschadet hat sie jedenfalls nicht.)
//
#define BED_LIMIT_SWITCHING

Was ist PID?

PID ist ein Regelverfahren, dass ich nie so richtig verstanden habe und daher erst mal außen vorlassen möchte. Regelverfahren haben nämlich die Eigenschaft, dass man mit minimalen Änderungen der Werte, alles wunderbar verstellen kann.

bang-bang?

Bang-bang oder zu deutsch AN/AUS - das ist genau mein Verfahren.  Heizung an, Heizung aus. Hysterese einstellen fertig. Das mag zwar nicht die große Gala sein, aber es ist überschaubar und auf PID kann man später immer noch umsteigen.

Genau unten drunter findet sich eine wichtige Einstellung:

// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option.
// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis)
// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did,
// so you shouldn't use it unless you are OK with PWM on your bed.  (see the comment on enabling PIDTEMPBED)
#define MAX_BED_POWER 128 // limits duty cycle to bed; 255=full current // WAR ORIGINAL 255)

Den Wert von 255 habe ich also auf 128 fast halbiert. Somit wird schon einmal der Strom, der den Sanguinololu und das Netzteil belastet halbiert.

Somit dauert das Aufheizen etwas länger ( meine Control LED blinkt wild vor sich hin) aber die langsame Wärmeausbreitung führt eben zu einer gleichmäßigeren Stromlast.
Leider verabschiedete sich das Netzteil trotzdem nach ca. 5 Minuten und angezeigten 25 C° Betttemperatur. Die Widerstände hatten zu diesem Zeitpunkt rund 40 C°. Die Temperaturen habe ich mit der Laserpistole kontrolliert.

Also eine weitere Optimierung angegangen:

MAX_BED_POWER wurde auf 64 gesenkt, also rund dem Viertel des maximalen Stroms.

Das alles half zwar und die Dauer des Aufheizens verlängerte sich, letztlich floppte jedoch immer irgendwann das Netzteil (120 W, 2 A auf der 12V Schiene). Wäre auch noch der Extruder an gewesen, wäre das Netzteil schon beim Starten auf Streik gegangen.
 2A auf der 12V Schiene sind auch definitiv zu wenig. Man rechnet beim heated bed mit rund 10-15A. Also wird nichts anderes übrig bleiben, als ein neues Netzteil umzubauen und einen neuen Versuch zu starten...

Trotzdem sind die Erkenntnisse zu den Einstellungen der Firmware aufschlußreiche. Das selbst gebaute heated bed hat prinzipiell funktioniert, jetzt muss nur noch ordentlich Power her.

Ein Problem scheint jedoch die Wärmeausdehnung zu sein. So breitet sich die Wärme im Glas scheinbar nicht horizontal aus. Auf der Gegenseite der Widerstände war das Glas sehr heiß, während das Zentrum und die Ränder kalt blieben. Somit müsste man eigentlich noch eine Metallschicht zwischen Glas und Heizwiderstände bringen, um eine gleichmäßige Wärmeverteilung zu erzielen. Darüber muss ich mir also auch noch Gedanken machen.

Samstag, 19. Oktober 2013

Updates

In der letzten Woche habe ich mal den Monsterdrucker auf die Beine gestellt. Bislang konnte ich mich noch nicht für die Antriebe entscheiden. Eventuell wird es aber eine Core XY.

Weiterhin habe ich einen Fehler beim Aufbau des Rostock korrigiert. Die Füße saßen nicht richtig auf der Platte, sie mussten alle weiter nach außen gesetzt werden. Hierzu mussten M6 Gewinde in die ABS Teile geschnitten werden. Ich habe etliche Photos von anderen Bauern studiert und feststellen müssen, dass jeder es anderes macht, aber kaum einer richtig.
Eine andere Hiobsbotschaft musste ich von Hardwired erfahren: http://hardwired.cc/?p=256. Der Sanguinololu läuft angeblich nicht ohne tiefgreifende Änderung in Firmware, Bootloader und sogar Hardware, da die Umrechnungen des Rostock zu viel Speicher benötigen. Auch die Diskussionen hierzu in der Google Group "Deltabots" sehen nicht sehr vielversprechend aus: https://groups.google.com/forum/#!topic/deltabot/1huFCSX6T80. Da werde ich lieber die Finger von lassen und den Sanguinolu für einen normalen kartesischen Drucker verwenden.
Zum Glück habe ich noch ein RAMPS Set, werde aber erst mal prüfen ob es da nicht doch eine einfache Lösung für gibt. Das Sanguinololu ist halt schön kompakt im Vergleich zu dem Turm den man mit RAMPS basteln muss.
Darüber hinaus habe ich die Messing Hohlwellen auf 80 cm gekürzt um dem Rostock mehr Stabilität zu geben, ohne die Eckwand zu benötigen. Ein weiterer Vorteil der Hohlwellen ist die Möglichkeit, Kabel durch sie von oben nach unten legen zu können.