Hallo und Willkommen.

Heute verbinde ich wieder mal ein Projekt aus mehreren Welten:

Arduino
3D Druck
Hirnschmalz

In meiner Bastelkiste habe ich noch von einem i3 Mega Umbau, Linearführungen der X Achse gefunden.

Damit Stand fest: Es wird ein Kamera Slider.
Jedoch einfach den Motor anschmeißen und los das Ding war mir dann doch zu einfach.

Was soll der Slider nun können?

1.) Per Wlan steuerbar sein ( MQTT )
2.) Erkennung der Start und Endposition mittels Endstop
3.) Kalibrierungsfunktion, Schritte von Start bis Ende sind dann bekannt, heißt man kann gezielt ansteuern, wenn man zum Beispiel auf 35 cm Fahren will.
4.) Mit der Z Achse des 3D Druckers fahren*
5.) Optional ( in Entwicklung ): Per Web Interface steuerbar.
6.) Auto Slider – Fährt von Endstop zu Endstop mit der Geschwindigkeit die man eingibt. ( nur über das Webinterface )

*Für die Erkennung der Z Achse wird Octoprint genutzt und benötigt, folgendes PlugIn wird vorausgesetzt!:

Plugin _ MQTT - Octoprint
MQTT für Octoprint

 

Damit das ganze auch ordentlich übertragen wird, wird noch ein Javascript code benötigt was aus dem JSON, was vom Drucker bzw Octoprint kommt, die Position gelesen werden kann.

Es muss eine neue Variable angelegt werden, die Variable nennen wir currentZ.
Es muss die idJSON angepasst werden, bei mir heißt die Instanz mqtt.1
Slider ist das tropic was vom ESP kommt.
Daher muss die Variable und der Start des Scriptes erst erfolgen, wenn wir das Programm erfolgreich auf dem ESP geladen haben, so ist die Struktur erstellt!
Die Variable idJSON ist zu finden /deinmqtt_tropic octoprint/progress

var idJSON = 'mqtt.1.octoPrintsx1.progress.printing'; // Datenpunkt-ID mit JSON-String
var id_Z = 'mqtt.1.Slider.currentZ'; // Die angelegte Variable im IoBroker ( Dort wird die Position gespeichert ) 
var z = '';
 
function JSONtoZ(json) {
    var obj = JSON.parse(json);
    z = obj.printer_data.currentZ;
    setState(id_Z, z);
}
 
JSONtoZ(getState(idJSON).val);  // Script start
 
on(idJSON, function(dp) {  // triggern bei Wertänderung
    JSONtoZ(dp.state.val);
});

Ich habe versucht das so zu gestalten das der Slider ohne Code Anpassungen vergrößert werden kann, unter anderem werden folgende Funktionen und Hardwareteile implantiert:

1.)  Auto Home nach einem neustart ( wenn gewünscht auch manuelles auslösen )
2.) Auto Kalibrierung, wenn gewünscht. ( Anfahren Millimeter genau )
3.) Auto Slider ( Fahre von Stop zu Stop hin und her )
4.) Vorlauf per Schritte angeben
5.) Rücklauf per Schritte angeben
6.) Z Achse eines Druckers folgen.
( Interessant für Delta-Drucker oder große Drucker im Allgemeinen wo es keine Möglichkeit gibt eine Kamera an der Z Achse zu Installieren )
7.) WebInterface ( Aktuell ist die Version noch : nur funktional ! Nicht hübsch )
8.)  Dual Endstop

Zum Testen reichten die 300 mm Führungen, jedoch stellte ich schnell fest, es müssen längere her 🙂
Also erstmal über Amazon wirklich günstige besorgt
( unter 3€ für 50 cm )( + Versand.. )

Was wird benötigt?

1.) Wemos D1 mini*
2.) 2 x  Magnetkontakte / Andere Endstops*
3.) 2 x Linearführungen in gewünschter länge.
4.) Einen Nema 17 Stepper Motor*
5.) Kupferdraht* alternativ Jumper-Kabel.
6.) Eine 12V Versorgungsquelle ( min. 2A )
7.) Lötkolben + Lötzinn
8.) Stepper Treiber ( a4988 oder ähnlich )
9.) GT2 Riemen + Umlenkrollen
10.) Günstige LM8LUU  Lager ( reichen vollkommen aus! )
11.) Optional: Lochrasterplatine für einen sauberen aufbau.
12.) 3D Druck Teile ( Halter, Führung etc )
( STL Werden gerade noch ein wenig überarbeitet )

Als ich den Prototyp vor mir aufgebaut hatte, waren mir die 30 cm dann doch ein wenig zu klein 🙂
Jetzt liegen hier 50 cm und warten benutzt zu werden.

Vom jetzigen Prototyp :

 

Nach dem die ersten Test´s liefen,  habe ich mir aus einer Lochrasterplatine eine Basis geschaffen, alles etwas sauberer zu verlegen bzw unter zubringen.

Anbei auch der Schaltplan für die Verkabelung:

Schaltplan

Ich habe, wie üblich bei einer Lochrasterplatine, eine fliegende Verkabelung:

 

Mein jetziger Stand vom WebInterface ( wird noch ein wenig ausgebaut )

WebInterface auf dem ESP

Was ganz witzig ist, ich habe den Programmieraufwand ein wenig unterschätzt.
Als ich angefangen habe, dachte ich wirklich, es würde schneller gehen und weniger Probleme verursachen als andere Projekte.

Die Ansteuerung des Motors wird über die Accelstepper Bibliothek realisiert.
Die sonstige Logik, musste selbst erstellt werden.

In meinem jetzigen Sketch sind noch paar Fehler, diese sind reproduzierbar, daher sollten sie in der Version 1.6 verschwinden.

Bekannte Fehler:

1.) Beim umschalten vom Auto Slider Z ( Z Achse folgen ) auf normalen Modus und wieder auf Auto Slider Z, werden negativ werte angefahren und der Slider fährt ohne Stop in den zweiten Endstop und meldet einen Fehler.

2.) Schritte Rechnung passen noch nicht 100% ( 1cm sind keine 1cm )

3.) WebInterface, Button ohne Funktion, Fehlverhalten bei Textübergabe.
( Es dürfen nur Zahlen versandt werden )

Maßnahme: Ich baue nur noch Button ein um 1/2/5 und 10 cm zu Fahren.

Vom jetzigen Stand her, möchte ich den Code noch nicht Publizieren, da er noch Fehler enthält und noch ein wenig umstrukturiert wird.
Da der Code derzeit über 600 Zeilen enthält, möchte ich diesen noch mit Erklärungen und Änderungen bestücken.

Und im zweiten Teil dieser Serie beschäftige ich mich dann mit:

  • 3D Druckteile
  • Aufbau und Verkabelung
  • Neues Webinterface
  • Testvideo

Der dritte Teil beinhaltet unter anderen:

  • Arduino-Sketch
  • Timelapse-Video ( Automatischer Z Lauf )

 

Vielen Dank fürs Lesen, wie immer würde ich mich über Feedback freuen.
Vielleicht auch paar Vorschläge oder Änderungsvorschläge.

Bis zum Teil 2 🙂

 

* Meine Links führen zu Amazon, ein Kauf über diesen Link macht die Produkte keinen Cent teurer, jedoch bekomme ich paar Cents Provision.
Vielen Dank!
 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.