Files
2026-09-05 13:39:34 +02:00

3.5 KiB
Raw Permalink Blame History

Hardware: Wandplotter

Der Wandplotter ist ein Polargraph: eine Gondel hängt an zwei Riemen, die oben links und rechts über Motoren und Umlenkrollen laufen. Es gibt keine X/Y-Schienen. Position entsteht allein aus den beiden Riemenlängen.

Setup und Software: tutorial.md.

Baugruppen

Teil Rolle
Linker Motor NEMA-17-Schrittmotor, Buchse X auf der SKR. Wickelt den linken Riemen. Längerer linker Riemen → Gondel nach rechts/unten.
Rechter Motor Gleicher Typ, Buchse Y. Wickelt den rechten Riemen.
Umlenkrollen (Idler) Oben, Abstand der Mitten 1660 mm. Die Riemenlänge zählt von der Rolle zur Gondel, nicht die Schleife Motor↔Rolle.
Riemen / Zahnriemen Zwei Längen, max. in der Firmware 3500 mm (POLARGRAPH_MAX_BELT_LEN).
Gondel Hängender Schlitten mit Stifthalter. Gewicht hält die Riemen straff.
Servo Hebt und senkt den Stift. Marlin: Servo 0, Befehl M280. Im Beispiel oft S120 oben, S30 unten (an Mechanik anpassen).
Steuerung BigTreeTech SKR Mini E3 V3, STM32G0, USB-CDC zum Rechner. Treiber TMC2209, typisch 1200 mA RMS für die X/Y-Motoren.
Firmware Marlin mit #define POLARGRAPH. Kartesische G1 X… Y… werden intern in zwei Riemenlängen umgerechnet.
Rechner + Browser p5-Sketch, Web Serial, eine G-code-Zeile nach der anderen.

Motorzuordnung (Wand → Board)

Seite der Wand Buchse
links X
rechts Y

Z wird für die hängenden Motoren nicht gebraucht. Der „Extruder“ eines 3D-Druckers ist hier der Stift-Servo.

Marlin Polargraph (Configuration.h)

Quelle: MarlinBigTree/Marlin/Configuration.h und Configuration_adv.h. Board: SKR Mini E3 V3.

#define POLARGRAPH
#if ENABLED(POLARGRAPH)
  #define POLARGRAPH_MAX_BELT_LEN  3500.0 // mm, Override mit M665 H
  #define DEFAULT_SEGMENTS_PER_SECOND 5
  #define PEN_UP_DOWN_MENU
#endif

#define X_BED_SIZE 1660   // Abstand der Umlenkrollen (Mitten)
#define Y_BED_SIZE 2000   // Zeichnungs-Höhe unter der Rollenlinie
#define X_MIN_POS (-X_BED_SIZE/2)           // -830
#define X_MAX_POS (X_BED_SIZE/2)            //  830
#define Y_MAX_POS 800                       // Rollenlinie (80 cm über Y=0)
#define Y_MIN_POS (Y_MAX_POS - Y_BED_SIZE)  // -1200

#define BED_CENTER_AT_0_0
#define MANUAL_X_HOME_POS 0
#define MANUAL_Y_HOME_POS -2598.19  // Boot-Pose bei max. gleicher Riemenlänge

#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400 }  // 16×, 20Z GT2 → 40 mm/U
#define DEFAULT_MAX_FEEDRATE        { 500, 500, 5 }  // mm/s
#define DEFAULT_MAX_ACCELERATION    { 3000, 3000, 100 }

#define INVERT_X_DIR false
#define INVERT_Y_DIR true

#define EXTRUDERS 0
#define NUM_SERVOS 1
#define SERVO_DELAY { 300 }
#define DEACTIVATE_SERVOS_AFTER_MOVE

MANUAL_Y_HOME_POS folgt aus Y_MAX_POS - sqrt(POLARGRAPH_MAX_BELT_LEN² − (X_BED_SIZE/2)²) ≈ −2598. Nach dem Einschalten liegt die Maschine dort, nicht an der Blattmitte. Arbeitsursprung setzen mit G92 X0 Y0 in der Blattmitte (80 cm unter den Rollen).

Treiber (Configuration_adv.h)

TMC2209, 16× Microsteps, 1200 mA RMS:

#define X_CURRENT 1200
#define Y_CURRENT 1200
#define X_MICROSTEPS 16
#define Y_MICROSTEPS 16

EMERGENCY_PARSER ist aus.

Live nachjustieren

Zeichnung konisch/schief (erst nach korrektem Home):

M665 L-830 R830

Motoren zu heiss oder Schrittverlust (Firmware-Default 1200 mA):

M906 X1000 Y1000