Schlagwort-Archiv: Ramps

Dual Extruder und gesteuerte Lüfter am Ramps 1.4 mit Repetier Firmware (2)

Nun kommt der zweite Teil: Woher weiß denn die Druckerelektronik von der Erweiterung?

Nun, das muss in die Firmware hineinkompiliert werden.
Das klingt schlimmer als es ist.
Da ich die Repetier-Firmware verwende, muss man also die Repetier-Firmware herunterladen.
Dabei durchläuft man auf der Internetseite das onlinetool zum erzeugen der Konfiguration, die man sich hinterher fertig herunterladen kann.

Es muss nur jeweils für die nun neu hinzugekommenen Funktionen (die in der Firmware bereits enhalten, aber deaktiviert waren) der benutzte Anschluß festgelegt werden.

Die Anschlüsse sind alle Nummeriert, und der Schaltplan vom Ramps 1.4 zeigt die Zuordnung der Anschlüsse zu den Arduino- bzw. Atmega-Prozessorpins. Es gibt dazu eine einheitliche Nummerierung auf arduino.cc
https://www.arduino.cc/en/Hacking/PinMapping2560
Die Nummern in der Spalte „Digital Pins“ entsprechen den Dxx Nummern im Repetier-Firmware Onlinekonfigurator.
Den Schaltplan findet man im Reprap Wiki:
http://reprap.org/wiki/RAMPS_1.4

Wie man an den Skizzen im ersten Beitrag sehen konnte, habe ich mir den Anschluß AUX2 ausgesucht. Hier kommt noch eine Besonderheit: Der Anschluß hat zusätzlich noch „Axx“ Anschlüsse. Die gehen auf Pins am Atmega-Prozessor die auch als Analog-Eingang verwendet werden können. Ich habe mich an die D-Anschlüsse gehalten.
Will man die A-Anschlüsse auch verwenden, braucht man deren D-Nummern. Das die doppelt benamt sind war mir erst nicht klar, ich habe dann später aber festgestellt das der Anschlußplan von Ramps die erforderlichen zusätzlichen Nummern enthält.

Für die hier benutzen Erweiterungen sind keine weiteren Änderungen an der Firmware notwendig. Wer sich unsicher ist kann später in der pins.h bei der Hardware Nummer 33 nachsehen.

Wenn man nun die Firmware und die config.h heruntergeladen hat, braucht man die Arduino Classic IDE. Sie trägt die Versionsnummer 1.0.6
Das lädt man sich ebenfalls herunter und installiert es.
Dann wird die Firmware in einen Ordner entpackt, die config.h hineinkopiert und per doppelklick auf die repetier.ino Datei die IDE aufgerufen.

Nun Rechts oben im Menü den richtigen Arduino aussuchen, also den Arduino Mega 2560, und die richtige virtuelle serielle Schnittstelle.
Dann kann mit dem Button Upload (ganz links zu finden) die neue firmware automatisch kopiliert und in den Drucker geladen werden.
Danach stehen die gewünschten Funktionen zur Verfügung, wenn man alles richtig gemacht hat.
pins.h in arduino -> hardware „== 33“ – keine änderung nötig
features in firmware aktivieren.

Dual Extruder und gesteuerte Lüfter am Ramps 1.4 mit Repetier Firmware (1)

Vorbereiten der Elektronik meines Prusa I3 für den Betrieb eines Dual Extruders.

Ich verwende in meinem selbstgebauten Drucker als Steuerung ein Arduino Mega 2560 Mikrocontrollerboard und das RAMPS shield.
Leider ist auf der Ramps-Aufsteckplatine nur eine recht begrenzte Anzahl an Schalttransistoren drauf, die ausreichend sind für einen 3d-drucker mit einer Düse.
3 Ausgänge sind vorhanden für Heizbett, Düsenheizung und den Lüfter für die Kühlung des Werkstücks.
Den Lüfter zum Kühlen der Elektronik (besonders die Motortreiber haben es nötig) und für den Extruderkopf (wenn erforderlich) muss man dann irgendwo direkt ans netzteil anschließen. Funktioniert so, aber was nun, wenn noch ein weiterer Druckkopf dazukommen soll?

Dann reicht das vorhandene nicht mehr aus. Wir brauchen mehr Schalttransistoren.
An und für sich ist das ja kein Problem, eine kleine Umschau bei den verdächtigen Händlern zeigt aber eine Marktlücke auf.

Also wird das selbst gebaut.
Ein paar kurze Vorversuche zeigen: Ein BC337-25 Kleinsignaltransistor ist ausreichend um bei 5mA Basisstrom 300mA für einen 12V-Lüfter bereitzustellen.
Ein IRLZ44N wird die größeren Ströme übernehmen, es ist ein Logiclevel-N-Kanal-MosFET. Hier kommen zwei zum Einsatz, einer für die Düsenheizung (4 Ampere@12V) und einer für die Druckerbeleuchtung, die ebenfalls über die Firmware geschaltet werden kann.
Zum Anschluß habe ich in meinem Fundus noch Schraubklemmen für Leiterplattenmontage, für die kleinen Ströme für Lüfter reichen auch Stiftleisten und Dupont-Stecker aus.

Das muss dann etwa nach diesem Schema zusammengelötet werden:

Günstig habe ich diese kleinen Lochrasterplatinen gekauft die schon auf eine praktische Größe zugeschnitten sind, und an den Ecken Befestigungsbohrungen haben. Also mal den ganzen Käse da drauf gelötet.

Die Rückseite sieht aus wie es sich für einen prototyp gehört :-), die Vorderseite ist vorzeigbar:

Damit es auch schön blinkt, sind an allen Anschlüssen LEDs zur Statusanzeige eingebaut.
Wie man im Foto sieht, hat das Platinchen bereits seinen Platz im Drucker gefunden gleich neben dem RAMPS.

Da ich nun mit der Schaltung alle möglichen Lüfter schalten kann, tue ich das auch. Das reduziert den Lärm deutlich, wenn alle Lüfter die gerade nicht gebraucht werden automatisch abgeschaltet werden.
Deshalb gibts auch ein kleines Update an meinem Extruderstecker: Auf ABL (automatische betthöheneinstellung) kann ich gerne verzichten, zumal es mit wechselbaren Druckunterlagen aus verschiedenem Material ohnehin nicht funktioniert, daher werden die freien Pins für den zweiten Extruderlüfter reserviert und schon mal so verkabelt.

Hinweis: Wenn man in der Firmware zwei Extruder einrichtet, aber nur einen anschließt, schaltet die Steuerung aus Sicherheitsgründen alles ab und geht in den Trockenlauf, da ein defekter Temperaturfühler erkannt wird.
Es ist also notwendig offene Temperaturfühleranschlüsse mindestens mit einem Widerstand mit plausiblen Wert abzuschließen. 100k sind anstelle eines 100k thermistors gut. Die angezeigte Temperatur entsprechend ignorieren.
Der zweite Extruder darf auch nicht angeheizt werden (start.gcode) wenn keiner angeschlossen ist, sonst greift ebenfalls die Schutzschaltung weil nach aktivieren der Heizung die Temperatur nicht steigt..

Arduino Mega und die Hitze

Zur Zeit ist es sehr warm hier.
Und diese hohen Umgebungstemperaturen verschlechtern natürlich auch die Wärmeabfuhr aus unseren elektrischen und elektronischen Geräten. Davon bleibt auch der 3D Drucker nicht verschont.

Als Elektronik für meinen selbstgebauten Drucker habe ich auf RAMPS 1.4 gesetzt. Dabei kommt eine fertige Mikrocontrollerplatine mit einem ATMEGA 2560 zum Einsatz, die im Arduino-Projekt als offene Hardware entwickelt wurde. Es ist also alles nötige „drumherum“ fertig auf einer Leiterplatte, so daß man sich ganz auf die Projektbezogene Elektronik konzentrieren kann, wenn man ein Embedded-Projekt umsetzen möchte.
Über standartisierte Steckkontakte kann dann die weitere Elektronik angeschlossen werden.
An der Stelle kommt dann RAMPS ins Spiel, eine Erweiterungsplatine die alles enthält um die elektrische Peripherie eines 3D Druckers anzuschließen. Auf der RAMPS Platine befinden sich die Leistungsschalter für die Heizungen vom Druckbett und Heizdüse, und auch weitere Sockel für Motortreiber. Außerdem Anschlüsse für die Temperaturfühler und Endschalter.
Auch kann man ein Display anschließen. Und hier wird es interessant.

Die Arduino-Platine besitzt einen Linearregler um die 5V Spannung für die Elektronik zu erzeugen, und der setzt die Spannungsdifferenz zu den üblichen 12V in Wärme um. (Bei mir von einem Schaltregler aus der höhren Spannung von Heizbett und Motoren von ca. 30V erzeugt)
Da die Arduino-Leiterplatte mit SMD-Bauteilen bestückt ist, hat der Regler also nur die Kupferbahnen der Leiterplatte selbst zur verfügung, um seine Wärme loszuwerden. Das funktionierte ganz gut, so lange die Temperaturen angenehm waren.
Jetzt sitzt der da natürlich ziemlich eingeklemmt. Die RAMPS Erweiterung selbst wird ziemlich warm durch die Leistungstransistoren, und die Motortreiber heizen von oben und natürlich auch per Wärmeleitung über die Pfostenstecker zusätzlich ein. Dazu habe ich ein LC-Display angeschlossen welches für die Beleuchtung noch zusätzlich den Strombedarf auf der 5V Schiene erhöht.
Das war dann alles zu viel, der Spannungsregler erreichte seine Maximaltemperatur und der integrierte Übertemperaturschutz reduzierte den bereitgestellten Strom. Daher sank die Spannung. Sichtbar wurde das an der LCD Beleuchtung. Und natürlich stimmen dann auch die eingelesenen Werte der Temperaturfuhler nicht mehr.

Daher musste nun die Situation verbessert werden.
Bisher war nur ein kleiner 24V Lüfter mit 12V versorgt (wegen dem Lärm, da der immer mitläuft) auf der Rückseite mit einer Papierklammer „Foldback Clip“ so hingetüddelt. Das ist natürlich nicht so optimal, weil in dem Leiterplattenstapel die unterste Platine mit dem Spannungsregler so fast gar nichts davon hat.

Das sah so aus:
kleiner 24V Lüfter kühlt RAMPS Elektronik

Nun muss das also besser werden:
Dazu habe ich zwei Dinge verändert. Die auftretende Abwärme beim linearen Spannungsregler ist direkt abhängig von der zu überwindenden Spannungsdifferenz. Also ist es günstig, diese zu reduzieren. Das könnte man mit einem Widerstand tuen, der aber jedes mal geändert werden muss, wenn man etwas umbaut und der Strombedarf auf der 5V Schiene sich ändert. Zu wenig Spannung vor dem Regler ist auch schlecht, weil diese Regler je nach Typ etwa 2V höhere Spannung am Eingang brauchen, um die Ausgangsspannung ordentlich einzuhalten.
Besser gehts mit Halbleiterdioden. In Durchlassrichtung hat man über jeder Silizium-Diode etwa 0,7V Spannungsabfall. Ein paar davon in Reihe reduziert die Spannung ein Stück, und nimmt damit ein Teil der entstehenden Wärme vom Spannungsregler und verschiebt sie dafür in die Dioden. Die Dioden halten höhere Temperaturen aus und brauchen keine speziellen Maßnahmem zur Kühlung.
Also 4 Dioden zusammengelötet und in die Zuleitung zum Arduino Mega eingeschliffen. So werden aus 12V dann 9V, und der Linearregler hat statt 7V nur noch 4V zu verbraten. So wird seine Verlustleistung fast halbiert.

Da ich damit keinen Schönheitspreis gewinnen muss, hab ich das einfach mal so hingetüddelt.
Dioden am Prusa I3

Und nun zur zweiten Maßnahme:
Die Verbesserung der Luftkühlung.
Um den Luftstrom besser an der Elektronik zu halten, habe ich eine Plexiglasscheibe zugeschnitten und über die Elektronik geschraubt. Zusätzlich gibts einen leisen 12V Lüfter mit 60×60 mm, der einen deutlich höheren Luftstrom erzeugt als der kleine Lüfter vorher. Der wird nun auch noch mit einem kleinen gedruckten Haltewinkel so montiert, das er auch die untere Leiterplatte im Stapel mit anbläst.

Mini-Luefterhalter
Der Drucker fertigt also seine eigenen Teile zur Verbesserung der Konstruktion. 🙂

Fertig zusammengeschraubt sieht das dann so aus:

Mini-Luefterhalter

Die Instabilitäten der 5V Spannungsversorgung sind damit hachhaltig beseitigt.

Selbstbau 3D-Drucker Teil 9- Elektronik

Das wird ein umfassenderer Artikel. Der Artikel wird noch weiter vervollständigt.

Ich habe folgende Themen auf dem Programm:
Arduino Mega 2560-16
Ramps 1.4
Geetech Fullgraphic Smart Controller
Optische Endschalter
Pololu A4988 Schrittmotortreiber
Kabelwege

Arduino Mega 2560-16
Da gibts nicht viel dazu zu sagen, der wird einfach gekauft und dann hat man ihn.
Ach doch noch was: Der eingebaute Spannungsregler zum Erzeugen der 5V Betriebsspannung ist ein Linearregler, und der hat bei 12V schon arg zu kämpfen seine Verlustleistung loszuwerden. Der kann nicht aus dem 24V Netzteil versorgt werden. Bei meinem sainsmart Arduino Clone ist 12V für den Energiebedarf (da hängt ja auch noch der Smartcontroller und dessen Displaybeleuchtung mit auf der 5V Schiene) schon zu viel, da steigt er durch Strombegrenzung und Spannungsfall auf der 5V schiene langsam aus. Soll der Drucker ohne USB-Anschluß zum Hostcomputer von der SD-Karte drucken können, ist hier also ein externer Spannungsregler für 5V, oder die versorgung des Arduino-Board über die Hohlsteckerbuchse mit 7-10V notwendig, damit der Spannungsregler auf dem Arduino nicht überhitzt.
Wichtig: Bei Betrieb der Motortreiber/RAMPS mit 24V muss unbedingt die Diode unter dem Motortreiber ausgelötet werden, die die Spannung vom Ramps auf den Spannungsreglereingang des Arduino einspeist. Näheres findet sich im Reprap-Wiki zum Ramps 1.4.

Ramps 1.4
Ramps 1.4 ist ein Motortreiber-Aufsatz „Shield“ für den Arduino Mega. (Reprap Arduino Mega Pololu Shield).
Es können 5 Motortreiber aufgesteckt werden und zudem befinden sich hier noch die elektrischen Anschlüsse für Temperaturfühler, Heizbett, Extruderheizung, Kühl-Lüfter für das Druckstück und der Anschluß für das Heizbett und die Endschalter.
Die Pololu Motortreiber (bei Verwendung des A4988!) müssen mit dem Poti von den dicken Stromanschlüssen wegzeigen.

Opo-endstop an Ramps

Auf der RAMPS-Platine muss bei Verwendung von 24V eine Diode ausgelötet werden. Der Heizbettanschluß kann nur 11A Schalten, die große Polyfuse ist nur für 16V geeignet und muss gegen ein 35V-Typ getauscht werden, oder durch etwas anderes (z.B. KFZ-Flachsicherung) ersetzt werden. Die FET sind nicht die allertollsten und können durch welche mit niedrigerem RDSon-Widerstand getauscht werden um höhere Ströme schalten zu können. Im Fall des Heizbett müssen dazu aber zusätzlich die Leiterbahnen verstärkt werden.

Damit alles korrekt funktioniert, müssen alle in der Firmware konfigurierten Temperaturfühler auch angeschlossen sein!

Anschluß der Motoren:
Der Anschluß der Schrittmotoren ist unklar, auf der Platine steht jedoch 1A, 1B, 2A, 2B an den Stiftleisten. Bei den Motoren entsprechend das Datenblatt hernehmen und die Anschlüsse 1A/1B jeweils einer Spule, und 2A/2B der anderen zuweisen, oder die zugehörigkeit der Leitungen zu den beiden Wicklungen einfach mit einem Widerstandsmeßgerät ermitteln. Durch drehen des Steckers kann nachher die Drehrichtung des Motores noch korrigiert werden.

Anschluß der Endschalter: Bei optischen Endschaltern sind die Schaltzustände leider nicht so wohldefiniert wie bei mechanischen Endschaltern (kurzschluß nach masse oder pullup direkt am Arduino-Port).
Hier muss die fehlende Entstörung der Eingänge mit einem Tiefpass noch ergänzt werden. Ich habe mir dazu eine kleine Lochrasterplatine zum zwischenstecken zusammengelötet.
Erfolgreich war ein Serienwiderstand von 1,8 Kiloohm und ein Keramikvielschichtkondensator zu 100nF nach Masse. Ohne den Tiefpassfilter wurden die Endschalter bei laufenden Motoren häufig willkürlich als ausgelöst erkannt, obwohl gar keine Auslösung bestand und die Lichtschranke nicht unterbrochen wurde. Offenbar ist in der Repetier-Firmware auch keine Software-Entprellung „eingebaut“ und jeder kleine eingestreute Transient lässt den Eingang kippen.

Opo-endstop an Ramps

Beim Verlängern der Leitungen habe ich ja Flachbandkabel eingesetzt. Um Störungen zwischen den Motorleitungen zu den Endschalterleitungen zu vermeiden habe ich eine Ader dazwischen freigelassen, was jedoch ohne den Tiefpass am Ramps nicht ausreicht, um einen ordentlichen Betrieb zu erreichen :/

Pololu A4988 Schrittmotortreiber
Stepstick-Platinen
Die Motortreiber kamen bis auf die Stiftleisten vollständig aufgebaut bei mir an, ich musste also nur die Leisten noch anlöten.
Am Poti kann man den Motorstrom einstellen. Mit dem Uhrzeigersinn wird der Strom größer.
Die Referenzspannung kann man mit einem Spannungsmesser direkt am beweglichen Teil des Potis erfassen und gegen Masse messen.
Die Referenzspannung muss entsprechend dem zulässigen Motorstrom der verwendeten Schrittmotoren ausgerechnet und eingestellt werden (oder niedriger). Man kann auch die Motortemperatur im Auge behalten und ggf. noch etwas reduzieren.

Geetech Fullgraphic Smart Controller
Der Smart Controller wird nur angesteckt und bekommt seine Daten per I2C vom Arduino. In der Firmware muss entspechend der Controller „Reprapdiscount Full Graphic“ eingestellt sein. Nicht verwechseln mit dem anderen Reprapdiscount smart controller mit 4 zeiligem LCD.
Es gibt berichte, das das Vollgraphikdisplay die Ausführung der Firmware bremsen würde. Die Aussagen sind zum Teil wiedersprüchlich. Ich werde das beobachten.

Kabelwege
Energiekette zur X-Achse:
Energiekette zur X-Achse
Neben der Energiekette zum Heizbett, kommt auch zur X-Achse eine Energiekette zum Einsatz, um Knickstellen an den elektrischen Anschlüssen zu vermeiden. So werden Kabelbrüche vermieden.

Prusa I3 Boxed Verkabelung

Zum Druckkopf habe ich den Kabelstrang an den Teflonschlauch fürs Filament angebunden, da soll dann später noch solches Wickelband herum, wenn der Kabelbaum komplett ist. Ich habe bereits zusätzliche Leitungen für eine LED-Beleuchtung am Druckkopf und die Lüfter für die Extruderkühlund und die Werkstückkühlung vorgesehen.

Der restliche Kabelsalat verschwindet einfach mit anschraubbaren Kabelbinder-Haltesockeln an der Rückseite der Konstruktion.
Das Netzkabel am Netzteil ist noch ein Provisorium, da muss noch ein Isoliergehäuse über die Schraubkontakte und einen Netzschalter hätt ich auch gern. Ob ich noch einen Kaltgeräteanschluß dazwischen setze oder das Netzkabel lieber mit einer Zugentlastungsschelle sichere, weiß ich auch noch nicht. Ein festes Kabel kann nicht aus der Buchse rutschen.