Dienstag, 30. Dezember 2014

Gehäuse für ein 7" (1024x600 Pixel) Pollin Display

Vor kurzem habe ich während des Schnäppchenmarkts bei Pollin ein Display erworben. Für 43€ bekommt man ein 1024x600 Pixel Display mit VGA, HDMI, DVI und Video Eingang. Für 55€ bekommt man zusätzlich  noch eine Touchfunktion mit dazu:

Eine extra Platine hält die Bedientasten zur Auswahl der Videoquelle, zur Bedienung des Menüs etc.






Dieses Display ist im Lieferzustand nicht gut einsetzbar. Überall sind offene Kontakte und das Folienkabel hält sicher auch nicht alles an mechanischer Belastung aus. Es muß also ein Gehäuse her. Pollin liefert erfreulicherweise die nötigen Daten in Form eines Datenblatts mit Zeichnung.

Noch während ich am überlegen war, wie das Gehäuse aussehen soll, erinnerte ich mich an eine Artikelserie in c't Hacks 3/2014. Dort behandeln drei Artikel das allgemeine Bauen von Gehäusen.

Die Serie startet auf Seite 58 und behandelt Gehäuse aus Alu-Strangprofilen. Auf Seite 64 geht es weiter mit dem Umbau eines Fliesenschneiders zur Tischkreissäge. Der letzte Artikel startet auf Seite 68 behandelt den Gehäusebau mittels CAD-Software und einem 3D Drucker.

Überraschenderweise wird im letzten Artikel exakt das Pollin Display eingehaust! Auf 10 Seiten werden die Grundlagen von Tinkercad vermittelt und dabei schrittweise ein dreiteiliges Gehäuse konstruiert. Alle weiteren Informationen und die nötigen Dateien gibt es hier.

Nach dem Drucken und Einbauen sieht das so aus:





Es erfüllt seinen Zweck. Mir persönlich sind die Gehäusewände mit einem Millimeter zu dünn und die Buchsen für die Schrauben sind mit einer Wandstärke von 1,25mm ungeeignet. Beim Eindrehen der Schrauben sind sie mir im oberen Bereich gebrochen. Höchstwahrscheinlich deshalb, weil ich keine selbstschneidenden Schrauben von einem ausgeschlachteten PC benutzt habe, so wie es der Autor empfiehlt. Ich habe M3 Schrauben benutzt.

Es gibt noch eine weiteres Gehäuse - auf Thingiverse mit abgerundeten Kanten. Auch hier gibt es neben den .stl Dateien die Quelldatei für Sketchup um selbst Veränderungen vorzunehmen:











Montag, 22. Dezember 2014

Fake Drucker-Elektronik

Zugegeben, die Überschrift soll absichtlich verwirren. ;-)) Was ist eine "Fake Drucker-Elektronik"? Gleich mehr dazu ... 

Vor ein paar Wochen hatte ich das Bedürfnis, ein paar Experimente mit der Firmware meines 3D Druckers durchzuführen. Allerdings wollte ich weder auf das Drucken verzichten, noch am gut eingestellten Gerät Veränderungen vornehmen. Zum Drucken verwende ich eine von nophead angepasste Version von Marlin. Die ist inzwischen ziemlich veraltet, was ich während der Experimente mit dem Grafik-LCD spüren musste. Aber auch die im Reprap-Forum gepflegte aktuellere Version hat so ihre Tücken. 

Ein weiterer Bestandteil meines 3D-Drucker-Setups, der immer wieder aktualisiert werden sollte, ist OctoPi (ein für Raspberry Pi angepasstes Image von Octoprint). In letzter Zeit gab es auch beim Raspberry ein paar Ergänzungen, die ich gerne ausprobieren will, wie z.B. ein 7" HD-Display von Pollin, eine Bluetooth Tastatur, ein 4" Touch-Display und eine Verlängerung für das 4" Touch-Display.

Einen zweiten Drucker anzuschaffen wäre eine Lösung gewesen, aber ziemlich teuer. Weitere Überlegungen brachten mich zum Schluss, dass man auf Einiges an der Druckerhardware verzichten kann, wenn man nur ein paar Experimente macht. Die Elemente, die weggelassen werden, können durch viel einfachere Komponenten ersetzt werden:

  • Die 4 Schrittmotoren an den Achsen werden durch 6 grüne LEDs ersetzt. Je eine pro Drehrichtung. Für den Extruder verwende ich blaue LEDs.
  • Die beiden Heizungen (Hotend / Heizbett) werden durch rote LEDs symbolisiert.
  • Die beiden Thermistoren (Hotend / Heizbett) werden durch Potis ersetzt.
  • Die drei Endstopschalter werden durch öffnende Drucktaster ersetzt.
  • Anstelle des RAMPS' kommt eine selbst gelötete Protoshield-Platine zum Einsatz
Letztlich bleibt als Original-Elektronik nur der Arduiuno-Mega übrig.

Die Schrittmotortreiber bekommen an ihren Anschlüssen STEP und DIR die nötigen Signale vom µC; über Logikgatter werden 2 LEDs die jeweilige Richtung anzeigen. Wenn DIR auf HIGH gesetzt ist läuft der Motor in die eine, bei LOW in die andere Richtung: 
  • DIR ∧ STEP = Richtung_1 
  • DIR ∧ STEP = Richtung_2
Je nachdem wie weit ein Motor laufen soll, werden entsprechend viele Impulse an STEP gegeben. Leider sind die Impulse zu kurz, als dass man die LED leuchten sieht. Ein sehr schwaches glimmen ist sichtbar. Es gibt zwar auch einen elektronischen Weg (monostabile Kippstufe, Monoflop, mglw. auch mit einem RC-Glied), diese Impulse so zu verlängern, damit man sie sehen kann - ich habe mich wegen dem geringerem Aufwand entschieden, die Firmware des µC entsprechend zu ändern. Bei der Marlin-Firmware muss man in der Datei stepper.cpp die nötigen Änderungen vornehmen. Innerhalb der ISR() wird jeweils das Löschen des Bits verhindert (//WRITE(X_STEP_PIN, LOW);) und am Ende der Funktion nach einem delayMicroseconds(100); nachgeholt:

 // "The Stepper Driver Interrupt" - This timer 
 // interrupt is the workhorse.
 // It pops blocks from the block_buffer and executes

 // them by pulsing the stepper pins appropriately.
ISR(TIMER1_COMPA_vect)
...
     counter_x += current_block->steps_x;
     if (counter_x > 0) {
       WRITE(X_STEP_PIN, HIGH);
       counter_x -= current_block->step_event_count;
       //WRITE(X_STEP_PIN, LOW);
       count_position[X_AXIS]+=count_direction[X_AXIS]; 
     }

     counter_y += current_block->steps_y;
     if (counter_y > 0) {
       WRITE(Y_STEP_PIN, HIGH);
       counter_y -= current_block->step_event_count;
       //WRITE(Y_STEP_PIN, LOW);
       count_position[Y_AXIS]+=count_direction[Y_AXIS];
     }

     counter_z += current_block->steps_z;
     if (counter_z > 0) {
       WRITE(Z_STEP_PIN, HIGH);
       counter_z -= current_block->step_event_count;
       //WRITE(Z_STEP_PIN, LOW);
       count_position[Z_AXIS]+=count_direction[Z_AXIS];
     }

     #ifndef ADVANCE
       counter_e += current_block->steps_e;
       if (counter_e > 0) {
         WRITE_E_STEP(HIGH);
         counter_e -= current_block->step_event_count;
         //WRITE_E_STEP(LOW);
         count_position[E_AXIS]+=count_direction[E_AXIS];
       }
     #endif //!ADVANCE
     step_events_completed += 1;
     if(step_events_completed >= current_block->step_event_count) break;
   }

   delayMicroseconds(100);
   WRITE(X_STEP_PIN, LOW);
   WRITE(Y_STEP_PIN, LOW);
   WRITE(Z_STEP_PIN, LOW);
   WRITE_E_STEP(LOW);

   // Calculare new timer value


Jeweils eine rote LED mit passendem Vorwiderstand simulieren die Heizungen. Man sieht sehr schön am blinken der LEDs, wenn die Regelung einsetzt. Am Oszilloskop ist die Veränderung des Puls- / Pausenverhältnisses noch besser zu sehen. Hier wird keine weitere Elektronik benötigt.

Jeweils ein 10kΩ Poti sorgt für die Rückmeldung einer "Temperatur". Dabei ist das Poti mit VCC und GND verbunden, der Schleifkontakt geht zurück zum µC. Damit man einen Temperaturbereich von 0°C bis 300°C simulieren kann, ist es nötig, die verwendete Thermistorentabelle in thermistortables.h zu verändern. Ich habe mit diesen Werten gute Ergebnisse erzielt:

 #if (THERMISTORHEATER_0 == 4) || (THERMISTORHEATER_1 == 4) || (THERMISTORHEATER_2 == 4) || (THERMISTORBED == 4) //10k thermistor
const short temptable_4[][2] PROGMEM = {
  {1*OVERSAMPLENR, 300},
  {100*OVERSAMPLENR, 270},
  {200*OVERSAMPLENR, 240},
  {300*OVERSAMPLENR, 210},
  {400*OVERSAMPLENR, 180},
  {500*OVERSAMPLENR, 150},
  {600*OVERSAMPLENR, 120},
  {700*OVERSAMPLENR, 90},
  {800*OVERSAMPLENR, 60},
  {900*OVERSAMPLENR, 30},
  {1000*OVERSAMPLENR, 0}
};
#endif


Am Ende sieht das dann so aus:

Was jetzt noch fehlt, ist ein Gehäuse:

 Und so sieht es aus, wenn man etwas auf dem Fake-Drucker ausdruckt:








Zu Weihnachten muss ein Baum her!


Weihnachten ohne Baum ist kein Weihnachten. Leider gibt's im Wohnzimmer fast keinen Platz um einen Baum aufzustellen. Und so ein mickriger wie zuletzt kommt mir nicht mehr in die Bude. Die Wohnung ist auch ziemlich warm, dank unserer Nachbarn. Da halten die Nadeln eh nicht lange am Baum.

Deshalb habe ich mich schon letztes Jahr entschieden, mal was ganz anderes auszuprobieren: Einen gedruckten Baum. Der sah so aus:



Jede Ebene besteht aus einem Druckteil. Man kann auch weniger Ebenen drucken, dann wird der Baum kleiner. Die Druckdateien zu diesem Baum gibt's bei Thingiverse. Ich habe diesen Baum mit Faberdasherys Village Green gedruckt. Ich habe 3,25m Filament (3mm) benötigt. Leider passen die Teile nicht gut ineinander. Zwischen den Ebenen ist soviel Spiel, dass der Baum ziemlich wackelt. Ich habe die Teile schließlich zusammengeklebt. Das hat zumindest bis Dreikönig funktioniert.

Dieses Jahr musste natürlich ein anderer Baum her. Ich bin wieder auf Thingiverse fündig geworden. Auch dieser Baum besteht aus mehreren Einzelteilen:


Der Stamm ist wieder mit Village Green gedruckt, der Stern auf der Spitze mit Bling Bling Gold und die restlichen Teile mit Arctic White. Leider ist mir beim obersten Stück die Farbe ausgegangen. Deshalb musste Architect's Stone aushelfen.



Für dem Stamm benötigt man 2,6m, für den Stern 40cm und für die weißen Teile 14,2m Filament (3mm). Die weißen Teile habe ich auf dem Kopf stehend gedruckt. Mit den leichten Überhängen wurde mein Drucker spielkend fertig. Durch das ineinanderstecken ist der Baum von selbst stabil. Da wackelt nichts und es muss auch nichts geklebt werden. 

Fröhliche Weihnachten!






Samstag, 25. Oktober 2014

Ordnung auf dem Schreibtisch!

Im April habe ich für Peter einen etwas außergewöhnlichen Stiftehalter ausgedruckt. Die Form erinnert an etwas organisches:

Natürlich musste ich auch etwas für den Schreibtisch seiner Iris drucken. Da kam es sehr gelegen, dass Richard Horne auf Youmagine eine ganze Kollektion zum Aufräumen seiner Utensilien veröffentlichte. Herausgekommen ist das hier:

 Eigentlich hätte "Greenery Green" für die "Square Slope Section" ausreichen müssen ... mit den letzten Layern in "Classic Black" sieht das aber fast noch besser aus.


"Middle Section" in "Firetruck Red"


 "Ruler Section" in "Mellow Yellow"


 Noch eine "Middle Section" - diesmal in "Squeezed Orange"


 "Right Side Section" in "Desert Tan"


 "Curved Section" in "Bling Bling Gold", "Square Section" in "Bloomsbury Teal"


 "Front Section" mit USB / SD / CF Aufnahmen in "Space Marine" 

Wie man sieht, sind das Puzzleteile, die man nahezu beliebig aneinander positonieren kann. Ich habe die Zapfen von allen Teilen etwas abgeschliffen, so dass die Teile leichter ineinandergleiten. Insgesamt wurden für das Projekt fast 90m Filament verbraucht:

Bauteil Farbe Länge in m
Curved Section Bling Bling Gold 6,58
Front Section Space Marine 6,61
Middle Section Squeezed Orange 14,63
Right Side Section Desert Tan 19,56
Ruler Section Mellow Yellow 11,16
Square Section Bloomsbury Teal 5,68
Square Slope Section Greenery Green 10,44
Middle Section Firetruck Red 14,63

Leider konnte ich an Iris' Geburtstag nicht mit dabei sein, so dass im folgenden die Bilder der Anwesenden ausreichen müssen:





Ich hoffe, dass ich noch Bilder vom Schreibtisch und den befüllten Behältern bekomme.

Dienstag, 9. September 2014

Geschenke!


Ende August hatte ich Kontakt mit einem Reprapper aus dem Reprap-IRC. Er benötigte dringend eine Umwandlung von .dwg Dateien in .stl. Ich bot an, ihm zu helfen und er solle mir die Dateien zumailen. Ich dachte mir, ein OpenSCAD Zweizeiler erledigt das dann schon:

linear_extrude(height=hoehe, center=true, convexity=10)
    import (file="datei.dxf", layer="layername");

Tja, leider waren es .dwg-Dateien - damit klappt obiger Zweizeiler halt nicht. Nun musste ich nach einem passenden Konverter suchen. Schließlich wurde ich fündig: Es gibt von Cadsoftools eine Testversion vom ABViewer, der das kann. Ein paar Minuten später waren die umgewandelten Dateien wieder auf dem Rückweg.

Zum Dank bot er mir Filament an, was ich ablehnte, da ich ausschließlich Filament von Faberdashery drucke. Er blieb dabei und ich solle 150m Filament auswählen. Das tat ich dann auch:

  • 50m Classic Black
  • 25m Lapis Blue
  • 25m Electric Blue
  • 10m Aurora
  • 20m Squeezed Orange
  • 20m Jade Green
Heute kam die Lieferung:

Samstag, 30. August 2014

Über 500m ...

... habe ich bereits an Filament gedruckt.

Ich habe gestern Inventur gemacht. Für das nächste Projekt (wieder mal ein Geburtstagsgeschenk) benötige ich 75m Filament in unterschiedlichen Farben. Einmal sind es 5m für ein kleineres "Bauteil", an anderer Stelle werden fast 20m auf einmal gebraucht.

Ich habe 22 Farben vorrätig. Das kürzeste Stück misst 2,45m (Robot Silver), das längste ca. 77m (Firetruck Red). Dazwischen gibt es alle möglichen Werte. Natürlich habe ich die Bündel nicht abgewickelt. Stattdessen habe ich die Windungen gezählt und den Durchmesser der Wicklung gemessen. Beides mit π multipliziert ergibt die Länge.

Eingekauft habe ich insgesamt 995m Filament. Davon sind noch 461m übrig, was bedeutet, dass ich seit letzten September ca. 533m Filament gedruckt habe!

22 Farben sind eigentlich zu viel. Die Vielfalt kommt daher, dass man Farben am Bildschirm von einer Webseite gar nicht beurteilen kann. Deshalb muss man sie selbst sehen. Bei unterschiedlichem Licht und bei durchscheinenden Filamenten auch in unterschiedlicher Materialstärke. Ich habe deshalb die mir interessant erscheinenden Farben in einer Länge von 20m bestellt. Ausserdem habe ich mir (leider nicht von Anfang an) angewöhnt, von jeder Farbe die ich erstmalig drucke, ein Musterstück zu drucken. Davon gibt es auf Thingiverse einige:
Andererseits hat man mit der größeren Farbauswahl halt auch eher die richtige Farbe zum zu druckenden Objekt. Es sieht halt auch ein wenig komisch aus, wenn Geister nicht weiß oder Kürbisse nicht orange sind.

Interessanterweise ist auch noch eine Farbe aus der ersten Bestellung vollständig vorhanden. 10m in dunkelgrün (Greenery Green aus dem Rainbow Fun Pack mit 10x10m in unterschiedlichen Farben). Zufälligerweise benötigt ein Bauteil des aktuellen Projekts 10,4m Filament. 11 Windungen mal 0,33m mal π ergibt 11,4m - das sollte also ausreichen.

Zur Reduktion meiner Farbenvielfalt ist das aktuelle Projekt also ideal. Natürlich muss ich ein wenig aufpassen, dass die Farben auch zusammenpassen. Während ich diese Zeilen schreibe, ist die Farbe Bloomsbury Teal bereits mit dem ersten Bauteil auf einen Rest von 70cm buchstäblich zusammengeschmolzen. Aktuell druckt das zweite Bauteil Mellow Yellow. Davon sind gestern noch 11,4m vorrätig gewesen. Das aktuelle Bauteil benötigt 11,2m Filament. Das sollte also ebenfalls klappen.

Tja und dann passt hier noch ein Ereignis vom Montag gut rein: Im Reprap-IRC hat jemand um Hilfe gebeten, .dwg Dateien in .stl Dateien umzuwandeln. Er mailte mir die Dateien und ich ihm die konvertierten zurück. Daraufhin bot er mir 150m Filament an. Gestern nach der Inventur hab ich ihm dann die Bestellung durchgegeben. 6 verschiedene Farben zwischen 10m und 50m Länge. Mal sehen, ob er Wort hält.

Zum Schluss noch ein Hinweis - es gibt natürlich einen Grund, warum ich hier nicht detaillierter das aktuelle Projekt beschreibe. Ich kann nicht ausschließen, dass die zu Beschenkende das hier nicht mitbekommt. Deshalb gibt's erst nach ihrem Geburtstag ein wenig mehr Details darüber.

Donnerstag, 7. August 2014

Ein Mendel90 im Maßstab 1:2,5


Ende Juni hatte ich die Idee, ein Modell eines Mendel90 3D-Druckers zu bauen. Die Konstruktion dieses Druckers ist vollständig in OpenSCAD gemacht worden. Die Dateien enthalten

  • jede Schraube, Mutter und Beilagscheibe,
  • alle druckbaren Elemente,
  • alle Rahmenteile,
  • alle Stangen, Gewindestangen, Kugel- & Linearlager, Riemen, Zahnräder und Ritzel,
  • Kabel, Stecker, Schrumpfschläuche, Kabelbinder.

Damit sollte es sehr einfach werden, die Teile in der richtigen Größe zu erzeugen und als druckbare .stl Dateien abzuspeichern.

Die Abmessungen eines (Bausatz-) Mendel90 betragen (B*H*T) 46cm * 40cm * 42cm. Die maximale Druckgröße beträgt 20cm * 20cm * 20cm. Um die Grundplatte (46cm * 42cm) drucken zu können, habe ich alle Maße auf das 0,4-fache skaliert. Damit kommt man auf 18,4cm * 16,8cm für die Grundplatte. Alle anderen Bauteile sind kleiner und können in diesem Maßstab leicht gedruckt werden.

Die Rahmenteile waren dann auch die ersten Teile, die ich aus den .scad Dateien erzeugt und als .stl Dateien exportiert habe. Das Vorgehen möchte ich hier ein wenig erläutern:

  1. Herunterladen und Auspacken des aktuellen Stands der Mendel90 Dateien von Github.
  2. Im Ordner Mendel90-master\dibond\views findet man Ansichten, die man als Ausgangsbasis verwenden kann. Für die Rahmenteile eignet sich das Bild frame_assembly.png.
  3. Die zugehörige .scad Datei ist Mendel90-master\views\frame_assembly.scad. Öffnet man diese Datei in OpenSCAD erhält man, nachdem alles durchgerechnet wurde, eine Ansicht, die dem obigen Bild entspricht. Je nach Leistung des Rechners kann das auch mal ein paar Minuten dauern.
  4. Zum Entfernen der Elemente, die man nicht benötigt, muss man den aufgerufenen Funktionen folgen. Die Anweisungen

    use <../scad/main.scad>

    und

    frame_assembly();

    bedeuten, dass eine weitere Datei zum Berechnen der Ansicht benutzt wird und dass eine Funktion frame_assembly() aufgerufen wird.
  5. Man öffnet also die Datei main.scad und sucht darin die Funktion frame_assembly(). In Zeile 835 wird man fündig.
  6. Nun kann man vor jedem Block, den man nicht benötigt, ein * platzieren. Damit entfernt man den Block aus der Berechnung. Im konkreten Fall sind für die Bodenplatte überall bis auf frame_base(); die * anzubringen.
  7. Ist man mit dem Ergebnis zufrieden, exportiert man das Bauteil in eine .stl Datei.
  8. Verkleinern und Ausrichten kann man zwar auch gleich in OpenSCAD machen, ich habe allerdings diese Schritte in Netfabb Studio erledigt.

Damit erhält man für alle Bauteile nach und nach die zum Drucken notwendige .stl Datei. An einigen Stellen ist es jedoch sinnvoll, nicht ein einzelnes Bauteil zu erzeugen, sondern gleich eine ganze Baugruppe. Alle Bauteile, die mit Linearlager ausgestattet werden, eignen sich gut dafür. Sie müssen dann weder eingepresst, noch mit Kabelbindern fixiert werden.

Nach den Rahmenteilen habe ich die Datei für die Schrittmotoren erzeugt. Hier habe ich während dem Druck zweimal das Filament gewechselt, um die typische Färbung der Originale zu erreichen:




Nach und nach spuckte mein Drucker immer mehr Bauteile aus und die Montage konnte beginnen. Zunächst hatte ich daran gedacht, alle Teile zusammenzukleben. PLA jedoch sträubt sich ziemlich. Verschweißen klappt gut, ist aber nicht überall praktisch. Auch Heißkleber erfüllt seinen Zweck. Schließlich habe ich es mit M1,6 Schrauben versucht. Am Ende sieht das Modell mit den Schrauben viel besser aus, als wenn man es zusammengeklebt hätte. Falls man mal etwas auseinanderbauen will, kann man das Dank der Schrauben auch tun.














Original- und Modelteil im Vergleich:



Sehr gut gelungen ist mir auch die Melzi-Platine in grün / schwarz. Auch hier habe ich während dem Druck das Filament gewechselt:






Zum Schluss noch ein paar Bilder vom fertigen Modell:















Ein Video gibt es auch: