Forum: Mikrocontroller und Digitale Elektronik (Dieser Beitrag wurde geloescht)


von (geloescht) (Gast)


Lesenswert?

(Dieser Beitrag wurde geloescht)

von xyz (Gast)


Lesenswert?

Also willst Du Seiten direkt beschreiben oder Bitmaps&Co. umwandeln ?
Egal op Postscript oder HPGL es sind Vektorformate, d.h. Du müßtest für
die jeweiligen Grundformen definieren wie sie umgesetzt werden.
Du solltest einfach mal im Linux Lager bei den Druckertreibern
nachsehen und schaun, ob Du die dortige HPGL Umsetzung adaptieren
kannst ;)
Allerdings verstehe ich nicht so ganz was HPGL mit Schrittmotoren zu
tun hat ?
Willst Du einen Plotter mit HPGL realisieren ????
Bye,
xyz

von (geloescht) (Gast)


Lesenswert?

(Dieser Beitrag wurde geloescht)

von Klaus (Gast)


Lesenswert?

... ein aufwändiges Thema !

Randinfo:
Ein kostenloses PC Programm für die Betrachtung von HPGL Dateien ist
"TakView2" , zu finden bei  http://www.taktools.de/

von Bjoern B. (tishima)


Lesenswert?

Hallo!

Ich wollte mir auch schon mal die Arbeit machen, finde allerdings
momentan keine Zeit dazu. Wenn Du das anstrebst, schmeiss den HPGL
Quatsch gleich in die Ecke und schreib nem GCode interpreter. Bei
gutmütigen Materialen (z.B. Holz) würdest Du damit klar kommen, ab
Aluminium ist nach meiner Erfarung nicht mehr einfach mit heben senken
Gasgeben getan. Als ansatz wuerde sich da der Source Code von TurboCNC
eignen (allerdings in Turbo Pascal geschrieben).
GCode haette auch den vorteil das Du Cad Daten mit einer CAM Software
konvertieren könntest.
z.Z. Arbeite ich mit PCNC als Steuerung (GCode interpreter), ner
kleinen selbstgebastelten Software und noch ner Menge Handarbeit am
GCode.........

mfg,
Bjoern

von (geloescht) (Gast)


Lesenswert?

(Dieser Beitrag wurde geloescht)

von (geloescht) (Gast)


Lesenswert?

(Dieser Beitrag wurde geloescht)

von Bjoern B. (tishima)


Lesenswert?

Ahja, stimmt TurboCNC ist nicht OpenSource hab es mal registriert und
dann gibts den Source Code dazu. Du solltest auch erstmal mit ner
fertigen Software arbeiten und sehen wie das ganze Abläuft und dann in
deine Steuerung einfliessen lassen.
Falls es deine erstes CNC Maschinchen wird, gibt es eh noch genug zum
spielen tüffteln und Dinge lernen die in keinen Forum stehen.
Das "grössere" Problem, wenn das liebe Geld nicht waehre die
umsetzung der technischen Zeichnungen, in GCode, ne brauchbare
bezahlbare CAM Software ist mir noch nicht untergekommen.
Bis Du die ersten Prozeßsicheren CNC Programme hinbekommst wird deine
Maschine noch ne Menge Späne und gebrochener Fräser produzieren und du
wirst eh nen PC zum Zeichnugen aendern und Programme aendern vor Ort
haben muessen.
Dann noch Hals und Fräserbruch

Bjoern

von Christoph Kessler (db1uq) (Gast)


Lesenswert?

Der einfachste PC-HPGL-Betrachter ist HP2XX ,den gibts unter Windows und
Linux. Ohne Parameter aufgerufen wird ein HPGL-File auf dem Bildschirm
dargestellt, mit Parametern in verschiedene Vektor- oder Pixelformate
umgewandelt:
http://www.gnu.org/software/hp2xx/

Ich habe mit dem AVR schon Messkrven in HPGL seriell ausgegeben, da
Laserjet-kompatible Drucker das direkt verstehen.

von (geloescht) (Gast)


Lesenswert?

(Dieser Beitrag wurde geloescht)

von Rahul (Gast)


Lesenswert?

Von Bresenham hast du schon gelesen, oder?
Der hat einen Algorithmus zum Zeichnen von Linien entwickelt, der auf
sehr einfachen Operationen (Addition und Subtraktion) basiert.
Kreise soll man damit auch hinbekommen...

von Christoph Kessler (db1uq) (Gast)


Lesenswert?

Das hab ich schon begriffen. Ich finde, dass HPGL zu Unrecht in
Vergessenheit geraten ist, gerade für Mikrocontroller ist der einfache
Aufbau ideal. Bresenham hab ich auch schon mit AVR zum Kreis-Zeichnen
auf einem LC-Display benutzt, das kann 45 Grad am Stück, größere muß
man aus 45Grad-Segnmanten zusammensetzen.

von DIN66025 (Gast)


Lesenswert?

Hallo Leute,

bin vor ca. 3 Monaten vor dem gleichnen Problem gestanden. Habe darauf
einen G-Code (DIN66025) in C implementiert. Ist aber noch nich ganz
fertig.

Features:
- Auflösung 0,001 mm
- Text (Line) Interpreter
- Alle Berechnungen im 4Byte Integerformat --> verdammt schnell!!
- Alle Winkelfunktionen über LookUp Tabellen (Auflösung 0,1°) -->
  verdammt schnell!
- Unterstützung von Vector Fonts (HersheyFonts)
- Impementierte Kommandos (normiert):
  G00, G01, G02, G03, G04, G40, G41, G42, G70, G71, G90, G91,
- zusätzliche Funktionen:
  - G66 Fräsen von Texten, inkl. Drehung, Eckradien (ca. 20 Fonts)
  - G86 Taschen-Fräszyklus, inkl. Drehung
  - G87 Kreistaschen-Fräszyklus
- M-Codes
- T-Codes

Zu der Integerberechnung sei zu sagen, dass ein Vergleich mit ner
Floating Point Lib einen Geschwindigkeitsvorteil von 1:114 ergab
(Integerarithmetik ist 114 mal schneller als Float).

Da ich (noch) keine CNC-Fräse habe, habe ich ein PC-Programm (X,Y,Z -
Auflösung 1mm - 0,01mm) geschrieben, dass die Daten der Steuerung
(Schrittmotor Steps) grafisch simuliert (2 1/2 CAD). Später kann dieses
Programm als Vorab Simulator verwendet werden.

Was fehlt noch:
- Drehung von Texten (G66)
- Frästasche Eckradien bei Drehung ist noch fehlerhaft.
- Ein paar M und T Befehle

Ist ziemlicher Aufwand, daher weiß ich noch nicht, ob es als
Open-Source Projekt einstellen werde.

von Rahul (Gast)


Lesenswert?

ich meinte Guido...
Hast du für den (Viertel-)Kreis irgendwelche Links? (bin etwas faul...)

von Christoph Kessler (db1uq) (Gast)


Angehängte Dateien:

Lesenswert?

Hier mein Bresenham-Kreis in AVR-Assembler. Ich zeichne hier allerdings
nur komplette 45 Grad Segmente. Als Anwendung die Darstellung eines
Smith-Diagramms auf dem LCD-Schirm

von (geloescht) (Gast)


Lesenswert?

(Dieser Beitrag wurde geloescht)

von Jakob Föger (Gast)


Lesenswert?

Hallo Leute

Der Thread scheint schon tot zu sein, trotzdem schreibe ich heier mal 
für die anderen Verzweifelten die auf der Suche nach einem guten 
Kreisalgorithmus sind.
Ich habe bis jetzt immer nur Code für 45° Segmente gefunden, die man 
aber für CNC Anwenfungen absolut nicht gebrauchen kann, da man damit 
keinen durchgängigen Kreis fahren kann.
1
//Beispiel eines Algorithmus zum Fräsen eines Kreissegments
2
//Mit den eingestellten Werten wird ein Dreiviertelkreis im Uhrzeigersinn ausgegeben
3
/
4
5
  
6
  //Der Radius des Kreises
7
  int r=100;
8
  
9
  //Die Startposition
10
  //damit der Algorithmus funktioniert muss x oder y zu Beginn 0, bzw r sein
11
  //der Fräser muss also genau zwischen zwei Quadranten stehen, da sonst das anfängliche h nicht stimmt
12
  
13
  int x=0;
14
  int y=r;
15
  int x0=100;
16
  int y0=100;
17
18
  //Der punkt bis zu dem der Fräser fahren soll
19
  int xsoll=x0-r;
20
  int ysoll=y0;
21
22
23
  //Drehrichtung; CCW bedeutet gegen den Uhtzeigersinn
24
  bool CCW=false;
25
  
26
  //Hilfsvariablen
27
  int h=r;
28
  int a=0;
29
  int b=0;
30
  int c=0;
31
  int d=0;
32
33
    
34
    
35
  do
36
            {
37
    
38
    //Hier wird ermittelt, in welchem Quadranten sich der Fräser gerade befindet
39
                byte sector = (byte)(2 * (y >= 0) + (x >= 0));
40
41
                //Wenn sich der Fräster genau zwischen zwei Quadranten befindet wird h zurückgesetzt
42
    if (x == 0 || y == 0)
43
                    h = r;
44
45
              //Je nachdem in welchem Quadranten sich der Fräser befindet werden a und b unterschiedlich belegt
46
                switch (sector)
47
                {
48
                    case 3: a = x; b = y; break;  //1.Quadrant
49
                    case 2: a = y; b = -x; break;  //2.Quadrant
50
                    case 0: a = -x; b = -y; break;  //3.Quadrant
51
                    case 1: a = -y; b = x; break;  //4.Quadrant
52
                }
53
54
    //Wenn gegen den Uhrzeigersinn gefahren werden soll werden a und b vertauscht
55
                if (CCW)
56
                {  
57
        int temp=a;
58
        a=b;
59
        b=temp;
60
                }
61
               
62
63
    //Eigentlicher Bresenham Algorithmus für die erste 45° des Viertelkreises
64
                if (b > a)
65
                {
66
                    if (h < 0)
67
                        h += (2 * --b +2);
68
                    h -= (2 * ++a +1);
69
                }
70
    //Algorithmus für die anderen 45° des Viertelkreises
71
                else
72
                {
73
                    if (h < 0)
74
                        h += (2 * ++a +2);
75
                    h -= (2 * --b -1);
76
                }
77
78
    //Wenn gegen den Uhrzeigersinn gefahren werden soll werden a und b vertauscht
79
                if (CCW)
80
                {  
81
        int temp=a;
82
        a=b;
83
        b=temp;
84
                }
85
              
86
    //Je nachdem in welchem Quadranten sich der Fräser befindet werden x und y unterschiedlich belegt
87
              switch (sector)
88
                {
89
                    case 3: x = a; y = b; break;
90
                    case 2: x = -b; y = a; break;
91
                    case 0: x = -a; y = -b; break;
92
                    case 1: x = b; y = -a; break;
93
                }
94
95
    //Pseudofunktion, die die Schrittmotoren auf die gewünschte Position setzt
96
                BewegeFraeser(x0+x,y0+y);
97
98
               }
99
            while ((x0+x)!=xsoll  && (y0+y)!=ysoll);

von Pieter (Gast)


Lesenswert?

moin moin,

Vollkreis siehe hier:

http://www.phyta.net/circalgo.htm


mfg
Pieter

von Mario (Gast)


Lesenswert?

Danke Jakob!!! Genau das suche ich schon seit 3 Tagen.

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.