Temperaturmessung im Druckraum

Es ist mir immer wieder aufgefallen das ein geschlossener Druckraum nicht immer von Vorteil ist. Vor allem bei Druckaufträgen > 4 Stunden. In dieser Zeit wird der Druckraum bei mir doch an die 40 Grad warm, was berücksichtigt werden möchte.

Da kam mir die Meldung eines neuen Octoprint-Plugins sehr gelegen und daher habe ich die benötigten Bauteile bestellt bzw. aus meinem Bestand zusammengetragen. Frederic Moutin hat sich die Zeit genommen und ein neues Plugin geschrieben. Mit Room Temperature ist es jetzt möglich die aktuell vorherrschende Temperatur anzeigen zu lassen.

Stückliste

BaugruppeAnzahlBeschreibungLinkEinzelpreis (Euro)Summe (Euro)
Halter13D gedruckter Halter3D-Druck--
1ds18b20 SensorAmazon-3,00
14,7K Ohm Widerstand Bestand--
1Div. Kabel, GewebeschlauchBestand--
1SharpieBestand--

Aufbau

Details wie der Sensor und Widerstand zusammengelötet werden muss sind auf der Seite des Plugins zu finden. Ist aber nichts weiter kompliziert und sieht wie folgt aus. Achtet beim Anschluss nur darauf, dass die richtigen PINs des Raspberrys verwendet werden.

Anpassungen an config.txt

  1. Aufbau der Verbindung zum Raspberry mittels SSH
  2. Öffnen der config.txt sudo nano /boot/config.txt
  3. Am Ende der Datei folgende Zeile einfügen (definiert den zu verwendenden GPIO PIN) dtoverlay=w1-gpio
  4. Speichern und Schließen mit crtl x und dann y.
  5. Abschließend noch einen Neustart durchführen reboot

Ergebnis

 

Statische IP-Adresse für octoprint

Sofern man seiner Octoprint Installation eine statische IP-Adresse zuweisen möchte, dann geht das wie folgt.

# SSH-Verbindung mit octopi.local oder IP-Adresse aufbauen # In das Verzeichniss boot wechseln 

cd .. 
cd .. 
cd boot 

# Konfigurtationsdatei mittels Nano (Texteditor) aufrufen 

sudo nano octopi-network.txt 

# Ganz am Ende die gewünschten Netzwerkdaten eintragen und die führenden "#" entfernen 
# Beispiel 
# Hinweis: broadcast entspricht dem DNS-Server 

adress 192.168.0.10 
netmask 255.255.255.0 
broadcast 192.168.0.1

Powerbox für WS2812B LEDs

Aufgrund des fortwährenden Dranges ein Projekt mit WS2812B LEDs umzusetzen, kam mir die Idee, dass Bobby-Car meiner Tochter ein bisschen „aufzuhübschen“ 🙂
Ob Sinn oder Unsinn darf jeder selber entscheiden, aber es war ein tolles Projekt und ich konnte meine gesteckten Ziele erreichen.

Aufgabenstellung

Welche Aufgaben galt es also zu bewältigen?

  • Portable muss es sein
  • Auf Basis von Arduino
  • Einfache Steuerung
  • Versorgt durch vier AA Eneloop Batterien

Stückliste

BaugruppeAnzahlBeschreibungLinkEinzelpreis (Euro)Summe (Euro)
Powerbox13D gedrucktes Gehäuse3D-Druck--
1Arduino NanoGearbest-4,00
110V 330uf KondensatorBestand--
1300 Ohm Widerstand Bestand--
1Div. KabelBestand--
1LochrasterplatineGearbest-1,50
1Vierach AA BatteriehalterGearbest-1,00
1Ein-/AusschalterBestand--
1DrucktasterBestand--
2M3 x 5mm SchraubenBestand--

Gehäuse

So entstand das Gehäuse mittels Inventor und dem geliebten Messschieber.

Die STL-Dateien könnt ihr auf Thingiverse herunterladen.

Code

Innerhalb von Arduino 1.8.2 entstand folgender Code. Nichts weltbewegendes, aber es kann über einen Knopf über eine Case-Abfrage der Modus geändert werden. Aktuell habe ich mal 6 verschiedene Abfolgen umgesetzt.

/*
  Powerbox for WS2812B
  Schwabenpilot.de - Buddinski88
  Version 1.0
*/

#include <Adafruit_NeoPixel.h>

// Digital IO pin connected to the Push-Button
#define BUTTON_PIN   6

// Digital IO pin connected to the NeoPixels
#define PIXEL_PIN    2    

// Count of the connected NeoPixels
#define PIXEL_COUNT 66

// Informations from the Library
// Parameter 1 = number of pixels in strip,  neopixel stick has 8
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_RGB     Pixels are wired for RGB bitstream
//   NEO_GRB     Pixels are wired for GRB bitstream, correct for neopixel stick
//   NEO_KHZ400  400 KHz bitstream (e.g. FLORA pixels)
//   NEO_KHZ800  800 KHz bitstream (e.g. High Density LED strip), correct for neopixel stick
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);

bool oldState = HIGH;
int showType = 0;

void setup() {
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  strip.begin();
  strip.show(); // Initialize all NeoPixels to 'off'
}

void loop() {
  // Read current button state
  bool newState = digitalRead(BUTTON_PIN);

  // Check if state changed from high to low (button press)
  if (newState == LOW && oldState == HIGH) {
    // Short delay to debounce button
    delay(20);
    // Check if button is still low after debounce
    newState = digitalRead(BUTTON_PIN);
    if (newState == LOW) {
      showType++;
      if (showType > 9)
        showType=0;
      startShow(showType);
    }
  }

  // Set the last button state to the old state
  oldState = newState;
}

void startShow(int i) {
  switch(i){
    case 0: colorWipe(strip.Color(0, 0, 0), 50);    // Black/off
            break;
    case 1: colorWipe(strip.Color(241, 38, 205), 50);  // Pink
            break;
    case 2: theaterChase(strip.Color(127, 127, 127), 50); // White
            break;
    case 3: (50);
            break;        
    case 4: rainbow(20);
            break;
    case 5: rainbowCycle(20);
            break;

  }
}

// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
    strip.setPixelColor(i, c);
    strip.show();
    delay(wait);
  }
}

void rainbow(uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256; j++) {
    for(i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel((i+j) & 255));
    }
    strip.show();
    delay(wait);
  }
}

// Slightly different, this makes the rainbow equally distributed throughout
void rainbowCycle(uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256*10; j++) { // 10 cycles of all colors on wheel
    for(i=0; i< strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
    }
    strip.show();
    delay(wait);
  }
}

// Theatre-style crawling lights.
void theaterChase(uint32_t c, uint8_t wait) {
  for (int j=0; j<10; j++) {  // do 10 cycles of chasing
    for (int q=0; q < 3; q++) {
      for (int i=0; i < strip.numPixels(); i=i+3) {
        strip.setPixelColor(i+q, c);    //turn every third pixel on
      }
      strip.show();

      delay(wait);

      for (int i=0; i < strip.numPixels(); i=i+3) {
        strip.setPixelColor(i+q, 0);        // turn every third pixel off
      }
    }
  }
}

// Theatre-style crawling lights with rainbow effect
void theaterChaseRainbow(uint8_t wait) {
  for (int j=0; j < 256; j++) {     // cycle all 256 colors in the wheel
    for (int q=0; q < 5 /*3*/; q++) {
      for (int i=0; i < strip.numPixels(); i=i+3) {
        strip.setPixelColor(i+q, Wheel( (i+j) % 255));    // turn every third pixel on
      }
      strip.show();

      delay(wait);

      for (int i=0; i < strip.numPixels(); i=i+3) {
        strip.setPixelColor(i+q, 0);        // turn every third pixel off
      }
    }
  }
}

// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if(WheelPos < 85) {
    return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  }
  if(WheelPos < 170) {
    WheelPos -= 85;
    return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
  WheelPos -= 170;
  return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}

Endprodukt

Ein Schaltplan habe ich momentan keinen, aber wenn Bedarf besteht (Kommentare oder Kontaktforumular), dann werde ich diesen nachreichen. Mit Google findet man dazu aber genügend Anregungen.

Ausblick

Um die ganze Einheit wirklich unabhängig des Ortes verwenden zu können, habe ich bereits einige ESP8266 bestellt. Damit kann ich dann die Farben mittels App / Webinterface (da bin ich noch nicht sicher) steuern.
Außerdem werde ich das ganze noch etwas kompakter konstruieren um weniger Platz zu benötigen.

 

Creality CR-10 – Bester 3D Drucker unter 400,- Euro?

Der Titel ist sehr provokant formuliert, aber das ist Absicht! Seit nunmehr zwei Monaten befindet sich der CR-10 von Creatily in meinem Besitz. An dieser Stelle noch mal ein großes Dankeschön an Gearbest für dessen Bereitstellung. Aus meiner Sicht ist es nun an der Zeit einen Bericht zu veröffentlichen, den man als Review / Erfahrungsbericht einstufen darf.
Momentan ist der CR-10 wohl einer der am häufigsten genannten 3D Drucker, wenn es um den Einstieg in dieses Thema geht. Das liegt sicher daran, das er aktiv beworben wird, aber – soviel vorab – er ist einfach gut und hat es verdient.

Technische Daten

  • Großer Bauraum mit 300 x 300 x 400 mm
  • Basiert auf Marlin (OpenSource Firmware mit vielen Funktionen)
  • Drucken mittels beigelegter SD-Karte oder via USB (z.B. Octoprint)
  • 0,4 mm Nozzle mit bis zu 270 Grad
  • Beheiztes Druckbett
  • Druckgeschwindigkeit bis zu 80mm/s
  • Unterschiedliche Materialien wie ABS, PLA, TPU, … druckbar
  • Einfacher Aufbau, dank Nutenprofilen

Bilder

CR-10

Benchy

Sonstige

Aufbau

Der Aufbau gestaltet sich denkbar einfach, denn es müssen lediglich die zwei Basisframes der X-/Y- sowie Z-Achse verbunden werden. Dazu werden die vier beigelegten M4 Schrauben sowie die zwei T-Winkel benötigt. Dank der Nutenprofile ist dadurch eine erstaunliche Stabilität gegeben.
Fehlen noch die insgesamt neun Stecker, welche zum einen in die Steuereinheit und zum anderen auf Seite des Druckers einzustecken sind.
D. h. acht Schrauben, zwei T-Winkeln und neun Steckverbindungen, dann ist der Drucker – im Standard – aufgebaut.

Inbetriebnahme

Die Inbetriebnahme ist dahingehend schon etwas umständlicher, da es zwar Informationen zum Thema Slicer, … auf dem mitgelieferten USB-Stick gibt, aber dabei handelt es sich um alte Versionen von Repetier-Host und Cura. Ich wollte da auf aktuelle Versionen setzen und deren Vorzüge auch nutzen.
Nach Rücksprache mit einem Freund habe ich mich dazu entschieden Simplify3D auch mal eine Chance zu geben und habe die – seinerzeit – aktuelle Version 4.0 heruntergeladen.
Darin ist freundlicherweise schon ein Profil des CR-10 hinterlegt. Als Basis in Ordnung, aber es bedarf noch einiger Anpassungen, damit die Ergebnisse zufriedenstellend werden.

Ein Punkt auf den ich noch eingehen möchte, da mir dieser bei der Inbetriebnahme aufgefallen ist. Das Heizbett bzw. um genauer zu sein der Y-Schlitten war bei meinem Drucker sehr instabil sprich, ich konnte diesen hin und her bewegen. Ursache für dieses Verhalten waren die nicht sauber verschraubten Rollen des Y-Schlitten.
Kontrolliert dies am besten vor dem „verheiraten“ der zwei Frames. Zusammengebaut geht es auch aber so könnt ihr damit halt deutlich einfacher hantieren.

Unschönes und Upgrades

Mittlerweile ist die Community um den CR-10 enorm gewachsen und es gibt unzählbar viele Upgrades für die „Unschönheiten“. Wenn ihr Fragen hab, dann findet ihr in der deutsch– bzw. englischsprachigen Gruppe auf Facebook sicher zu allem eine Antwort. Des Weiteren lohnt es sich immer wieder mal auf Thingiverse nach neuen Upgrades zu schauen.

Mich haben folgende 3 Themen am meisten gestört:

  1. Die Lautstärke ist schon enorm und im Vergleich zu meinen anderen Drucker kaum zu ertragen. Das beruht erstaunlicherweise weniger auf seitens des Hotends oder der Filamentkühlung, sondern auf der Steuereinheit. Dort wurden drei Lüfter verbaut (1x Netzteil und 2x Gehäuselüftung) und nach dem ersten Blick in die Steuereinheit ist klar, dass die zwei Gehäuselüfter die Ursache sind. Ich habe diese kurzerhand durch passende Modelle der Marke Sunon ausgetauscht. Wichtig! Man sollte dazu mit einem Lötkolben umgehen können und nicht vor einem Kabelwulst zurückschrecken.
  2. Bei der Filamentkühlung hat sich Creatily zwar für eine leichte Variante (weniger Gewicht > höhere Druckgeschwindigkeit) entschieden, aber es zeigte sich bei den ersten Tests, dass man hier noch deutliches Optimierungspotential hat. Ich möchte das Thema im Zuge des Autobedleveling angehen und werde dazu diese Mod verwenden.
  3. Das Bedlevelling ist wie in Punkt 2 schon angesprochen ebenfalls ein Problem. Aktuell Behelfe ich mir mir diesen Druckteilen aus Thingiverse. Die größeren Rändelschrauben machen Einstellung des Heizbetts deutlich einfacher, da man viel besser daran kommt. Trotzdem werde ich hier auf eine automatische Variante (siehe Punkt 2) umsteigen.
    Um den Abstand der Z-Achse zum Druckbett generell einfacher einstellen zu können habe ich diesen Endstophalter eingebaut.

Übersicht bisheriger Upgrades

Mit einem Klick auf einen der Links wird das entsprechende „Thing“ aufgerufen.

Fazit

Nach nun einigen Wochen der intensiveren Nutzung kann ich ganz klar sagen, dass Creality mit dem CR-10 ein großer Wurf gelungen ist. Anfangs war ich mir sehr unsicher was den einseitigen Antrieb der Z-Achse angeht, aber das Druckbild hat mich eines besseren belehrt. Ich vermute es ist auf die Konstruktion aus Nutenprofilen sowie der zu 95 % massiven Teile.
Der Aufbau geht wirklich leicht von der Hand und sollte für alle binnen einer Stunde zu schaffen sein. Für passende Einstellungen der zahlreichen Slicer (siehe oben) gibt es die Gruppen in Facebook und div. Foren.

Aktuelle Angebote

Gearbest Creality CR-10 EU Version
Creality CR-10 EU Version 300x300x400 für 375,- Euro

Gearbest Creality CR-10 EU Version 400x400x400
Creality CR-10 EU Version 400x400x400