Guten Tag
Ich will einen Plotter aus einem alten Scanner und einem Drucker bauen.
Die Rohdaten für die "Zeichnung" will ich am Computer generieren, und
anschliessend über z.B. die serielle Schnittstelle an einen Controller
schicken.
Momentan bin ich gerade am überlegen, wie ich die Ansteuerung der
Schrittmotoren und die Übermittlung/Bereitstellung der Daten an den
Controller lösen soll.
Folgende Punkte bereiten mir derzeit noch ein Bisschen Kopfzerbrechen:
Ich gehe einmal davon aus, dass man die "Zeichnung" in einem
Vektor-programm zeichnen wird. (Bezüglich Koordinaten ect.) Das könnte
z.B. irgend ein CAD-Programm oder Adobe Illustrator sein.
Aber wie werden dann diese Koordinaten der Linien ect. aus diesen
Zeichnungen herausgelesen? Sprich, wie kriege ich diese Rohdaten die ich
dem Controller zur Steuerung der Motoren übermittlen muss ?
Ich nehme an, dass ich auf dem Controller den Bresenham-Algorithmus
implementieren muss, um z.B. eine Gerade anhand ihrer Start-, und
Endkoordinaten abfahren zu können. Das ist mir soweit klar. Aber wie
komme ich die Daten z.B. dieser Start-, und Endkoordinaten?
Wie wird das dann bei Kurven üblicherweise übermittelt? Jede Koordinate
jedes "Pixels" einzeln ? Oder muss ich da mit speziellen Dateiformaten
wie DXF, HP-GL ect arbeiten?
Hat da jemand mehr Erfahrung als ich ?
Wie man sieht, bin ich auf diesem Gebiet noch ein grosser, dennoch
intressierter Anfänger ;)
Dennoch hoffe ich, dass es hier Leute gibt, die mir "auf die Sprünge"
helfen.
Grüsse
hagbard wrote:
> Oder muss ich da mit speziellen Dateiformaten> wie DXF, HP-GL ect arbeiten?
Ich denke schon... entweder das oder Du müsstest Dir eine eigenen
Konverter basteln (was aber aufs Gleiche rauskäm).
Die Frage die ich mir stelle ist: wie hoch ist die Wiederholgenauigkeit
des so umgebauten Plotters wenn das Blatt 20x hoch und runter gefahren
ist...
Wenn Du einen richtigen Plotter ansteuern willst, dann solltest Du auch
ein vektororientiertes Dateiformat haben (oder es Dir zumindest
erzeugen). DXF ist so eines, HPGL auch, die Gerber-Files, die man aus
der Leiterplattenherstellung kennt auch. HPGL und die Gerber-Files sind
sehr einfach.
Bei DXF solltest Du reichlich Erfahrung haben. Vieles nennt sich DXF,
entspricht aber nicht der DXF-"Norm", es gibt Dialekte ohne Ende,
Erweiterungen noch und nöcher, da wirst Du nicht froh. In einem früheren
Leben hatte ich mal damit zu tun, jeder Hersteller einer CAD mit
DXF-Ausgabe interpretiert DXF anders, oft passt es nicht, manchmal nicht
richtig.
Aber das wäre erst einmal der zweite Schritt, im ersten Schritt brauchst
Du die entsprechende Hardware. Ich würde bei der Ansteuerung mit einem
eigenen "internen" Format arbeiten (kann durchaus an HPGL oder Gerber
angelehnt sein, übrigens gab es da mal eine DIN 66025) und die
Schnittstelle nach außen läuft über einen Konverter. Du wärst dann
flexibler (Vielleicht willst Du mal aus einer Bohrung einen Kreis malen,
oder so).
Das solls erst einmal sein
Ciao
Elektro Gandalf wrote:
> Hast du den genauen Link, kann leider nichts finden
Stimmt, ohne die Suchfunktion ist das schwer zu finden... mit
Suchfunktion der 2. Beitrag mit Suchwort "Plotter" :)
"Die Frage die ich mir stelle ist: wie hoch ist die Wiederholgenauigkeit
des so umgebauten Plotters wenn das Blatt 20x hoch und runter gefahren
ist..."
Ich dachte mir das so:
Als x-Achse nehme ich den Transferarm des Scanners. Auf diesen Arm
montiere ich wiederum den Transferarm des Druckers, welcher die Patrone
hin un her bewegt. Das ist dann die y-Achse. So sollte ich eigentlich
jede Koordinate eines A4-Blattes erreichen können.
Ich habe mir nun einmal die Dokumentation des Projektes auf
www.roboternetz.de angeschaut. Sieht interessant aus.
Dieser Mensch hat jedoch mit Freehand gearbeitet, anschliessend daraus
ein Postscript erstellt und mit "Runtime Revolution" die Koordinate für
den Plotter berechnet. Leider ist diese Software nur für Mac.
Gehe ich richtig in der Annahme, dass ich eine Software schriben muss,
die mir bloss die Koordinaten des neuen Punktes an den Controller senden
muss.
Der Controller beweegt sich jetzt auf schnellstem Weg dorthin. Für eine
Gerade wären das dann bloss 2 Koordinaten und sehrwahrscheinlich für
eine Kurve sehr viele. Der Controller würde dann mittels
Bresenham-Algorithmus den "schnellsten" Weg zu den neuen Koordinaten
berechnen und die Schrittmotoren entsprechend ansteuern. Ist er an den
neuen Koordinaten angelangt, sendet er ein OK an den Computer, und der
nächste Datensatz wird gesendet.
Stimmt das vom Prinzip her ?
Aber wie komme ich nun an diese Koordinaten ran? Sollte ich die aus dem
Postscript file extrahieren können? Wie sind die normalerweise
abgespeichert?
Ich habe ja auf dem Plotter sozusagen auch eine "Auflösung". Die
Schritte dier der Schrittmotor für die ganze x-Achse braucht mal die
Schritte für die y-Achse.
Diese Auflösung müsste ich ja beim Berechnen der Koordinaten für den
Controller berücksichtigen.
Gruss
hagbard wrote:
> Dieser Mensch hat jedoch mit Freehand gearbeitet, anschliessend daraus> ein Postscript erstellt und mit "Runtime Revolution" die Koordinate für> den Plotter berechnet. Leider ist diese Software nur für Mac.> Gehe ich richtig in der Annahme, dass ich eine Software schriben muss,> die mir bloss die Koordinaten des neuen Punktes an den Controller senden> muss.
Das würde ich nicht tun.
Ich würde Plotterseitig einen HPGL Interpreter schreiben.
Alte DOS CAD Programme kommen praktisch immer mit einem HPGL
Treiber daher. Für Windows gibt es einen 'rudimentären' HPGL
Treiber, der sich als ganz normaler Drucker installieren lässt.
> Der Controller beweegt sich jetzt auf schnellstem Weg dorthin. Für eine> Gerade wären das dann bloss 2 Koordinaten und sehrwahrscheinlich für> eine Kurve sehr viele. Der Controller würde dann mittels> Bresenham-Algorithmus den "schnellsten" Weg zu den neuen Koordinaten> berechnen und die Schrittmotoren entsprechend ansteuern.
Yep.
> Ist er an den> neuen Koordinaten angelangt, sendet er ein OK an den Computer, und der> nächste Datensatz wird gesendet.> Stimmt das vom Prinzip her ?
Das mit der Rückmeldung würde ich gleich mal aussen vor lassen.
Der Druckertrieber vom PC sendet Daten. Punkt.
Wenn der Zwischenspeicher im Plotter voll ist (oder voll
zu werden droht), greifen die ganz normalen RS-232 Mechanismen:
sprich, mittles Handshake wird dem PC mitgeteilt doch bitte mal
das Senden zu unterbrechen, damit der Datenwust abgearbeitet
werden kann.
>> Aber wie komme ich nun an diese Koordinaten ran?
Sagen wir doch: HPGL
Das ist ein Datenformat das von HP eingeführt wurde um zb.
die Plotter von HP anzusteuern.
Da es sehr einfach aufgebaut ist, erfreut es sich immer noch
grosser Beliebtheit.
HPGL ist einfach nur Text. Das sieht zb so aus
PU;
und bedeutet 'Pen Up'
oder
PU1000,1000;PD2000,3000;PU;
was soviel heist wie:
Pen Up und zur Position 1000/1000 fahren
dort dann Pen down und zur Position 2000/3000 fahren
dort dann einen Pen Up ausführen.
> Sollte ich die aus dem> Postscript file extrahieren können? Wie sind die normalerweise> abgespeichert?
Vergiss Postscript. Alles viel zu kompliziert.
> Ich habe ja auf dem Plotter sozusagen auch eine "Auflösung". Die> Schritte dier der Schrittmotor für die ganze x-Achse braucht mal die> Schritte für die y-Achse.> Diese Auflösung müsste ich ja beim Berechnen der Koordinaten für den> Controller berücksichtigen.
Ja musst du.
Die Ansteuersoftware geht davon aus, dass eine bestimmte
Schrittanzahl in X und Y möglich ist.
Die Umrechnung sollte aber nun wirklich kein Problem sein.
Das ist ein simpler Dreisatz.
Ich habe jetzt schon diverse HP-GL/2 Plotter Treiber installiert und
ausprobiert. Wenn ich in einem CAD (Vellum / Draftboard) bloss eine
Linie zeichne und diese plotten will, bekomme ich irgendwie nicht das
Erwartete:
(mit windowseigenem 'Hewlett-Packard HP-GL/2 Plotter' Treiber)
;BP;IN;SP0;QL100ROPS10240,8000RO90IP0,0,7999,10239SC0,3999,5119,0ACPA0,
0WU0PW0PP1PUSPPG;
Irgendwie hätte ich mir laut Karl Heinz Buchegger eher etwas wie
PU1000,1000;PD2000,2000;PU;
also Start- und Endkoordinaten der Linie erwartet.
Wäre das HP-GL und nicht HP-GL/2? Oder muss ich beim Treiber noch etwas
spezielles konfigurieren?
Was mache ich falsch ?
hagbard wrote:
> Ich habe jetzt schon diverse HP-GL/2 Plotter Treiber installiert und> ausprobiert. Wenn ich in einem CAD (Vellum / Draftboard) bloss eine> Linie zeichne und diese plotten will, bekomme ich irgendwie nicht das> Erwartete:>> (mit windowseigenem 'Hewlett-Packard HP-GL/2 Plotter' Treiber)> ;BP;IN;SP0;QL100ROPS10240,8000RO90IP0,0,7999,10239SC0,3999,5119,0ACPA0,
0WU0PW0PP1PUSPPG;
>> Irgendwie hätte ich mir laut Karl Heinz Buchegger eher etwas wie> PU1000,1000;PD2000,2000;PU;> also Start- und Endkoordinaten der Linie erwartet.> Wäre das HP-GL und nicht HP-GL/2? Oder muss ich beim Treiber noch etwas> spezielles konfigurieren?> Was mache ich falsch ?
Du erwartest dass ich alle HPGL Kommandos auswendig kann.
Kann ich nicht.
Gibts aber im Netz.
Und genau diese Doku suchst du jetzt mal.
Deine Linie musste bei PA0,0 anfangen (PA = Plot absolut) und
das Ende kann ich mangels Code Kenntnisse nicht entdecken.
Besorg dir die HPGL Codes.