Kreuztisch mit Schrittmotoren bestücken

Fertige Geräte mit Bilden, Schaltungen, Programmen vorstellen.
Benutzeravatar
Franz54
Beiträge: 56
Registriert: Mo 20. Apr 2020, 10:12
Wohnort: 82441 Ohlstadt / Garmisch
Kontaktdaten:

Re: Kreuztisch mit Schrittmotoren bestücken

Beitrag von Franz54 »

Hallo, ich schon wieder.
Ich habe meine Motorbefestigung zugeschnitten, danke nochmal fürs Fräsen, und morgen werde ich die Teile mal boren und zusammenschrauben.

Ich habe jetzt auch nochmal die beiden Nema 23 Motoren miteinander vertauscht, weil doch einer am TB6600 Treiber seine Schritte nicht sauber ausführt. Um sicher zu sein, dass es nicht doch am Motor liegt, habe ich die beiden also nochmal miteinander vertauscht, und wieder läuft der Motor der am TB6600 hängt nicht korrekt. Also es ist einwandfrei der Treiber. Der macht wohl bei Motoren die mit dem Stromverbrauch am Limet des Treibers sind, ziehmlichen Mist :sad:

Ich habe doch beim Chritians-Shop die Wellenverbinder bestellt, und warte jetzt schon einige Zeit darauf, aber kommt nichts. Jetzt habe ich sie nochmal bestellt, weil da nichts war, Die liefernachtricht habe ich mit den anderen verwechselt, die ich heute bei dir dabei hatte. Mit dem roten Plastikzeug als Ausgleich. Da muss bei meiner Bestellung was schief gegangen sein. Das wurde auch bei PayPal nicht abgebucht. Also habe ich heute neu bestellt. :(o): :(o):

Servus
Franz :(V):
Benutzeravatar
Franz54
Beiträge: 56
Registriert: Mo 20. Apr 2020, 10:12
Wohnort: 82441 Ohlstadt / Garmisch
Kontaktdaten:

Re: Kreuztisch mit Schrittmotoren bestücken

Beitrag von Franz54 »

Soooo, der spezialist im Gewindeschneider abreißen hat zugeschlagen. Und das war mein einziger M4 :eek: :eek:

Hast du vielleicht einen, dass ich die anderen Gewinde auch noch machen kann. Natürlich mit mehr Gefühl. Weil das sind Sacklöcher, da bringe ich den Bohrer mit Sicherheit nicht mehr raus, wenn er abreißt. :(o): :(o):

PS: Ich habe gar nicht dran gedacht, dass heute ja normaler Einkaufstag ist. Ich kann also zum Baumarkt und mir neue Gewindeschneider holen. Ich muss nur noch warten bis Irmi endlich das Auto wieder auslässt :roll: Naja, das zieht sich etwas :) ........irgendwann heute Nachmittag, hoffe ich, komme ich auch mal wieder ans Steuer :(o): :(o):

Franz
Zuletzt geändert von Franz54 am Do 30. Dez 2021, 13:36, insgesamt 4-mal geändert.
Benutzeravatar
Franz54
Beiträge: 56
Registriert: Mo 20. Apr 2020, 10:12
Wohnort: 82441 Ohlstadt / Garmisch
Kontaktdaten:

Re: Kreuztisch mit Schrittmotoren bestücken

Beitrag von Franz54 »

Der Treiber, den ich vor zwei Tagen bestellt habe, ist heute gekommen. Das war wieder ein Chinese, aber wieder einer wie man es gewohnt ist. Bestellt, verschickt, geliefert, 2 Tage nach Bestellung hier eingetroffen. Super, so soll es sein.
Jetzt laufen beide Motoren super genau, wie es sich gehört. Keine Schrittfehler mehr wie beim TB6600 mit Nema 23. Die Treiber werde ich aussortieren, oder jedenfalls nur für Tests verwenden, nicht für den Gerätebau. Die Kombi TB6600 mit Nema 23, 4 Ampere, hat teilweise bei einer Umdrehung fast 10mm verloren, oder dazu gemacht. Seltsammer Weise, hat der Treiber mit den Nema 17 Mororen seine Arbeit gut gemacht. Offenbar ist das Problem, wenn der Motor höhere Ströme als diese 1,7 - 2 Ampere braucht. Ich kann mich erinnern, dass ich auch schon mal mit dem Nema 17 testweise höhere Ströme eingestellt habe, da ich wissen wollte, ob er dann bei mehr mechanischer Last weniger Schritt-Verluste hat. Und das ging ins Gegenteil. Die Nema 17 arbeiteten mit mehr Strom weniger gut, am TB6600. UNd ich habe mir das vermerkt als Motorproblem. Dabei scheint das ein Treiberproblem gewesen zu sein. An die Stromgrenze gehen, scheint bei dem TB6600 nicht so gut zu sein.

Franz
.
Kreuztisch_Motorhalter oben.jpg
Kreuztisch_Motorhalter oben.jpg (370.57 KiB) 1818 mal betrachtet
PS: Ich habe die Strebe, die etwas zuviel Luft hat, mit Alupapier umwickelt. Das geht Super. Die Strebe geht jetzt auch schön streng rein. Die andere die zu streng war, habe ich mit der Feile suuuuper hin bekommen.
Benutzeravatar
Franz54
Beiträge: 56
Registriert: Mo 20. Apr 2020, 10:12
Wohnort: 82441 Ohlstadt / Garmisch
Kontaktdaten:

Re: Kreuztisch mit Schrittmotoren bestücken

Beitrag von Franz54 »

So, der Motor ist dran. er läuft wie geschmiert. Nächstes Jahr, baue ich den zweiten dran. Weil morgen sollte ich mich ein bischen um die Silvesterdinge kümmern. Heute wurde ich von Schwiegersohn schon erinnert, dass da noch die Bowle vorzubereiten wäre, die immer ich mache.
Wo er recht hat, hat er recht :O: Also gibts morgen mal nicht Arduino. sondern Silvestervorbereitungen ;) :(oo):
Benutzeravatar
e69-fan
Beiträge: 282
Registriert: Mi 20. Jan 2021, 10:32
Wohnort: Murnau am Staffelsee

Re: Kreuztisch mit Schrittmotoren bestücken

Beitrag von e69-fan »

Hallo Franz,

das Ergebnis schaut ja toll aus. :(V):

Ich habe vorhin meinen Kreuztisch mit einer Meßuhr überprüft - alles im grünen Bereich, kein nachjustieren notwendig.

Also der letzte Entschluss für 2021 - mein Kreuztisch bekommt auch Stepper spendiert.

:(V): :(V): :(V):

Bitte verlinke doch den "guten" Treiber und den Stepper, dann kann ich sofort bestellen.

Später kann ich immer noch auf meine Aluprofile umziehen.

Servus - Wolfgang
Grüße aus der Heimat der E69
Benutzeravatar
Franz54
Beiträge: 56
Registriert: Mo 20. Apr 2020, 10:12
Wohnort: 82441 Ohlstadt / Garmisch
Kontaktdaten:

Re: Kreuztisch mit Schrittmotoren bestücken

Beitrag von Franz54 »

Hier sind die Treiber auf Ebay.
Und der Motor war auch auf Ebay.

Beide haben super schnell geliefert.
Franz

PS: Die drei Alustangen 20x8x500mm für den Motorhalter haben pro Stange 2,57 Euro gekostet. Das Porto 7,50 Euro für alle drei.
Also eine Stange inkl. Porto 5,07 Euro
Wenn du da auch was brauchst, kannst gerne eine Stange haben. Die reicht leicht für eine Halterung.

Meine Treiber sind jetzt auf 1600 Schritte je Umdrehung eingestellt.
Der Tisch macht bei einer Umdrehung 4 mm
Also ein Schritt am Motor ist 4mm / 1600 Schritte = 0,0025mm
Benutzeravatar
e69-fan
Beiträge: 282
Registriert: Mi 20. Jan 2021, 10:32
Wohnort: Murnau am Staffelsee

Re: Kreuztisch mit Schrittmotoren bestücken

Beitrag von e69-fan »

Hallo Franz,

die 2x Treiber und 2x Stepper sind bestellt und kommen ev. 5.6. Januar.

Du rüstest doch auf Alu-Wellenverbinder um. Könnte ich dann die mit dem Stern haben, dann hätten wir einen Vergleich.

Servus - Wolfgang
Grüße aus der Heimat der E69
Benutzeravatar
Franz54
Beiträge: 56
Registriert: Mo 20. Apr 2020, 10:12
Wohnort: 82441 Ohlstadt / Garmisch
Kontaktdaten:

Re: Kreuztisch mit Schrittmotoren bestücken

Beitrag von Franz54 »

Können wir machen. Ich muss nur sehen, ab die Alu - Wellenverbinder genauso passen, wie die, die ich jetzt habe. Weil ja der Abstand und Motorposition jetzt auf die eingerichtet ist. Aber ich könnte mir vorstellen dass die anderen auch die selbe Länge haben, und der Durchmesser eher weniger als mehr ist.

Ich habe jetzt gerade mal gemessen, wie groß das Grundbrett sein muss, dass der Kreutstisch nirgends überstehen kann. Egal wie weit man in X- oder Y-Richtung fährt. Und die Motoren mit Halter dazu gerechnet. Das ist 1 Meter mal 42cm. Da hole ich mir eine schöne dicke Sperrholzplatte und montiere den Kreuztisch drauf. Dann ist klar, dass da wo das Ding steht der Platz in alle Fahrrichtungen reicht.
Benutzeravatar
e69-fan
Beiträge: 282
Registriert: Mi 20. Jan 2021, 10:32
Wohnort: Murnau am Staffelsee

Re: Kreuztisch mit Schrittmotoren bestücken

Beitrag von e69-fan »

Hallo Franz,

hoffentlich seid ihr gut ins neue Jahr gekommen. Bei uns gilt jetzt die neue 2G - Regel: geimpft und gemästet. :hng:

Diese Woche kommen die fehlenden Teile und dann beginnt die Montage auf meinem Kreuztisch.

Kannst Du mal den Sketch reinstellen, damit ich den Aufbau testen kann?

Servus - Wolfgang
Grüße aus der Heimat der E69
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Kreuztisch mit Schrittmotoren bestücken

Beitrag von Admin »

Das Programm macht drei Schrittmotoren.

Bei den Deklarationen oben gibt es drei Felder für die drei Motoren.

In den Zeilen:
unsigned long schritte1 = 32000; // Ist 80mm
unsigned long schritte2 = 0;
unsigned long schritte3 = 0;
schreibst du rein, wieviele Schritte der Motor in jeder Richtung laufen soll.
32000 ist 8cm bei 1600 Schritte je Umdrehung.
Bei den Motoren, die nicht laufen sollen kommt 0 rein.
Wenn er 100mm fahren soll ist es 100mm / 0,0025mm = 40000 Schritte

In den Zeilen:
byte richtung1 = 0;
byte richtung2 = 1;
byte richtung3 = 0;
Kommt 1 oder 0 rein. Das ist die Richtung in der der Motor bei Programmstart anfährt

In den Zeilen:
unsigned long rampenende1 = 200;// Microsekundenx2 pro Impuls bei Voller Fahrt
unsigned long rampenende2 = 100;// Microsekundenx2 pro Impuls bei Voller Fahrt
unsigned long rampenende3 = 50;// Microsekundenx2 pro Impuls bei Voller Fahrt
Kommt 400 - 50 rein. Das ist die Geschwindigkeit mit der der Motor laufen soll.
50 ist schnell - 400 ist langsam. Das ist die Pause in Micosekunden zwischen den Schritten. bei voller Fahrt.
Die Start- und Stop-Rampen werden anders angepasst.

Und hier der Code:

Code: Alles auswählen

/*
  Einstellungen am TB6600 für 200 Schritte pro Umdrehung
  und für den Nema 17 Motor mit 1,0 bis 1,2 Amp.
  Dippschalter 6   5   4   3   2   1
  Stellungen   0n  off on  off on  on
  und für den Nema 17 Motor mit 1,5 bis 1,7 Amp.
  Dippschalter 6   5   4   3   2   1
  Stellungen   off on  on  off on  on
*/
#include <Wire.h> // Kommunikation mit Arduino IDE
#include <LiquidCrystal_I2C.h> // LCD Display

// LCD Display´s haben Adresse 0x27 oder 0x3F !!
LiquidCrystal_I2C lcd(0x27, 20, 4);
#define BAUD (115200)
unsigned long zeit1;
unsigned long zeit2;
/*------Steuerung für den ersten Schrittmotor------------------
  Bei 1600 Schritte pro Umdrehung:
  Rampenende 50 Microsek. je Impuls = 3 sec. für 40mm
  ist 800mm in einer Min.
  Rampenende 100 Microsek. je Impuls = 5 sec. für 40mm
  ist 480mm in einer Min.
  Rampenende 200 Microsek. je Impuls = 8 sec. für 40mm
  ist 300mm in einer Min.
*/
unsigned long x1 = 0;
unsigned long schritte1 = 32000;
byte richtung1 = 0;
byte schrittposition1 = 1;
unsigned long pwablauf1 = 0;// Pulswechselablaufzeit1
unsigned long whablauf1 = 0;// Wiederhohlablaufzeit1
unsigned long rampenstart1 = 500;// Microsekundenx2 pro Impuls bei Anfahrt
unsigned long rampenende1 = 50;//   Microsekundenx2 pro Impuls bei Voller Fahrt
unsigned long stopbeginn1 = 0;
unsigned long stopzeit1 = 5000;// Pausezeit von Stopp bis Anfahrt
byte rampenrichtung1 = 1;
unsigned long mini1 = rampenstart1;
unsigned long maxi1 = rampenende1;
byte enabl1 = 6;
byte dir1 = 5;
byte puls1 = 4;
//--------------------------------------------------------------
//------Steuerung für den zweiten Schrittmotor------------------
unsigned long x2 = 0;
unsigned long schritte2 = 0;
byte richtung2 = 0;
byte schrittposition2 = 1;
unsigned long pwablauf2 = 0;// Pulswechselablaufzeit2
unsigned long whablauf2 = 0;// Wiederhohlablaufzeit2
unsigned long rampenstart2 = 500;   // Microsekundenx2 pro Impuls bei Anfahrt
unsigned long rampenende2 = 50;     // Microsekundenx2 pro Impuls bei Voller Fahrt
unsigned long stopbeginn2 = 0;
unsigned long stopzeit2 = 5000;
byte rampenrichtung2 = 1;
unsigned long mini2 = rampenstart2;
unsigned long maxi2 = rampenende2;
byte enabl2 = 10;
byte dir2 = 9;
byte puls2 = 8;
//--------------------------------------------------------------
//------Steuerung für den dritten Schrittmotor------------------
unsigned long x3 = 0;
unsigned long schritte3 = 0;
byte richtung3 = 0;
byte schrittposition3 = 1;
unsigned long pwablauf3 = 0;// Pulswechselablaufzeit3
unsigned long whablauf3 = 0;// Wiederhohlablaufzeit3
unsigned long rampenstart3 = 500;  // Microsekundenx2 pro Impuls bei Anfahrt
unsigned long rampenende3 = 50;    // Microsekundenx2 pro Impuls bei Voller Fahrt
unsigned long stopbeginn3 = 0;
unsigned long stopzeit3 = 5000;
byte rampenrichtung3 = 1;
unsigned long mini3 = rampenstart3;
unsigned long maxi3 = rampenende3;
byte enabl3 = 45;
byte dir3 = 44;
byte puls3 = 43;
unsigned long laufzeit = 0;
unsigned long laufzeitEnde = 0;
//--------------------------------------------------------------
void setup()
{
  Wire.begin();
  lcd.begin();
  lcd.backlight();   // LCD Beleuchtung ein
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Mot.1 ");
  lcd.print(schritte1);
  lcd.print(" Schritte");
  lcd.setCursor(0, 1);
  lcd.print("Temp1 ");
  lcd.print(rampenstart1);
  lcd.print("-");
  lcd.print(rampenende1);
  lcd.print(" Micro");
  lcd.setCursor(0, 2);
  lcd.print("Mot.2 ");
  lcd.print(schritte2);
  lcd.print(" Schritte");
  lcd.setCursor(0, 3);
  lcd.print("Temp2 ");
  lcd.print(rampenstart2);
  lcd.print("-");
  lcd.print(rampenende2);
  lcd.print(" Micro");
  Serial.begin(115200);
  //----------Steuerpins für den ersten Treiber aktivieren-------
  pinMode(enabl1, OUTPUT); // Enable1
  pinMode(dir1, OUTPUT); // Step1
  pinMode(puls1, OUTPUT); // Dir1
  digitalWrite(enabl1, HIGH); // Set Enable1 High
  //---------------------------------------------------------------
  //----------Steuerpins für den zweiten Treiber aktivieren--------
  pinMode(enabl2, OUTPUT); // Enable2
  pinMode(dir2, OUTPUT); // Step2
  pinMode(puls2, OUTPUT); // Dir2
  digitalWrite(enabl2, HIGH); // Set Enable2 High
  //---------------------------------------------------------------
  //----------Steuerpins für den dritten Treiber aktivieren--------
  pinMode(enabl3, OUTPUT); // Enable3
  pinMode(dir3, OUTPUT); // Step3
  pinMode(puls3, OUTPUT); // Dir3
  digitalWrite(enabl3, HIGH); // Set Enable3 High
  //---------------------------------------------------------------
}
void loop()
{
  //zeit1 = micros();
  laufzeit = micros();
  //---------------------------------------------------------------------
  //----------Treiber 1 aktivieren---------------------------------------
  //---------------------------------------------------------------------
  if (millis() - stopbeginn1 >= stopzeit1) {
    digitalWrite(enabl1, LOW); // Treiber Motor1 ein
    digitalWrite(dir1, richtung1); // Set Dir
    if (x1 < schritte1)    // Ziel noch nicht erreicht?
    {
      //----------------------Motor 1----------------------------------------
      //---------------------Schritt 1---------------------------------------
      if ((schrittposition1 == 1) && (micros() - whablauf1 >= mini1)) {
        digitalWrite(puls1, HIGH); // Step auf high
        schrittposition1 = 2;  // Steuerung für Schritt 1 einstellen
        pwablauf1 = micros(); // Timer für Schritt 1 starten
      }
      //----------------------Motor 1----------------------------------------
      //---------------------Schritt 2---------------------------------------
      if ((schrittposition1 == 2) && (micros() - pwablauf1 >= mini1)) {
        digitalWrite(puls1, LOW); // Step auf low
        schrittposition1 = 1;  // Steuerung für Schritt 0 einstellen
        whablauf1 = micros(); // Timer für Schritt 0 starten
        x1++;
        //-----------------------------------------------------------------
        //-----------------Rampensteuerung Motor1--------------------------
        if (x1 <= rampenstart1) {
          rampenrichtung1 = HIGH;
        } else {
          rampenrichtung1 = LOW;
        }
        if (rampenrichtung1 == HIGH) {
          if (mini1 > maxi1) {
            mini1 = mini1 - 1; // Rampe für Motor 1 Gas geben
          }
        }
        if (rampenrichtung1 == LOW) {
          if (x1 + rampenstart1 > schritte1) {
            mini1 = mini1 + 2; // Rampe für Motor 1 bremsen
          }
        }
        //-----------------------------------------------------------------
      }
    }
    //-------------------------Motor 1-------------------------------------
    //----------------------Ziel erreicht ?--------------------------------
    if (x1 == schritte1) {
      x1 = 0;
      //schritte1 = 0;
      richtung1 = !richtung1;
      mini1 = rampenstart1; //Rampe für Motor 1 Neustart
      digitalWrite(enabl1, HIGH);//Motor1 aus
      stopbeginn1 = millis();
    }
  }
  //---------------------------------------------------------------------


  //---------------------------------------------------------------------
  //----------Treiber 2 aktivieren---------------------------------------
  //---------------------------------------------------------------------
  if (millis() - stopbeginn2 >= stopzeit2) {
    digitalWrite(enabl2, LOW); // Treiber Motor2 ein
    digitalWrite(dir2, richtung2); // Set Dir
    if (x2 < schritte2)    // Ziel noch nicht erreicht?
    {
      //----------------------Motor 2--------------------------------------
      //---------------------Schritt 1-------------------------------------
      if ((schrittposition2 == 1) && (micros() - whablauf2 >= mini2)) {
        digitalWrite(puls2, HIGH); // Step auf HIGH
        schrittposition2 = 2;  // Steuerung für Schritt 1 einstellen
        pwablauf2 = micros(); // Timer für Schritt 1 starten
      }
      //----------------------Motor 2--------------------------------------
      //---------------------Schritt 2-------------------------------------
      if ((schrittposition2 == 2) && (micros() - pwablauf2 >= mini2)) {
        digitalWrite(puls2, LOW); // Step auf low
        schrittposition2 = 1;  // Steuerung für Schritt 0 einstellen
        whablauf2 = micros(); // Timer für Schritt 0 starten
        x2++;
        //-----------------------------------------------------------------
        //-----------------Rampensteuerung Motor2--------------------------
        if (x2 <= rampenstart2) {
          rampenrichtung2 = HIGH;
        } else {
          rampenrichtung2 = LOW;
        }
        if (rampenrichtung2 == HIGH) {
          if (mini2 > maxi2) {
            mini2 = mini2 - 1; // Rampe für Motor 1 Gas geben
          }
        }
        if (rampenrichtung2 == LOW) {
          if (x2 + rampenstart2 > schritte2) {
            mini2 = mini2 + 2; // Rampe für Motor 1 bremsen
          }
        }
        //----------------------------------------------------------------
      }
    }
    //-------------------------Motor 2------------------------------------
    //----------------------Ziel erreicht ?-------------------------------
    if (x2 == schritte2) {
      x2 = 0;
      richtung2 = !richtung2;
      mini2 = rampenstart2; //Rampe für Motor 2 Neustart
      digitalWrite(enabl2, HIGH);//Motor2 aus
      stopbeginn2 = millis();
    }
  }
  //--------------------------------------------------------------------

  //---------------------------------------------------------------------
  //----------Treiber 3 aktivieren---------------------------------------
  //---------------------------------------------------------------------
  if (millis() - stopbeginn3 >= stopzeit3) {
    digitalWrite(enabl3, LOW); // Treiber Motor3 ein
    digitalWrite(dir3, richtung3); // Set Dir
    if (x3 < schritte3)    // Ziel noch nicht erreicht?
    {
      //----------------------Motor 3--------------------------------------
      //---------------------Schritt 1-------------------------------------
      if ((schrittposition3 == 1) && (micros() - whablauf3 >= mini3)) {
        digitalWrite(puls3, HIGH); // Step auf high
        schrittposition3 = 2;  // Steuerung für Schritt 1 einstellen
        pwablauf3 = micros(); // Timer für Schritt 1 starten
      }
      //----------------------Motor 3--------------------------------------
      //---------------------Schritt 2-------------------------------------
      if ((schrittposition3 == 2) && (micros() - pwablauf3 >= mini3)) {
        digitalWrite(puls3, LOW); // Step auf low
        schrittposition3 = 1;  // Steuerung für Schritt 0 einstellen
        whablauf3 = micros(); // Timer für Schritt 0 starten
        x3++;
        //-----------------------------------------------------------------
        //-----------------Rampensteuerung Motor3--------------------------
        if (x3 <= rampenstart3) {
          rampenrichtung3 = HIGH;
        } else {
          rampenrichtung3 = LOW;
        }
        if (rampenrichtung3 == HIGH) {
          if (mini3 > maxi3) {
            mini3 = mini3 - 1; // Rampe für Motor 1 Gas geben
          }
        }
        if (rampenrichtung3 == LOW) {
          if (x3 + rampenstart3 > schritte3) {
            mini3 = mini3 + 2; // Rampe für Motor 1 bremsen
          }
        }
        //----------------------------------------------------------------
      }
    }
    //-------------------------Motor 3------------------------------------
    //----------------------Ziel erreicht ?-------------------------------
    if (x3 == schritte3)
    {
      laufzeitEnde = micros();
      Serial.println("test");
      Serial.println(laufzeitEnde - laufzeit);  // 40
      Serial.println(mini3);                    // 1200
      Serial.println(maxi3);                    //  200
      Serial.println(x3);                       // 3200
      x3 = 0;
      richtung3 = !richtung3;
      // schritte3 = 0;
      mini3 = rampenstart3; //Rampe für Motor 3 Neustart

      digitalWrite(enabl3, HIGH);//Motor3 aus
      stopbeginn3 = millis();
    }
  }
  //--------------------------------------------------------------------
  //zeit2 = micros();
  //Serial.println("Zeit2 - Zeit1");
  //Serial.println(zeit2 - zeit1);
}
Antworten

Zurück zu „Fertige Projekte Vorstellen“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 32 Gäste