mikrocontroller.net

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


Autor: (geloescht) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(Dieser Beitrag wurde geloescht)

Autor: xyz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: (geloescht) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(Dieser Beitrag wurde geloescht)

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/

Autor: Bjoern Buettner (tishima)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: (geloescht) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(Dieser Beitrag wurde geloescht)

Autor: (geloescht) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(Dieser Beitrag wurde geloescht)

Autor: Bjoern Buettner (tishima)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christoph Kessler (db1uq) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: (geloescht) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(Dieser Beitrag wurde geloescht)

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Christoph Kessler (db1uq) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: DIN66025 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rahul (Gast)
Datum:

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

Autor: Christoph Kessler (db1uq) (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: (geloescht) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(Dieser Beitrag wurde geloescht)

Autor: Jakob Föger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
//Beispiel eines Algorithmus zum Fräsen eines Kreissegments
//Mit den eingestellten Werten wird ein Dreiviertelkreis im Uhrzeigersinn ausgegeben
/

  
  //Der Radius des Kreises
  int r=100;
  
  //Die Startposition
  //damit der Algorithmus funktioniert muss x oder y zu Beginn 0, bzw r sein
  //der Fräser muss also genau zwischen zwei Quadranten stehen, da sonst das anfängliche h nicht stimmt
  
  int x=0;
  int y=r;
  int x0=100;
  int y0=100;

  //Der punkt bis zu dem der Fräser fahren soll
  int xsoll=x0-r;
  int ysoll=y0;


  //Drehrichtung; CCW bedeutet gegen den Uhtzeigersinn
  bool CCW=false;
  
  //Hilfsvariablen
  int h=r;
  int a=0;
  int b=0;
  int c=0;
  int d=0;

    
    
  do
            {
    
    //Hier wird ermittelt, in welchem Quadranten sich der Fräser gerade befindet
                byte sector = (byte)(2 * (y >= 0) + (x >= 0));

                //Wenn sich der Fräster genau zwischen zwei Quadranten befindet wird h zurückgesetzt
    if (x == 0 || y == 0)
                    h = r;

              //Je nachdem in welchem Quadranten sich der Fräser befindet werden a und b unterschiedlich belegt
                switch (sector)
                {
                    case 3: a = x; b = y; break;  //1.Quadrant
                    case 2: a = y; b = -x; break;  //2.Quadrant
                    case 0: a = -x; b = -y; break;  //3.Quadrant
                    case 1: a = -y; b = x; break;  //4.Quadrant
                }

    //Wenn gegen den Uhrzeigersinn gefahren werden soll werden a und b vertauscht
                if (CCW)
                {  
        int temp=a;
        a=b;
        b=temp;
                }
               

    //Eigentlicher Bresenham Algorithmus für die erste 45° des Viertelkreises
                if (b > a)
                {
                    if (h < 0)
                        h += (2 * --b +2);
                    h -= (2 * ++a +1);
                }
    //Algorithmus für die anderen 45° des Viertelkreises
                else
                {
                    if (h < 0)
                        h += (2 * ++a +2);
                    h -= (2 * --b -1);
                }

    //Wenn gegen den Uhrzeigersinn gefahren werden soll werden a und b vertauscht
                if (CCW)
                {  
        int temp=a;
        a=b;
        b=temp;
                }
              
    //Je nachdem in welchem Quadranten sich der Fräser befindet werden x und y unterschiedlich belegt
              switch (sector)
                {
                    case 3: x = a; y = b; break;
                    case 2: x = -b; y = a; break;
                    case 0: x = -a; y = -b; break;
                    case 1: x = b; y = -a; break;
                }

    //Pseudofunktion, die die Schrittmotoren auf die gewünschte Position setzt
                BewegeFraeser(x0+x,y0+y);

               }
            while ((x0+x)!=xsoll  && (y0+y)!=ysoll);

Autor: Pieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
moin moin,

Vollkreis siehe hier:

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


mfg
Pieter

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Jakob!!! Genau das suche ich schon seit 3 Tagen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.