V-Plotter

Aus C3D2
Zur Navigation springen Zur Suche springen

V-Plotter / Hanging Wall Plotter "Plotbert"

Zur Codeweek 2015, wurde in einem Workshop für Kinder und Jugendliche begonnen ein V-Plotter, auch hanging wall plotter zu bauen.

Dieser steht dem HQ für allerei Spielereien zur Verfügung.

Aufbau

Ein Raspberry2 steuert über 8 Pins 2 StepperMotoren 28BYJ-48 (5V DC) via 2 passender H-Brücken. Und ein Die Pinbelgung auf dem Raspberry:

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

$ ssh pi@172.22.99.103   (pw: 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 


Quellen sind unter:

/home/pi/V-Plotter

Oder bei Github:

 V-Plotter C++ Repo

script interface: Klassen Definition (Ruby)

Um bessere damit spielen zu können, haben wir eine Ruby Schnittstelle gebaut:

class VPlotter

VPlotter.selectPlotter("plotbert") 
   lädt die richtig config für unseren Plotter
     
VPlotter.penUp()
VPlotter.penDown()
   Stift auf und absetzen 

VPlotter.rotateLeftMotor( int Entfernung in 1/10 mm)
VPlotter.rotateRightMotor( int Entfernung in 1/10 mm)
   Wert<0 = aufrollen, Wert>0 = abrollen
   
VPlotter.goto(x,y) 
   absolute Bewegung vom Koordinaten Ursprung aus
VPlotter.move(x,y)
   relative Bewegung von aktueller Position

VPlotter.home()
   zum Kalibrierungspunkt fahren 
VPlotter.test()
   schreibt das Wort Test an die aktuelle Position

 VPlotter.setPen(int 0-100)
   servo motor position für definierte Stiftposition

VPlotter.calibrate()
   zum neu kalibieren des V-Plotters die Stiftspitze
   zum Kalibrierungspunkt bringen und calibrate() ausführen
VPlotter.customConfig(posMotorRight(x,y), posMotorLeft(x,y), calibrationPoint(x,y), height, width)
   es ist unter Angabe der Rahmenparameter auch möglich andere Plotter damit zu steuern


VPlotter.printSpeed(int [1-10-∞])
   ändert die Zeichengeschwindigkeit, default=10, langsam=1, 
   Werte über 10 sind möglich aber können zu übersprungenen 
   Steps führen die die Zeichnung zerstören