Mittwoch, 21. Oktober 2015

Fail!

Während der letzten zwei Jahre ist natürlich auch einiges schief gegangen mit meinem Mendel90. Mal eine verstopfte Düse hier, mal ein sich ablösendes Teil dort. Alles kein Problem und leicht zu beheben. Bis letzten Sonntag. 

Damit sich die Druckteile während dem Druck nicht von der Glasplatte lösen, wird diese aufgeheizt. Bei ca. 65°C - die ungefähre Glasübergangstemperatur von PLA - klebt das Druckteil ziemlich gut auf dem Glas. Nach der Abkühlung auf Raumtemperatur löst es sich von selbst. Dieser Effekt ist aber leider nicht von Dauer. Wenn sich ein Druckteil zu früh vom Glas löst, kann man es mit einer Lösung aus 5% - 10% PVA (Holzleim auf Polyvinylacetatbasis) und Wasser einstreichen. Durch das Aufheizen verdunstet das Wasser und es bildet sich ein dünner Film aus PVA auf der Glasplatte.

Auf diesem Film haftet das PLA noch besser und löst sich nach dem Abkühlen auch ganz leicht vom Glas. Bis letzten Sonntag jedenfalls. Es waren von diesem Teil

bereits drei Ecken gelöst. Beim lösen der vierten Ecke meinte die Glasscheibe brechen zu müssen. Nun hatte ich zwei Glasteile:


Die Glasplatte ist 2 mm dick und hat mir gute Dienste geleistet. Vor ein paar Wochen gab es einen ähnlichen Vorfall. Da löste sich mit dem Druckteil ein kleines Stück aus dem Glas. Es hinterließ eine Vertiefung an der Oberfläche - seitdem druckte ich auf der anderen Seite.

Jedenfalls war der Drucker so nicht mehr zu benutzen. Eine neue Glasscheibe muss her. Aufgrund des Vorfalls vor ein paar Wochen, habe ich bereits damals in Ebay nach einem Ersatz gesucht. Früher hätte man dazu kein Ebay gebraucht - da wäre man zum nächsten Ikea gefahren und hätte sich dort einen Satz "Sörli" geholt und gut. Leider hat Ikea diese Speigelfliesen aus dem Sortiment genommen. Vereinzelt tauchen sie noch auf aber um ehrlich zu sein - diese abgerundeten Ecken haben mir noch nie gut gefallen.
Sucht man speziell nach Glasplatten für 3D Drucker, erlebt man eine Überraschung - die Dinger können auch ziemlich teuer sein. Unter 10 € habe ich kein Angebot gesehen. Dabei braucht es gar kein Spezialglas sein - es gibt Angebote mit Borosilikatglas - das ist Hitzebeständig bis über 600°C! Ganz normales Floatglas tut's genauso. Zufällig sind mir dann die Angebote zweier Glaser aufgefallen. Der Eine hat seine Werkstatt im Nachbarort, der Andere noch einen Ort weiter. Beide sind bequem mit ein wenig Umweg vom Büro aus erreichbar.

Für eine Scheibe bis max. 31 cm x 21 cm in der Stärke 3 mm verlangt die Glaserei Kern in Kissing 3,00 € (+ Versand 6€). Da habe ich gleich mal 5 Stück in 214 mm x 202 mm bestellt und konnte sie letzten Montag um 16:00 Uhr abholen.

Die Glaserei Ludwig aus Mering verlangt bis zu einer Fläche von 0,05 m² (0,214 m * 0,202 m = 0,043 m²) 1,86 € (+ Versand 7,90 €). Allerdings muss man hier berücksichtigen, dass die Diagonale mindestens 27 cm haben muss. Also rechnet man schnell mit dem Satz des Pythargoras nach und kommt auf etwas über 29 cm. Abgeschreckt hat mich hier allerdings das Kleingedruckte. Es ist im Angebot auch leider nicht als Text gesetzt, sondern besteht aus einer Grafik mit ziemlich kleiner Schrift. Hineinzoomen hilft nicht viel - da wird es nur sehr pixelig. 

Gegen 16:30 war ich dann zu Hause und konnte die Glasplatte an Ort und Stelle anbringen. Sie passte besser als das zersprungene Original. So ähnlich wie hier auf dem Bild zu sehen ist,


schließt die Glasplatte bei mir bündig mit der Vorder- und Hinterkante des Heizbettes ab. Die rechte und linke Seite lässt die Schrauben frei und damit passt die neue Platte perfekt.

Da mein Mendel90 Drucker den Z-Endstoppschalter auf z-max hat - also oben - verringert sich die maximale Druckhöhe um einen Millimeter und damit auch der z-Nullpunkt. Der Schalter ist an seiner Position fixiert. Man muss deshalb die Höhe in der Firmware korrigieren und auf die Elektronik übertragen. Diese Prozedur musste man auch schon bei der Erstinbetriebnahme durchführen und steht ausführlich beschrieben im Handbuch. So gegen 17:00 Uhr war das erledigt und ich konnte wieder drucken!

Mittwoch, 16. September 2015

Was tun mit Fehldrucken?

So langsam endet das zweite Betriebsjahr meines 3D Druckers. Im Laufe dieser 24 Monate haben sich natürlich auch ein paar Fehldrucke angesammelt. Oder Gegenstände die nicht (mehr) gebraucht werden, weil ein Problem auf andere Art gelöst wurde - und dergleichen mehr. Ich habe seit dem ersten Druck alle Abfälle, Reste und Misserfolge gesammelt, weil ich sie wiederverwenden möchte. Das geschieht in zwei Stufen: Zerkleinern der Reste und anschließend Extrudieren 
Mit dem Zerkleinern der Reste habe ich mich eine Zeit lang beschäftigt. Es gibt neben mir weitere "Leidensgenossen", die sich der Problematik angenommen haben. Ich möchte euch hier nicht mit den Fehlversuchen mit einem Fleischwolf oder einem 15 € Mini Hacker von Aldi langweilen - nur so viel: Es funktioniert damit nicht.

Ich bin jetzt beim Mini Shredder gelandet. Den habe ich vor kurzem bestellt und bin nun dabei, ihn zu erproben.

Diese 3 kg Stahl erwecken von Beginn an den Eindruck, die Aufgabe bewältigen zu können. Zum Betrieb benötigt man noch ein paar gedruckte Anbauteile (Auffangschublade, Basis, Trichter, Zahnradschutz), einen Ringschlüssel in Schlüsselweite 22 mm, ein Brett und ein paar Schrauben, Muttern und U-Scheiben.



Mit den Schrauben werden die Teile zusammengehalten und auf dem Brett fixiert. Als Antrieb für den Shredder dient der Ringschlüssel.

In der Dokumentation des Shredders steht, das maximal zulässige Drehmoment ist 150 Nm. Gem. der Formel Drehmoment = Kraft * Kraftarm und der Länge des Ringschlüssels von 0,28 m, ergibt sich eine Kraft von 150 Nm / 0,28 m = 536 N. Das sind ungefähr 54 kg die man am Ende des Ringschlüssels theoretisch hin hängen darf. Das sollte genügen, um meine Fehldrucke in handliche Stücke zu zerteilen.

Die ersten Versuche sehen auch sehr vielversprechend aus. Es kracht und scheppert, wenn sich die Klingen drehen. Die Maschine muss unbedingt fixiert werden.

Die Dateien der Anbauteile kann man sich von Thingiverse herunterladen. Es gibt auch ein 3D Modell des Shredders auf Grabcad.com. Die meisten Bohrungen sind für M5 Schrauben geeignet. Ich habe die Löcher, die enger waren einfach auf 5 mm aufgebohrt.

Den Doppel-Ringschlüssel kann man zur Kurbel umbauen. Ich habe eine M8x100 Schraube verwendet, die mit großen und kleinen U-Scheiben, zwei selbst sichernden Muttern, zwei 608er Kugellager, sowie zwei gedruckten Teilen ergänzt, den Handgriff der Kurbel ergibt.










Freitag, 14. August 2015

CAD - womit konstruiert man seine 3D Druckobjekte?

Seit dem ersten Post hier in diesem Blog war mir klar, dass ich die Fähigkeit entwickeln musste, eigene 3D-Objekte entwerfen zu können. Der Gedanke "Es wird sicher irgendwann auf mich zu kommen, etwas zu drucken, was es nicht schon fertig zum Download irgendwo gibt." begleitete mich von Anfang an.
Von der 8. bis zur 12. Klasse habe ich Unterricht im technischen Zeichnen bekommen. Freilich nicht an einem CAD-Arbeitsplatz. Stattdessen gab es mit Bleistift oder Tusche ausgeführte 3-Tafel-Projektionen sich durchdringender Körper, deren isometrische Ansicht und immer mal wieder Abwicklungen, die man dann auch ausschneiden konnte und so einen 3-dimensionalen Körper vor sich hatte.
(c) Wikipedia

Beruflich habe ich hin und wieder mit CAD Dateien zu tun, welche von Architekten stammen - die Masse davon ist aber 2-dimensional. Dennoch kommt man in die Verlegenheit, einmal in die Welt der Profi-CADer zu schnuppern. Leider ist meine Begeisterung was z.B. AutoCAD betrifft nicht sehr groß. Diese Software zu lizenzieren ist mangels Budget nicht möglich. Die Home-Use Lizenz von Visio nutze ich hin und wieder.

Die Grundlagen was das 2-dimensionale betrifft, wären also vorhanden. Das reicht aber bei Weitem nicht aus. Ein Beispiel:

Vor einigen Monaten ergab sich am Stammtisch die Notwendigkeit, an einem fertigen 3D-Objekt ein wenig Hand anlegen zu müssen. Damals hatte ich weder die richtigen Werkzeuge noch das nötige Wissen um so etwas zu machen. Ich glaube, eine Wand an dem Körper war zu hoch, oder ein Durchbruch zu klein - jedenfalls etwas ziemlich Einfaches. Natürlich gelang es uns nicht, die Datei so zu manipulieren, wie wir wollten. Letztlich wurde der Versuch abgebrochen. Das war dann der Auslöser, endlich eine Konstruktionssoftware näher kennenzulernen.

Für den 3D-Druck werden .stl Dateien benötigt. Alle Programme, die nicht in der Lage sind .stl Dateien zu exportieren, scheiden aus. Von einem Programm habe ich bei diversen Anlässen schon gehört. Es wird auch in meinem Umfeld von ein paar wenigen Leuten benutzt: Blender


Blender ist ein Multitalent. Es kann viel mehr als nur 3D-Objekte erzeugen. Es dauert seine Zeit, bis man "drin" ist - und selbst nach vielen Stunden des Lernens gibt es noch immer einiges zu entdecken. Man muss sich auch darauf einstellen, dass die Einheiten, die Blender verwendet, nur mit Mühe in reale Dimensionen überführt werden können. Ein Bekannter äußerte sich mal zu diesem Problem mit "Blender kann nicht exakt, Blender kann hauptsächlich schön".

Einen Abend lang habe ich einen Freecad Workshop besucht. Diese Software kann man relativ schnell erlernen. Freecad versucht irgendwie alles zu können. Ob Maschinenbau oder Architektur, es hat Schnittstellen für Makroprogrammierung, es kann Bemaßen, viele Formate anderer Programme im- oder exportieren, Bewegungen simulieren und vieles mehr. Natürlich lernt man an einem Abend nicht alles - aber es genügt um  weiter zu machen. Gestört hat mich  bei Freecad lediglich, dass man alle Konstruktionsschritte erst 2-dimensional macht und dann in die dritte Dimension bringt.


Mein erster Eintrag in diesem Blog enthält einen Abschnitt wie ich meinen 3D-Drucker ausgewählt habe:


Der hat eine recht innovative Sache zur Konstruktion des Druckers verwendet: OpenSCAD. Diese Software hat keine Zeichenwerkzeuge. Stattdessen (be)schreibt man seine Objekte durch Positionieren, Dimensionieren und Kombinieren von Grundkörpern. Dabei hat man auch die Möglichkeit, Variable zu verwenden. Im Ergebnis kommt eine höchst flexible Konstruktion dabei heraus. Will man z.B. statt der M6 Gewindestangen welche mit M8 verwenden, trägt man das in eine Parameterdatei ein und lässt den Drucker einfach neu "berechnen". Alle davon abhängenden Bereiche werden automatisch angepasst. faszinierende Sache das. 
Ja, so faszinierend das zu Beginn war, es war - und ist zum Teil auch heute noch - schwer verständlich, was mein Druckerkonstrukteur in den vielen Dateien anstellt.
Zum Erlernen ist das ungeeignet. Dennoch hat mir das dahinter liegende Prinzip so gut gefallen, dass ich dabei geblieben bin. Natürlich konstruiere ich nicht jeden Tag irgendwelche Objekte. Aber immer wenn es zu einer Konstruktion kommt, merke ich, dass ich immer mehr Sprachelemente in effektiverer Weise benutze als früher.


Dieser Rackmount-Winkel erlaubt es, einen Raspberry Pi in einen 19" Schrank zu montieren. Die beiden Bauteile benötigen knapp 270 Zeilen Code. Dabei geht es im wesentlichen darum, Platten zu positionieren, Quader auszuhöhlen und Löcher zu bohren. Die Positionen und Dimensionen dieser Bauelemente werden in Konstanten vorgehalten. Aus dem Wikipedia-Eintrag zum 19" Rack entnimmt man z.B. diesen Satz
"Das 19-Zoll-Rack-System ist für gute Kompatibilität genormt (EIA 310-D, IEC 60297 und DIN 41494 SC48D). Die Frontplatten der Einschübe sind demnach ein Vielfaches einer Höheneinheit, welche 1,75 Zoll entspricht. Für etwas Spielraum beim Ein- und besonders Ausbau werden von Frontplatten einmal 1/32 Zoll (entspricht 0,787 mm) abgezogen."
und bildet daraus die Konstante in Millimeter für eine Höheneinheit:
he = (1.75 - 1/32) * 25.4;
In gleicher Art bildet man alle weiteren Konstanten, die man zur Konstruktion benötigt. Wenn dann später die Teilkonstruktionen definiert werden, kann man sich auf diese Konstanten beziehen und die Frontplatte einfach mit
cube([platte_l, platte_d, he]);  // 1 HE Platte
konstruieren. Sollte später festgestellt werden, dass die Stärke der Platte platte_d=2; nicht ausreicht, wird einfach der Wert verändert und man muss nicht den Code nach allen in Frage kommenden Stellen durchsuchen. Ähnlich einfach werden die beiden Montagelöcher gesetzt:

// Loch unten
translate([winkel / 2, -0.5, he / 2 - lochabstand / 2])
   rotate([-90, 0, 0])
      cylinder(d=m6_durchgangsloch, h=platte_d + 1);
 
// Loch oben
translate([winkel / 2, -0.5, he / 2 + lochabstand / 2])
   rotate([-90, 0, 0])
      cylinder(d=m6_durchgangsloch, h=platte_d + 1);

Die volle Eleganz von OpenSCAD kommt aber erst zum Vorschein, wenn man z.B. gleichartige Objekte geometrisch verteilen will. Beim LED-Halter für meine Kamera war es notwendig, 23 Abstandshalter (+ 1 Lücke für die Anschlußkabel) auf 24 Positionen zu verteilen:

In OpenSCAD ist das ein 6-Zeiler:
for(i=[0:22])
{
  rotate([0, 0, i * 360 / 24 - 75])
     translate([led_halter_m, 0, 1])
        cylinder(d=5, h=1);
}
Dabei wird i pro Schleifendurchlauf von 0 bis 22 iteriert. Pro Schleifendurchlauf wird der Rotationswinkel neu berechnet. Er durchläuft nacheinander die Werte -75°, -60°, -45° ... 255°. Der Zylinder wird in x-Richtung im Halter etwas erhöht positioniert und anschließend entlang der Kreislinie des Halters rotiert.

Was aktuell in OpenSCAD schlecht ist, wären die verfügbaren Bibliotheken. Einerseits gibt es weder einen einheitlichen Ort, wo man Bibliotheken findet, andererseits gibt es Bibliotheken die Fehler enthalten. Die mitgelieferte Bibliothek ist auch noch sehr schlecht dokumentiert. Man sollte davon ausgehen, dass eine Bibliothek für DIN-Gewinde, Objekte erzeugt, die man benutzen kann. Ich habe eine je eine Mutter und Schraube mit M20 Gewinde gedruckt - leider passen sie nicht ineinander. Die gedruckte Mutter lässt sich nur mit Mühe auf eine gekaufte M20 Schraube drehen, die gekaufte Mutter geht gar nicht auf die gedruckte Schraube. Das bedeutet nun für mich, dass ich die Bibliothek auseinander nehmen müsste um die dort enthaltenen Fehler zu finden. Das Gleiche gilt für eine Bibliothek zum Erzeugen von Zahnrädern mit Evolvente. Daran versucht sich derzeit ein Bekannter von mir.

Zum Schluss noch eine Fähigkeit, die man nicht so oft benötigt - aber eindrucksvoll zeigt, was alles machbar ist. OpenSCAD kann mittels der Variable $t animierte Darstellungen der Konstruktion erzeugen:


Die so erzeugten Einzelbilder lassen sich dann entweder zu einem .gif oder zu einem Film zusammenfassen.

Wer jetzt neugierig geworden ist, kann sich ja den Blogeintrag von gestern durchlesen und die Workshop-Dateien durcharbeiten. Viel Spaß!

Donnerstag, 13. August 2015

OpenSCAD - kannst Du nicht mal einen Kurs dazu geben?

Ende Mai bin ich während eines 3D Drucker-Abends im OpenLab Augsburg gefragt worden, ob ich mein Wissen nicht mal an Andere weitergeben möchte. Auslöser war die Bitte, mal schnell einen "Winkelhalter" zu konstruieren. In der Tat war der schnell in OpenSCAD fertig:

In knapp 30 Zeilen beschreibt man die Einzelteile und wie sie zusammengefügt werden:

//
// Winkelhalter
//

hoehe=40;
nut_h=8;
nut_l=11;
laenge=56.8;
dicke=6;
offset=-0.1;

difference()
{
 union()
 {
  cube([laenge, dicke, hoehe]);
  cube([dicke, laenge, hoehe]);
  linear_extrude(dicke)
   polygon(points=[[dicke + offset, dicke + offset], 
                   [dicke + offset, laenge], 
                   [laenge, dicke + offset]], 
            paths=[[0, 1, 2]]);
 }
 for(i=[1/5, 3/5])
 {
  translate([laenge*i, -0.5, hoehe/2 - nut_h / 2])
   cube([nut_l, dicke+1, nut_h]);
  translate([-0.5, laenge*i, hoehe/2 - nut_h / 2])
   cube([dicke+1, nut_l, nut_h]);
 }
}

Meine Behauptung, dass das eine relativ einfache Aufgabenstellung gewesen sei, löste die Frage nach dem Kurs aus.

Also habe ich mich hingesetzt und überlegt, wie man sowas machen könnte. Ich bin kein Freund von "Frontunterricht". Ich weiß aber auch, dass die ersten paar Stunden in OpenSCAD ziemlich frustrierend sein können. Die originale Dokumentation beschränkt sich leider auf das reine Auflisten von Funktionen und lässt dabei auch noch wesentliche Dinge aus. Im Internet gibt es einige Unterlagen, die man als Kursmaterial verwenden könnte. Auch Videos sind reichlich verfügbar - das meiste jedoch in englisch. Ich werde also nicht darum herum kommen, wesentliche Teile der Dokumentation zu wiederholen - dabei aber möglichst vollständig.
Anstelle der schlechten Beispiele wollte ich Aufgaben stellen, die nach etwa einer Woche durch Musterlösungen von mir abgeschlossen werden. Die Teilnehmer sollen die Aufgaben in dem Tempo lösen, welches ihnen angenehm ist - wahlweise auch in der Gruppe oder einzeln zu Hause. Zwischen den Aufgaben gibt's Erklärungen und nachfolgende Aufgaben sollen das bisher vermittelte Wissen zur Anwendung bringen.
Eine weitere Herausforderung war, nicht jeder der teilnehmen wollte, hatte zu den Drucker-Abenden auch immer Zeit. Deshalb ist jetzt der Kurs so geworden, dass man ihn auch zu Hause mitverfolgen kann. Die einzelnen Teile gibt's als PDF-Datei und meine Musterlösungen stehen ebenfalls zum Download bereit.

Inhaltlich wollte ich von Anfang an sinnvolle Beispiele und Aufgaben haben. Das ist zu Beginn, wenn noch der Großteil der OpenSCAD-Fähigkeiten unbekannt ist, eine extra Herausforderung. Dennoch ist es mir gelungen, schon auf der dritten Seite - am Ende des ersten Teils - 2 Aufgaben zu platzieren, die die implizierte Vereinigungsmenge von OpenSCAD ausnutzt, obwohl dieser Umstand zu diesem Zeitpunkt noch nicht erklärt wurde.

Im Original stört mich ganz besonders das Weglassen von Möglichkeiten. Erst durch Kombination von Dingen wie z.B. $fn=20 (Anzahl der Facetten eines runden Körpers) und cylinder(d=10, h=20) (Zylinder mit dem Durchmesser 10 und Höhe 20) zu cylinder(d=10, h=20, $fn=6) erhält man ein 6-eckiges Prisma. Auf ähnliche Art kann man pyramidenartige Teile konstruieren. Im Original wird dagegen eine Pyramide mit der ungleich schwierigeren Funktion polyhedron()erzeugt:


polyhedron(
  points=[ [10,10,0],[10,-10,0],[-10,-10,0],[-10,10,0], // the four points at base
           [0,0,10]  ],                                 // the apex point 
  faces=[ [0,1,4],[1,2,4],[2,3,4],[3,0,4],              // each triangle side
              [1,0,3],[2,1,3] ]                         // two triangles for square base
 );

In meinem Script kommt diese Funktion erst dann vor, wenn man sie wirklich benötigt. Dagegen wird nach der Einführung von Berechnungsmöglichkeiten und Konstanten eine maßstabsgetreue Cheops-Pyramide zur Aufgabe gestellt. Die Teilnehmer sollen hier auch alle zur Berechnung nötigen Angaben aus Quellen im Internet beschaffen.

Berechnungen von Durchnmessern ... Satz des Pythargoras ... das ist lange her als das mal in der Schule ein Thema war. Ich kann mich auch nicht erinnern, dass ich während meines Berufslebens jemals solche Berechnungen anstellen musste. Es schadet aber auch nicht, die grauen Zellen mal wieder ein wenig arbeiten zu lassen. Später im Script kommen auch noch trigonometrische Berechnungen vor und an einem Kreissegment soll gerechnet werden - komplizierter wird es aber nicht.
Die Alternative zu den Berechnungen wäre, Näherungswerte zu schätzen. Dummerweise sind diese Schätzwerte bei einer Veränderung von Maßen unbrauchbar. Gerade das ist aber die herausragende Eigenschaft von OpenSCAD - alles anhand von numerischen Werten zu beschreiben und den Rest dazu passend mit den richtigen Formeln auszurechnen. Letztlich ist es jedem selbst überlassen, ob er sich den mathematischen "Ballast" erspart und die Möglichkeiten nicht voll ausschöpft.

Im zweiten Teil werden auch die Operationen aus der Mengenlehre eingeführt und anhand von Beispielen erläutert. Am Ende werden diese Mengenoperationen benötigt, um Rohlinge einer M20 Mutter und M20 Hutmutter zu konstruieren.

Der dritte Teil führt die noch fehlenden 3D-Objekte und Transformationen ein und geht dann in eine mehrseitige Aufgabensammlung zur Konstruktion eines Regals aus Aluminium Strangprofilen über. Dabei werden 2D-Objekte und deren Extrusion gezeigt.


Im letzten Teil des Kurses werden Module, Funktionen und Bibliotheken benutzt um Teilkonstruktionen noch flexibler einzusetzen. Im Ergebnis wird in Aufgabe 18 das Regal konstruiert:


Bei derartigen Konstruktionen ist es wichtig, die richtige Menge an Material im Auge zu behalten. OpenSCAD kann den Anwender dabei unterstützen, eine Einkaufsliste zu erzeugen. Ein paar echo() Anweisungen in der Konstruktion erzeugen nach Filterung durch grep, sort, sed und uniq so eine Teileliste:


Zum Abschluss des letzten Teils soll ein Raspberry Pi in ein 19" Rack geschraubt werden. Die Aufgabe hört sich einfach an - die Probleme stecken in den Details. Es geht los mit den Abmessungen eines solchen Racks. Die Lochabstände, freizuhaltende Bereiche, umzurechnende Zollangaben - einzelne Kleinigkeiten zwar, aber am Ende sollte es halt passen. Einen Raspberry Pi zu befestigen ist einfach - es so zu tun, dass zumindest die Netzwerkbuchse bedienbar bleibt ist schon schwieriger.

Rückblickend muss ich feststellen, dass die Teilnehmer leider nicht so mitgemacht haben, wie ich mir das gedacht habe. Anfangs habe ich sehr viele Lösungen bekommen - teils sogar mehrere Varianten pro Aufgabe. Im Laufe des Kurses wurden es aber immer weniger. Vielleicht gibt es ein paar Neu- / Wiedereinsteiger nach Veröffentlichung dieses Eintrags - mal sehen. Jedenfalls ist es möglich, jederzeit zu beginnen und wer nicht in die Musterlösungen spickt, wird jede Menge dabei lernen.

Zu guter Letzt hier noch die Dateien zum Kurs:

Workshop OpenSCAD Seite 1-3.pdf
Workshop OpenSCAD Seite 4-7.pdf
Workshop OpenSCAD Seite 8-10.pdf
Workshop OpenSCAD Seite 11-16.pdf
Musterloesungen.zip










Samstag, 13. Juni 2015

Licht! In Farbe und Bunt!

Das Problem


Um meine 3D-Drucke zu fotografieren nutze ich meist die Makrofunktion meiner Kamera. Bei ungünstigem Licht schalte ich dann auch mal den Blitz zu. Doch leider wirft dann das Objektiv einen Schatten auf das Motiv, wenn ich zu nah dran bin, wie man hier schön sehen kann:
Mit größerer Entfernung ist aber auch die Makrofunktion nutzlos. Einen externen Zusatzblitz kann ich auch nicht verwenden, weil das meine Kamera nicht vorgesehen hat. Ein Blitz hat auch noch weitere Nachteile - hier im Bild sieht man schön, dass das Motiv leicht überbelichtet ist - meine Kamera kann es halt nicht besser.

Eine Idee

Vor längerer Zeit hat Adafruit eine mögliche Lösung des Problems veröffentlicht, die mir ziemlich gut gefällt.
Allerdings gefällt mir die Klemmvorrichtung für das Objektiv nicht. Auch dass ein Trinket Microcontroller benutzt wird, um die 24 LEDs lediglich in weiß leuchten zu lassen, ist ein wenig übertrieben.

Meine Idee

Nur weißes Licht ist langweilig. Die Helligkeit wollte ich auch einstellen können. Also habe ich mir erst einmal auch so einen LED Ring besorgt. Glücklicherweise vertreibt Watterott baugleiche Ringe wie Adafruit. Ein kurzes Nachmessen an meiner Kamera ergab, dass ich ebenfalls einen 24er Ring benötige für mein Objektiv.

Da es sich hier nicht um normale LEDs handelt, sondern RGB-LEDs mit eigenem Controller (Datenblatt WS2812) braucht es einen Mikrocontroller, der den LEDs mitteilt, ob und wie sie zu leuchten haben. Jede einzelne LED kann adressiert werden und bekommt in 3 Bytes mitgeteilt, wie viel rot, grün oder blau sie leuchten soll. Natürlich gibt es nicht all zu viele Gelegenheiten wo man tatsächlich farbige Beleuchtung braucht - aber ich wollte es zumindest verfügbar haben. Die Helligkeit und Farbe wollte ich mittels Potentiometer einstellen können.
Neben dem 24er LED-Ring war noch ein geeigneter Arduino Mikrocontroller auszuwählen. Der braucht 2 analoge Eingänge für die Potentiometer und einen digitalen Ausgang für die Datenleitung des LED-Rings. Da müsste doch ein Attiny-85 vollauf genügen. Den hat ebenfalls Adafruit im Bestand. Er wird Trinket genannt.

Leider hatte Watterott damals keine Entsprechung verfügbar - deshalb musste Ebay aushelfen. Nach Erhalt der Teile habe ich die Schaltung auf einem Breadboard zusammengesteckt:

Als die Firmware dann zufriedenstellend lief, machte ich mich daran, die Druckteile zu konstruieren. Ich begann mit dem LED-Ring. Als Deckel für die LEDs hatte ich mir klares PLA zurückgelegt. Da es beim Drucken nicht klar bleibt, kann es gleich als Diffusor dienen und das Licht ein wenig streuen. Ich möchte auch möglichst auf Verschraubungen und dergleichen verzichten. Deshalb habe ich den Diffusor so konstruiert, dass er sich selbst fest klemmt.

Noch während ich am konstruieren der Elektronik-Box war, ergab sich eine Erwähnung eines Neo-Pixel-Controllers im Blog von Adafruit. Dessen Platine trägt lediglich einen Attiny-85, die beiden Potentiometer, einen Schalter und eine Kontroll-LED samt Widerstand. Im programmierten und eingebauten Zustand wird ja der USB-Teil nicht mehr benötigt - so ist das Trinket weiter für Experimente verfügbar.

Zwei Wochen später kamen dann die drei Platinen. Leider bin ich inzwischen mit dem Layout dieser Platine nicht zufrieden.


  • ohne Not wurde als Kontroll LED eine SMD-LED verwendet. Dessen Vorwiderstand ist ebenfalls SMD. 
  • Die Lötpads der beiden Potentiometer dagegen sind so dermaßen groß - das passt nicht zusammen.
  • Die Potentiometer, die einigermaßen zu den Lötpads passen, passen nicht durch die Löcher der Platine. Die mussten auf 11mm aufgebohrt werden. Dennoch muss man die Anschlüsse 2x umbiegen um Kontakt zur Platine zu bekommen.
  • Der Schalter sitzt so eng am IC-Sockel, da schmilzt es ein wenig beim Einlöten. Der Schalter ist auch zwischen den Potentiometern schlecht platziert.
Nun ja, wenigstens funktioniert die Platine und die Gehäusekonstruktion konnte weiter gehen.
Zur Verbindung mit der Kamera fehlt nun noch ein Steg, der den Ring auf die richtige Höhe bringt und mit einer 1/4" Stativschraube festgeschraubt wird.
Fertig zusammengebaut sieht das Teil nun so aus:












Die Stromversorgung kommt aus einer USB-Powerbank, die ich bereits hatte. Die Stativschraube hat neben dem 1/4" Außengewinde auch ein 1/4" Innengewinde - damit kann man die Kamera mit dem LED-Ring auf ein Stativ schrauben!

Die Kosten

17,85 €
  WS2812 24er LED Ring
6,40 €
  Neo Pixel Controller Platine
1,15 €
  Attiny 85
0,18 €
  IC Sockel
2,90 €
  2x Potentiometer 10kΩ
0,10 €
  Widerstand SMD 330Ω
0,14 €
  SMD LED
2,10 €
  Schalter
5,95 €
  Stativschraube
36,77 €
 Summe