Kopieren Sie folgenden GCode „M303 E0 S230 C8“ in das Eingabefeld. E steht in diesem Fall für ihren Extruder, S für die zu erreichende Temperatur und C für die Anzahl der Zyklen die durchlaufen werden sollen.
Sollte es zu einer Fehlermeldung kommen Bad heater id in PiD tuning bed erst mal eine andere Extrudernummer Versuche -> E1. Sollte es immer noch zu einer Fehlermeldung kommen, dann bitte die Configuration.h kontrollieren. Sollte MPC aktiviert sein, kommt es ach zu Fehlermeldung.
Nun durchläuft ihr 3D-Drucker 8 Zyklen Aufheizphase, um die optimalen Werte zu ermitteln.
Nach dem achten Durchlauf wird ihnen folgendes in Octoprint ausgegeben: Recv: PID Autotune finished! Put the last Kp, Ki and Kd constants from below into Configuration.h. Diese 3 Werte bauen sie sich wie folgt als Befehlscode um: „M301 P15.36 I1.43 D41.20“ und kopieren diese Zeile in das Eingabefeld von Octoprint und bestätigen es. Mit „M500“ werden die neuen Werte im Eeprom abgespeichert. Das war es auch schon mit dem PID-Tuning für ihr Hotend.
Nicht vergessen mit M500 abspeichern.
Wer gerne möchte, kann es auch mit Pronterface erledigen.
PID-Tuning Heizbett mit Octoprint
Wer es gerne möchte kann es auch mit Pronterface erledigen
Da ich immer wieder sehr massiv aus dem Internet angegriffen werde habe ich mich dazu entschieden eine HW Firewall zu installieren.
Als erstes muss man sich Gedanken machen wie die IPs konfiguriert werden sollen. Es sind natürlich zwei getrennte Bereiche und die WAN Seite kann auch nicht als Privates Netz konfiguriert werden. Ich möchte natürlich nicht mein jetzt bestehendes Netzwerk (IPs) umkonfigurieren das wäre ein riesiger Aufwand. Ich denke, ich werde der FritzBox eine neue IP vergeben.
IP FritzBox 192.168.xx.1 Internes Netzwerk 192.168.xxx.1 DHCP bleibt erstmal auf der QNAP Als DNS nehmen wir estmal die von der Telekom 217.237.150.205 217.237.149.142
Nach der Installation sollte PlatformIO instaliert werden
Ich empfehle den Kompletten Marlin Ordner auf dem Desktop abzulegen.
Achtung: Mit dem Öffnen des Druckers verliert Ihr die Garantie. Ihr abreitet an einem elektrischen Gerät an den eine hohe Spannung anliegt 240V. Nur, wenn der Netzstecker gezogen ist darf an dem Gerät gearbeitet werden.
Firmware flaschen
Jumpersettings
Nicht Vergessen den Diaggnose Pin abzuschneiden!
Hier der Link zum Download der erforderlichen STLs für den SKR Halter -> hier
Vor dem Aufspielen der Firmware nicht vergessen, den Jumper auf USB umstellen.
SKR14TURBO_TMC2209_BTT_TFT <- Firmware compieliert Neuste Version 2.1.x
G1 F100 :Legt die Geschwindigkeit fest, mit der der Drucker das Filament extrudieren soll. G92 E0 : Reset old settings G1 E100 : 100mm extrudieren Messen und Abweichung korrigieren M503 Zeile M92 suchen M92 X80.00 Y80.00 Z80.00 E405.00 Gemessener Wert 103 Formel 100:103 = 0,9708 * 405,00 = 393.203 Eingeben M92 X80.00 Y80.00 Z80.00 E393.20 Mit M500 abspeichern
Konfiguration im Ponterface
Abschließend:
1 switch to marlin mode (pree 5 sec the knob) 2 start pronterface 3 M502 -> reset to factory defaults 3 M500 -> Save settings 4 M504 -> EPROM OK
5 M503 -> report settings 6 Menu Delta kalibritation auto 0.027 7 M500 8 Aufheizen bed 90 grad 9 M106 10 Menu Leveling bed 11 M500 12 M504 13 Mit pronterface z- bis zur aulösung z-probe fahren 14 z wert vom display ablesen -> 16.02 15 Probe entfernen dann z runter bis 0.1 fahren 16 z wert vom display ablesen 0.32 17 16.02 – 0.32 = 15.7 18 M851 Z-15.70 19 M500 20 M503 21 Menu auto home 22 Mit pronterface auf nozzel 0.1 fahren 23 M107 24 Menu Store
M106 -> lüfter an M107 -> lüfter aus
Troubleshooting
Endstops Prüfen M119
Veröffentlicht unter3D Druck|Verschlagwortet mitAnycubic Predator auf SKR 1|Kommentare deaktiviert für Umbau Predator auf SKR und TFT 3.5 V3.0 TMC 2209
Zwei Dinge haben mich an dem Originalen Motherboard gestört. 1.) Das gesperrte EPROM (nicht möglich z.B. das PID tuning zu speichern) 2.) Zur Kommunikation zwischen PC und dem X1 ist dieser Buggy Treiber (CH340) nötig
Für Fragen und Anregungen könnt Ihr mir gerne eine E-Mail schreiben 3d-Druck(at)stephan-lubahn.de .
Achtung: Mit dem Öffnen des Druckers verliert Ihr die Garantie. Ihr arbeitet an einem elektrischen Gerät, an den eine hohe Spannung anliegt 240V. Nur, wenn der Netzstecker gezogen ist, darf an dem Gerät gearbeitet werden.
So sah der Sidewinder X1 vor dem Umbau aus. Alles so weit Original bis auf das Magnet Bed.
Was soll alles umgebaut beziehungsweise ersetzt werden: 1.) Das originale Motherboard soll gegen das SKR 1.4 Turbo getauscht werden. 2.) Das Originale Display soll gegen das BTT TFT 3.5 V3.0 getauscht werden. 3.) Die LED soll gegen ein BL Touch (auto leveling) getauscht werden. 4.) Durch den Display tausch muss der Filament run out Sensor neu angeschlossen werden. 5.) Das Glas Bed soll gegen ein gefräststes Magnet Bed getauscht werden.
Vielleicht noch der Tausch der Führung mit linear Schienen.
Es gibt unzählige YT Videos und Anleitungen, keine von denen hat wirklich gepasst. Meine Vorgehensweise alle Anschlüsse physisch per Sicht verfolgt oder ausgemessen. Alle Anschlüsse beschriftet. Teilweise habe ich die Anschlüsse durchgemessen. Inzwischen sind die YT Videos so alt, dass die dort beschriebene Vorgehensweise überholt ist.
Was Ihr alles für den Umbau braucht:
SKR 1.4 Turbo 5 Steppermotor Treiber TM2209 BTT TFT 3.5 V3 (Die mitgelieferten Kabel sind zu kurz ihr braucht FC/FC Stecker ca. 30cm lang). BL-Touch V3x
Contents
Marlin Kompilieren
Ich habe mich letztendlich auf die Version Marlin LTS 2.1.1, alles andere wäre sinnlos gewesen, weil auch dir Firmware des Displays auf neuer 2.0x aufbaut. Bei SKR Boards muss die Firmware immer firmware.bin heißen.
Bei Problemen mit dem WIFI bitte die Datei wpa_supplicant.conf kontrolieren sudo nano /etc/wpa_supplicant/wpa_supplicant.conf Sollte so aussehen ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid=“ The name of your network “ psk= the password to the network }
FTP Konfigurieren (brauchen wir um das Klipper Konfig File zu kopieren sudo raspi-config
Als erstes system Aktualisieren sudo apt update && sudo apt upgrade Pyton version überprüfen python3 -V Wenn Pyton nicht instaliert ist mit sudo apt install python3 instalieren. Folgende Python dependencies werden benötigt
sudo apt install python3-pip sudo apt install python3-dev sudo apt install python3-setuptools sudo apt install python3-venv sudo apt install git sudo apt install libyaml-dev sudo apt install build-essential Checken ob alles up to date ist pip install pip –upgrade # minu minus upgrade Ermitteln der IP Adresse: hostname -I
Jetz muss ein neuer User erstellt werden: Als Beispiel: octo sudo useradd -m octo Password (Beispiel) sudo passwd octo yourpassword Gruppen zum User Hinzufügen sudo usermod -a -G tty,dialout octo User octo anmelden:
su octo cd ~ cd /home/octo mkdir OctoPrint && cd OctoPrint
Anlegen des virtual environment: python3 -m venv venv
Achtung space zwischen den Punkten . ./venv/bin/activate pip install –no-cache-dir octoprint #install minu minus
Test der Insallation su octo cd ~ cd /home/octo python3 -m venv venv . ./venv/bin/activate ~/OctoPrint/venv/bin/octoprint serve Start OctoPrint user Interface localhost:5000
Vorbereitung zum Autostart von OctoPrint Datei erstellen -> octoprint.default
# Configuration for /etc/init.d/octoprint
# The init.d script will only run if this variable non-empty.
OCTOPRINT_USER=octo
# base directory to use
#BASEDIR=/home/octo/.octoprint
# configuration file to use
#CONFIGFILE=/home/octo/.octoprint/config.yaml
# On what port to run daemon, default is 5000
PORT=5000
# Path to the OctoPrint executable, you need to set this to match your installation!
#DAEMON=/home/octo/OctoPrint/venv/bin/octoprint
# What arguments to pass to octoprint, usually no need to touch this
DAEMON_ARGS="--port=$PORT"
# Umask of files octoprint generates, Change this to 000 if running octoprint as its own, separate user
UMASK=022
# Process priority, 0 here will result in a priority 20 process.
# -2 ensures Octoprint has a slight priority over user processes.
NICELEVEL=-2
# Should we run at startup?
START=yes
Datei wurde in Downloads abgespeichert Datei nach -> /etc/default/octoprint kopieren Nach downloads wechseln cd Downloads sudo cp octoprint.default /etc/default/octoprint
Datei erstellen -> octoprint.init
#!/bin/sh
### BEGIN INIT INFO
# Provides: octoprint
# Required-Start: $local_fs networking
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: OctoPrint daemon
# Description: Starts the OctoPrint daemon with the user specified in
# /etc/default/octoprint.
### END INIT INFO
# Author: Sami Olmari & Gina Häußge
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="OctoPrint Daemon"
NAME="OctoPrint"
PKGNAME=octoprint
PIDFILE=/var/run/$PKGNAME.pid
SCRIPTNAME=/etc/init.d/$PKGNAME
DEFAULTS=/etc/default/$PKGNAME
# Read configuration variable file if it is present
[ -r $DEFAULTS ] && . $DEFAULTS
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
# Exit if the DAEMON is not set
if [ -z "$DAEMON" ]
then
log_warning_msg "Not starting $PKGNAME, DAEMON not set in /etc/default/$PKGNAME."
exit 0
fi
# Exit if the DAEMON is not installed
[ -x "$DAEMON" ] || exit 0
# Load the VERBOSE setting and other rcS variables
[ -f /etc/default/rcS ] && . /etc/default/rcS
if [ -z "$START" -o "$START" != "yes" ]
then
log_warning_msg "Not starting $PKGNAME, edit /etc/default/$PKGNAME to start it."
exit 0
fi
if [ -z "$OCTOPRINT_USER" ]
then
log_warning_msg "Not starting $PKGNAME, OCTOPRINT_USER not set in /etc/default/$PKGNAME."
exit 0
fi
COMMAND_ARGS=
if [ -n "$BASEDIR" ]
then
COMMAND_ARGS="--basedir $BASEDIR $COMMAND_ARGS"
fi
if [ -n "$CONFIGFILE" ]
then
COMMAND_ARGS="--config $CONFIGFILE $COMMAND_ARGS"
fi
#
# Function to verify if a pid is alive
#
is_alive()
{
pid=`cat $1` > /dev/null 2>&1
kill -0 $pid > /dev/null 2>&1
return $?
}
#
# Function that starts the daemon/service
#
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
is_alive $PIDFILE
RETVAL="$?"
if [ $RETVAL != 0 ]; then
start-stop-daemon --start --background --quiet --pidfile $PIDFILE --make-pidfile \
--exec $DAEMON --chuid $OCTOPRINT_USER --user $OCTOPRINT_USER --umask $UMASK --nicelevel=$NICELEVEL \
-- serve $COMMAND_ARGS $DAEMON_ARGS
RETVAL="$?"
fi
}
#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $OCTOPRINT_USER --pidfile $PIDFILE
RETVAL="$?"
[ "$RETVAL" = "2" ] && return 2
rm -f $PIDFILE
[ "$RETVAL" = "0" ] && return 0 || return 1
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
status)
status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
;;
restart)
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|status|restart}" >&2
exit 3
;;
esac
Datei wurde in Downloads abgespeichert Datei nach -> /etc/init.d/octoprint sudo cp octoprint.init /etc/init.d/octoprint
Datei erstellen -> octoprint.service
[Unit]
Description=The snappy web interface for your 3D printer
After=network-online.target
Wants=network-online.target
[Service]
Environment="LC_ALL=C.UTF-8"
Environment="LANG=C.UTF-8"
Type=exec
User=octo
ExecStart=/home/octo/OctoPrint/venv/bin/octoprint
[Install]
WantedBy=multi-user.target
Datei wurde in Downloads abgespeichert Datei nach -> /etc/systemd/system sudo cp octoprint.service /etc/systemd/system
Enable octoprint service sudo update-rc.d octoprint defaults
and start it sudo service octoprint start
sudo systemctl enable octoprint.service
Start OctoPrint user Interface IP:5000 oder http://localhost:5000
Thats all
Prusa Slicer installieren unter Ubuntu
Wichtig: Nach der Installation über die Ubuntu Software Verwaltung auf den Button Permissions klicken, sonst kann es vorkommen das z.B. gemountete Netzlauwerke nich geschrieben werden könne.
Troubleshooting
Snap Store lässt sich nicht aktualisieren killall snap-store sudo snap refresh
Veröffentlicht unterInstallation|Kommentare deaktiviert für Installation Octorint auf Ubuntu 22.04 LTS
In dieser Beschreibung geht es darum, die Batterie-Pflege vorzuziehen, wenn der Strompreis günstig ist. Alle 30 Tage wird eine Batterie-Pflege von Sonnen initiiert, wenn die Batterie nicht innerhalb der Zeit zu 100% geladen wurde. Hier wird versucht, diese Batterie-Pflege dann einzuleiten, wenn der Strompreis besonders günstig ist.
Voraussetzung ioBroker mit installierten und konfigurierten Sonnen Adapter sowie TibberLink und der Telegram Adapter. Ich musste feststellen, das bei einem von drei Testläufen das Laden einfach stoppte ohne ersichtlichen Grund. Es war nötig nochmal den Befehl zum Laden mit 3300W abzusetzen.
Berechnung zur Zeit 25 Tage = 25*24*60*60 = 2160000 Zum Test 3 Tage = 260200 getState(’sonnen.0.latestData.secondsSinceFullCharge‘).val >= 260200
Zum Testen ist der Preis noch auf „NORMAL“ gesetzt später dann „CHEAP“
Change Log V1.0 Start Codierung -> Steuerungs Test der Batterie V1.1 Automatisches Laden V1.2 Einführung der Variablen (Datenpunkt 0_userdata.0.Sonnen-Batterie.StartCharge) V1.3 Zusätzliche if Abfrage Im SOC Bereich V1.4 Datenpunkte werden automatisch bei Script Start angelegt V1.5 Zusätzlicher Datenpunkt Erfassung, Datum Uhrzeit Start laden und Ende Laden V1.6 Nach dem 3. Test hat das Laden bei 26% angehalten ohne ersichtlichen Grund. Zusätzlich SOC <= 100% Setzen des Ladewertes V1.7 Einführung der Variablen TimeToLoad = 2160000 * 25 Tage*
//**************************************************************************/
//* Script Sonnen-Batterie landen wenn der Strompreis am günstigen ist */
//* Copyright by stephan-lubahn.de */
//* Keine Garantie oder Haftung für Fehlfunktion oder Erstehung von Kosten */
//* License public nur für den Privaten gebrauch. Kommerziell nur mit */
//* ausdrücklicher Genehmigung */
//* Datenpunkte */
//* 0_userdata.0.Sonnen-Batterie.Tage-seit-full-charge -> number */
//* 0_userdata.0.Sonnen-Batterie.StartCharge -> boolean */
//* 0_userdata.0.Sonnen-Batterie.Time-Start-Charge -> string */
//* 0_userdata.0.Sonnen-Batterie.Time-End-Charge -> string */
//* Berechnung zur Zeit 25 Tage = 25*24*60*60 = 2160000 */
//* Version 1.7 */
//**************************************************************************/
// Datenpunkte Anlegen
createState("0_userdata.0.Sonnen-Batterie.StartCharge", false, {
read: true,
write: true,
name: "StartCharge",
type: "boolean",
def: false
});
createState("0_userdata.0.Sonnen-Batterie.Tage-seit-full-charge", 0, {
read: true,
write: true,
name: "Tage-seit-full-charge",
type: "number",
def: 0
});
createState("0_userdata.0.Sonnen-Batterie.Time-Start-Charge", "" , {
read: true,
write: true,
name: "Time-Start-Charge",
type: "string",
def: ""
});
createState("0_userdata.0.Sonnen-Batterie.Time-End-Charge", "" , {
read: true,
write: true,
name: "Time-End-Charge",
type: "string",
def: ""
});
schedule('*/5 * * * *', On_Time ); // Alle 5 Minuten Starten
function On_Time() {
// Variablen
var TimeToLoad = 2160000;
var Wert1 = getState("sonnen.0.latestData.secondsSinceFullCharge").val;
var Tageseitvollgeladen = Wert1 / 60 / 60 /24;
var Tibberpreiswert =getState("tibberlink.0.Homes.YOUR TIBBER API.CurrentPrice.level").val;
var UserSOC =getState("sonnen.0.status.userSoc").val;
var Charging = getState("0_userdata.0.Sonnen-Batterie.StartCharge").val;
var Zeit = new Date();
let date = "2020-03-23T05:20:44";
setState("0_userdata.0.Sonnen-Batterie.Tage-seit-full-charge",Tageseitvollgeladen);
// Debugging -> Nach test auskommentieren
// console.log(Wert1);
// console.log(Tageseitvollgeladen);
// console.log(TimeToLoad);
// console.log(Tibberpreiswert);
// console.log(Charging);
if (Charging === false) {
if (getState('sonnen.0.latestData.secondsSinceFullCharge').val >= TimeToLoad) {
sendTo("telegram.0", "send", {
text: 'Zeit zur Batterie Pflege erreicht'});
console.log('Wert erreicht');
if (Tibberpreiswert == 'CHEAP') {
console.log('Preiswert');
sendTo("telegram.0", "send", {
text: 'Tibber Preis cheap'});
// Start charge Sonnen Batt
setState("0_userdata.0.Sonnen-Batterie.StartCharge",true);
setState('sonnen.0.configurations.EM_OperatingMode',1);
setState('sonnen.0.control.discharge', 0); //Als erstes aus Sicherheit discharge auf 0 setzen
setState('sonnen.0.control.charge', 3300); // Die Batterie wird mit maximal 3300 Watt geladen
setState('sonnen.0.configurations.EM_OperatingMode',1);
date = formatDate(Zeit, 'DD.MM.YYYY - hh:mm');
setState("0_userdata.0.Sonnen-Batterie.Time-Start-Charge",date);
} // Ende Tibber Preis
} // Ende Zeit last charge
} // Ende laden false
console.log(UserSOC);
if (Charging === true) {
if (UserSOC <=100) {
setState('sonnen.0.control.charge', 3300);
}
if (UserSOC >= 100) {
setState('sonnen.0.configurations.EM_OperatingMode',2); // Automatik
setState('sonnen.0.control.discharge', 1); //Entladen Ein
setState("0_userdata.0.Sonnen-Batterie.StartCharge",false);
setState('sonnen.0.configurations.EM_OperatingMode',2);
sendTo("telegram.0", "send", {
text: 'SOC >= 100%'});
console.log('SOC >= 100%');
date = formatDate(Zeit, 'DD.MM.YYYY - hh:mm');
setState("0_userdata.0.Sonnen-Batterie.Time-End-Charge",date);
}
}
}
// Ende