Elektronik_Header_3Lüftersteuerung mit ESP-01

 

Desktop-CNC

In letzter Zeit habe ich, unterstützt von Gemini, einige Erweiterungen in OpenCNCPilot (OPC) eingebaut. Die Tests der meisten dieser Software-Erweiterungen konnte ich im Büro mit einem Arduino Nano, geflasht mit GRBL V1.1, im Trockentest durchführen, die passenden Rückmeldungen liefert GRBL auch ohne angeschlossene Hardware.

Lediglich bei der Umsetzung der Joystick-Anbindung an OCP habe ich mir hin und wieder die Möglichkeit gewünscht, die letzte Änderung live am Entwicklungsrechner testen zu können. Ohne passende Hardware am Schreibtisch heißt es also für den Test: Ab in den Keller, geändertes Programm runterladen, testen, merken, was schief lief und wieder hoch ins Büro...

Um diese sportlichen Aktivitäten auf das unumgänglich notwendige Maß einzugrenzen, habe ich mich entschieden, mir jetzt doch ein Mini-CNC-Gadget zu bauen, das zumindest die drei Achsen bewegen kann und den Probe-Kontakt beherrscht.

Im Netz finden sich einige schicke Entwürfe, die die Bewegung der X- und Y-Achse mit den Mini-Gewindespindeln aus CD- oder DVD-Laufwerken realisieren. Die allermeisten diese Entwürfe setzen aber für die Z-Achse auf einen Modellbauservo, der einen Stift anheben und absenken kann, perfekt geeignet, um das Gadget zum Malen und Zeichnen zu verwenden.

Meine Sollvorgaben beinhalten aber auch, das Abtasten von Oberflächen testen zu können, folglich muss auch die Z-Achse mit solch einer Gewindespindel ausgestattet sein, damit GRBL und OCP ein Höhen- oder in meinem abgedachten Einsatzfall, ein Seitenprofil erstellen können. Für das Höhenprofil muss neben den X- und Y-Koordinaten auch die Z- Koordinate bekannt sein.

Solche Entwürfe sind deutlich dünner gestreut, aber Thingiverse bietet auch das.

Der Rahmen für die Mechanik stammt von squadzone. Durch Weglassen von Teilen, die für meine Hardware nicht benötigt werden, passen alle Teile in einem Rutsch auf das Druckbett.

Desktop-CNC Teile

Nach fast vier Stunden Druckzeit: Die drei Teile rechts vorne auf dem Druckbett sind die Gleiter, die von den Gewindespindeln angetrieben werden. Ich habe im ersten Versuch die Teile aus dem Remix von ItsAllRhett genommen, bin dann aber zum ursprünglichen Vorschlag von sqadzone zurück gegangen und habe beim großen A Sinterlaufbuchsen bestellt. Die Passungen mit PLA so genau zu treffen, dass weder die Losbrechkräfte zu groß sind, noch die geführten Teile auf den Stangen herumklappern, ist nahezu unmöglich. Ich habe es jedenfalls nach dem dritten Versuch aufgegeben. Zum Glück bietet sich mit dem kleinen Teil stepperverticalscrew die Möglichkeit, mal schnell einen Test zu drucken. Dazu aber später noch mehr...

Wie oben geschrieben, habe ich einen anderen Controller verwendet, das vorgesehene Gehäuse passt also nicht. Um dennoch den Controller nicht lose auf dem Tisch herumfliegen zu haben, spendiere ich dem Ganzen ein Unterteil, das das Ender-2 Board aufnimmt und mit dem Rahmen von sqadzone verheiratet werden kann.

Hinweis
Das Ender-2 Board wird von einem großen Bruder des gemeinhin für GRBL verwendeten AtMega328p befeuert, einem AtMega1284p. Darauf läuft GRBL in der Orignalabfüllung nicht, es gibt aber ein Derivat für Sanguinololu-Boards, die den Grundstock für die Anpassung an dieses spezielle Creality-Board aus dem Ender-2 geben. Einzelheiten dazu...

Fassung für Ender-2 MoBo und Fuß für die Desktop-CNC

Auf die vier Nupsis wird das Board einfach aufgelegt, die Stecker für die Motoren und die Brücke zum Einschalten müssen vorher gesteckt werden. In Echt sieht das Ganze dann so aus:

Rahmen für Ender-2 Controller

Die Stromversorgung kommt leider von vorn, der USB-Anschluss sitzt auf der Rückseite, aber es gibt Schlimmeres. Es ist genug Luft oberhalb der Bauteile um die Versorgungsleitung vom vorderseitigen Anschluss nach hinten zu verlegen.

Der Rahmen der Mini-CNC sitzt dann oben drauf.

Unterteil mit CNC-Rahmen

Die vorderen Füßchen des CNC-Rahmens passen in die Aufnahme am Unterteil, an den beiden hinteren Flügeln am Unterteil wird der CNC-Rahmen mit zwei Schrauben fixiert.

Als Nächstes habe ich aus der Krabbelkiste mit ausgebauten Teilen von alten Festplatten, Floppy-, CD- und DVD-Laufwerken eine Sammlung von 3 mm Stahlstangen gefischt und mir die Passenden ausgesucht. Leider sind alle unterschiedlich und insgesamt auch ein bisschen zu lang, aber für den ersten Test ist das ok. Später kann ich ja den Dremel bemühen und alle gleich ablängen.

Jetzt müsste ich eigentlich die drei gedruckten Blöcke mit den Gleitlagern auf die Gewindespindeln einschwören. Im Netz steht dazu etwas von ”heiß machen”...
Das gefällt mir rein vom Wort her nicht, immerhin arbeiten wir hier mit PLA, das direkt unterhalb der Spindel ebenfalls vorhanden ist und sich ganz sicher nicht verziehen darf.

Plan B für die Gleitblöcke: OpenScad
Die Geschichte bis die parametrisch erzeugten unterschiedlich breiten Blöcke auf die Stahlstangen passten und dann auch noch den passenden Abstand zur Gewindespindel hatten, will ich hier nicht ausbreiten. Nur soviel dazu - ein Bild sagt mehr als tausend Worte:

Druckversuche

Links oben die beiden Blöcke im Remix mit 3 mm Löchern für die Stangen, rechts daneben zwei der entsprechenden schmalen Blöcke. Dann darunter jeweils Blöcke mit 5 mm Löchern für die Sinterbronze-Buchsen, alle bisher noch ohne eine Idee für das Spindel-Gewinde. Die beiden untersten Blöcke haben dann schon ein Gewinde aus OpenScad.

parametrisch erzeugtes Halbgewinde

Nahaufnahme der Gewindegänge

Weil die Blöcke nur jeweils 7 mm hoch sind, passen nur 3 Gewindegänge auf diese Höhe, aber erste Tests ergeben, dass die Stabilität der feinen Strukturen durchaus besser ist als erwartet. Ich habe meinen Ankermake M5C überredet diese Blöcke mit einer Schichtdicke von nur 0,08 mm zu drucken. Einer dieser halben Gewindegänge besteht dadurch aus 18 bis 20 Schichten der einzeln aneinander geklebten PLA-Pünktchen in Form einer (halben) Helix mit 3 mm Steigung.

Damit das funktioniert, müssen in Ankermake Studio ein paar Slicer Einstellungen angepasst werden:

Precision mode ist unabdingbar. Die Schichtdicke wird unter Quality von den vorgegebenen 0,16 mm auf 0,08 mm halbiert. Ebenfalls unter Quality wird der Wall generator von Classic auf Arachne geändert. Unter Strength habe ich Infill auf 20 % gesetzt. Alle anderen Einstellungen bleiben bei den Precision Defaults. Support ist nicht notwendig, die horizontal liegenden Montagelöcher werden durch die geringe Schichtdicke auch ohne Support fast perfekt rund gedruckt.

Der kleine Block flutscht zu diesem Zeitpunkt schon sehr ordentlich, der Große klemmt auf den Stangen, obwohl die Maße absolut stimmig sind.

Als ich durch Messungen verifiziert hatte, dass die Abmessungen stimmen, als Grund für das Klemmen also nicht in Frage kommen, habe ich mir das Originaldesign nochmal im Auge zergehen lassen und mich gefragt, ob diese Einbuchtungen zwischen den Löchern für die Sinterbuchsen und dem inneren Teil mit dem Gewindegang eventuell nicht nur ein optischer Gag sind, sondern feinste mechanische Ungenauigkeiten in den Fluchten der Stangen und Buchsen ausgleichen.

Hier die Gegenüberstellung der beiden Designs.

Breiter Gleitblock mit Einbuchtungen

Ich entschuldige mich für den liederlichen Abklatsch, vielleicht ändere ich das Programm noch, so dass auch die obere Ecke durch eine Rundung ähnlich dem Original ersetzt wird.

Der Vollständigkeit halber hier auch der kleine Block im Original und als Clone.

Schmaler Gleitblock

Der aufmerksame Betrachter sieht sofort, dass der kleine Block diese Einbuchtungen offenbar nicht benötigt. Die Theorie legt nahe, dass der Schrumpfprozess des PLA beim Abkühlen beim kleinen Block auf die kurze Distanz keine merkbaren Auswirkungen hat. Auf die “große” Distanz beim langen Block kann sich das schon auswirken, außerdem kann sich der lange Block beim Bewegen leicht Verkanten, was sofort als Bremse wirkt. Durch die Einschnitte werden diese Effekte aufgefangen oder zumindest minimiert.

Kleiner Life Hack zwischendurch: Die Löcher für die Sinterbuchsen habe ich mit 5,1 mm etwas größer als den Außendurchmesser der Buchsen festgelegt, 5 mm geht gar nicht, mit 5,2 mm sind sie einfach durchgerutscht. Die 5,1 mm sind aber so eng gepasst, dass sich die Buchsen ohne Gewalt nicht mehr in das PLA einsetzen lassen.
Abhilfe: Die Buchsen werden direkt nach Abschluss des Druckprozesses auf das noch warme PLA aufgesetzt und mit dem flach aufgelegten Edelstahlschaber genau senkrecht eingepresst. Dafür habe ich den Löchern auf beiden Seiten kleine Fasen spendiert. Ist der Druck schon länger zu Ende, das PLA also schon erkaltet, hilft erneutes Anheizen des Druckbetts auf 60° C. Nach Erreichen der Zieltemperatur funktioniert das Einsetzen wie oben beschrieben.

Das OpenSCAD Programm zur Erzeugung der beiden Gleitblock Varianten stelle ich zur Verfügung.

Die änderbaren Parameter im Menü des Customizer:

Customizer Menü

Legende
type: Auswahl schmale oder der breite Version.
y_offset_narrow
und y_offset_wide: Abstand zwischen Gleitstangen-Ebene und Gewindespindel-Ebene. Der Abstand ist unterschiedlich.
connection_thickness: Höhe der Verbindung zwischen dem Mittelteil des Blocks und den “Ohren” mit den Löchern für die Sinterbuchsen.
block_len: Dicke des Blocks.
edge_r
: Radius unten an den Ohren. Ohne Radius kann der einseitig gelagerte Block zur Montage der Gewindespindel nicht nach oben geklappt werden.
bushing_d
: Außendurchmesser der Sinterbuchsen inklusive Übermaß zum Einpassen.
spindle_d
: Außendurchmesser der Gewindespindel. Bei handelsüblichen Floppy-, CD- und DVD-Laufwerken älterer Bauart beträgt der Durchmesser 3 mm. Der Wert enthält eine Zugabe von 0,15 mm (Erfahrungswert), damit die Spindel nicht klemmt.
pitch
: Steigung der Gewindespindel.
tooth_w
: Zahnbreite bzw. Breite der Nupsis, die an die Innenwand der halbrunden Rinne gedruckt werden, um daraus den Gewindegang zu erstellen. Die Nut des Gewindes ist 0,5 mm breit.
mount_d
: Bohrung für die Montagelöcher der
jeweils nächsten Ebene der Freiheitsgrade Y und Z.
y_max
und y_min: Abstand der Ober- bzw. der Unterseite des Blocks von der durch die Mitte der Gewindespindel verlaufenden Y=0 Ebene. Ergibt zusammen die Höhe des Blocks.

Bis hier sind alle Werte in [mm]
.

$fn bestimmt die Auflösung bei der Berechnung von Rundungen. Der Wert von 80 passt genau für den gegebenen Zweck (Bohrungen für die Sinterbuchsen, Rundung unten an den Ohren für die Sinterbuchsen, M3 Montagelöcher für die jeweils nächste Ebene der Freiheitsgrade Y und Z).

Nachtrag
Den ersten Wurf des Aufbaus habe ich mit den Original STL-Dateien des Autors erzeugt, ausgenommen die oben beschriebenen Blöcke. Das Ergebnis war soweit ok, aber an einigen Stellen hat es geklemmt, denn mit Zylinderkopfschrauben, für die die vorgesehenen Löcher passen, hat z.B. die Platte keine plane Oberfläche und an der Z-Achse stößt der Block an die Schrauben. Also habe ich Senkkopfschrauben verwendet, für die ich aber die vorhandenen Löcher mit einem Kegelkopfsenker nachbearbeiten musste. An der Z-Achse musste ich auf einen 8 mm Bohrer ausweichen, da meine Senker zu dick sind und ich mit den Stangenlagern in Konflikt geraten bin.

Meine Versuche, die veröffentlichten STL-Dateien zurück in ein änderbares Design zu wandeln haben nur teilweise Erfolg verzeichnet. Den Tower konnte ich so “retten”, der hat aber sowieso keine Schraublöcher, die hätten angesenkt werden müssen.

Bei den Basisplatten für die drei Achsen besteht hingegen die Notwendigkeit der Nachbearbeitung, hier bin ich aber kläglich gescheitert, weil die Oberflächen nicht komplett plan in der STL-Datei abgelegt sind. Zumindest hat FreeCAD, mit dem ich den ersten Schritt der Umwandlung durchgeführt habe, die Oberflächen nicht plan aus dem Dreieck-Netz extrahiert.

Also habe ich erneut OpenSCAD bemüht, nachdem ich mehrere Stunden erfolglos versucht habe, mit der Ansys Student Suite die umgewandelten Meshs zu reparieren.

Jetzt gibt es also für die zwei Typen von Trägerplatten, die Arbeitsplatte und den Taststifthalter ebenfalls OpenSCAD Programme, die zwar jeweils einen Bereich zur Eingabe von Parametern haben, deren Werte aber nur zum Feintuning gedacht sind, sollte der eigene 3D-Drucker nicht ganz maßhaltig drucken. Mit den eingestellten Default-Parametern sollten alle Teile zusammen passen.

Nachtrag
Ich wollte testen, ob die Maßhaltigkeit mit ASA als Basismaterial ebenfalls gegeben ist und habe dafür weitere Verfeinerungen ausprobiert. Es zeigte sich, dass ASA deutlich steifer als PLA aus dem Drucker kommt und die Gleitblöcke somit ohne Modifikation nicht funktionieren. Erst nachdem ich den oberen Querbalken eingesägt hatte, erklärten sich die ASA Teile zur Zusammenarbeit bereit.

Breiter Gleitblock mit Sägenuten

Am untersten Block sieht man schön die beiden eingesägten Schlitze, die dafür gesorgt haben, dass der Block seitlich “atmen” kann und sich nicht mehr auf den Achsen festklemmt. Natürlich habe ich diese Erkenntnis in die SCAD-Datei eingearbeitet, der geneigte Nachbauer muss nicht die Säge zücken.


Um zusätzlich Limit-Schalter einbauen zu können, habe ich für die Überprüfung der Abstände und Fluchten alle Teile in ein Gesamtbild integriert.

Mini-CNC

Die reine Überschneidungsfreiheit hätte ich mit den funktionalen Grundformen plus den Lichtschranken mit Unterbrecherschrauben überprüfen können, aber ich habe es mir nicht nehmen lassen, auch die Achsen und Gleitbuchsen zu modellieren, das sieht einfach vollständiger aus.

Legende
Rot - Gehäuse für den Ender-2 Controller und Basis für die Mini-CNC
Blau - Tower wie im Original, leicht modifiziert (Kabelführungen)
Grau - Basisplatten für X- und Y-Achse
Grün - Basisplatte für Z Achse
Gelb - Gleitblöcke
Schwarz - Limit Lichtschranken
Rosa - Schrauben zur Einstellung des Triggerpunkts am Limit
Silber - Stahlstangen
Kupfer - Gleitbuchsen

Hinweis:
Die ersten 3..5 mm der Unterbrecherschrauben müssen auf 2,5 mm Durchmesser abgedreht werden, damit sie sauber zwischen die Wangen der Lichtschranke passen.

Die 3D-Ansicht zum Drehen/Schwenken/Zoomen: 

Die Konstruktion im abgebildeten Zustand besteht aus den folgenden Dateien:

  • Gesamtansicht_Mini-CNC.scad - fasst alle Teile für die Ansicht zusammen und fügt die Stangen und Gleitbuchsen hinzu.
  • Desktop-CNC_Fuss5.stl - Das rote Unterteil.
  • CNC_Tower_2.stl - Das blaue Gerüst.
  • StepperBase_X+Y_Limit2.scad - Die beiden grauen Basisplatten für X- und Y-Achse.
  • StepperVerticalBase_Z2.scad - Die grüne Basisplatte für die Z-Achse.
  • Gewinde-Block_parametrisch_Trigger.scad - Die gelben Gleitblöcke. Über den Parameter “type” kann im Customizer “narrow” oder “wide” selektiert werden.

Die Erweiterungen für die Limit-Lichtschranken an den verschiedenen Bauteilen der Mini-CNC können bei allen Teilen im Customizer abgeschaltet werden.

Im Modell fehlen noch:

  • Platte des Arbeitsbereichs - leicht modifiziert für Senkkopfschrauben.
  • Nadelhalter (mein Ersatz für den Stifthalter aus dem Original).

Alle Dateien - STL für den Slicer und SCAD für OpenSCAD - finden sich auf Thingiverse.

Im Customizer von OpenSCAD lassen sich die Gleitblöcke der X- und Y-Achse per Slider auf den Stangen verschieben. So überprüfe ich “vorne”, ob die Schraube mittig zwischen den Schenkeln und auf Höhe der optischen Achse der Lichtschranke eintaucht und somit den Lichtstrahl auch sauber unterbricht. “Hinten” wird auf der X-Achse verifiziert, dass der Schraubenkopf nicht am Rahmen anstößt. Falls das doch nicht passt - es sieht in der Simulation sehr knapp aus - kann ich alternativ Madenschrauben ohne Kopf verwenden. An den beiden anderen Achsen ist das kein Thema, da ist rundherum massenhaft Platz.

Die Nadel, ein gefederter Prüfadapter, wird über das Kabel am Probe-Eingang des Controllers angeschlossen.

Nadelhalter

Sie dient dazu, eine elektrisch leitende Oberfläche abzutasten. OpenCNCPilot erstellt aus der Abtastung und den bekannten Koordinaten jedes Testpunktes ein Höhenprofil, das anschließend mit dem zugehörigen G-Code verrechnet wird. Beim Fräsen folgt der Fräser dann nicht nur den zweidimensionalen Vorgaben des Designs, sondern passt die Z-Achse so an, dass immer der identische Abstand zur Oberfläche eingehalten wird. Unabdingbar z.B. für die Erstellung von Leiterplatten durch Isolationsfräsen.

Mechanische Schalter als Mittel zur Limit-Detektion schließen sich ob ihrer Abmessungen von vornherein aus. Bleiben Näherungsschalter und Lichtschranken. Die mir bekannten Näherungsschalter sind annähernd genauso groß wie die komplette Mini-CNC, also habe ich mich auf die Suche nach sehr kleinen Gabellichtschranken gemacht und bin mit dem Typ Miniatur-Gabellichtschranke EE-SX1106 von Omron fündig geworden. Die Zwerge sind nur 6,4 x 4,2 x 5,5 mm klein und passen wunderbar zur Mini-CNC. Geschuldet ihrer Kleinheit sind wirklich nur die IR-LED und der Phototransistor integriert, die Beschaltung mit Vor- und Arbeitswiderständen muss extern erfolgen - dafür werde ich eine kleine Platine entflechten. Die Verkabelung der Sensoren (Lichtschranken) und der Stepper -Motoren wird mit dünnen 3-fach und 4-fach Silikon Flachbandkabeln AWG30 erfolgen.

Um mir selbst nachzuweisen, dass die Konstruktion der Limit-Sensoren wie geplant erfolgreich umgesetzt werden kann, habe ich erst mal nur einen Sensorhalter als Muster gedruckt...

Sensorhalter Testdruck

...und eine Lichtschranke mit den Widerständen bestückt, eingesetzt und von der Unterseite dann mit Kabeln versehen.

Sensorhalter mit Lichtschranke

Sensorhalter von unten

Der Lötvorgang war für mich besonders spannend, denn die Pins des Sensors schauen nur 0,5 mm aus dem Halter heraus. Und wir erinnern uns, der Halter ist aus PLA. Aber es hat problemlos geklappt und die Kabel halten.

Der elektrische Aspekt war auch noch ein Thema. Wie oben schon geschrieben, müssen zwei Widerstände am Sensor angebracht werden, ein Arbeitswiderstand für den Transistor und der Vorwiderstand für die LED.

Schaltungsvorschlag (Copyright Omron)

Die Widerstände werden einfach zwischen die Beinchen des Sensors gelötet, im Halter sind dafür zwei Vertiefungen vorgesehen, die drei Leitungen sind VCC, Signal und GND. Da die Widerstände alle zwischen den Beinchen ihren Platz finden, kann ich mir die ursprünglich geplante Platine sparen, die Leitungen Signal und GND gehen direkt auf die Limit-Stecker am Ender-2 Board, VCC wird gemeinsam an passender Stelle auf dem Board abgenommen.

Um nicht 4 Leitungen für den Anschluss des Sensors verplempern zu müssen, wird GND für die LED und den Transistor zusammengefasst. Und um fliegend zu verdrahtende Widerstände zu vermeiden, wird die Schaltung etwas umgestellt.

Hier nochmal die Originalschaltung als Emitterfolger in anderer Darstellung:

Sensor, Ausgang als Emitterfolger

Und jetzt die magische Wandlung in die Open Collector Variante:

Sensor, Ausgang als Open Collector

Die beiden Widerstände werden vertauscht zwischen die Beinchen gelötet, der Ausgang wandert vom Emitter an den Kollektor, fertig ist die Laube.

Mit den angegebenen Werten für die Widerstände (die hatte ich gerade in der Krabbelkiste liegen) ergibt sich bei einer Versogungsspannung von 5 V ein High-Pegel von 4,3 V und ein Low-Pegel von 170 mV. Das passt perfekt.

Vielleicht sollte ich noch erwähnen, dass die Widerstände SMD Typen sein müssen, Größe 1806 (4,5 x 1,6 mm) oder kleiner - wichtig ist, dass die Breite 1,6 mm nicht überschreitet. Die Widerstände werden parallel zu den Beinchen des Sensors, also mit der schmalen Längskante der Widerstände zur Sensorunterseite zeigend, eingelötet.

Abbildung: ToDo

Nachtrag
Ein Test am Ender-2 Board ergab, dass durch die offensichtlich auf dem Board vorhandene Beschaltung der Limit-Anschlüsse die bei der Freiluftmessung erhaltenen Pegel nicht erreicht werden. Der Transistor schafft es mit dem gegebenen Vorwiderstand für die LED nicht, den Eingang des Controllers weit genug Richtung Masse zu ziehen, bei 3,5 V ist das Ende der Fahnenstange erreicht. Der Vorwiderstand muss verkleinert werden.

R1 im Bild oben wird von 390 Ω auf 180 Ω verkleinert, der Strom durch die LED steigt damit von ca. 9 mA auf ca. 20 mA an, was den Transistor sicher durchschalten sollte.


Um die Mini-CNC für die Tests der Abtastung einrichten zu können, brauche ich eine Möglichkeit, die Tastnadel an jede beliebige Stelle im Bearbeitungsraum fahren zu können. Da ich von meiner großen CNC-Fräse die Bedienung mittels Joystick gewöhnt bin, kommt für mich auch bei der Mini-CNC nur eine Joystick-Steuerung infrage. Allerdings soll der Joystick nicht unbedingt genauso groß ausfallen, wie die gesamte Mini-CNC.
Ein Mini-Joystick muss her...


Das mir zur Verfügung stehende Board aus dem Ender-2 arbeitet mit einem AtMega1284p als Prozessor und Marlin als Firmware. Für die Funktionalität, die mir vorschwebt, benötige ich GRBL V1.1, die Firmware muss also getauscht werden.

Ich verwende dafür Visual Studio V2019 (VS) mit der Visualmicro-Erweiterung (VM) für Arduino Kompatibilität.

Der erste “blind gewinnt”-Versuch geht schief. Die LED auf dem Board blinkt beim versuchten Download zwar kurz auf, aber ansonsten meldet VS “keine Verbindung”. Offensichtlich hat die vorhandene Marlin Firmware keinen Bootloader an Bord. Netterweise sind auf dem Board die sechs Pins für den ISP-Anschluss vorhanden. Also verwende ich meinen mySmartUSB light Programmer und flashe erst mal die unveränderte Version von grbl-Melzi-3.5X. In weiser Voraussicht benutze ich die HEX -Datei “mit Bootloader”. Ab jetzt kann ich die Firmware einfach und direkt über USB auf das Board übertragen, eine große Erleichterung bei der Suche nach der korrekten Pin-Zuordnung für mein Ender-2 Board.

Soweit vorbereitet kann die Suche beginnen.

Long story short... Die folgenden drei Dateien mussten angepasst werden:
config.h, cpu_map.h und limits.c.

Die Einstellungen für das RAMPS Board passen im Wesentlichen auch für das Ender-2 Board. Lediglich Die Eingänge für Limit und Probe weichen von der Standardbelegung ab und müssen in “cpu_map.h” neu definiert werden.

Damit beide Defines - DEFAULTS_ENDER_2 und DEFAULTS_RAMPS_BOARD - zum Zuge kommen, habe ich in “config.h” folgendes Konstrukt eingebaut:

// To use with ENDER-2 board
#define DEFAULTS_ENDER_2
#ifdef DEFAULTS_ENDER_2
    #ifndef DEFAULTS_RAMPS_BOARD
        #define DEFAULTS_RAMPS_BOARD
    #endif
#endif
#define CPU_MAP_MELZI_CREALITY

In “limits.c” musste die Routine limits_get_state() geändert werden, da der vorhandene Code die Limit-Schalter nicht korrekt an OpenCNCPilot gemeldet hat. Das war aber augenscheinlich keine Abhängigkeit des Ender-2 Board, das müsste auch vorher schon nicht funktioniert haben.

Der PROBE Pin musste in “cpu_map.h” explizit für das Ender-2 Board definiert werden, ich habe dafür den vorhandenen CHECK Header (Pin PA2 im Code) verwendet.

In “config.h” wird das Define

#define DEFAULTS_ENDER_2

aktiviert, dann kann es losgehen.


Den angepassten und auf dem Ender-2 Board direkt lauffähigen Code für GRBL V1.1q gibt es unten...

Die HEX-Datei muss mit einem SPI-Programmer auf das Board gebracht werden, im Original hat Marlin leider keinen Bootloader für USB-Programmierung wie beim Arduino. Wenn für den ersten Flashvorgang die Datei “GRBL_1284P.ino.with_bootloader.hex” verwendet wird, ist ab dann das programmieren per USB möglich.

Ich stelle beide Versionen - mit und ohne Bootloader - zur Verfügung.

Die Sourcen dazu gibt es auf Github. Wenn der Inhalt des Repository auf den Rechner gezogen wird, sollte eine Bearbeitung mit Visual Studio 2019 oder neuer, die Compilierung und das Flashen auf das Ender-2 Board funktionieren - Letzteres nur, wenn vorher eine Firmware mit Bootloader auf dem Board gelandet ist.

 


Beim Aufruf dieser Funktion werden Daten an Google in USA übermittelt. Neben Ihrer IP-Adresse wird auch die URL der besuchten Seite übertragen.
Besucherzaehler

Besucher seit
25.11.2000