Forum: Mikrocontroller und Digitale Elektronik Primitiver Plotter aus Scanner und Drucker


von hagbard (Gast)


Lesenswert?

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

von Jörg B. (manos)


Lesenswert?

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...

von anonymous (Gast)


Lesenswert?

auf www.roboternetz.de hat jemand sein projekt vorgestellt. er hat genau 
das gemacht, was du jetzt vorhast. Ich finde, er hat es excellent 
gelöst.

von Willi W. (williwacker)


Lesenswert?

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

von Elektro G. (e_g)


Lesenswert?

@anonymous:
Hast du den genauen Link, kann leider nichts finden

von Peter S. (sandmannnn)


Lesenswert?


von Jörg B. (manos)


Lesenswert?

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" :)

von hagbard (Gast)


Lesenswert?

"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

von Karl H. (kbuchegg)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

Hmm.
Den Windows Plotter Treiber scheint es so in der Windows
Standard Installation nicht mehr zu geben.

Es gibt aber Ersatz.
Siehe http://www.martinvogel.de/forum/forum_entry.php?nr=209

von Peter S. (sandmannnn)


Lesenswert?

hmm...

also bei meiner XP-Prov. Version kann ich einen HP Plotter ( HP-GL/2 ) 
als
Drucker auswählen. Geht an com oder lpt.

lg
Peter

von hagbard (Gast)


Lesenswert?

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 ?

von Karl H. (kbuchegg)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.