Samstag, 20. April 2013

Extruder & Hotend Evolution

Beim herumstöbern bin ich gerade über ein paar "Artefakte" gestossen :) Es handelt sich um ein paar alte Hotend Düsen, Heizelemente, Extruder und Versuche. Jdf. dachte ich wäre es vielleicht auch für andere von Interesse wenn ich mal ein paar Fotos davon mache...
Von Links nach rechts, meine aller erste Düse, diese wurde aus verzinkten Stahl gebaut, handgebohrt und mit Teflonband und Widerstandsdraht umwickelt. Die 2 folgenden wurden dann schon aus Messing gedreht, aber noch alle mit Draht umwickelt. Da bei einem Fehler/Umbau der Düse das Heizelement meist neu gewickelt werden musste war diese Lösung jedoch nicht von Dauer...


Also begannen die Versuche die Düse vom Heizelement zu trennen... sowie auch austauschbare Düsen einzubauen (siehe Hutmuttern). Anfangs habe ich mir mangels passenden Materials eine Klemme aus 2 Stücken Alu Leiste gebaut. In diese Klemme kommen dann die Heizwiderstände und der Thermistor, dieses Heizelement wurde dann auf die Düse geschraubt und verkontert.
Dies funktionierte schon besser, jedoch war das Heizelement beim Auseinanderbauen anfällig auf Zerstörung. Deswegen dann die Variante wo das Heizelement komplett aus Alu gedreht wird und alle Komponenten fest mit Hochtemperatursilikon eingeklebt werden. Dies funktioniert so schon sehr gut... Bis auf...
das ich noch klassische Widerstände verwende. Wenn auch diese jenseits ihrer Spezifikation betrieben werden, und trotz dessen halten, so nehmen 2 von diesen mehr Platz weg als nur eine Heizpatrone. Ausserdem ist die Verkabelung mit der Patrone noch sauberer... Dies hier ist somit mein aktuell in Verwendung befindliches Hotend Variante. Hier als Heizung für einen Bowdenextruder. Bzgl. Düsen gibt es auch ein paar Versuche - die Hutmuttern waren nicht so gut, da diese schwer abzudichten waren. Ansonsten habe ich noch mit den Heizkammern (meist 1.5-2cm lang und minimal grösser als das Filament) und der Düsenöffnung variiert (von 0.25mm - 0.55mm). Weiterhin kann man sehen das bei den neueren Hotends der Bereich oberhalb des Heizelements auf ca. 1mm Aussenwand herunterdreht wurde. Dies soll die Wärmeausbreitung zu den Isolatoren (Peek) erschweren. So far...
Hier sieht man mal ein paar der Extruder (Coldend Designs), meist ist es ein Wade oder Wade Derivative. Ganz links, mein allererster Extruder - komplett aus Holzscheiben zusammengesetzt. Der daneben lief dann bis zum Schluss in meinen Woodstrap Mendel. Im Prinzip ist es aber viel wichtiger ein gutes Pinchwheel zu haben. Auch hierzu haben sich im Laufe der Zeit einige Varianten angesammelt. Von links nach rechts wurden die ersten 3 noch mit der Hand und einen Dremel gefertigt. Dies funktionierte aber eigentlich nie richtig gut. Nummero 4 ist ein Versuch mit einen Ritzel von einer Kardanwelle aus dem Modellbaubereich. Leider sind die Flanken hier nicht scharf genug... Irgendwann habe ich mir dann ein Hobbingtool für die Drehmaschine gebaut. Seitdem fertige ich die Schrauben mit einen Gewindeschneider und erziehle sehr gute Ergebnisse (bzgl. Extruderzuverlässigkeit). Diese Variante scheint also wirklich die effizienteste bzgl. Aufwand/Nutzen zu sein.

Hier mal noch 2 der Varianten die sich noch in Betrieb befinden ... letztere ist ein Bowdenextruder...








Mittwoch, 17. April 2013

Raspberry Pi am PC Netzteil

Ich habe seit einiger Zeit einen Raspberry Pi bei mir liegen welcher einmal ein Printserver werden soll. Jdf. brach beim Setup von Raspbian, u.a. beim Update der Packetquellen, die Netzwerkverbindung immer wieder zusammen. Die Ursache lag in der Stromversorgung durch den PC USB Port. Dies war wohl ein USB 2.0 oder niedriger USB Port und die Versorgung des Raspberry mit Netzwerkport, USB Tastatur und HDMI Ausgang war wohl zuviel auf einmal. Also musste eine Extra 5V Stromversorgung her. Da der Rasperry am Ende in der Nähe eines PC Netzteiles laufen wird brauchte ich also einen Adapter um die 5V SB (Standby) des Netzteiles abgreifen zu können.
Die Pinbelegung für den Micro USB Stecker zur Versorgung des Raspberry habe ich im Netz gefunden. Die Pin Belegung für den ATX Stecker (auf diesen liegt die 5V SB) gibt es ebenfalls im Netz. Damit das PC Netzteil ohne Probleme trennen kann brauchte ich zusätzlich die Möglichkeit die Spannung von diesen Stecker abzugreifen. Hierzu habe ich einen ATX auf ATX 2.0 Adapter verwendet.


Hier sind bereits die Kabel für die Spannungsversorgung abgetrennt (schwarz = Masse, lila = 5V SB). Den Mirco USB Stecker Typ B gab es übrigends bei Conrad. Die Kabel werden nun entsprechend der Pinbelegung (siehe oben) an den Stecker gelötet. Zur Kontrolle: Die Masse sollte beim Raspberry auf der rechten Seite liegen, die 5V auf der linken Seite.


Nach dem Verlöten ist es wichtig das man den Stecker zugentlastet. Dazu habe ich die Kabel erstmal bis zum Stecker mit Schrumpfschlauch umschlossen. Über diese kommt nun ein weiterer Schrumpfschlauch und zusätzlich wird in das innere Heizkleber gepresst. Nun schrumpft man den äusseren Schlauch ein, dabei wird der Heizkleber auch nochmal erwärmt und wandert somit in alle Ecken. Das Resultat ist dann hier zu sehen...
So sieht das ganze dann fertig aus... Der Pi läuft jetzt stabil und gleichzeitig kann ich jetzt mein Printserver Projekt angehen...

Montag, 15. April 2013

Was tun wenn der Extruder blockiert... und wie man einen Druckjob retten kann...

Neulich war ich wieder dabei ein paar Teile für einen Prusa zu drucken. Nichts ungewöhnlich soweit, nur das diesmal nach 2h Druckzeit das Filament aufgrund eines Einschlusses im Extruder hängen blieb. (Als Erinnerung für mich: Kaufe nie mehr Filament beim Chinesen ;) )
So sieht eine meiner 2,3kg Rollen aus, es ist fraglich ob ich dieses PLA noch durch irgendeinen Extruder bekomme... Das blaue PLA, worum es in diesem Blogpost geht, ist zum Glück (etwas) besser gewickelt...

 Coming back to the topic...





 So jdf. sah der Druck aus als der Extruder versagte ... Man sieht wunderbar das die Nozzle die oberen Schichten aufgrund des fehlenden Filaments nur anschmilzt, weswegen dieses zerfranste  Bild der Druckoberfläche entsteht... Die 4 Vertexstücke wären zu dieser Zeit vielleicht 150g schwer gewesen, d.h., 150g Ausschuss an PLA ... Ich dachte mir das geht so nicht :) Bei einer CNC Fräse kann man einen Job auch mehrfach anfahren, also muss dies bei einen 3D Drucker auch funktionieren. Die Lösung war also im Slicer zu suchen, der Teil der Toolchain welche aus dem Modell (meist als STL vorliegend) den passenden für die Maschine angepassten GCode erzeugt. Als Toolchain verwende ich momentan eine Version von ReplicatorG - wo der 5D Teil auf aktuelle 5D kompatible Firmware (Marlin, Teacup) angepasst wurde - siehe auch http://code.google.com/p/replicatorg-for-5d/. In ReplicatorG verwende ich seit Ewigkeiten Skeinforge als Slicer. Jdf. verbirgt sich in Skeinforge eine Möglichkeit wie man den Druck an einer abgebrochenen Stelle wieder fortsetzen kann, und das auch nachdem man den Drucker oder Rechner ausgeschalten hat... Die Idee ist den Slicer zu sagen das er das Objekt ab einer gewissen Höhe beginnend slicen soll und dann anschliessend starten wir den Druck ab dieser z-Höhe. Hierzu messen wir zuerst die Druckhöhe eines Fehldruckteiles, in meinem Fall waren das 10,4mm. Über die uns bekannte Layerhöhe (bei mir 0,35mm) berechnen wir mal schnell die Anzahl der bereits gedruckten Layer (10,4 / 0,35 = 29,7). Nehmen wir also mal an wir haben 29 Layer gedruckt, dieser Wert wandert nun in die Einstellung des Slicing Profils in Carve und dort unter Layers from - normalerweise steht dort eine 0. Nun erstellt der Slicer also GCode welcher ab 10,4mm oder Schicht 29 beginnt. Würden wir den Druck nun starten, dann würden wir jetzt die fehlenden Hälften zu obigen Druck erhalten, vorausgesetzt das Druckbett wäre frei ... So war nun die erste Idee diese einfach zu drucken und dann die Teile zusammenzukleben... Aber so richtig gut war diese Lösung auch noch nicht... Warum also nicht die alten Teile so auf den Drucker liegen lassen wie sie waren und dem Drucker sagen er solle nach dem Homing auf einer z-Höhe von 10,4mm beginnen. Um dies zu erreichen muss man im Skeinforge Slicer Profil unter Bottom - Altitude den Wert 10.4 eingeben. Nun nochmal den GCode erzeugen, Drucker anheizen und ab gehts...
Hier sieht man wie der erste Vertex bereits neu bedruckt wurde... Bei der Layerhöhe habe ich mich wohl ein wenig vermessen, jdf. hätte ich noch 1-2 Layer höher gehen können.
Hier sind die Teile nachdem sie dann fertig wurden. Man sieht vor allem  beim vorderen Teil eine leichte Wulst vom Neuansetzen. Die anderen (hinteren) Teile sind allerdings besser gewurden. Die Qualität der Teile ist dadurch leider nicht mehr gut, aber für einen privaten Prusa reicht es allemal ...

3D Drucker 3.0 (Prusa Mod)


Nachdem nun Version 1.0 (Woodstrap) zerlegt wurde, gibt  es bereits Bilder von der Version 3.0 (Prusa Mod).
Als Y-Carriage habe ich mich für eine Druckvariante entschieden, gefunden auf Thingiverse. Das Teil wird 2-teilig gedruckt und in der Mitte verschraubt. Hier ist nun bereits alles für die Aufnahme der LM8UU Lager vorbereitet. Gesichert werden die Lager mit Kabelbindern. Wenn ich mich an die Mendelversionen zurückentsinne, dann ist dies hier wirklich Fortschritt :)
 Hier ist der Rahmen im Zusammenbau... Meine Achsen/Führungen sind noch die Teile vom Woodstrap, d.h., ich verwende hier 8mm Alu Stangen. Die Oberfläche der Stangen ist ziemlich gut, allerdings auch nicht so fest, u.U. fressen sich also die Lager ein... Auch habe ich minimales Spiel zwischen Alu Führung und LM8UU Lager feststellen können. Vorerst reicht mir dies aber, später wird er dann richtige Führungen erhalten.
 Als Motorhalter für die y-Achse verwende ich eine Version welche den Motor so platziert das man keine weitere Umlenkung für den y-Zahnriemen benötigt. Der Zahnriemen läuft dann quasi so wie bei der x-Achse über nur 1 Umlenkung und den Motor. Hier ist nun bereits der y-schlitten eingesetzt und der y-Motorhalter vorbereitet.
 Hier ist die Montage schon ziemlich fortgeschritten. Der Rahmen steht soweit und die x-Achse wird gerade montiert. Um den z-Wobble Effekt (Unwucht der z-Achsenspindel/Gewindestange) zu minimieren habe ich die z-Gewindestange am Boden in einem 8mm Lager geführt. Die Achse läuft somit später zwischen Motor (z-Achse) und Lager am Boden.
 Hier werden gerade die Verbinderstücke für die Verbindung der z-Achsen Schrittmotoren und der z-Achsengewindestangen gedruckt. Die Verbinder werden durch 4 Schrauben zusammengepresst und verbinden somit später die beiden Wellen.

 So, hier steht nun der Rahmen komplett mit allen Achsen (die x-Achse drehe ich später nocheinmal ...) Weiter geht es nun mit dem Bau des Druckbetts, dieses wird aus einer MDF Platte gefräst und dann später der Verkabelung. Doch vorerst erstmal noch ein paar Bilder vom Hotend Bau...


Als Rohmaterial für das Hotend dient eine Messing Gewindestange (M10) aus dem Baumarkt, dann ein Stück Peek als Isolator und ein Stück Teflon als Inlay um das Filament zu führen und die Reibung mit den Peek zu reduzieren. Es würde sonst bei Erwärmung des Peek zu einem Einschmelzen des Filaments im Peek kommen, auch die Reibung am Peek ist zu stark. Das Hotend was ich hier baue soll für einen
1.75mm Bowdenextruder funktionieren. Die Nozzle ist auf 0.25mm aufgebohrt um ein sehr feines Druckbild zu erhalten. Die Wärmeausbreitung nach oben hin wird durch den Übergangsbereich mit 1mm Aussenwand erschwert.





Hier sieht man nochmal das fast fertige Hotend in zusammengebauter Form. Es fehlt noch das Heizelement... Die Aufnahme oben (blauer Teil) passt auf einen Standard-Mendel/Prusa X-Carriage.







Hier nocheinmal ein Hotend wo das Heizelement bereits montiert ist ...











Der Drucker vollzieht seine ersten Druckversuche... Die Genauigkeit ist ziemlich gut, trotz der noch nicht perfekten Wellen... Ein Problem hab ich noch mit der z-Achse festgestellt. Es gibt noch einen z-Wobble Effekt im 1/10 mm Bereich, dies liegt wahrscheinlich an der Aufhängung der x-Achse, man kann beim Fahren der z-Achse sehen wie sich die x-Achse leicht  verschiebt... Ich vermute das ich diese Bewegung noch durch neue x-ends (Aufhängung x-Achse) vermeiden kann. Meine mom. x-Achse (Design nach Kühling) hat eine absichtlich weiche Lagerung, allerdings ist diese Lagerung für die Führung weich und für das Gewinde (z-Achse) hart... Dieses Design ist daher eher kontraproduktiv. Und müsste genau andersherum sein, d.h. das Gewinde der z-Achse sollte in x,z-Richtung federnd sein und in z-Richtung hart. Die Führung (Welle) der z-Achse müsste in alle Richtungen (x,y,z) hart sein. Momentan drucke ich gerade einen weiteren Prusa und werde  bei der Gelegenheit mal die Standardaufhängung der x-Achse testen.

Samstag, 6. April 2013

Zerlegen eines 3D-Druckers (Mendel in Holz)

Seit diesem Jahr häufen sich ja die Posts über 3D Drucker in Blogs, als auch die Schlagzeilen. Häufig findet man auch Bauberichte... naja, hier geht es diesmal in die andere Richtung. Der gezeigte 3D-Drucker ist ein Mendel, aus Holz gefräst, ist gute 2 Jahre alt und hat mir auch gute Dienste erwiesen. Eigentlich hätte er in eine Vitrine gehört :-), der Anlass zur Demontage war eigentlich nur die Idee einen neuen X-Wagen zu montieren um mehr Platz für den Extruder/Hotend zu haben ... Am Ende habe ich dann alles demontiert und mich für einen kompletten Neuaufbau mit Druckteilen entschieden. Die Druckteile (z.B. der blaue X-Schlitten im ersten Bild sind auf den Mendel der 2.Generation entstanden... sozusagen Kinder von diesen.)
 Beim auseinandernehmen war ich immerwieder erstaunt das der Drucker so gut funktioniert hat und auch ziemlich brauchbare Erge bnisse geliefert hat. Man sieht hier z.B. den alten X-Wagen, der aus 5mm Sperrholz zusammengeleimt wurde und mit kleinen Kugellagern als Lager für die Achsen ausgerüstet war. Das Eintrichten/kalibrieren war eine Qual, die Methode mit LM8uu Linearlager ist da richtiger Luxus dagegen :) Auch im Bild sieht man den Extruder der zuletzt montiert war. Es handelt sich um einen nach Wade, mit eigenen Hot-End, 0.5mm Bohrung... Auch dies stammt aus den Anfangszeiten und ist in etwa halb so alt wie der Drucker. Oben im Bild ist dann noch die Gen7 Elektronik (Version 1.3) von Traumflug. Die Elektronik wird mit Polulus bestückt und lief hier bis zum Ende mit der Teacup Firmware. Im Rahmen des Neubaus werde ich allerdings auf Marlin umsteigen... Ein Blogpost dazu wird folgen. Sehr gute Erfahrungen mit Marlin gibt es bereits auf meinen anderen 3D-Drucker.
Eigenlich hatte ich hier schon keine Lust mehr den Drucker weiter zu zerlegen... Soviele Schrauben, ich hatte echt nicht mehr in Erinnerung das ich hier kiloweise Schrauben, Lager, usw. verbaut hatte...
Im Hintergrund links sieht man wie auf den Bildschirm schon das Bauteil für die neue X-Achse...
 So, der Drucker ist inzwischen soweit zerlegt das man spätestens jetzt nicht mehr sieht was es einmal war... Die Schrauben und Holzteile häufen sich jetzt immermehr...
 Hier mal ein Teil der X-Achse mit Schrittmotor...
Und hier das Teil nochmal von unten... Auch schön ist die "Riemenscheibe" aus Faserplatten gefräst und die Oberfläche dann noch mit Sekundenkleber gehärtet. Man glaubt es kaum aber diese Variante hat 2 Jahre gehalten...






Im folgenden Post geht es dann um die Wiedergeburt als neuer Drucker...

Rest in Peace my friend ... https://vimeo.com/38112580

Freitag, 5. April 2013

Howto: Einrichten gitolite unter Debian

Dieses kurze Howto beinhaltet:
  • Installation und Einrichten eines git Servers mit gitolite
  • Einrichten eines Repositories.
Das Beispielsetup beinhaltet einen git Server (dockstar-nas) und einen Client (w500).

Installation von gitolite und einrichten des gitolite admin Nutzers.

root@dockstar-nas>> apt-get install gitolite git


Erzeugen eines Nutzer/Admin Keys auf der Workstation (w500) und kopieren des Public Keys auf dockstar-nas.

robert@w500>> ssh-keygen -t rsa
robert@w500>> scp ~/.ssh/id_rsa.pub root@dockstar-nas:/tmp

Initialisieren des gitolite repositories.

root@dockstar-nas>>cd /tmp
root@dockstar-nas>>mv id_rsa.pub robert.pub
root@dockstar-nas>>usermod -d /mnt/gitolite gitolite
root@dockstar-nas>>su - gitolite
gitolite@dockstar-nas>>gl-setup /tmp/robert.pup
gitolite@dockstar-nas>>exit
root@dockstar-nas>>  
Wir haben nun als erstes den Public-Key für den Nutzer Robert in robert.pub umbenannt. Dies ist notwendig, da gitolite den Key im Format "nutzer".pub erwartet um dann intern Rechte an diesen Nutzer vergeben zu können. Anschliessend habe ich noch das Archiv Verzeichnis auf meine USB-Platte verschoben. Nun wechselt man in den Nuzter gitolite und initialisiert das gitolite-admin repo.


Klonen des gitolite-admin repos.

robert@w500>>git clone ssh://gitolite@dockstar-nas/gitolite-admin
robert@w500>>cd gitolite-admin

Wir haben jetzt ein gitolite-admin Verzeichnis mit den conf/ und keydir/ Verzeichnissen. Das conf/ Verzeichnis beinhaltet die gitolite.conf in welcher man Nutzer, Rechte und Repositories definiert. In unserem Beispiel gibt es einen Eintrag mit robert wobei dies der eben angelegte Nutzer ist.

robert@w500>>cat conf/gitolite.conf

repo gitolite-admin
RW+ = robert



Wir könnten nun einen weiteren Nutzer foo hinzufügen indem wir einen ssh-key erzeugen, den public key in foo.pub umbenennen, diesen dann in das keydir Verzeichnis kopieren und am Ende dann in der gitolite.conf den Nutzer Rechte für die Repositories geben (siehe unten).

Anlegen eines neuen Repositories (devel).

Im folgenden wollen wir jetzt noch ein weiteres Repository (devel) für die Nutzer robert und foo anlegen. Hierzu editieren wir die conf/gitolite.conf und fügen folgende Zeilen hinzu:

repo devel
RW+ = robert foo

Anschliessend müssen wir unsere Änderungen commiten und auf den Server pushen.

robert@w500>>git add keydir/*;
robert@w500>>git commit -a -m 'added user foo, created devel ropository and granting write access to robert and foo'
robert@w500>>git push


Diese Kommandozeile pusht die Änderungen nun zu dem Server, der Server wird nun ein Repository "devel" erzeugen. Wir können nun auf unsere Workstation das devel Repository auschecken und damit arbeiten.

robert@w500>>git clone ssh://gitolite@dockstar-nas/devel
robert@w500>>cd devel
robert@w500>>echo "This is our devel repo" > README
robert@w500>>git commit -a -m 'initial commit'
robert@w500>>git push origin master:refs/heads/master


Donnerstag, 4. April 2013

Update des Uboot Bootloaders auf einer Dockstar

Mein Seagate Dockstar läuft seit Ewigkeiten mit seinen alten Debian Kernel. Da ich nun den Dockstar neue Aufgaben geben wollte, folgte sogleich ein Update des Bootloaders um zukünftig neue Kernel zuzulassen.

Einige Interessante Posts gibt es hier:

http://dev.shyd.de/2012/04/kernel-3-3-3-ready-to-use/

und für den Bootloader upgrade hier:

http://forum.doozan.com/read.php?3,6965

Mein Updateverlauf war folgender:

tftpd-hpa TFTP server installation

$ sudo apt-get install tftpd-hpa

 
Die Bootloader Datei besorgen und in das TFTP Verzeichnis (/var/lib/tftpboot) kopieren.

Nun den Dockstar neu booten und über die serielle Konsole den Bootprozess unterbrechen. In der Anleitung von http://dev.shyd.de/2012/04/kernel-3-3-3-ready-to-use/ wurde jetzt direkt auf den tftp Server zugegriffen. Dies funktionierte bei mir jedoch erst nachdem ich die eigene IP und die Server IP als Umgebungsvariable definiert hatte.

U-Boot 2010.09 (Oct 23 2010 - 11:49:22)
Marvell-Dockstar/Pogoplug by Jeff Doozan

SoC:   Kirkwood 88F6281_A0
DRAM:  128 MiB
NAND:  256 MiB
In:    serial
Out:   serial
Err:   serial
Net:   egiga0
88E1116 Initialized on egiga0
Hit any key to stop autoboot:  0
Marvell>>
Marvell>>
Marvell>> setenv ipaddr 192.168.1.2
Marvell>> setenv serverip 192.168.1.102 
 
Nun kann als nächster Schritt der Bootloader über TFTP geladen werden. Hier sollte man unbedingt
prüfen das die 524288 bytes (0x80000 hex) übertragen wurden.
 
Marvell>> tftpboot 0x800000 uboot.mtd0.kwb-2011.12-dockstar-L2Coff
tftpboot 0x800000 uboot.mtd0.kwb-2011.12-dockstar-L2Coff
Using egiga0 device
TFTP from server 192.168.1.102; our IP address is 192.168.1.2
Filename 'uboot.mtd0.kwb-2011.12-dockstar-L2Coff'.
Load address: 0x800000
Loading: ####################################
done
Bytes transferred = 524288 (80000 hex)
 
Jetzt sollte man sich noch einmal vergewissern das es keinerlei Probleme gab und nur dann hier weitermachen (Bitte unbedingt die Kommandezeilen prüfen, geht hier etwas schief ist der Dockstar unbrauchbar!!)
 
Marvell>>nand erase 0x0 0x80000
NAND erase: device 0 offset 0x0, size 0x80000
Erasing at 0x60000 -- 100% complete. 
 
Marvell>>nand write.e 0x800000 0x0 0x80000
 
NAND write: device 0 offset 0x0, size 0x80000
 524288 bytes written: OK
 
Als letzten Schritt muss das System neu gestartet werden.
 
Marvell>> reset 
 
So, nun hat man einen Dockstar mit einen Bootloader der auch 3.x Kernel laden kann...