Marlin 2.0 / MKS Robin Nano V1.2
24. February 2022 07:17
Hi!

Vorab ein paar Eckdaten:
Drucker: Sapphire Plus (CoreXY)
Firmware: Marlin 2.0.X MKS Robin Nano V 1.2

Einige Dinge sind umgebaut und nicht mehr original. HotEnd, BLTouch und Kleinkram...
Drucker läuft soweit zuverlässig und alles ist schön.

Mein Vorhaben:

Würde gerne bei Bedarf über einen G Befehl (am liebsten G12) einen Nozzle Clean umsetzen.
Allerdings nicht so richtig wie es standart ist.
Hab eh vor mich en bisschen mehr in die C++ Geschichte reinzuarbeiten aber bin mit Marlin dann doch ein wenig überfordert xD.

Hab da noch ein kleines Arduino UNO rumfliegen und würde das gerne dafür nutzen.

Angedacht war etwas in dieser Reihenfolge:

1. Bei jedem 10ten Layer (bzw. würde ich im Slicer individuell einstellen (Cura)) G21 senden
2. G21 gibt über das Robin Nano an irgendeinem freien Port ein Signal aus.
3. Marlin fragt aktuelle Z Position ab und entscheidet bei Z > 30mm es geht weiter mit Punkt 4 andernfalls:
3.1 Marlin speichert aktuelle Position und fährt Z auf min. Z (30), wenn min. Z erreicht weiter mit Punkt 4
4. Arduino empfängt Signal und fängt an was zu machen (das wäre für mich die eigentliche Herausforderung die ich Suche xD)
5. Marlin führt retract durch und beginnt mit Nozzle Clean ohne Z zu fahren (min. Z > 30)
6. Arduino empfängt erneut Signal und beginnt wieder Dinge zu tun.
7. nach Nozzle Clean macht der Drucker wie gewohnt weiter (evtl. mit extrusion wegen zuvor retract) (evtl. kleines Delay damit Arduino definitiv fertig ist)

Soweit der Plan. Da CoreXY möchte ich mir beim Nozzle Clean sparen Z jedes mal nach oben zu fahren.
Einerseits weil das Gantry sonst auf die komplette Breite ab einer gewissen Druckhöhe nichts im Weg sein darf.
Andererseits unnötige Zeit bei großen Bauteilen.
Außerdem würde so meine Druckgröße eingeschränkt werden.
Das Arduino soll einen Servo ansteuern welcher eine Messingbürste in den Bereich des Nozzle Cleans schwenkt/fährt/schiebt (noch keine genaue Konstruktion).

Und hier meine eigentlichen Hilferufe:
zu Punkt 2:
1. Wie sind die Ausgänge vom Board gemappt? Wie könnte ich das in den G21 einbinden? (Falls Spannung zu groß für Arduino kommt ein Step-Down dazwischen)
zu Punkt 3:
1. Wie kann ich eine Z Position abfragen?
2. Wäre ein "if/else" der richtige Weg um 3 und 3.1 zu verknüpfen?
zu Punkt 5:
1. Im PIO kann man in der Configuration.h Start und Endpunkt vom Nozzle Clean bestimmen. Allerdings mit allen 3 Achsen.
#define NOZZLE_CLEAN_START_POINT { { 10, 10, (Z_MIN_POS + 30) } }
#define NOZZLE_CLEAN_END_POINT { { 10, 100, (Z_MIN_POS + 30) } }
Falls ich die Z Position erfolgreich abgefragt habe könnte ich die ja als Z eintragen, oder?!
2. Retractweg und Geschwindigkeit über G10?! Welche Werte werden bei G10 genommen? Laut Slicer?

Wahrscheinlich denkt sich der ein oder andere "Was fürn Aufwand... Geht doch viel leichter!" oder "Blödsinn, klappt eh nicht Sinnvoll."
Aber ehrlich Gesagt gehts mir in erster Linie darum mehr in die Thematik einzutauchen und eine Herausforderung zu haben und was zu konstruieren.

Vielleicht hat ja der ein oder andere ne Idee und kann mir Helfen?!

Schicken Gruß und bleibt Gesund smileys with beer
Re: Marlin 2.0 / MKS Robin Nano V1.2
24. February 2022 11:12
Bis auf das Ausgeben des Signals ist eigentlich alles schon vorhanden. Die Z-Bewegung kannst Du bereits unterbinden (NOZZLE_CLEAN_NO_Z)
[github.com]
[github.com]
Für die Auswahl des geeigneten Pins schaust Du in die Pins-Datei und suchst Dir einen ungenutzten Pin aus:
[github.com]

Herzl. Grüße
In diesem Forum dürfen leider nur registrierte Teilnehmer schreiben.

Klicke hier, um Dich einzuloggen