V-Plotter
Ein V-Plotter, auch hanging wall plotter genannt, ist
- eine Wand zum Befestigen von Papier,
- zwei Rollen mit ansteuerbaren Motor,
- eine Halterung für ein Zeichengerät, die an den Fäden der Rollen hängt und
- eine Steuerung von den Motoren (mit Stromversorgung).
plotbert
Zur Codeweek EU#2015, wurde in einem Workshop für Kinder und Jugendliche begonnen ein V-Plotter, gesteuert von einem entsprechenden Raspberry Pi zu bauen.
#plotbert steht dem HQ für allerlei Spielereien zur Verfügung.
Grundsätzlich ist #plotbert als Stiftplotter angedacht.
Aufbau
Ein Raspberry Pi 2 steuert über 8 Pins 2 Steppermotoren 28BYJ-48 (5V DC) via 2 passender H-Brücken. Und ein
- Pinbelegung
-
- MOTOR_LEFT
- _pins[0] = 11
- _pins[1] = 10
- _pins[2] = 13
- _pins[3] = 12
- MOTOR_RIGHT
- _pins[0] = 5
- _pins[1] = 4
- _pins[2] = 9
- _pins[3] = 8
Verwendung
Verbinden mit plotbert
ssh pi@172.22.99.103
raspberry
Starten des C++ Kommandointerpreters
vplotter
- l <length> // direct control, left motor
- r <length> // direct control, right motor
- m <dx> <dy> // move relative to current position
- g <x> <y> // move to absolute coordinate
- c // calibrate printer position
- u // move pen up
- d // move pin down
- w
- s <level> // set servo to this pwm level
- h // move to calibration point
Parameter der Zeichenfläche und des Plotters sind in der main.cpp hard gecodet: (Koordinatenursprung ist 0:0)
- Position des Kalibrierungspunktes
- Entfernung der Motoren vom Kalibrierungspunkt aus
- Größe der Zeichenfläche
- Quellen sind unter
/home/pi/V-Plotter
- Oder bei Github
script interface: Klassen Definition (Ruby)
Um bessere damit spielen zu können, haben wir eine Ruby Schnittstelle gebaut:
class VPlotter
- Laden der richtigen Konfiguration (config) für unseren Plotter
VPlotter.selectPlotter("plotbert")
- Aufsetzen vom Stift
VPlotter.penUp()
- Absetzen vom Stift
VPlotter.penDown()
- Rotieren lassen vom (linken oder rechten) Motor
-
- Wert>0 = abrollen
- Wert<0 = aufrollen
VPlotter.rotateLeftMotor( int Entfernung in 1/10 mm)
VPlotter.rotateRightMotor( int Entfernung in 1/10 mm)
- absolute Bewegung vom Koordinatenursprung aus
VPlotter.goto(x,y)
- relative Bewegung von aktueller Position
VPlotter.move(x,y)
- Fahren zum Kalibrierungspunkt
VPlotter.home()
- Schreiben des Wortes Test an der aktuellen Position
VPlotter.test()
servo motor position für definierte Stiftposition
VPlotter.setPen(int 0-100)
- Neues Kalibieren der Stiftspitze
-
- Fahren zum Kalibrierungspunkt und Ausführen von
calibrate()
- Fahren zum Kalibrierungspunkt und Ausführen von
VPlotter.calibrate()
- unter Angabe der Rahmenparameter ist es auch möglich andere Plotter damit zu steuern
VPlotter.customConfig(posMotorRight(x,y), posMotorLeft(x,y), calibrationPoint(x,y), height, width)
- Ändern der Geschwindigkeit vom Zeichen
-
- default=10
- langsam=1
- Werte über 10 sind möglich aber können zu übersprungenen Steps führen die die Zeichnung zerstören
VPlotter.printSpeed(int [1-10-∞])