Webcamhalter für Octoprint und Anycubic i3 Mega mit Fusion 360 designen

Vor ein paar Monaten habe ich bei Pollin eine Webcam mitbestellt, weil die nur fünf Euro kostete. Es war die Grundig 72820, die es zwar nicht mehr bei Pollin, dafür aber noch über amazon zu kaufen gibt. Leider nicht mehr zu dem Schleuderpreis.

Die Cam stellte sich als sehr leicht heraus und die Bilder waren von mittlerer Qualität. Maximal Auflösung sind 640×480 Pixel, also VGA.


Das ist aber nicht weiter schlimm gewesen für mich, weil ich die Webcam eh nur an OctoPi beziehungsweise OctoPrint (Einrichtung Octoprint siehe hier) benutzen wollte und dort eh nicht mehr als VGA möglich sind, da damit schon der Prozessor vom Raspberry Pi Zero voll ausgelastet ist. Ich musste sogar noch ein wenig runtergehen auf 352x288 oder 320x240 Pixel, damit die Prozessorlast so um die 35 % liegt und der Druck auf keinen Fall negativ beeinflusst wird. Es wäre eine Schande, wenn der Druck verhunzt würde, nur weil die CPU gerade auf 100% hängt und ein Foto schießt und deshalb die GCode-Kommandos nicht rechtzeitig abgearbeitet würden.

Die Auflösung, in der die WebCam (respektive das von OctoPrint benutzte Tool mjpg-streamer) aufnimmt, kann man übrigens in der Datei /boot/octopi.txt auf dem OctoPi-Raspi ändern: pi@octopi:/boot $ cat octopi.txt ### Windows users: To edit this file use Notepad++, VSCode, Atom or SublimeText. ### Do not use Notepad or WordPad. ### MacOSX users: If you use Textedit to edit this file make sure to use ### "plain text format" and "disable smart quotes" in "Textedit > Preferences" ### Configure which camera to use # # Available options are: # - auto: tries first usb webcam, if that's not available tries raspi cam # - usb: only tries usb webcam # - raspi: only tries raspi cam # # Defaults to auto # #camera="auto" ### Additional options to supply to MJPG Streamer for the USB camera # # See https://github.com/foosel/OctoPrint/wiki/MJPG-Streamer-configuration # for available options # # Defaults to a resolution of 640x480 px and a framerate of 10 fps # # camera_usb_options="-r 320x240 -f 10" camera_usb_options="-r 352x288 -f 10" # camera_usb_options="-r 640x480 -f 5" ... Mit der gelb markierten Zeile fahre ich momentan am besten und habe eine CPU-Auslastung von ca. 33%. Außer OctoPrint läuft auch noch ein Python-Script im Hintergrund, das für die Aktualisierung des angeschlossenen Status-Displays (Anleitung, SourceCode, STLs etc. zum Nachbauen hier).

-r 352x288 meint übrigens Resolution, also eine Auflösung von 352x288 Pixel und -f 10 bezeichnet die Framerate, also wieviele Bilder pro Sekunde gemacht und übertragen werden. Hier sind es 10 Bilder pro Sekunde.



Bisher hatte ich die Webcam fest verbaut an der Seite am Regal, in dem auch der 3D-Drucker selbst steht. Damit läßt ich das Druckgeschehen remote vom Desktop-PC, Tablet oder Smartphone gut beobachten und man kann schnell eingreifen, wenn zum Beispiel ein Druck falsch lief und nur noch Gekräusel auf dem Bett landet. Dann kann man den Druck via OctoPrint gleich unterbrechen und den Druckkopf hochfahren und dann zum Drucker laufen, das Choas bereinigen.

Natürlich wollte ich dann auch irgendwann ein Video mit dem Druckverlauf aufnehmen. Dazu gibt es in Oktober Print ja die Option Zeitraffer. Allerdings war das Ergebnis nicht so toll aus denn das Druckbild bewegte sich immer vor und zurück und dadurch kam eine sehr wackliges Video heraus.

Dann habe ich mit dem OctoPrint Plug-in OctoLapse herum probiert, das macht immer ein Foto von der selben Stelle. Dafür fährt sie das Bett auf den immer gleichen Abstand, fährt den Druckkopf beiseite und fotografiert dann. Dadurch kommen schönere Videos zu Stande. Allerdings muss der Druckkopf dann auch jedes Mal absetzen und das führte bei mir zu unschönen Pickeln an den Druckobjekten. Da mir ein guter Druck aber über alles geht und wichtiger ist als ein schönes Video, habe ich von dieser Lösung dann Abstand genommen.


Eine andere Lösung wäre, wenn die Web cam immer im selben Abstand vom Druckbett wäre. Das ließe sich nur erreichen, wenn man die Webcam in einem festen Abstand zum Druckbett installiert, sprich am Druckbett selbst. Dies darf natürlich keine allzu wackelige Angelegenheit werden. Dass die Webcam vom Grundig so ein Leichtgewicht ist, spielt hier positiv hinein.

Als Standort für die Kamera suchte ich mir wieder vorne links aus, denn hier war ja bereits schon ein kleines LED Licht am Regal installiert. So kommt das Licht von hinten und leuchtet den Druckbereich gut aus. Auf Gegenlicht ist die Kamera nicht besonders gut zu sprechen reagiert mit Lens Flares und unscharfem Bild.


Damit die Kamera nicht an das Drucker Gehäuse oder den Druckkopf stoßen kann, ist ein Mindestabstand von etwa 10 cm nötig. Darauf folgt eine Abwinkelung nach links, damit die Kamera schräg auf das Druckbild schauen kann. Dort soll die Kamera ihren Platz finden.

Praktischerweise hat die Kamera am Boden eine trapezförmige Aussparung und ist zusammenklappbar. Auf der Webcam-Basis befindet sich ein Kugelgelenk, so dass die Kamera in alle Richtungen ausgerichtet werden kann. Durch den Klappmechanisch zusätzlich auch in der Höhe, wenn hier auch nur begrenzt.

Also habe ich in meinem Design ein entsprechendes Trapez designt in genau der richtigen Größe, so dass ich die Webcam darin einclippen kann. So hält die Webcam fest, und kann, wenn gewollt, auch wieder gelöst werden.


Für den Webcamhalter habe ich eine Stärke von 6 mm gewählt, damit die nötige Steifheit gewährleistet ist. Außerdem habe ich einen Bogen in das Design integriert, was zusätzliche Stabilität geben sollte. Wir wollen ja kein verwackeltes Video.

An das obere Ende des Halters habe ich noch 5 cm extra zugegeben. Dieser überschüssige Teil dient der Befestigung. Dabei liegt dieser Teil auf der Metallplatte unter dem Heizbett auf. Beziehungsweise wurde mit etwas Klebeknete dort fixiert. Man muss beim Festkleben des Halters auf die Metallplatte darauf achten, dass die Webcam nicht an den Druckkopf stoßen kann. Darum Druckkopf in Maximalposition fahren (Endschalter Y vorne) und mindestens einen Zentimeter Abstand lassen. Sonst rumpelt einem irgendwann mal der Druckkopf die Cam runter.

Von der linken Seite habe ich eine große Maul Akten Klammer 21451 (51mm) genommen, um diesen Teil auf die Metallplatte zu pressen. Das hält ganz gut, ist wieder gut demontierbar und wackelt nicht. Hier muss man natürlich darauf achten, dass die Maul Klammer nicht das Druckbett oben berührt. Denn wenn die Klammer das Druckbett noch oben drückt, kann man ein Leveling vergessen. Also lieber etwas weiter nach außen anbringen. Bei mir hat das aber wunderbar gepasst. Die silberne Spangen (zum Zusammendrücken der Klammer) kann man übrigens entfernen, indem man deren Ende zueinander hin zusammendrückt. Dann haken diese aus. Dann können die Spangen auch nirgends mehr hängenbleiben.



Nun kann ich wieder die normale Zeitraffer Funktion von OctoPrint benutzen, habe immer den selben Abstand und damit ein ruhigeres Video. Sogar mit einem leichten Vertigo Effekt.


Für die Zeitrafferkonfiguration in Octoprint habe ich folgende Werte gewählt: Das ergibt ein Verhältnis 1 zu 60 - Aufnahme zu Realität. Das heißt, dass in einer Sekunde Video eine Minute Druck bzw. in einer Minute Video eine Stunde Druck festgehalten werden, die 10 Sekunden am Ende, die das Druckergebnis noch einmal zeigen, nicht eingerechnet.

Die Auflösung ist zugegebenermaßen nicht toll mit nur 352x288 Pixeln, aber mit den Raspberry Pi Zero ist nicht mehr drin, will man den Druck nicht gefährden. Mit einem Raspberry 3 oder 4 sind sicher auch Full HD in 1920x1080 möglich, dann aber mit einer anderen Kamera. Die 5 MegaPixel der Grundig sind schlichtweg Übertreibung. Allerdings bräuchte es dann wieder eine kleine, leichte Kamera. Vielleicht wäre eine Action-Kamera wie die GoPro Hero oder etwas ähnliches eine gute Wahl dafür.

Eine schwere Spiegelreflexkamera wird nicht halten und eine Smartphone-Halterung würde auch noch einmal einen zusätzlichen 90°-Winkel benötigen und zu einer eher wackligen Angelegenheit werden.

Wer sich den Webcamhalter für die Grundig 72820 selbst ausdrucken will, kann sich hier die Dateien dafür hier downloaden. Das Zip-File enthält folgende Dateien:
Abschließend noch ein paar Bilder meiner Druckumgebung mit der installierten Webcam:




Nachtrag 2024-10-01



Mittlerweile sind so um die fünf Jahre rum und der Halter hält immer noch. Allerdings hat er sich ein bisschen durchgebogen. Das PLA ist halt nicht sonderlich hitzebeständig und direkt darüber liegt ja das Heatbed, dass ich für gewöhnlich auf 60 °C aufheize. Die Wärme und die Zeit hat dann zu einer leichte Wölbung nach unten geführt. Aber ich finde das mal eine gar nicht schlechte Performance für 6 mm starkes PLA.

Zwischendrin hat der Halter eine Maul Dokumentenklammer spendiert bekommen, weil ja auch die Klebeknete weicher wird bei höheren Temperaturen und damit der Halter bei der Action, die so ein Bettschubser-3D-Drucker mit sich bringen kann, nicht irgendwann mal herunterfällt.

Die etwas tiefere Position der Webcam kann ich einfach so ausgleichen, indem ich den Aufnahmewinkel ein wenig nach oben korrigiere. Solange die Webcam-Position nicht unter die Druckplatte sinkt und die Sicht versperrt, kann das so bleiben.

Inzwischen habe ich den Raspberry Pi Zero auf eine Zero 2 upgegradet, was ein spürbarer Perfomance-Gewinn war. Octoprint lässt sich jetzt flüssiger bedienen und ich konnte auf mir der Aufnahmeauflösung hochgehen.