*Youtube - Dokumente zu den Videos


*Youtube - Gcode je nach Filamenttyp ausführen

Hallo,

Ihr hab mit Klipper und dem Superslicer die Möglichkeit bei weitergabe der entsprechenden Varibale einen speziellen Gcode auszuführen.

Damit habt ihr die Möglichkeite zum Beispiel verschiedene Z-Offset, Bed Meshes oder gar startcodes auszuführen.

Video zu dem Beitrag

Was braucht ihr dafür?!



1. Slicer für die Weitergabe der Variable einrichten

Richtiger Filamenttyp im Slicer setzten

grafik.png

Wie sieht jetzt die Variable aus?

grafik.png


2. Variable im Startmakro des Slicers hinterlegen

Startcode im Superslicer
START_PRINT BED={first_layer_bed_temperature} EXTRUDER={first_layer_temperature} MATERIAL={filament_type}

Cura Starcode:

START_PRINT BED={material_bed_temperature_layer_0} EXTRUDER={material_initial_print_temperature} MATERIAL={material_type}


3. Prüfen ob Varaibale übergeben wurde

So soll es aussehen

grafik.png


4. Abfrage in euerem Makro hinterlegen

Respond in printer.cfg einfügen
#printer.cfg
[respond]
Quelltext/Code Materialabfrage
# variable laden | Am Anfang des Gcodes

    {% set material = params.MATERIAL %}

#  -----MATERIALABFRAGE CRYDTEAM---- #
    # Materialabhaengige Parameter wie PA, FLOW, Retract, Mesh usw.
    RESPOND MSG="Material: {material}"
    {% if material == "PLA" %}
    # Hier kommt euer spezifischer Code fuer PLA  hin  
    {% elif material == "PET" %}
    # Hier kommt euer spezifischer Code fuer PETG  hin
    {% elif material == "ABS" %}
    # Hier kommt euer spezifischer Code fuer ABS  hin
    {% endif %}
Beispiele für spezifischen Code
Komplettes Beispiel für Z-Offset
[gcode_macro START_PRINT]
description: All what needs to be done at print start
gcode:
    #### set defaults ####
    {% set extruder = params.EXTRUDER|default(0) %}
    {% set bed = params.BED|default(0) %}
    {% set material = params.MATERIAL %}

    #### end off definition  ####
    G28                                      ; Home
    M83                                      ; Extruder relative mode
    M190 S{bed}                              ; Bed heat up
    BED_MESH_PROFILE LOAD=default 
    M109 S{extruder}                       ; Extruder heat up to target temp
    G92 E0.0                                 ; Reset extruder length
    G90                                      ; Absolute positioning
    #  ----- MATERIALABFRAGE CRYDTEAM ---- #
    # Materialabhaengige Parameter wie PA, FLOW, Retract, Mesh usw.
    RESPOND MSG="Material: {material}"
    {% if material == "PLA" %}
    SET_GCODE_OFFSET Z=0.01
    {% elif material == "PET" %}
    SET_GCODE_OFFSET Z=0.02
    {% elif material == "ABS" %}
    SET_GCODE_OFFSET Z=0.03
    {% endif %}
    PRIME_LINE                       



4. Optional: Lege dir eine eigene CFG im Ordner dafür an:

  1. Legt einen Ordner "druck" an.
  2. Lege eine cfg an "startcode.cfg"
  3. inkludiere die Datei in der printer.cfg mit 
    [include ./druck/startcode.cfg]
  4. Start die FW neu

Bei Fragen schaut gerne auf unserem Discord vorbei:

button.png

*Youtube: Installiere Klipper auf deinem Drucker

Hier zeigen wir dir, wie du deinen Drucker "klippern" kannst.

Video zu diesem Beitrag

Was ist klipper:

Klipper ist eine eine Firmware für 3D Drucker. Dabei wird die Rechenleistung der Fahrwege auf einen Mikrocomputer, in unserem Fall ein Raspberry Pi ausgelagert.
Dadurch das Klipper mit sogenannten Konfigurationsdateien arbeitet, kannst du einfach und schnell den Drucker nach deinen Wünschen einrichten.

Was brauchst du?


Betriebssystem auf dem Pi installieren:

SD richtig formatieren
  1. Raspberry Pi Imager download + installieren
  2. OS auswählen: "Löschen" auswählen
  3. SD Karte wählen -> Klicky eure Karte an
  4. Schreiben klicken

Nachdem die Karte erfolgreich gelöscht wurde bitte einmal ausstecken und wieder einstecken.

Alternativ über windows mit Rechtsklick auf die SD Karte und formatieren.
Bitte folgende Einstellungen vornehmen:
Dateisystem: FAT32

Mainsail OS als Betriebssystem:

Möglichkeit 1: Mainsail OS
  1. Raspberry Pi Imager download + installieren
  2. OS auswählen:
    • Betriebssystem "OS wählen"
    • "Other specific-purpose" OS
    • 3D printing
    • Mainsais OS -> 32bit
  3. SD Karte wählen -> Wählt eure SD Karte aus
  4. Wichtig: Bitte vor dem Schreiben diese Einstellungen machen. Klickt dafür auf das Zahnrad unten rechts im Imager
    • SSH aktivieren / Passwort zur Authentifizierung verwenden
    • Benutzername und Passwort setzen: Bitte nicht den Namen ändern! ; Passwort setzten
    • Wifi einrichten: SSID eingeben ; Passwort eingeben; Wifi-Land: DE
Schritte nach der Installation


Raspbian OS als Betriebssystem:

Möglichkeit 2: Raspbian OS + Klipper (empfohlen)
  1. Raspberry Pi Imager download + installieren
  2. OS auswählen:
    1. Betriebssystem "OS wählen"
    2. Raspberry Pi OS (other)
    3. Raspberry Pi OS Lite (32bit)
  3. SD Karte wählen -> Klicky eure Karte an
  4. Wichtig: Bitte vor dem Schreiben diese Einstellungen machen. Klickt dafür auf das Zahnrad unten rechts im Imager
    • SSH aktivieren / Passwort zur Authentifizierung verwenden
    • Benutzername und Passwort setzen: Bitte nicht den Namen ändern! ; Passwort setzten
    • Wifi einrichten: SSID eingeben ; Passwort eingeben; Wifi-Land: DE
Schritte nach der Installation
Kiauh Installieren

Alle wichtigen Infos und die Dokumentation von Kiauh findet ihr hier

Installation

SSH Verbindung aufbauen (Putty)

sudo apt-get install git
cd ~
git clone https://github.com/th33xitus/kiauh.git
./kiauh/kiauh.sh

Navigation in Kiauh

Klipper + Moonraker + Mainsail installieren
cd ~
./kiauh/kiauh.sh

Empfehlung: Installiert auch immer in der Reihenfolge von Kiauh. Klipper->Moonraker->Mainsail

-> Menü 1 Installieren:
1 Klipper:

 2 Mooraker:

3 Mainsail:


SD Karte zum Flashen des Drucker vorbereiten (nicht die im Pi, sondern eine zweite):

Wir empfehlen euch keine zu große SD Karte zum Flashen zu nehmen. Also max 16GB.

Formatierung der SD zum Flashvorgang

Empfehlung:
Nehme auch hier das Rapsi Imager tool.

Wählt hier als "Betriebssystem" löschen aus und formatiert so eure Karte.

Es sollte so formatiert werden:

Dateisystem: FAT32

Größe der Zuordnungseinheit: 4096



Firmware für eueren Drucker vorbereiten:

cd ~/klipper
make clean
make menuconfig
make

Ab jetzt müsst ihr die Firmware für euren Drucker konfigurieren. Ich gebe euch hier die Einstellungen für die Drucker, die wir im Einsatz und getestet haben. Es gibt viele weiter Drucker, die mit klipper Laufen. Schaut hierzu im Klipper Github nach oder fragt google.


Vyper

Vyper_klipper.jpg

Neptune 3

Neptune_Firmware.png

Kingroon KP3S

KP3S_Firmware.png

Voron BTT Octopus

voron firmware.png



Firmware vom Pi auf die SD Karte ziehen:

Vyper

Verbindet euch wie oben angegeben per FTP zu eurem Pi. Die klipper.bin befindet sich im Ordner: /home/pi/klipper/out/klipper.bin


Für den Vyper müsst ihr die Datei wie folgt umbennen:

main_board_20230101.bin

Wichtig:
Dabei muss die Zahlenkombination (20230101) immer untschiedlich zu der Vorgängerversion sein.

Zieht nun die Datei auf die vorbeitet SD Karte.

Neptune 3

Verbindet euch wie oben angegeben per FTP zu eurem Pi. Die klipper.bin befindet sich im Ordner: /home/pi/klipper/out/klipper.bin

Für den Neptune 3 müsst ihr die Datei wie folgt umbennen:

ZNP_ROBIN_NANO.bin

Zieht nun die Datei auf die vorbeitet SD Karte.

KP3S

Verbindet euch wie oben angegeben per FTP zu eurem Pi. Die klipper.bin befindet sich im Ordner: /home/pi/klipper/out/klipper.bin

Für den KP3S müsst ihr noch folgendes in Putty tun:

./scripts/update_mks_robin.py ./out/klipper.bin ./out/Robin_nano.bin

Zieht nun die Datei Robin_nano.bin auf die vorbeitet SD Karte.

Voron BTT Octopus

Verbindet euch wie oben angegeben per FTP zu eurem Pi. Die klipper.bin befindet sich im Ordner: /home/pi/klipper/out/klipper.bin

Für den Voron müsst ihr die Datei wie folgt umbennen:

firmware.bin

Zieht nun die Datei auf die vorbeitet SD Karte.



Flashen des Druckers:

Schritte für erfolgreiches Flashen
  1. Schalte den Drucker + Pi aus
  2. Ziehe das Verbindungskabel zum Pi ab
  3. Warte 10 Sekunden
  4. Stecke die SD Karte ein
  5. Schalte den Drucker ein
  6. Warte 30 Sekunden (Je nach Druckermodell gibts hier Töne)
  7. Schalte den Drucker aus
  8. Entferne die SD Karte (Beim Voron bleibt diese im Board drin)
  9. Verbinde den Drucker über das Verbindungskabel mit dem Pi
  10. Schalte den Drucker und den Pi ein.


Laden der Konfigurationsdateien:

Folgende Dateien werden benötigt:

printer.cfg (Hauptdatei), mainsail.cfg , moonraker.conf

Über die printer.cfg könnt ihr mit [include xyz.cfg] weitere Dateien einbinden, die dann beim Firwarestart initialisiert werden.

Bitte ersetzte beim Kopieren der Konfigurationsdateien die moonraker.con nicht!!!!
Je nach installation sind hier die Pfade zum Klipper service angepasst. Wenn ihr die mit einem Stand der nicht zu euerer Klipper/Moonrakerverion ersetzt, kann es zu Verbindungsproblemen unter den Diensten kommen.

Link -> Vyper(Standard)-Konfig-Dateien
Link -> Vyper (Bltouch-Displaykabel)-Konfig-Datei
Link -> Vyper (SB + Extended Board)-Konfig-Datei
Link -> Neptune3-Konfig-Dateien
Link -> KP3S-Konfig-Dateien
Link -> Voron2.4-Konfig-Dateien
Link -> VoronTriden-Konfig-Dateien


Schnittstellenkonfiguration:

Was tun wenn dein Klipper erfolgreich Verbunden ist:

Initialschritte

1. Endstops prüfen : Maschine endstops
2. Lüfter prüfen : Unter Sonstiges
3. Motoren Prüfen: (in Mainsail Konstole eingeben)

STEPPER_BUZZ STEPPER=stepper_x

stepper_x ; stepper_y ; stepper_z ; stepper_z1

Beispiel Stealthburner



Druckerkalibrierung
Rotation Distance

Temperatur & Retract

First Layer & Flow

 

Flow & Pressure Advanced


*Youtube: Klipper Screen auf deinem Android Smartphone oder Tablet

Hallo liebe Community.
Heute zeigen wir euch, wie ihr euer altes Android Handy oder Tablet in einen Klipperscreen verwandeln könnt.


Was brauchst du dazu

  1. Ein Drucker mit der Klipper Firmware
  2. Natürlich einen Pi der mit dem Drucker erfolgreich verbunden ist
  3. Ein Android Smartphone oder Tablet
  4. Wenn du die Anbindung per USB machen willst, dann noch ein USB Kabel.

Installation von Klipperscreen auf dem Pi

Unsere Anleitung basiert auf der orginalen Anleitung von Klipper Screen die ihr hier findet.
Dokumentation Klipper Screen

Baut bitte per SSH (Putty) ein Verbindung zu eurem Pi auf und führt die nachfolgenden Befehle aus

1. Pi Updaten
sudo apt-get update && sudo apt-get upgrade
2. Github Repo von Klipper Screen auf euren Pi laden
cd ~/
git clone https://github.com/jordanruthe/KlipperScreen.git
cd ~/KlipperScreen
./scripts/KlipperScreen-install.sh

Bekommt ihr eine Meldung, dass ihr das Repo bereits habt, könnt ihr es mit foldenden Befehlen updaten:

cd ~/KlipperScreen
git pull
3. Moonraker.conf anpassen

Fügt die unten aufgelistete IP zu den "trusted Clients" in euerer Moonraker.conf

[authorization]
trusted_clients:
  127.0.0.1

 

4. (Optional) Update Manager eintragen

Trag das in euere moonraker.conf ein:

[update_manager KlipperScreen]
type: git_repo
path: ~/KlipperScreen
origin: https://github.com/jordanruthe/KlipperScreen.git
env: ~/.KlipperScreen-env/bin/python
requirements: scripts/KlipperScreen-requirements.txt
install_script: scripts/KlipperScreen-install.sh
managed_services: KlipperScreen


Anwendung auf dem Android Gerät installieren

App XSERVER XSDL installieren

Nehmt euer Smartphone oder Handy zur Hand und installiert über den Google Play Store die App XServer XSDL.

grafik.png

 

XSERVER Manuell über apk installieren (Für ältere Geräte)

https://sourceforge.net/projects/libsdl-android/files/apk/XServer-XSDL/XServer-XSDL-1.11.40.apk/download

App einrichten
“CHANGE DEVICE CONFIGURATION”
└──Mouse Emulation Mode
    └──Desktop, No Emulation


Verbindung von Pi zu Android herstellen

Auf eurem Android Gerät sollte jetzt ein Blauer Bildschirm sein mit einigen Informationen. Wichtig für euch ist folgendes:

Wo findet ihr die IP-Adresse eures Android Gerätes

grafik.png

Android Tools auf dem Pi installieren
sudo apt-get install android-tools-adb
Klipper Screen Launch script erstellen
cd ~/KlipperScreen/scripts
touch launch_KlipperScreen.sh
chmod +x launch_KlipperScreen.sh
Editieren von launch_KlipperScreen.sh
nano launch_KlipperScreen.sh

 Das in die Datei einfügen

DISPLAY=192.168.150.122:0 $KS_XCLIENT

Mit STRG+X verlassen. Speichern mit Y und dann mit ENTER bestätigen.

Gebt hier bitte die IP ein, die sich bei euch auf dem blauen Screen auf dem Android Gerät befindet.

Klipper Screen start/stop
sudo service KlipperScreen start
sudo service KlipperScreen stop

*Youtube: Kalibrierungsmakro

UMBAU:

Aufgrund des separaten Shaketune wird die Konfiguration aufgeteilt. Diese betrifft nunmehr eine All-in-One Kalibrierungsdatei für die Flow und PA Makros sowie das separate Shaketune. Dieses Video ist somit veraltet und sollte nicht mehr genutzt werden.

VERALTET:  https://youtu.be/WPEqDEZ3IJo

Vielmehr ist dieses Video nun zu nutzen:

NEU: Kalibrierungsmakro 3.0

In diesem Tutorial wird die Installation und Nutzung des Kalibrierungsmakros gezeigt. Vielen Dank an die Autoren und Unterstützer:

Félix Boisselier: https://github.com/Frix-x

Hardware

Das Kalibrierungsmakro umfasst eine Ressonanzmessung. Dafür wird ein ADXL benötigt. Für Anfänger ist dieser USB ADXL zu empfehlen:

USB-ADXL

Hardware:
https://de.aliexpress.com/item/1005005182131890.html

image.png


Installationsanleitung:
https://book.cryd.de/books/dokumente/page/tutorial-adxl345-einrichten

Alternativ lässt sich auch dieser ADXL nutzen.  Dieser wird über die GPIO-Leiste angeschlossen:

GPIO-ADXL

Hardware:
https://www.roboter-bausatz.de/p/gy-291-accelerometer-mit-adxl345-chip

image.png

Installationsanleitung:
https://book.cryd.de/books/dokumente/page/tutorial-adxl345-einrichten

Voraussetzungen

Dieses Makro ist darauf ausgelegt, dass sich die Klipper Konfigurationsdateien im  Ordner home/pi/printer_data/ befinden.

Sollten sich die Konfigurationsdateien in diesem Ordner  home/pi/klipper_config/ befinden bzw. sind im Order /printer_data nur Verlinkungen auf den Ordner /klipper_config vorhanden, ddann ist dieses Makro nur mit mehreren Anpassungen nutzbar. Dies ist manuell vorzunehmen und kann hier nicht weiter beschrieben werden.

Es empfiehlt sich die Ordnerstruktur neu aufzubauen. Dazu ist notwendig, Klipper komplett neu zu installieren. Ein Update erzeugt nur Verlinkungen.

Installation

 Zunächst müssen die benötigten Files auf den Raspberry Pi installiert werden. Dazu kann folgender Befehl genutzt werden.

Es sind vier Befehle (im Video wurden noch drei genannt). Der vierte installiert noch benötigte Bibliotheken.

wget -P ~/printer_data/config https://github.com/cryd-s/klipper_scripts/raw/main/calibration_3.0/calibrate.cfg

wget -P ~/printer_data/config https://github.com/cryd-s/klipper_scripts/raw/main/calibration_3.0/usb_adxl.cfg

sudo apt update && sudo apt install python3-venv libopenblas-dev libatlas-base-dev -y

wget -O - https://raw.githubusercontent.com/Frix-x/klippain-shaketune/main/install.sh | bash

Ist die Installation erfolgreich, so sind nach einer Aktualisierung der Mainsail-Oberfläche folgende Inhalte zu sehen:

m.png

Zum Schluss muss die calibrate.cfg und die Shaketune Dateien eingebunden werden:

[include K-ShakeTune/*.cfg]
[include calibrate.cfg]

Dies kann in die moonraker.conf eingespielt werden, damit die Ressonanztools einfach aktualisiert werden können

## Klippain Shake&Tune automatic update management
[update_manager Klippain-ShakeTune]
type: git_repo
origin: https://github.com/Frix-x/klippain-shaketune.git
path: ~/klippain_shaketune
virtualenv: ~/klippain_shaketune-env
requirements: requirements.txt
system_dependencies: system-dependencies.json
primary_branch: main
managed_services: klipper
KIAUH installieren (wenn noch nicht vorhanden)

Mit folgendem Kommando wird KIAUH installiert

cd ~
git clone https://github.com/th33xitus/kiauh.git
Shell Command installieren

Die Installation wird über KIAUH vorgenommen.

Zunächst wird Kiauh geöffnet

cd ~
./kiauh/kiauh.sh

Wähle 4 (Advanced)

KIAUH Menü

image.png

Wähle 8 (G-Code Shell Command)

KIAUH Menü

image.png

Bestätige mit Y

KIAUH Menü

image.png

Bestätige die Frage, ob eine Beispieldatei angelegt wird mit ja.

Schließe KIAUH mit B und danach Q

Kalibrierungsdateien einrichten

Als nächstes müssen die Dateien druckerspezifisch eingerichtet werden.

Diese calibrate.cfg beinhaltet alle Druckmakros. Es ist wie folgt aufgebaut:

    1. Calibrate (beinhaltet den Verweis auf euer Start- und Endmakro)
    2. PA Makro (beinhaltet die Kalibrierung des Pressure Advance)
    3. FLOW Makro (beinhaltet die Kalibrierung des Extrusion Multiplier)
1. Startmakro

Mit diesem Makro wird vor dem Test der Aufruf des Flow oder PA Test, das individuelle Start_Print Makro aufgerufen. Hier ist die Bed und Extrudertemperatur bereits eingetragen. Benötigt eurer Startmakro weitere Paramter, so sind diese hier einzutragen.

Alternativ kann das Flow und PA Makro direkt aufgerufen werden. Dabei ist jedoch zu beachten, dass vorher alle Schritte manuell durchzuführen sind (Home, QGL, Aufheizen, etc.)

image.png


2. PRESSURE ADVANCE Makro

Die Parameter, die beim Aufruf des Makros PRESSURE_ADVANCE_CALIBRATION zur Verfügung stehen, sind hier zu finden:

Parameter Standardwert Beschreibung
DO_RAFT 1 druckt eine "Basis", um das Testgitter zu stützen (bessere Haftung des Bettes und leichtere Entfernung am Ende)
START 0.02 PA-Wert zum Starten
INCREMENT 0.005 PA-Wert, der für jedes folgende Band erhöht wird
EXTRUSION_MULTIPLIER 1.25 wenn Raft aktiviert, 1.5 wenn deaktiviert Extrusionsmultiplikator, der auf die Druckzeilen im Band angewendet wird
PRINT_SIZE 120 maximale Breite/Höhe, in mm, die der Test nutzen kann. Das Modell wird in der Mitte des Bettes gedruckt.
BANDS_LIMIT 999 optional kann die Anzahl der Bänder auf diese Weise begrenzt werden. Ansonsten werden so viele Bänder gedruckt, wie in die angegebene GRÖSSE passen.
LINES_PER_BAND 6 Anzahl der Zeilen pro Band. Die Hälfte davon sind Kontrollzeilen, die andere Hälfte sind Testzeilen.
LINE_SPACING 0.4 Abstand zwischen den einzelnen Zeilen eines Bandes
PURGE_MM 8 mm Filament, das vor dem Druckstart zum Druckstart geschoben wird (kann 0 sein, um zu deaktivieren)
RAFT_SPEED 80 Vorschubrate (in mm/s) für den Druck des Rafts
CONTROL_SPEED 30 Vorschubgeschwindigkeit (in mm/s) für den Druck der "Kontroll"-Linien in einem Band
OUTER_SPEED 40 Vorschub (in mm/s) für den Druck des äußeren Teils der "Test"-Zeilen in einem Band
INNER_SPEED 80 Vorschubgeschwindigkeit (in mm/s) für den Druck des inneren Teils der "Test"-Zeilen in einem Band
TRAVEL_SPEED 200 Vorschubgeschwindigkeit (in mm/s) für schnelle Verfahrbewegungen
RETRACT_LENGTH 0.6 Rückzugslänge in mm (verwenden Sie Ihren eigenen Rückzugswert für das Filament)

 

3. FLOW Makro

Die Parameter, die beim Aufruf des Makros FLOW_MULTIPLIER_CALIBRATION zur Verfügung stehen, sind hier zu finden:

Parameter Standardwert Beschreibung
DO_RAFT 1 druckt eine "Basis", um die Schale zu stützen (bessere Bett-Haftung und leichteres Entfernen am Ende)
DO_RETRACT 0 Rückzug aktivieren/deaktivieren. Standardmäßig deaktiviert, um einen konstanten Fluss zu gewährleisten, kann aber bei Problemen mit dem Druck aktiviert werden.
PRINT_SIZE 40 Größe in mm, die für den Test auf dem Bett verwendet wird. Das Modell wird in der Mitte des Bettes gedruckt.
HEIGHT 15 Höhe in mm der gedruckten Schale
CORNER_RADIUS 8 Außenradius, der in den Ecken der Schale verwendet wird, um die Geschwindigkeit zu glätten und zu versuchen, einen konstanten Fluss über den Druck zu halten.
PERIMETERS 2 Anzahl der Perimeter, die zum Drucken der Schale verwendet werden. Wenn 1 Perimeter verwendet wird, ist es zwingend erforderlich, ein Mikrometer zum Messen zu verwenden: am besten ist es, >=2 zu verwenden.
FAN_SPEED 20 Prozentualer Anteil des Teillüfters, der für den Druck verwendet werden soll (wird nach dem Rafting eingesetzt)
EXTRUSION_MULTIPLIER 1.00 Extrusionsmultiplikator, der auf den Druck angewendet werden soll (verwenden Sie etwas, das dem realen Wert nahe kommt)
FILAMENT_DIAMETER 1.75 Durchmesser des aktuell im Gerät geladenen Filaments
EXTRUSION_WIDTH 0.4 Breite einer Extrusionslinie (als Ziel). Die Verwendung von 75-100% des Düsendurchmessers ist ein sicherer Wert.
LAYER_HEIGHT 0.2 Schichthöhe des Drucks. Vermeiden Sie einen zu kleinen Wert und versuchen Sie, in der Nähe von 0,5 * Düsendurchmesser zu bleiben.
CONTROL_SPEED 80 Vorschubgeschwindigkeit (in mm/s) für den Druck der Schale
RAFT_SPEED 60 Vorschubgeschwindigkeit (in mm/s) für den Druck des Floßes
TRAVEL_SPEED 200 Vorschubgeschwindigkeit (in mm/s) für schnelle Fahrbewegungen
Z_LIFT_SPEED 20 Vorschub (in mm/s) für Z-Lift-Bewegungen (grundsätzlich Z-Hop und Z-Ausrichtung)
RETRACT_SPEED 50 Vorschub (in mm/s) für Rückzug und Rückzug von Filamenten
RETRACT_LENGTH 0.5 Rückzugslänge in mm (verwenden Sie Ihren eigenen Rückzugswert für das Filament)
PURGE_MM 1 Menge des Filaments, um den Druck vor dem Drucken der Hauptlinie zu initiieren (kann 0 sein oder deaktiviert werden)
Kalibrierungsmakros nutzen

Im folgenden werden die jeweiligen Makros erklärt.

Durch die calibration.cfg  und die Shaketune Makros sind folgende Schaltflächen nutzbar:

image.png

PRESSURE ADVANCE

Folgende Werte können vor dem Start abgeändert werden (Hinterlegt sind die default Werte):

image.png

Ermittlung des PA:

Dieses Makro druckt eine Reihe von ¨Bändern¨, die jeweils mehrere Zeilen enthalten, wobei die ersten Zeilen langsam gedruckt und als Grundlinie/Kontrolle verwendet werden und die anderen mit variablen Geschwindigkeiten in der folgenden Reihenfolge: 25% der Zeile mit niedriger Geschwindigkeit, dann 50% mit hoher Geschwindigkeit und die letzten 25% wieder mit niedriger Geschwindigkeit gedruckt werden. Der PA wird für jedes Band erhöht.

pa_calibration.png

Das gedruckte Modell kann dann anhand der obersten und untersten Zeile in jedem Band überprüft werden: Artefakte des PA sind dort zu sehen, wo sich die Druckgeschwindigkeiten in jeder Zeile ändern. Sie müssen nur das höchste Band von unten finden, bei dem die oberen Linien noch ähnlich aussehen wie die unteren, ohne sichtbare Unregelmäßigkeiten in der Extrusionsbreite.

Zählen der Anzahl der Bänder von der Unterseite des Drucks, bis die Kontrolllinien ähnlich wie die Testlinien aussehen. Suche das Band, in dem es keine Ausbuchtung oder Lücke gibt, wie in der folgenden Abbildung:

pa_calibration_band_count.png

Verwenden die folgende Formel, um den neuen PA-Wert zu ermitteln:

NEW_PA = START + (INCREMENT * band_number)
FLOW MULTIPLIER

Folgende Werte können vor dem Start abgeändert werden (Hinterlegt sind die default Werte):

image.png

flow_calibration.png

Es arbeitet in zwei Phasen, bei denen zunächst das Makro FLOW_MULTIPLIER_CALIBRATION aufgerufen wird, um eine hohle Schale mit einer bekannten Anzahl von Perimetern auf der Grundlage der Slic3rPE flow math zu drucken. Die theoretische Schalendicke wird auch in der Fluidd/Mainsail-Konsole ausgedruckt und muss nach dem Druck mit einem Mikrometer oder Messschieber gemessen werden. Nach dem Eingeben in das zweite Makro COMPUTE_FLOW_MULTIPLIER MEASURED_THICKNESS=xxx.xxx wird der neue kalibrierte Durchfluss automatisch in der Fluidd/Mainsail-Konsole ausgedruckt.

Schließlich wird die Dicke der Schale mit einem Messschieber (oder besser noch mit einem Mikrometer) gemessen und das Berechnungsmakro mit dem gemessenen Wert aufgerufen.

COMPUTE_FLOW_MULTIPLIER MEASURED_THICKNESS=xxx.xxx

Es ist darauf zu achten, dass zwischen dem Druck und der Messung kein Neustart des Klippers durchgeführt wird, da sonst die gedruckten Schalenwerte gelöscht werden. Der neu berechnete Durchflusswert wird in der Web-Konsole angezeigt.

AXES SHAPER

Anleitung und Auswertung

BELT SHAPER

Anleitung und Auswertung

VIBRATION

Anleitung und Auswertung

*Youtube: Mainsail Timelapse mit jeder Kamera

Mit dieser Dokumentation könnt ihr nahezu jede beliebige Kamera für Timelapse nutzen.

Folgendes Video diente als Quelle:
https://www.youtube.com/watch?v=KsCaPWgIf5E

1. Installation gphoto2
Kompatibilitätsliste

http://gphoto.org/doc/remote/

Öffne Putty in und gebe folgendes Kommando ein und wähle die 1 (install latest developent version):

wget https://raw.githubusercontent.com/gonzalo/gphoto2-updater/master/gphoto2-updater.sh && wget https://raw.githubusercontent.com/gonzalo/gphoto2-updater/master/.env && chmod +x gphoto2-updater.sh && sudo ./gphoto2-updater.sh
sudo apt-get install libgphoto2-dev

Die Installation kann ein paar Minuten beanspruchen.

Lösche ältere Versionen mit diesem Kommando (optional):

sudo apt-get remove gphoto2 libgphoto2-6 libgphoto2-dev libgphoto2-l10n libgphoto2-port12

Starte den Raspberry Pi neu

sudo reboot
2. gphoto2 testen und konfigurieren

Prüfe, ob eine Verbindung zu deiner Kamera hergestellt werden kann. Kann eine Verbindung aufgebaut werden, so wird dies in Putty wie folgt angezeigt.

gphoto2 --auto-detect
Screenshot

image.png

oder

image.png

Sollte keine Kamera angezeigt werden, dann starte den Raspberry Pi erneut und prüfe ob die Kamera vorher in den richtigen USB Modus versetzt wurde. In der Kompatibilitätsliste wird unter Bemerkungen aufgeführt, wenn ein besonderer Treiber für die Kamera benötigt wird.

Erstelle als nächstes einen Snapshot mit der Kamera.

gphoto2 --auto-detect --capture-image

Sollte dies erfolgreich sein, dann wird dies in Putty ausgegeben. Dabei wird der Snapshot auf der Kamera gespeichert.

Screenshot

image.png

Mit diesem Kommando wird das Image auf den Raspberry Pi übertragen.

gphoto2 --auto-detect --capture-image-and-download
Speicherort

 Der Snapshot wird unter /home/pi abgelegt.

image.png

Prüfe die möglichen Speicherorte deiner Kamera:

gphoto2 --get-config capturetarget
Putty Fenster

image.png

Ändere den Speicherort auf die Speicherkarte (hier 2)

gphoto2 --set-config capturetarget=2
3. KIAUH installieren (wenn noch nicht vorhanden)

Mit folgendem Kommando wird KIAUH installiert

cd ~
git clone https://github.com/th33xitus/kiauh.git
4. Shell Command installieren

Die Installation wird über KIAUH vorgenommen.

Zunächst wird Kiauh geöffnet

./kiauh/kiauh.sh

Wähle 4 (Advanced)

KIAUH Menü

image.png

Wähle 8 (G-Code Shell Command)

KIAUH Menü

image.png

Bestätige mit Y

KIAUH Menü

image.png

Bestätige die Frage, ob eine Beispieldatei angelegt wird mit ja.

Schließe KIAUH mit B und danach Q

5. Skripte und Macros installieren.
shell_command.cfg

Wenn noch nicht vorhanden, erstelle eine shell_command.cfg Datei 

Inkludiere diese Datei in deine printer.cfg 

image.png

Mainsail Oberfläche

image.png

Füge folgenden Code in die shell_command.cfg ein

#=====================================================
# SET CAMERA SAVE LOCATION
#=====================================================
[gcode_shell_command gphoto2_set_config]
command: gphoto2 --set-config capturetarget=1
timeout: 1. ; make sure this is long enough to account for focus time
verbose: False

#=====================================================
# DSLR CAPTURE IMAGE
#=====================================================
[gcode_shell_command gphoto2_trigger_snapshot]
command: gphoto2 --auto-detect --trigger-capture
timeout: 10. ; make sure this is long enough to account for focus time
verbose: False


macro.cfg und printer.cfg

Quelle: https://github.com/EB3DPrinting/Klipper/blob/main/Ender-3Pro%232/macros.cfg


Füge diese Makros in deine macro.cfg ein

macro.cfg
#=====================================================
# MANUAL SET CAPTURE TARGET
#=====================================================
[gcode_macro GPHOTO_SET_TARGET]
gcode:
    RUN_SHELL_COMMAND CMD=gphoto2_set_config

#=====================================================
# TAKE SNAPSHOT COMMAND
#=====================================================
[gcode_macro TAKE_SNAPSHOT]
description: Saves current location, moves toolhead to rear of bed, and takes a snapshot before returning.
gcode:
  {% set delayMS = 2000 %} ; Delay after moving and before taking the snapshot, deals with buffering so we don't get the print head in motion
  {% set snapshotPositionX = printer.toolhead.axis_maximum.x / 2 %} ; Middle of bed
  {% set snapshotPositionY = printer.toolhead.axis_maximum.y - 5 %} ; rear of bed w/ some buffer
  {% set currentX = printer.gcode_move.gcode_position.x %}
  {% set currentY = printer.gcode_move.gcode_position.y %}
  {% set currentZ = printer.gcode_move.gcode_position.z %} ; could be used for z-hop which we are not doing in this macro, so it's best to run this in AFTER_LAYER_CHANGE
  SAVE_GCODE_STATE NAME=take_snapshot_state

  {% if printer.extruder.can_extrude|lower == 'true' %}
    G10 ; retract
  {% endif %}

  G90

  G0 X{snapshotPositionX} Y{snapshotPositionY} F5000.0 ;Move to snapshot position

  G4 P{delayMS} ; Dwell for delayMS seconds

  RUN_SHELL_COMMAND CMD=gphoto2_trigger_snapshot

  G0 X{currentX} Y{currentY} F5000.0 ;Return to original position

  {% if printer.extruder.can_extrude|lower == 'true' %}
    G11 ; unretract
  {% endif %}

  RESTORE_GCODE_STATE NAME=take_snapshot_state

#=====================================================
# MANUAL SNAPSHOT TEST
#=====================================================
[gcode_macro GPHOTO_SNAPSHOT_TEST]
gcode:
    RUN_SHELL_COMMAND CMD=gphoto2_trigger_snapshot

Füge diese Sektion in deine printer.cfg ein und passe die Werte an deine druckerspezifischen Werte an

printer.cfg
#====================================================================
# FIRMWARE RETRACTION
#====================================================================
[firmware_retraction]
#   The length of filament (in mm) to retract when G10 is activated,
#   and to unretract when G11 is activated (but see
#   unretract_extra_length below). The default is 0 mm.
retract_length: 1
#   The speed of retraction, in mm/s. The default is 20 mm/s.
retract_speed: 35
#   The length (in mm) of *additional* filament to add when
#   unretracting.
#unretract_extra_length: 0
#   The speed of unretraction, in mm/s. The default is 10 mm/s.
unretract_speed: 35

image.png

6. Makros einstellen und testen

Passe die Werte im Makro TAKE_SNAPSHOT nach deinen Bedürfnissen an

TAKE_SNAPSHOT

image.png


Es sollten unter der Makro Sektion neue Makros sichtbar sein

image.png

Teste mit dem Befehl "GPHOTO SNAPSHOT TEST" ob deine Kamera auslöst.

Sollte der Fehler "Unknown command: "RUN_SHELL_COMMAND"" erscheinen, dann wurde die shell_command.cfg nicht eingefügt bzw. inkludiert.

Teste mit dem Befehl "TAKE SNAPSHOT" ob dein Druckkopf zur korrekten position fährt und die Kamera auslöst (vorher muss der Drucker gehomed werden).

7. Slicer Einstellung

Für unter dem Reiter

Printer Settings / Custom G-code / After layer change G-code folgendes Kommando ein

TAKE_SNAPSHOT
8. Bilder bearbeiten

Die gespeicherten Bilder können nun zu einem Video editiert werden. DaVinci Resolve bietet eine Möglichkeit. Es gibt aber noch viele weitere Programme wie bspw. Shotcut.

*Youtube: ADXL345 einrichten

Videolink: https://youtu.be/l9kqh9gtjFo

Stand: 10.06.2023

In diesem Tutorial wird die Einrichtung des ADXL345 beschrieben. Die Einrichtung ist abhängig vom gewählten ADXL.

1a. ADXL345 (über GPIO)

Für die Steuerung wird der Raspberry Pi selbst als MCU genutzt. Folgende Schritte müssen zur Nutzung durchgeführt werden:

Quellen:
https://www.klipper3d.org/Measuring_Resonances.html
https://www.klipper3d.org/RPi_microcontroller.html

Anschlussplan

Quelle: https://www.klipper3d.org/Measuring_Resonances.html

Über Putty auf den Raspberry Pi zugreifen

SPI aktivieren:

sudo raspi-config
3 Interface Options
I4  SPI
enabled <yes>
Screenshots

image.png

image.png

image.png

Installation des Skriptes:

cd ~/klipper/
sudo cp ./scripts/klipper-mcu.service /etc/systemd/system/
sudo systemctl enable klipper-mcu.service

 Erstellung der Flash Datei:

cd ~/klipper/
make menuconfig

image.png

Hier müsst ihr Linux process auswählen, dies dann bestätigen und speichern.

sudo service klipper stop
make flash
sudo service klipper start

Wenn in klippy.log ein "Zugriff verweigert"-Fehler gemeldet wird, wenn Sie versuchen, eine Verbindung zu /tmp/klipper_host_mcu herzustellen, müssen Sie Ihren Benutzer zur tty-Gruppe hinzufügen. Der folgende Befehl fügt den Benutzer "pi" zur tty-Gruppe hinzu:

sudo usermod -a -G tty pi

Folgende Zeilen müssen in die printer.cfg kopiert werden:

############################################
##########Input Shaper Config###############
############################################

[adxl345]
cs_pin: rpi:None
axes_map: x,-z,y #die Ausrichtung ist abhängig vom ADXL mount.

[resonance_tester]
accel_chip: adxl345
probe_points:
    122.5,125,20   #beziehungsweise die Koordinaten für die Mitte des Druckbetts

[mcu rpi]
serial: /tmp/klipper_host_mcu

Danach ist der Raspberry Pi neu zu starten:

sudo reboot

Die neue MCU sollte nun unter Maschine angezeigt werden:

image.png

Folgender Befehl ist nun in die Kommandozeile der Mainsail-Oberfläche einzugeben:

ACCELEROMETER_QUERY

Wird folgender Code ausgegeben, so ist die Verkabelung nochmals zu prüfen. 

Invalid adxl345 id (got 0 vs e5)

Sollte diese Meldung erscheinen, so ist die Einrichtung abgeschlossen:

Recv: // adxl345 values (x, y, z): 470.719200, 941.438400, 9728.196800

Danach geht es mit Schritt 2 weiter

1b. ADXL345 (über USB)

Diese Konfiguration bezieht sich auf folgenden USB ADXL:
https://de.aliexpress.com/item/1005005182131890.html

Über Putty auf den Raspberry PI zugreifen.

Danach ist die Flash Datei zu erstellen:

cd klipper
make clean
make menuconfig

Folgende Einstellungen sind zu wählen:

image.png

Danach ist die Datei zu erstellen

make

Der USB ADXL ist nun an den PC anzuschließen. Dabei ist die Taste am ADXL gedrückt zu halten.

Danach über WINSCP auf den Raspberry Pi zugreifen und die Datei klipper.uf2 auf den USB ADXL kopieren. Der USB ADXL sollte sich dann neustarten.

Nun ist der USB ADXL an den Raspberry Pi anzuschließen.

Danach mit folgendem Befehl die ID des USB ADXL auslesen:

ls /dev/serial/by-id/*

image.png

Der USB ADXL wird durch einen rp2040 gesteuert. Hier ist es die zweite ID.

Folgende Zeilen müssen in die printer.cfg kopiert werden:

[mcu adxl]
serial: /dev/serial/by-id/[YOUR ID] #paste your specific ID here

[adxl345]
cs_pin: adxl:gpio1

# Hardware SPI Option (Better results, "Invalid ID" Klipper bug with first query)
# spi_bus: spi0a

# Software SPI Option (No "Invalid ID" Klipper bug with first query)
spi_software_sclk_pin: adxl:gpio2
spi_software_mosi_pin: adxl:gpio3
spi_software_miso_pin: adxl:gpio0

[resonance_tester]
accel_chip: adxl345
probe_points:
   120,120,20 #or 

Der USB ADXL sollte nun unter Maschine aufgeführt sein.

image.png

Folgender Befehl ist nun in die Kommandozeile der Mainsail-Oberfläche einzugeben:

ACCELEROMETER_QUERY

Wird folgender Code ausgegeben, so ist die Verkabelung nochmals zu prüfen. 

Invalid adxl345 id (got 0 vs e5)

Sollte diese Meldung erscheinen, so ist die Einrichtung abgeschlossen:

Recv: // adxl345 values (x, y, z): 470.719200, 941.438400, 9728.196800

Danach geht es mit Schritt 2 weiter.

2. Software einrichten

Es ist zu beachten, dass Schwingungsmessungen und die Auto-Kalibrierung zusätzliche Software-Abhängigkeiten erfordern, die nicht standardmäßig installiert sind. Zunächst sind die Files zu aktualisieren:

sudo apt update 
sudo apt install python3-numpy python3-matplotlib libatlas-base-dev

 Als nächstes, um NumPy im Klipper-Umfeld zu installieren, ist dieser Befehl auszuführen:

~/klippy-env/bin/pip install -v numpy

Es ist zu beachten, dass je nach Leistung der CPU die Installation viel Zeit in Anspruch nehmen kann, bis zu 10-20 Minuten.

Danach ist der Raspberry Pi neu zu starten:

sudo reboot

Nach der Installation kann dieser mit folgendem Makros genutzt werden, um die Ressonanzmessung vorzunehmen:

https://book.cryd.de/books/klipper/page/youtube-kalibrierungsmakro

*Youtube: Unabhängige Beschleunigungswerte für X und Y

Videolink: https://youtu.be/Nm_14FqvYbg

Bitte beachte, dass die Verwendung dieser Datei eine Anpassung der Klipper-Firmware vornimmt. Dadurch greifst du in den Kern deines 3D-Druckersystems ein. 

Es wird von uns empfohlen, dass nur erfahrene Personen mit fortgeschrittenen Kenntnissen und der Fähigkeit, Fehlverhalten zu erkennen, diese Modifikation vornehmen sollten. Eine unsachgemäße Anwendung oder Konfiguration kann zu Fehlfunktionen oder Beschädigungen führen. 

Sorge bitte dafür, dass du die Auswirkungen der Änderungen verstehst und mache Backups deiner aktuellen Firmware-Einstellungen, bevor du Änderungen vornimmst.

Hintergrund

Credits:
Dieses Skript wurde von Piezo erstellt:
Github: klipper/limited_cartesian.py at work-peraxis · Piezoid/klipper · GitHub
Diskussion: Independant acceleration limits for X and Y axes - Features - Klipper

Dieses Makro ermöglicht die Einstellung separater Beschleunigungswerte für X und Y. Dies spielt insbesondere für "Bedslinger" Drucker eine wichtige Rolle. 

Warum:
Ein Bedslinger 3D-Drucker, auch als bewegliches Bett-3D-Drucker bekannt, ist eine Variante des kartesischen 3D-Druckers. Bei dieser Art von Drucker bewegt sich das Druckbett entlang einer Achse (meist der Y-Achse), während der Druckkopf entlang der anderen beiden Achsen (X- und Z-Achse) bewegt wird. Im Folgenden erläutere ich den grundlegenden Aufbau und einige Nachteile von Bedslinger 3D-Druckern.  Da das Druckbett entlang der Y-Achse bewegt wird und die Masse des Objekts und des Druckbetts beeinflusst, kann dies die Druckgeschwindigkeit und -beschleunigung beeinträchtigen. Je größer und schwerer das Druckbett und das Objekt sind, desto schwieriger ist es, hohe Druckgeschwindigkeiten zu erreichen, ohne die Druckqualität bzw. -beschleunigung zu beeinträchtigen.

Wirkungsweise

Die in den Klipper angezeigte Beschleunigungseinstellung kann als "Requested Acceleration" verstanden werden. Sie wird mit dem max_accel-Wert der Konfiguration initialisiert und kann vom Slicer über M204 S[xxx] oder ein beliebiges Makro, das SET_VELOCITY_LIMIT aufruft, festgelegt werden.

Das Skript reduziert diese angeforderte Beschleunigung, wenn die Beschleunigung auf einer Achse größer ist als die entsprechenden max_[x/y/z]_accel-Einstellungen.

308a90ac702b6e251512a270bbf36cb4ff5419b7.png
Vektoren repräsentieren Bewegungsbeschleunigungen und Orientierung: Die Pfeillänge ist die Beschleunigung und ihre Ausrichtung ist identisch mit der Bewegungsorientierung in der X/Y-Ebene. Das Original-Klipper wendet immer eine Beschleunigung auf den roten gestrichelten Kreis an = Alle Bewegungen werden unabhängig von ihrer Ausrichtung gleich behandelt. Der leuchtend rote Vektor ist ein Beispiel dafür. Die beiden hinzugefügten Grenzen sind die horizontalen und vertikalen roten Linien. Der hellgrüne Vektor ist ein Beispiel dafür, wie die Bewegung durch die Y-Achsen-Beschleunigungsgrenze begrenzt wird. Wenn max_accel (oder der Wert, der über den Slicer oder das Frontend festgelegt wurde) kleiner ist als die diagonale Länge des Rechtecks max_x_accel x max_y_accel, erhalten Sie diese abgerundete Beschränkung der erlaubten Beschleunigungszone. Das bedeutet, dass diagonale Bewegungen bei max_accel ausgeführt werden, anstatt dass eine der Achsenbeschränkungen angewendet wird.

Man kann dies vermeiden, indem man den max_accel-Wert auf den maximalen diagonalen Beschleunigungswert setzen, der von SET_KINEMATICS_LIMIT gemeldet wird, oder ihn selbst berechnen, indem man sqrt(a_x2 + a_y2) verwendet. Dies geschieht nicht automatisch, da die Begrenzung der diagonalen Beschleunigung nützlich sein kann.

Wenn jedoch der Slicer eine niedrigere Beschleunigung während des Drucks festlegt, erhält man wieder diese Begrenzung. Argumentiert werden könnte, dass dies das gewünschte Verhalten ist: Hochgeschwindigkeits-Bewegungen werden auf die Achsenbeschränkungen begrenzt, während langsamere Extrusionsbewegungen nicht von ihrer Ausrichtung beeinflusst werden und somit inkonsistente Extrusionen aufgrund variabler Beschleunigung vermieden werden. (In der Abbildung werden Extrusionsbewegungen auf einem kleineren gestrichelten Kreis ausgeführt, der die Achsenbeschränkungen nicht berührt). Das oben Gesagte gilt nur, wenn scale_xy_accel (wird weiter unten erklärt) deaktiviert ist (der Standard). Wenn die Skalierung aktiviert ist, werden die x/y-Beschleunigungsgrenzen bei einer Änderung von max_accel mit skaliert. In der Abbildung kommt es, wenn die Beschleunigung reduziert wird, zu einer Annäherung der dicken dunkelroten Grenze an den Ursprung, was bedeutet, dass der erlaubte Beschleunigungsbereich verkleinert wird, aber seine Form erhalten bleibt. Dieses Skript führt zu variablen Beschleunigungen, selbst bei Extrusionsbeschleunigungen, kann aber dazu beitragen, das Ringing auf dem Druck zu reduzieren, das durch ein schweres Bett verursacht wird.

Kartesische Drucker (Bedslinger)
Installation

Link: https://raw.githubusercontent.com/Piezoid/klipper/work-peraxis/klippy/kinematics/limited_cartesian.py

Kopierbefehl

curl 'https://raw.githubusercontent.com/Piezoid/klipper/work-peraxis/klippy/kinematics/limited_cartesian.py' > ~/klipper/klippy/kinematics/limited_cartesian.py

Der Code ist als kinematische Datei abgelegt. Auf diese Weise kann die Datei unter home/pi/klipper/klippy/kinematics eingefügt und die Kinematik in der printer.cfg unter [printer] auf kinematics: limited_cartesian geändern werden.

Um die Änderungen zu aktivieren, müssen Sie den Klipper-Prozess neu starten: sudo systemctl restart klipper oder das System neu starten.

Einrichtung

Die [Printer] Sektion wird überarbeitet. Diese Variante besitzt folgende Elemente:

[printer]
kinematics: limited_cartesian Stellt die Kinematik auf unabhängige X, Y Werte um
max_velocity: 500  Berechneter Wert [√(x² + y²)]
max_x_velocity: 400 gewünschter maximaler x Geschwindigkeitswert
max_y_velocity: 300 gewünschter maximaler y Geschwindigkeitswert
max_accel: 15000 Berechneter Wert [√(x² + y²)]
max_x_accel: 12000 gewünschter maximaler x Geschwindigkeitswert
max_y_accel: 9000 gewünschter maximaler y Beschleunigungswert
scale_xy_accel: [True/False, default False]

True: Die im Slicer hinterlegten Beschleunigungswerte werden um das jeweilige Verhältnis heruntergerechnet

False: Sind die im Slicer hinterlegten Werte kleiner, so werden die max_x und max_y Werte  dadurch ersetzt.

Beispiel

Slicer:
Beschleunigungswerte werden nicht festgesetzt oder nur für Druckzeitberechnung genutzt.

Klipper:
[printer]
kinematics: limited_cartesian
max_velocity: 333   # Hypotenuse von X,Y [√(x² + y²)]
max_x_velocity: 250
max_y_velocity: 200

max_accel: 5609
max_accel_to_decel: 5609
max_x_accel: 5000
max_y_accel: 1100
scale_xy_accel: false #set to false, true is usefull to combine with slicer settings

max_z_velocity: 40
max_z_accel: 100

Auswirkung:

  • kinematics: Dieser Parameter bestimmt das kinematische Modell des Druckers. In diesem Fall ist es auf limited_cartesian gesetzt. Dies bedeutet, dass der Drucker in einer kartesischen (d.h., x, y, z) Koordinatensystem arbeitet, aber mit bestimmten Geschwindigkeits- und Beschleunigungslimits.

  • max_velocity: Dieser Parameter legt die maximale Geschwindigkeit des Druckers in mm/s fest. In diesem Fall ist die maximale Geschwindigkeit auf 333 mm/s eingestellt.

  • max_x_velocity: Dieser Parameter legt die maximale Geschwindigkeit auf der X-Achse in mm/s fest. Hier ist die maximale Geschwindigkeit auf der X-Achse auf 250 mm/s eingestellt.

  • max_y_velocity: Dieser Parameter legt die maximale Geschwindigkeit auf der Y-Achse in mm/s fest. Hier ist die maximale Geschwindigkeit auf der Y-Achse auf 200 mm/s eingestellt.

  • max_accel: Dieser Parameter legt die maximale Beschleunigung des Druckers in mm/s² fest. In diesem Fall ist die maximale Beschleunigung auf 5609 mm/s² eingestellt.

  • max_accel_to_decel: Dieser Parameter legt die maximale Bremsbeschleunigung des Druckers in mm/s² fest. In diesem Fall ist die maximale Bremsbeschleunigungauf 5609 mm/s² eingestellt.
  • max_x_accel: Dieser Parameter legt die maximale Beschleunigung auf der X-Achse in mm/s² fest. Hier ist die maximale Beschleunigung auf der X-Achse auf 5000 mm/s² eingestellt.

  • max_y_accel: Dieser Parameter legt die maximale Beschleunigung auf der Y-Achse in mm/s² fest. Hier ist die maximale Beschleunigung auf der Y-Achse auf 1100mm/s² eingestellt.

  • scale_xy_accel: Dieser Parameter legt fest, ob die X- und Y-Beschleunigungswerte proportional zur Geschwindigkeit skaliert werden sollen. Wenn dieser Parameter auf false gesetzt ist (wie in diesem Fall), werden die Beschleunigungen nicht skaliert. 

Bitte beachte, dass diese Parameter stark von der spezifischen Hardware Ihres Druckers abhängen und daher angepasst werden müssen, um optimale Druckergebnisse zu erzielen.

CoreXY Drucker

Folgt demnächst.

*Youtube: Makro zur Beschleunigungsermittlung

Videolink: https://youtu.be/CPPPb6jscCk

Einführung

Die Makros MAX_VELOCITY_TEST, MAX_ACCEL_TEST und BENCHMARK sind dafür entwickelt worden, um die maximale Beschleunigung und Geschwindigkeit des 3D-Druckers entlang der X- und Y-Achsen zu testen. Es führt eine Reihe von Testbewegungen bei verschiedenen Beschleunigungs- und Geschwindigkeitswerten aus, um die Leistung des Druckers bei unterschiedlichen Einstellungen zu untersuchen.

ACHTUNG
Dabei werden nur die physischen Eigenschaften getestet. Diese können bspw. für Travel-Bewegungen genutzt werden. Ob diese Werte seitens des Hotends realisiert werden können muss separat ermittelt werden. Für dieses Makro muss derzeitig die stepper.py ausgetauscht werden. Dies kann dafür sorgen, dass KIAUH nicht mehr updaten kann. Vor einem Update ist ggf. die originale Stepper.py einzuspielen und nach dem Update wieder auszutauschen. Wir sind derzeitig dabei, diese Funktion in das Standardklipper zu integrieren, damit dieser Schritt entfallen kann.

Installation
"MAX_VELOCITY_TEST" Makro

ACHTUNG 
Das Makro lässt sich nur über den "Not-Aus" stoppen.

``MAX_VELOCITY_TEST`` ist dazu gedacht, die maximale Geschwindigkeit eines 3D-Druckers entlang der X- und Y-Achse zu testen. Es führt eine Reihe von Testbewegungen bei verschiedenen Geschwindigkeiten aus und ermöglicht es , die Leistung des Druckers bei unterschiedlichen Geschwindigkeiten zu untersuchen.

Das Makro verwendet mehrere Parameter, um den Test anzupassen:
- MIN_VELOCITY: Die minimale Geschwindigkeit, mit der der Test beginnen soll (Standardwert: 10 mm/s).
- MAX_VELOCITY: Die maximale Geschwindigkeit, mit der der Test durchgeführt werden soll (Standardwert: 300 mm/s).
- VELOCITY_INCREMENT: Die Erhöhung der Geschwindigkeit für jeden Schritt des Tests (Standardwert: 10 mm/s).
- AXIS: Die Achse, entlang der der Test durchgeführt werden soll (Standardwert: "X").
- ACCEL: Der Beschleunigungswert, der während des Tests verwendet werden soll (Standardwert: die maximale Beschleunigungseinstellung des Druckers).
- DISTANCE: Gibt die Entfernung für die Testbewegungen an, entweder "full" (Standardwert) oder "short". Wenn es auf "full" gesetzt ist, wird das Makro die maximal verfügbare Entfernung auf der Achse verwenden; wenn es auf "short" gesetzt ist, wird es eine zufällige Entfernung für jede Testbewegung verwenden, die sicherstellt, dass die angegebene Geschwindigkeit erreicht wird.
- REPEAT: Anzahl der Hin- und Rückfahrten, die bei jedem Geschwindigkeitsschritt durchgeführt werden sollen (Standardwert: 5 für "DISTANCE=full", 50 für "short").

"MAX_ACCEL_TEST" Makro

ACHTUNG 
Das Makro lässt sich nur über den "Not-Aus" stoppen.

Das ``MAX_ACCEL_TEST`` G-Code-Makro wurde entwickelt, um die maximale Beschleunigung eines 3D-Druckers entlang der X- und Y-Achsen zu testen.
Es führt eine Reihe von Testbewegungen mit verschiedenen Beschleunigungswerten durch, sodass  die Leistung des Druckers bei unterschiedlichen Beschleunigungsraten untersucht werden kann.

Das Makro verwendet mehrere Parameter, um den Test anzupassen:
- MIN_ACCEL: Die minimale Beschleunigung, bei der der Test beginnen soll (Standard: 100 mm/s^2).
- MAX_ACCEL: Die maximale Beschleunigung, bei der der Test durchgeführt werden soll (Standard: 1000 mm/s^2).
- ACCEL_INCREMENT: Der Zuwachs in der Beschleunigung für jeden Schritt des Tests (Standard: 100 mm/s^2).
- AXIS: Die Achse, entlang der der Test durchgeführt werden soll (Standard: "X").
- SPEED: Die Geschwindigkeit, die während des Tests verwendet werden soll (Standard: die maximale Geschwindigkeitseinstellung des Druckers).
- REPEAT: Anzahl der Hin- und Rückfahrten, die bei jedem Geschwindigkeitsschritt durchgeführt werden sollen (50).

"BENCHMARK" Makro

ACHTUNG 
Das Makro lässt sich nur über den "Not-Aus" stoppen.

Das ``BENCHMARK`` Makro ist dafür gedacht, das Leistungsverhalten eines 3D-Druckers anhand einer Reihe von Kurz- und Langbewegungen zu testen. Das Makro erlaubt es, eine umfangreiche Analyse des Druckers hinsichtlich verschiedener Beschleunigungs- und Geschwindigkeitsparameter durchzuführen.

Das Makro verwendet folgende Parameter, um den Test anzupassen:
MAX_ACCEL: Die maximale Beschleunigung, mit der der Test durchgeführt werden soll (Standardwert: die maximale Beschleunigungseinstellung des Druckers).
MAX_VELOCITY: Die maximale Geschwindigkeit, mit der der Test durchgeführt werden soll (Standardwert: die maximale Geschwindigkeitseinstellung des Druckers).
MOVEMENTS_SHORT: Anzahl der kurzen Bewegungen, die durchgeführt werden sollen (Standardwert: 200).
MOVEMENTS_LONG: Anzahl der langen Bewegungen, die durchgeführt werden sollen (Standardwert: 200).
RANDOM_SEED: Ein Seed-Wert für die Zufallszahlengenerierung, um die Position der Bewegungen festzulegen (Standardwert: 42).
Das Makro beginnt mit dem Homing der Achsen und setzt die Z-Achse auf 20. Danach stellt es die Beschleunigungs- und Geschwindigkeitsgrenzen des Druckers entsprechend den gegebenen oder Standardparametern ein.

Danach führt das Makro die festgelegte Anzahl an kurzen Bewegungen aus. Für jede Bewegung berechnet das Makro eine Zufallsposition entlang der X- und Y-Achse, wobei es sicherstellt, dass die Bewegung innerhalb des gültigen Bereichs der jeweiligen Achse bleibt. Es verwendet den gegebenen oder Standardseed für die Zufallsgenerierung, um die Positionen festzulegen. Ähnlich führt das Makro danach die festgelegte Anzahl an langen Bewegungen aus, wieder mit zufällig berechneten Positionen basierend auf dem Seed-Wert. Am Ende des Tests führt das Makro erneut ein Homing der X- und Y-Achsen durch und setzt die Geschwindigkeits- und Beschleunigungsgrenzen des Druckers auf ihre ursprünglichen Werte zurück. Dieses Makro ist sehr nützlich, um das Verhalten des Druckers unter verschiedenen Bedingungen zu analysieren und zu optimieren, insbesondere im Hinblick auf Geschwindigkeits- und Beschleunigungseinstellungen. Es kann auch dazu verwendet werden, um mögliche Probleme mit der Drucker-Hardware zu identifizieren, indem man das Verhalten des Druckers bei unterschiedlichen Geschwindigkeits- und Beschleunigungsparametern überwacht.

Testablauf

1. Maximale Geschwindigkeit
Das Makro MAX_VELOCITY_TEST sollte auf der X-Achse ausgeführt werden. Dabei sollte sich schrittweise an die Maximalgeschwindigkeit herangetastet werden. Die full Distanz sollte genutzt werden. Bei "ungünstigen" Geräuschen des Druckers sollte das Makro durch Betätigen des Not-Aus gestoppt werden.
!!Achtung!! Trotz hoher Geräusche kann es passieren, dass es zu keinem Schrittverlust kommt. Hier sollte neben der technischen Erkennung im Zweifel nach Gehör agiert werden
Die Geschwindigkeit, welche keine Geräusche produziert, sollte über die short Distanz validiert werden. Dieser Test sollte dann analog auf der Y-Achse ausgeführt werden. Dabei ist zu beachten, dass Bedslinger Drucker auf der Y-Achse eine geringere Geschwindigkeit leisten können. Die ermittelte Maximalgeschwindigkeit sollte aus Sicherheitsgründen und zur Materialschonung um 20% reduziert werden.

3. Maximale Beschleunigung
Das Makro MAX_ACCEL_TEST sollte auf der X-Achse ausgeführt werden. Dabei sollte sich schrittweise an die Maximalbeschleunigung herangetastet werden. Dieses Makro hat eine automatische Selbstabschaltung bei Schrittverlust. Trotzdem sollte der Drucker bei "ungünstigen" Geräuschen durch Betätigen des Not-Aus gestoppt werden. Die Beschleunigung, welche keine Geräusche produziert, sollte über einen REPEAT von 200 validiert werden. Dieser Test sollte dann analog auf der Y-Achse ausgeführt werden. Dabei ist zu beachten, dass Bedslinger Drucker auf der Y-Achse eine geringere Beschleunigung leisten können. Die ermittelte Maximalbeschleunigung sollte aus Sicherheitsgründen und zur Materialschonung um 30% reduziert werden.

4. Abschließende Schritte:
Die Werte sollten mit dem Makro BENCHMARK validiert werden. Die maximalen Beschleunigungs- und Geschwindigkeitswerte, die der Drucker ohne Schrittverlust oder Vibrationen erreichen konnte, sollten notiert werden. Die Einstellungen des Druckers sollten entsprechend aktualisiert und die Änderungen gespeichert werden. Abschließende Testdrucke sollten durchgeführt werden, um die Druckqualität und Leistung bei den ermittelten maximalen Werten zu überprüfen.


*Youtube: Kobra Display mit Klipper

Erstellt von seho85 (Anycubic Vyper) 
seho85/klipper-dgus: A python project to connect a DGUS display to Klipper (github.com)
Adaptiert für den Anycubic Kobra von fragmon

Hardware

Folgende Kobra Modelle wurden getestet:
- Kobra Max mit Trigorilla Pro A 1.0.4
- Kobra Max mit Trigorilla Pro B 1.0.2

Thereotische Kompatibilität (Modelle werden nach Tests aufgenommen):
- Kobra
- Kobra Plus
- Kobra 2

Nicht kompatibel:
- Kobra Neo (kein DWIN Display)

Zur Nutzung wird das Display nicht mehr am Drucker, sondern am Raspberry Pi über dei GPIO direkt angeschlossen. 

BOM:
- Dupontstecker 4 Pin (Anschluss GPIO Raspberry Pi)
- JST XH Stecker 6 Pin (Anschluss Kobra Display)
- Kabel

Installation

Die Anleitung ist einzig für einen Raspberry Pi ausgelegt. Solltet ihr eine andere MCU betreiben, so müssen die Dateien ggf. angepasst werden.

Displayverbindung

Das Display ist wird über die GPIO Leiste mit dem Raspberry PI verbunden.

1. Aktivieren Sie die Serienschnittstelle auf Raspberry Pi

sudo raspi-config

    * *3) Schnittstellenoptionen*
    * *6) Serielle Schnittstelle*

    * Möchten Sie, dass eine Anmeldeschale über die serielle Schnittstelle zugänglich ist?
         * Nein

    * Möchten Sie, dass die Serienschnittstellenhardware aktiviert wird?
         * Ja

2. Trennen Sie Raspberry Pi von der Stromversorgung**

3. Verbinden Sie das Display mit dem Raspberry PI GPIO Pin Header

ACHTUNG
 Es wird dringend empfohlen, das Display anzuschließen, wenn der Raspberry Pi ausgeschaltet ist!

Display-Steckverbinder
=================

20230729_092059.jpg                              20230729_092047.jpg

 

Display flashen

1. Lade die DWIN_SET.zip (erstellt mit dem DGUS-Tool), entpacke und kopiere diese auf eine korrekt formatierte MicroSD-Karte.

https://github.com/cryd-s/kobra_extended/blob/main/dgus_project/DWIN_SET.zip

2. Stecke die MicroSD-Karte in das ausgeschaltete Display

3. Schalte das Display ein

4. Eine blaue Displaymaske zeigt den Fortschritt des Flashens an.

5. Während des Flash-Vorgangs zeigt die zweite Zeile an:

SD Card Process...

Wenn das Flashen abgeschlossen ist, zeigt die zweite Zeile an:

SD Card Process... END!

Schalte das Display aus

Entferne die MicroSD-Karte

ACHTUNG:

Es ist von entscheidender Bedeutung, dass die MicroSD-Karte korrekt formatiert ist:
- Dateisystem: FAT32
- Zuordnungseinheitsgröße: 4096

Installationsskript

Für eine einfache Installation auf MainsailOS ist ein Einrichtungsskript namens install_for_mainsailos.sh im Verzeichnis des Projektordners zu finden.

1. Kopieren der benötigten Daten

git clone https://github.com/cryd-s/kobra_extended.git
mv kobra_extended klipper-dgus
chmod -R 700 klipper-dgus
cd klipper-dgus

2. Führen das Installations-Skript aus:

./install_for_mainsailos.sh

ACHTUNG Während der Installation werden Sie aufgefordert, Ihr sudo-Passwort einzugeben.

Konfigurationsdateien
dgus_display_macros.cfg

Diese Konfigurationsdatei muss in den config Ordner kopiert und in der printer.cfg eingebunden werden.

[include dgus_display_macros.cfg]

Die Datei definiert die Aktionen, die von einigen Steuerelementen des Displays ausgeführt werden.

ACHTUNG

Je nachdem, welchen Drucker Sie verwenden, ist eine Anpassung dieser Datei erforderlich (siehe Kommentare in der Datei dgus_display_macros.cfg)

serial_config.json

Die Datei serial_config.json enthält die Einstellungen für die serielle Schnittstelle, die zur Kommunikation mit dem DGUS-Display verwendet wird.

Die Angabe ist abhängig vom verbauten Raspberry PI sowie der Rasbian Version. Wählt zunächst eine Schnittstelle aus und sollte das Display nicht starten, testet hilfsweise die zweite Bezeichnung. Sollte dies auch nicht funktionieren schaue bitte und Troubleshooting.

Standardmäßig wird folgender Schnittstelle genutzt:

"serial_port": "/dev/ttyS0"

Sollte das Display nicht funktionieren, kann mit diesem Befehl, die Schnittstelle geändert werden:

ttyS0 zu ttyAMA0

sed -i '3s|/dev/ttyS0|/dev/ttyAMA0|' /home/pi/klipper-dgus/config/serial_config.json

wenn es wieder zurückgesetzt werden soll (ttyAMA0 zu ttyS0)

sed -i '3s|/dev/ttyAMA0|/dev/ttyS0|' /home/pi/klipper-dgus/config/serial_config.json
websocket.json

Die Datei websocket.json enthält die Einstellungen für die Websocket-Verbindung, die zur Kommunikation mit Klipper über den Moonraker-Socket verwendet wird.

In der Regel müssen nur die ersten beiden Parameter *ip* und *port* geändert werden.

Neben den Einstellungen *ip* und *port* gibt es einige andere Objekte, die hier beschrieben werden.

    {
        "websocket": {
            "ip": "127.0.0.1",
            "port": 7125,
            
            "printer_objects": {
                "some_more_entries" : "..."
            },

            "data_model": {
                "some_more_entries" : "..."
            }
        }
    }

IP
IP-Adresse der Maschine, auf der Moonraker läuft. Wenn MainsailOS verwendet wird, ist es dieselbe IP-Adresse, wie die zur Verbindung mit der Weboberflächeport

Port
Der Port, auf dem Moonraker überträgt. Standardmäßig läuft es auf 7125 und es sind keine Änderungen erforderlich.

printer_objects
Hier sind die *Druckerobjekte* definiert, die vom Display verwendet werden. Siehe https://moonraker.readthedocs.io/en/latest/printer_objects/
Änderungen hier können erforderlich sein, wenn eine neue Information im Display verwendet werden soll.

data_model

In data_model befinden sich die zuletzt mit Moonraker ausgetauschten Daten. Dieser Abschnitt benötigt überhaupt keine manuellen Anpassungen. Er wird von der Display-Controller-Anwendung generiert. Manuelle Änderungen werden beim Starten/Herunterfahren der Controller-Anwendung überschrieben.

*Youtube : Mainsail und Fluidd per Login schützen

Mainsail und Fluidd mit Passwort schützen

Hallo.
Hier schauen wir uns an, wie wir unsere Webanwendung Mainsail oder Fluidd mit einem Login schützen können.
Wir empfehlen euch Fluidd für diesen Einsatzzweck zu Nutzen

Videoguide Mainsail oder Fluidd schützen

 

Hinweis:
Hattet ihr fluidd installiert und wollt dann wieder auf Mainsail, dann solltet ihr über kiauh Klipper, Moonraker, Mainsail und die Mainsail.conf löschen. Zusätzlich löscht aus dem ~/printer_data/config die moonraker.conf


Damit ein passwortgeschützer Login nicht durch Network-Sniffing über das http Protokoll abgegriffen werden kann, solltest du https (verschlüsselter Datenverkehr) aktivieren.

Backup eurer Konfig und Database
cp -r ~/printer_data ~/backup_printer_data
Benötigte Anwendungen installieren
sudo apt install apache2-utils
https Zertifikat anlegen
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048  -keyout /etc/nginx/mainsail.key  -out /etc/nginx/mainsail.crt

-days = Wie viel Tage gültig -> Hier 10 Jahre
-keyout = Hier wird der Ablageort und Name des Keys festgelegt "mainsail.key"
-out = Hier wird der Ablageort und Name der crt Datei festgelegt "mainsail.crt"


Welche Daten sind wichtig im Konfigurationsmenü der Zertifikatserstellung

  1. County Name: DE
  2. State: Mainsail
  3. Locality Name: Mainsail
  4. Organisation: Mainsail
  5. Oraganizational UNit Name: Mainsail
  6. Common name: Mainsail
  7. Email Adress:
http auf https umleiten

Konfig sichern:

sudo cp /etc/nginx/sites-available/mainsail /etc/nginx/sites-available/backup.mainsail

Konfig bearbeiten:

sudo nano /etc/nginx/sites-available/mainsail

So soll es aussehen:

server {
    listen 80 default_server;
    server_name _;
    return 301 https://$host$request_uri;
}

server {
#    auth_basic           "user login";
#    auth_basic_user_file /etc/nginx/.htpasswd;
    listen 443 ssl default_server;
    ssl_certificate      /etc/nginx/mainsail.crt;
    ssl_certificate_key  /etc/nginx/mainsail.key;

    access_log /var/log/nginx/fluidd-access.log;
    error_log /var/log/nginx/fluidd-error.log;

Nginx neustarten:

sudo systemctl restart nginx 

Wichtiger Letzer Schritt: Passt euere Verbindung im Slicer an!

Für den SuperSlicer habe ich leider keine Lösung, wie ihr https erreichen könnt

Orca Slicer Beispiel

Vor die IP gehört jetzt ein https://

image.png

Fluidd mit Passwort schützen:

1. Fluidd installieren

Installation über Kiauh:

https://book.cryd.de/books/klipper/page/kiauh-installieren


Installieren -> Fluidd

2. SSL aktivieren

Konfig sichern:

sudo cp /etc/nginx/sites-available/fluidd /etc/nginx/sites-available/backup.fluidd

Konfig bearbeiten:

sudo nano /etc/nginx/sites-available/fluidd

So soll es aussehen:

server {
    listen 80 default_server;
    server_name _;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl default_server;
    ssl_certificate      /etc/nginx/mainsail.crt;
    ssl_certificate_key  /etc/nginx/mainsail.key;

    access_log /var/log/nginx/fluidd-access.log;
    error_log /var/log/nginx/fluidd-error.log;

Nginx neustarten:

sudo systemctl restart nginx 
3. Nutzer anlegen und Schutz aktivieren
  1. Öffne die Einstellungen von Fluid und lege einen Nutzer an.
    Siehe Bild

Tipp: Wähle als Login nicht die Login Daten deines Pi's. Sprich nicht den ssh Zugang und auch nicht das root Passwort!

image.png

image.png

4. Passwortschutz Moonraker vorbereiten

Füge folgendes in deiner moonraker.conf ein

[authorizations]
force_logins: true
5. Geschützes Login Fenster

image.png

6. Ggf. Browser Cache leeren

Hast du Probleme beim Login, lösche deinen Browsercache über die Einstellungen deines Browsers.

Oder nutze die Tastenkombination STRG+F5

7. Passwort vergessen

Loggt euch per FTP oder SSH ein und ändert in der moonraker.conf diese Zeile so ab.

Danach einemal Cache leeren und ihr kommt wieder auf die Oberfläche und könnte euren Nutzer löschen und wieder anlegen.

#force_logins: true

Mainsail mit Passwort schützen

Webserver Authentifizierung hinzufügen

Öffnet Putty und verbindet euch:

sudo nano /etc/nginx/sites-available/mainsail

Jetzt fügt ihr folgendes unter "server" hinzu:

    #Nutzer Authentifizierung
    auth_basic "User Login";
    auth_basic_user_file /etc/nginx/.htpasswd;

Verlasst den Editor mit STRG+X -> Y zum Bestätigen -> Enter zum Übernehmen des Namens

Nutzer anlegen
sudo htpasswd -c /etc/nginx/.htpasswd robin

robin = Nutzername, den ihr verwenden wollt

Wenn dieser Befehl nicht funktioniert, dann müsst ihr oben die benötigten Anwendungen installieren.

Ohne Nutzer und Passwort kommt ihr nicht auf die Weböberfläche. Daher ist der nächste Schritt wichtig!

*Youtube - Spoolman

Hallo. Hier zeige wir euch, wie ihr den Service "Spoolman" installiert, um eure Filamentspulen mit Klipper zu verwalten.

Original Dokumentation

Link zum Spoolman Repo:
https://github.com/Donkie/Spoolman

Installation - Spoolman als Service (Standalone)

1. System Updaten

sudo apt-get update
sudo apt-get upgrade -y

2. Curl installieren

sudo apt-get install -y curl jq

3. Sourche URL festlegen:

source_url=$(curl -s https://api.github.com/repos/Donkie/Spoolman/releases/latest | jq -r '.assets[] | select(.name == "spoolman.zip").browser_download_url')

4.  Spoolman Repo downlload

curl -sSL $source_url -o temp.zip && unzip temp.zip -d ./Spoolman && rm temp.zip

5. Spoolman installieren

cd ./Spoolman
bash ./scripts/install_debian.sh

6. Aktueller Fix

sudo systemctl stop Spoolman.service
rm /home/biqu/.local/share/spoolman/spoolman.db
sudo systemctl start Spoolman.service

7. Prüfen ob spoolman läuft
http://<IP>:7912
Beispiel: http://192.168.1.10:7912

Spoolman standalone deinstallieren
sudo systemctl stop Spoolman.service
sudo systemctl disable Spoolman.service

image.png

sudo rm /etc/systemd/system/Spoolman.service
Installation mit Docker
Docker installieren
sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.Docker.com -o get-Docker.sh
sudo sh get-Docker.sh
sudo usermod -aG docker $USER
newgrp docker
docker run hello-world
Bild nach der Installation

image.png

Bild nach "docker run hello-word"

image.png

Spoolman Docker Container installieren
1. Verzeichnes für die Spoolman Datenbank anlegen
cd ~
mkdir spoolman
cd spoolman/
mkdir data
chown 1000:1000 data
nano docker-compose.yml
2. Docker-compose.yml
version: '3.8'
services:
  spoolman:
    image: ghcr.io/donkie/spoolman:latest
    restart: unless-stopped
    volumes:
      # Mount the host machine's ./data directory into the container's /home/app/.local/share/spoolman directory
      - type: bind
        source: ./data # This is where the data will be stored locally. Could also be set to for example `source: /home/pi/printer_data/spoolman`.
        target: /home/app/.local/share/spoolman # Do NOT change this line
    ports:
      # Map the host machine's port 7912 to the container's port 8000
      - "7912:8000"
    environment:
      - TZ=Europe/Berlin # Optional, defaults to UTC
3. Container starten
docker compose up -d

Spoolman könnt ihr wie folg erreichen

http://192.168.xxx.xxx:7912

Spoolman Datenbank von Standalone auf Docker

Die Datenbank wird standardmäßig bei der Standalone in folgenden Verzeichnis gespeichert:

~/.local/share/spoolman/spoolman.db

Ihr müsst sie dann in euer angelegtes "Data" Verzeichnis kopieren

cd ~
cp .local/share/spoolman/spoolman.db ~/spoolman/data/spoolman.db
Moonraker.conf und printer.cfg anpassen
moonraker.conf
[spoolman]
server: http://192.168.0.123:7912
#   URL to the Spoolman instance. This parameter must be provided.
sync_rate: 5
#   The interval, in seconds, between sync requests with the
#   Spoolman server.  The default is 5.
printer.cfg | macros.cfg
[gcode_macro SET_ACTIVE_SPOOL]
gcode:
  {% if params.ID %}
    {% set id = params.ID|int %}
    {action_call_remote_method(
       "spoolman_set_active_spool",
       spool_id=id
    )}
  {% else %}
    {action_respond_info("Parameter 'ID' is required")}
  {% endif %}

[gcode_macro CLEAR_ACTIVE_SPOOL]
gcode:
  {action_call_remote_method(
    "spoolman_set_active_spool",
    spool_id=None
  )}
Beispiel Spoolman auf der Weboberfläche

image.png

Hilfe - Wenn ihr falsche Daten in der moonraker.conf eingeben habt

1.  Per SSH auf den Pi verbinden
2. moonraker.conf bearbeiten

cd ~
nano printer_data/config/moonraker.conf

3. Nach der Bearbeitung Dienst neustarten:

sudo service moonraker restart
Optional - Bug bei Standalone Lösung

Es gibt aktuell noch folgenden Issue: (Stand 05.11.2023)
Problem:
In der Standalone Version beendet sich der spoolman Service wenn er mit --user Parameter unter dem User pi gestartet wird.
Lösung:
Links zum Issue
(root user notwendig)

systemctl --user stop Spoolman
systemctl --user disable Spoolman
sudo su 
cd /home/pi/.config/systemd/user/
mv Spoolman.service /etc/systemd/system/
nano /etc/systemd/system/Spoolman.service

Folgendes unter [Service] eintragen:

User=pi
Group=pi

Dienst speichern und neustarten:

systemctl daemon-reload
systemctl enable Spoolman
systemctl start Spoolman

Prüfen ob es geklappt hat:

ps -axu |grep spoolman

-> pi 246703 0.3 1.9 686968 72340 ? Sl 15:55 1:28 /home/pi/Spoolman-0.13.1/.venv/bin/python /home/pi/Spoolman-0.13.1/.venv/bin/uvicorn spoolman.main:app --host 0.0.0.0 --port 7912

*Youtube - Nevermore Controller

Hier entsteht das Installationstutorial für den Nevermore Controller. Vielen Dank an den Ersteller der Software und der englischen Anleitung: SanaaHamel

Die Anleitung zum Filtersystem wird zeitnah ergänzt:
- Aufbauanleitung Stealthmax Filtersystem: Link folgt demnächst
- Aufbauanleitung Nevermore Mini: Youtube Anleitung

Nevermore Kontroller mit Raspberry Pi Pico

Die folgende Anleitung beinhaltet nur die Einrichtung der elektronischen Komponenten.

Benötigte Hardware

Diese Bauteile werden für den Nevermore Controller benötigt:

Zwingende Komponenten:
1. Über Amazon:
1x Pico W mit Pinleiste: https://amzn.to/3vktXTN
2x BME280: https://amzn.to/3NHYp0E
2x SGP40: derzeitig nicht bestellbar
Jumper Wire (female to female): https://amzn.to/3RKTQ8c

2. Über Aliexpress:
2x SGP40/BME240 (2in1 PCB): https://s.click.aliexpress.com/e/_Dmkhbk5
oder
2x SGP40: https://s.click.aliexpress.com/e/_DmCfMXf
2x BME240 (3xBME240 3.3V): https://s.click.aliexpress.com/e/_Dndm8PX

Optionale Komponenten (abhängig vom Einsatzzweck):
Display: https://amzn.to/3tDxj3O
Display: https://www.aliexpress.com/item/1005006111616872.html
PWM Fan bspw 5V Noctua: https://amzn.to/3SkVwp4

*alle Links sind Affiliate Links womit du kostenfrei den Channel und den Discord unterstützt - jeder Cent kommt der Community zu Gute!

Anschlussbelegung

In dieser Anordnung werden die Sensoren (BME und SGP) durch eine Pinleiste übereinandergestapelt. Der Plastikabstandshalter soll zwischen den Platinen platziert werden. Stelle sicher, dass der SGP40-Sensor nach außen gerichtet ist, um eine optimale Detektion zu gewährleisten. Der Sensor des lilafarbenen Sensors kann zwischen dernLeiterplatten montiert sein.

image.png

Verkabelung testen

Um die Verkabelung der Sensoren zu prüfen habe ich ein Micropythonskript geschrieben. Um den I2C-Bus zu überprüfen, gehe wie folgt vor:

1. Lade MicroPython auf den Raspberry Pi Pico herunter und flashe es.
Link: https://www.raspberrypi.com/documentation/microcontrollers/micropython.html

2. Lade Thonny herunter und installiere es.
 Link: https://thonny.org

3. Starte Thonny und wähle deinen Raspberry Pi Pico aus.

image.png

4. Kopiere und füge diesen Code ein:

import machine

# create first i2c bus (Exhaust)
sda_exhaust = machine.Pin(18)
scl_exhaust = machine.Pin(19)
i2c_exhaust = machine.I2C(1, sda=sda_exhaust, scl=scl_exhaust, freq=400000)

# create second i2c bus (Intake)
sda_intake = machine.Pin(20)
scl_intake = machine.Pin(21)
i2c_intake = machine.I2C(0, sda=sda_intake, scl=scl_intake, freq=400000)

def scan_i2c_bus(i2c, bus_name):
    print(f'Scan i2c bus {bus_name}...')
    devices = i2c.scan()

    if len(devices) == 0:
        print(f"No i2c device found on {bus_name} bus!")
    else:
        print(f'i2c devices found on {bus_name} bus:', len(devices))

        for device in devices:
            print("Decimal address: ", device, " | Hexa address: ", hex(device))

# Scan I2C-Bus
scan_i2c_bus(i2c_exhaust, "Exhaust")
scan_i2c_bus(i2c_intake, "Intake")

5. Überprüfe die Antwort: Wenn die Meldung "Kein I2C-Gerät gefunden" erscheint, solltest du die Verkabelung überprüfen oder den Chip ersetzen. Bei Nutung von zwei Sensorstacks müssen insgesamt vier Adresse angezeigt werden.

image.png

Controllersoftware installieren

1. Kontrollerfirmare
Lade die Kontrollerfirmware herunter und flashe diesen auf den Raspberry Pico.

2. Kontrollersoftware
Lade die Software über SSH auf den Klipper-Kontroller (Raspberry Pi) und installiere diese mit folgenden Befehlen:

cd ~
git clone https://github.com/SanaaHamel/nevermore-controller
cd nevermore-controller
./install-klipper-module.bash

Wenn du Mainsail OS verwendest, wird dich das Installationsskript fragen, ob du Bluetooth aktivieren möchtest. Tu dies und starte dann deinen Klipper-Host neu. (z.B. sudo reboot).

3. Bluetooth Adresse
Wenn du nur einen Nevermore-Controller in Reichweite hast, kannst du die Option bt_address in deiner Druckerkonfiguration weglassen und diesen Abschnitt komplett ignorieren. Wenn du jedoch mehrere Bluetooth (BT)-Geräte in Reichweite hast, die wie Kandidaten für einen Nevermore-Controller aussehen, musst du angeben, welches du verwenden möchtest. Dies geschieht, indem du ihre 'Adresse' in der Druckerkonfiguration mit bt_address: <Adresse> angibst.

Hinweis: Es ist möglich, aber sehr selten, dass sich die Adresse ändert, wenn ein neues UF2 auf den Pico geflasht wird. Dies wurde einmal beobachtet, nachdem das Pico SDK aktualisiert wurde.

Methode A - Überprüfen des Klipper-Protokolls
  1. in Fehler wird ausgelöst, wenn mehrere Controller in Reichweite sind. Die Fehlermeldung listet alle verfügbaren Adressen der Controller auf. 
    ...
    ...
    [11:06:36:535560] nevermore - multiple nevermore controllers discovered.
    specify which to use by setting `bt_address: <insert-address-here>` in your klipper config.
    discovered controllers (ordered by signal strength):
        address           | signal strength
        -----------------------------------
        FA:KE:AD:RE:SS:01 | -38 dBm
        FA:KE:AD:RE:SS:00 | -57 dBm
    Config error
    Traceback (most recent call last):
      File "~/klipper/klippy/klippy.py", line 180, in _connect
        cb()
      File "~/klipper/klippy/extras/nevermore.py", line 793, in _handle_connect
        raise self.printer.config_error("nevermore failed to connect - timed out")
    configparser.Error: nevermore failed to connect - timed out
    ...
    ...
Methode B: - Nur für Linux -  über bluetoothctl

Stelle sicher, dass dein Nevermore-Controller eingeschaltet ist und die LED blinkt. (Zeigt an, dass er aktiv ist.)

Öffne ein Terminal und führe aus: 

bluetoothctl

danach

scan on

aus

Es wird euch folgendes angezeigt, ist für euch aber nicht wichtig.

image.png

Führe danach

devices

aus.

 Es wird euch nun der Nevermore Kontroller angezeigt. Kopiert euch nun die Bluetooth ID.

image.png

4. Anpassung der Printer.cfg
Kopiere die Bluetooth ID in deine Printer.cfg wie folgt:

[nevermore]
bt_address: FA:KE:AD:RE:SS:00

 Beispiel mit auskommentierte Adresse, da nur ein Bluetoothgerät in der Nähe ist:

image.png

5. (Option) Aktualisiere die Firmware
Wenn du eine OTA-fähige UF2 auf deinen Controller geflasht hast, kannst du ihn drahtlos aktualisieren. Der Prozess ist einfach:

cd ~/nevermore-controller
git pull
./tools/update_ota.py

Wenn du update_ota.py ausführst, werden fehlende Abhängigkeiten installiert. Dies kann beim ersten Mal je nach Leistungsfähigkeit des Computers eine Weile dauern.

Wenn du mehrere Controller in Reichweite hast, kannst du mit --bt-address angeben, welchen du aktualisieren möchtest. Z.B. ./tools/update_ota.py --bt-address XX:XX:XX:XX:XX:XX

Siehe ./tools/update_ota.py --help für alle Optionen. 

HINWEIS: Der Controller startet automatisch neu, wenn er 60 Sekunden lang im Bootloader-Modus untätig bleibt.

 Insgesamt solltest du eine ähnliche Ausgabe wie folgende sehen:

Tool environment seems up to date.
This program will attempt to update a Nevermore controller.
-------------------------------------------------------------------------

discovering Nevermores...
connecting to XX:XX:XX:XX:XX:XX
current revision: v0.7.0
sending reboot-to-OTA command...
connecting to device...
requesting device info...
sync w/ device...
trying to update bootloader...
requesting device info...
img size: 364544
erasing tail [0x10059000, 0x1005a000]...
updating: 100%|██████████████████████████████████████████████████████████████████████| 356k/356k [00:02<00:00, 129kb/s]
# I've already updated this controller, so nothing changed
update modified 0 of 364544 bytes (0.00%)
updating main image...
requesting device info...
img size: 390912
erasing tail [0x100bb000, 0x10200000]...
updating: 100%|██████████████████████████████████████████████████████████████████████| 384k/384k [00:03<00:00, 120kb/s]
update modified 0 of 393216 bytes (0.00%)
finalising...
rebooting...
update complete.
waiting for device to reboot (1 seconds)...
connecting to XX:XX:XX:XX:XX:XX to get installed version
(this may take longer than usual)
NOTE: Ignore logged exceptions about `A message handler raised an exception: 'org.bluez.Device1'.`
      This is caused by a bug in `bleak` but should be benign for this application.
previous version: v0.7.0  # whatever version was installed
 current version: v0.7.0  # in this example it tried to update to the same version


Mainsail Oberfläche

Update Mainsail mindestens auf Version 2.7.1.
Habt ihr den [Nevermore] plus die ID eingetragen sollte automatisch Nevermore in der Übersicht erscheinen.

image.png

Fehlen die ersten Zahlen (hier 100>99), so wurde der SGP Sensor nicht erkannt. Fehlen Temperatur etc. dann ist der BMP Sensor nicht korrekt angeschlossen.

Wollt ihr eure Sensoren, Lüfter etc individuell einrichten, dann schaut in diese Dokumentation.

Troubleshooting

Falls es nicht geklappt hat, dann schaue in die FAQ von Sanaa oder Frage auf unserem Discord nach.

Nevermore Mini - Display + Sensor
Benötigte Hardware

Diese Bauteile werden für den Nevermore Controller benötigt:

Zusammenbau Anzahl
Magnets 6x3mm   8x
m3x6mm BHCS   4x
m3x6 SHCS   6x
M3 Einschmelzmuttern  10x
   
Montage  
1515/2020 Extrusion: m3x8 SHCS   2x
3030 Extrusion: m4x8mm SHCS   2x
Bambulabs Magnets 6x3mm   1x
   
Elektronik  
Arctic S4028-15K 12V 4028 Lüfter  1x
AWG 28 Kabel    20cm x Anzahl Kabel
Waveshare RP2040 1,28" Touch Display    1x
SGP40 VOC sensor   1x
BME280 Temp/Humidity Sensor   1x
USB C Stecker zum löten  1x
Wago221   2x
   
Filter  
HEPA: Nevermore 190x45mm HEPA Filter   1x
Aktivkohle: 4mm Pellet   150g

Shoplink:
https://cryd.de/unsere-empfehlungen/3d-druck/nevermore-mini/

*alle Links sind Affiliate Links womit du kostenfrei den Channel und den Discord unterstützt - jeder Cent kommt der Community zu Gute!

Schaltplan

1000038656.jpg

image.png

Firmware

image.png

Small plot: nevermore-controller-waveshare-1.28-v0.10-small-plot.uf2

no plot: nevermore-controller-waveshare-1.28-v0.10-no-plot.uf2

100% Fan when power on: nevermore-controller_waveshare-rp2040-touch-lcd-1.28_100%_fan.uf2

 

 

*Youtube: Bento Box

Die BentoBox ist eine Filtereinheit, welche die verschmutze Luft durch Aktivkohle und HEPA Filter zieht und diese dadruch reinigt. Diese gibt es in verschieden Ausführungen und kann autark betrieben werden.

Hier zeige ich euch, was ihr braucht, wie ihr die Box zusammenbaut und in Betrieb nehmt.

Projekte und Druckdateien

5015 radial Version:
https://www.printables.com/de/model/387994-bentobox-2x-5015-radial-fans-hepacarbon-filter

image.png

Modifizierte 5015 Radial Version für Stepdown modul + Step files:
https://www.printables.com/de/model/338763-bentobox-2x5015-bottom-exhaust/files

image.png

Normale 5015 Lüfter:
https://www.printables.com/de/model/272525-bentobox-v20-carbon-filter-for-bambu-lab-x1c-enclo

image.png

 

Benötigte Hardware
5015 Radial Version

Elektronik:
2x 5015 Radial Fan 24v - GDSTIME oder WINSINN
1x 24v Netzteil und Anschlussstück: Regelbar oder Ohne Reglung
oder
- 1x 24V Trafo
- Schrumpfschlauch

Mechanik:
Komplettset bei Just Printing

oder

-16x M3x8 Innensechskantschraube
8x Magnete 6x3 (Durchmesser 6mm und Dicke 3mm)
1x 80x40x15mm HEPA filter - Amazon
100g Aktivkohlepeletts

5015 Normale Version

Elektronik:
- 2x 4020 Axiallüfter - Amazon
oder 2x 4028 24v Axiallüfter

Mechanik:
- 4x Einschmelzmuttern M3x5x4 - Amazon
- 4x M3x25mm Innensechskantschraube für 4020 Lüfter
oder
- 4x M3x32mm Innensechskantschraube für 4020 Lüfter
- 32x M4x2 Magnete
- 1x 40mmx80mmx15mm HEPA Filter
- Aktivkohlepelets