Kreuztisch mit Schrittmotoren bestücken

Fertige Geräte mit Bilden, Schaltungen, Programmen vorstellen.
Benutzeravatar
Admin
Administrator
Beiträge: 1197
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Kreuztisch mit Schrittmotoren bestücken

Beitrag von Admin »

OK. Läuft wirklich schön. Wirst sehen, das ist total einfach. Man kann es ja auch zum Bohren benutzen. Da nimmt man einfach den dünsten Bohrer, z.B. einen 3mm, läst die Kiste automatisch alle Löcher bohren, und bohrt dann nur noch alle mit der richtigen Größe auf. Das ist dann wenigstens ohne messen und vorkörnen, trotzdem total genau. 0,0025mm als kleinster Schritt für den Vorschub ist ja sicher genauer als wir das so machen.

Oder jedenfalls genauer als ich :(o): :agt:

Servus
Franz
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,

jetzt machst Du mich richtig neugierig. :(V):

Zum vorbohren würde ich immer einen Zentrierbohrer nehmen. Der hat eine spezielle Schneidengeometrie und senkt für den nächsten, größeren Bohrer vor. Dadurch bleiben aufgebohrte Löcher rund. Ich bringe Mal welche mit.

Alles andere können wir ja vor Ort besprechen.

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

Re: Kreuztisch mit Schrittmotoren bestücken

Beitrag von Admin »

e69-fan hat geschrieben: Sa 15. Jan 2022, 21:21 Dadurch bleiben aufgebohrte Löcher rund. Ich bringe Mal welche mit.
Jajaaaaa, ich kenne solche Bohrer nicht mal. Ich war nie zu gebrauchen, wenn es darum geht Mechanisch sauberer Teile zu bauen. Dafür hatten wir in der Firma einen Mechanische Werkstatt. Aber mit dem Teil, das ich hier jetzt habe, müßte sogar ich sauberer Ausschnitte für die Displays hinbekommen und Löcher da bohren können, wo sie hingehören. :(oo): :(oo):

Ich freue mich schon auf dem Tag, wo das Ding hier, auch eine Z-Achse hat. Dann kanns los gehen. :(V):

Habe hier mal nen Video, dass man sieht wie das Ding jetzt fährt. Ich habe einen Displayausschnitt in Excel eingegeben und lasse in mal so fahren als ob er den Ausschnitt fräst. Als Z-Achse habe ich den Stift über den Kreuztisch gehängt, dass man besser sieht was das Ding macht. Ich habe mal wärend der Fahrt Eckmarkierungen angezeichnet, um die Genauigkeit einschätzen zu können. Die sind aber nicht sehr genau geworden, weil der Tisch ja nicht lange in den Ecken verweilt. Das kurze Geräusch das man beim Start hört, und immer wieder, wenn der Tisch in der Startecke angekommen ist, ist das Laufgeräusch des Z-Achsen-Motors. Auch am Ende hört man es mal länger, weil die Z-Achse da ja den Fräser 5cm weben würde, dass man das Fertige Teil entnehmen kann. Der Tisch kann keine schrägen Linien fahren und keine Kreise. Nur gerade, rechtwinklige Linien. Die aber recht genau, weil ja ein Schritt 0,0025mm sind. Eine Umdrehung der Motorachse sind 1600 Schritte, bei der der Tisch dann 4mm zurücklegt.
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 »

Guten Morgen Franz,

vom Gefühl her schaut die Vorschubgeschwindigkeit gut aus.

Vielleicht befestigt Du Mal ein Blatt Papier mit einer Unterlage auf dem Tisch und fährst mit einem spitzen Bleistift ab. Wäre leichter zum nachmessen.

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

Re: Kreuztisch mit Schrittmotoren bestücken

Beitrag von Admin »

Gute Tag Wolfgang
e69-fan hat geschrieben: So 16. Jan 2022, 06:26 Vielleicht befestigt Du Mal ein Blatt Papier mit einer Unterlage auf dem Tisch und fährst mit einem spitzen Bleistift ab. Wäre leichter zum nachmessen.
Ja genau. Möchte ich machen, aber dafür brauche ich erst mal einen Überbau, andem ich den Stift befestigen kann. Mache ich vielleicht heute mal.
Benutzeravatar
Admin
Administrator
Beiträge: 1197
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Kreuztisch mit Schrittmotoren bestücken

Beitrag von Admin »

Ich habe jetzt diese 77mm x 27mm mit der Schublehre auf dem Kreuztisch genau markiert. Habe dann die "Z-Achse mit der Spitze genau gesetzt, und habe den Tisch dann seine Runden drehen lassen. Und er ist exakt das ausgemessene Areal abgefahren. Also Das stimmt, was der Tisch macht. :(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,,

ich komme gerade aus dem Keller - die Mechanik ist für einen Probelauf soweit fertig.

Ich würde am Montag ca. 14:30 Uhr bei Dir vorbeikommen. Wäre das in.O. ?

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

Re: Kreuztisch mit Schrittmotoren bestücken

Beitrag von Admin »

Alles klar, so machen wir das :(V):

Ich habe gerade noch am Tempo gefeilt. Jetz kann der Tisch schneller. Das ist so ein Tuning Tipp von MobaTools. Das kann man machen wenn man nur bis zu drei Motoren fährt und die LED Gaudi nicht verwendet. Durch diese Änderung komme ich auf die selben Motordrehzahlen wie mit meinem alten Programm. Dafür wird ein Wert in MobaTools.h geändert.
Benutzeravatar
Admin
Administrator
Beiträge: 1197
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Kreuztisch mit Schrittmotoren bestücken

Beitrag von Admin »

Hallo Wolfgang.

Das neue Problem von Heute war gar nicht soooo leicht, wie ich dachte. Aber ok, ich finde es ist sogar besser gelöst als wir es besprochen haben. Wir wollten da, wo du von Hand bohren willst mit einer Taste stoppen, und dann nach dem bohren mit der selben Taste weiter fahren.

Jetzt ist es wie folgt. Ich schreiben in der Excel Datei in der spalte 2 wo eigentlich immer die "1" rein gehört, eine "0" rein. Das ist ja der Punkt "fahren". Wenn da in der Spalte fahren bei z.B. dem Motor 3 eine "0" steht. Dann bleibt die Mühle dort stehen, bis du deine Bohrerei erledigt hast und du die Taste "Weiter" drückst. Die "Taste Weiter" habe ich auf Pin A9 gelegt, weil die Taste in einer While Schleife abgefragt wird, inder die MobaTools, deren Tasten auf A1 - A8 liegen, nicht abgefragt werden können. Wenn in der Spalte "fahren" eine "1" steht, fährt der Tisch ohne Stopp weiter. :(oo):

Hier mal der Aufbau der Excel Tabelle:
Motor Fahren Richtung Tempo Schritte mm
1-3___0-1_____1-2___20-1800_XXXXX_-300
Die Schritte werden von Excel umgerechnet mm / 0,0025
Motor 3 ist die Z-Achse. Ist die nicht vorhanden, dann muß man im Feld nach der Motornummer, das ist das Feld "fahren" eine "0" eintragen. NUR BEI MOTOR 3!! Dann bleibt der Tisch immer da stehen, wo die Z-Achse bohren würde. Und man kann Händisch bohren.

Das würde dann z.B. so aussehen:
1 1 1 1000 30800 77
2 1 1 1000 10800 27
3 0 1 20____200 0,5
2 1 1 1000_8000 20
3 0 1 20____200 0,5
1 1 1 1000 20000 50
3 0 1 20____200 0,5
Und so weiter.
Das ergibt, 77mm nach links, 27mm nach oben, stop bei Bohrposition, 20mm nach oben, stop bei Bohrposition, 50mm nach rechts, stop bei Bohrposition. u.s.w.

Schaut gut aus. :(V):
Franz

Hier ist das aktuelle Programm:
.

Code: Alles auswählen

/*
####################################################################################################
  Kreuztisch Steuerung mit Schrittmototoren erstellt mit der Mobatools Lib. die ich sehr empfehlen kann.
  Die Fahrdaten werden mit Excel eingegeben, auf eine SD-Karte mit Trennung durch Semikolon exportiert,
  und vom Arduino wieder ausgelesen.
  Die beötigten Daten in einer Fahrdaten Zeile sind:
  Position 1: Motor / Achse 1 - 3 für X, Y, Z
  Position 2: Fahren ja / nein. Im Moment immer 1
  Position 3: Dir, also rechts / links = 1 - 2
  Position 4: Tempo 1 - 1000
  Position 5: Schritte 1 - 250000
  Das ist die Version 3.2 als erster Lauffähiger Code.
  Die Pins des Kartenlesers sind beim Arduino Mega:
  Miso Pin 50
  Mosi Pin 51
  SCK Pin 52
  CS Pin 53
  GND und VCC 5 Volt natürlich auch noch.
  Achtung beim Uno ist sie auf anderen Pin´s !!
  Der Kartenleser macht Karten bis 32GB
  Mit FAT16/FAT32-Partition
  Wenn die Fahrgeschwindigkeit zu gering ist, kann man in der Datei "MobaTools.h"
  "#define CYCLETIME       200" ändern auf "#define CYCLETIME       100"
  Dann das Programm nochmal neu auf den Arduino übertragen. 
  !!!Achtung!!! die Mobatools.d ist dann für dieses Programm i.O. 
  aber muss danach wieder in den ursprünglichen Zustand versetzt werden !!
  Wir belegen mit SPI und I2C mindestens 27-30 Pin´s also fallen kleinere Arduinos aus.
  Im Moment sind es nur 25 Pin´s aber für Spindel ein/aus, Kühlung, Absaugung,
  sollte man sich die Möglichkeit offen halten. Also lieber mit 30 rechnen!!!
  ##################################################################################################
*/
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
//---SD Kartenleser-------------------------------
#include <SPI.h>
#include <SD.h>
File myFile;
byte gelesen = 0;
const byte chipSelectPin = 53;
const String filename = "Mappe1.csv";
char zeilenBuffer[30];
char auswerteBuffer[6][8];
byte automatik = 0;
//------------------------------------------------
#define MAX8BUTTONS // spart Speicher, da nur 8 Taster benötigt werden (saves RAM)
#include <MobaTools.h>
// Pindefinitions - change to your needs
//----------Motor 1-------------------------------
const byte dirPin1       = 5;
const byte stepPin1      = 4;
const byte enaPin1       = 6;
//----------Motor 2-------------------------------
const byte dirPin2       = 9;
const byte stepPin2      = 8;
const byte enaPin2       = 10;
//----------Motor 3-------------------------------
const byte dirPin3       = 44;
const byte stepPin3      = 43;
const byte enaPin3       = 45;
//----------Taster--------------------------------
const byte button1Pin   = A1; //---Motor1 links---
const byte button2Pin   = A2; //---Motor1 rechts--
const byte button3Pin   = A3; //---Motor2 links---
const byte button4Pin   = A4; //---Motor2 rechts--
const byte button5Pin   = A5; //---Motor3 links---
const byte button6Pin   = A6; //---Motor3 rechts--
const byte button7Pin   = A7; //---Fräsen Start---
const byte button8Pin   = A8; // Frei
//--------------Taste zum Entsperren, wenn Stopp durch fahren==0
const byte entsperrtaste = A9; // Taste die nicht im MoToButton integriert ist
//----------Tempo_Poti---------------------------------------------------------------
const byte potPin       = A0;   // Poti muss ein analoger Eingang sein
const int STEPS_REVOLUTION = 1600;
unsigned long Sekundenablauf01 = 0; // Tastenabfrage von Taster02 300ms aussetzen
const unsigned long Pausezeit01 = 1000;
//--------Fahrdaten------------------------------------------------------------------
byte motor = 0;               // Achsenauswahl 1-2-3 ist X-Y-Z
byte fahren = 1;              // Motoren bewegen
byte richtung = 0;            // Richtung der Bewegung 1 oder 2
int tempo1 = 0;               // Tempo für Handsteuerung, wird vom Poti eingestellt
int tempo2 = 0;               // Tempo zum Fräsen
int tempo = 0;                // Wird vom Programm zur übergabe benutzt
unsigned long schritte = 0;   // Schritte die der Motor fahren soll
//-----------------------------------------------------------------------------------
//Stepper einrichten ( 1600 Schritte / Umdrehung - 1/4 Microstep )
MoToStepper myStepperX( STEPS_REVOLUTION, STEPDIR );  // 1600 Steps/ Umdrehung
MoToStepper myStepperY( STEPS_REVOLUTION, STEPDIR );  // 1600 Steps/ Umdrehung
MoToStepper myStepperZ( STEPS_REVOLUTION, STEPDIR );  // 1600 Steps/ Umdrehung
// Taster einrichten
// Den Tasternamen die Indizes 0...7 zuordnen
enum { Button1 = 0, Button2, Button3, Button4, Button5, Button6, Button7, Button8 };
// muss als byte definiert sein, damit ein enfaches sizeof funktioniert
const byte buttonPins[] = { button1Pin, button2Pin, button3Pin, button4Pin, button5Pin, button6Pin, button7Pin, button8Pin};
MoToButtons button( buttonPins, sizeof(buttonPins), 20, 500 );

MoToTimebase speedIntervall;    // Zeitinterval zum Auslesen des Speedpotentiometers
// the speed pot ist read only every 'speedintervall' ms

int vspeed = 0;                 //Steppergeschwindigkeit in U/min*10
//==============================================================================================================
void setup()
{
  lcd.begin();
  lcd.backlight();
  Serial.begin(9600);
  pinMode(entsperrtaste, INPUT_PULLUP); // Eingang für Entsaperrtaste
  //-----------------------------Motor 1----------------------------------------------------
  myStepperX.attach( stepPin1, dirPin1 );
  myStepperX.attachEnable( enaPin1, 10, LOW );        // Enable Pin aktivieren ( LOW=aktiv )
  myStepperX.setSpeed( 200 );
  myStepperX.setRampLen( 100 );                       // Rampenlänge 100 Steps bei 20U/min
  speedIntervall.setBasetime( 100 );                  // 100ms Tickerzeit
  //------------------------------Motor 2-----------------------------------------------------
  myStepperY.attach( stepPin2, dirPin2 );
  myStepperY.attachEnable( enaPin2, 10, LOW );        // Enable Pin aktivieren ( LOW=aktiv )
  myStepperY.setSpeed( 200 );
  myStepperY.setRampLen( 100 );                       // Rampenlänge 100 Steps bei 20U/min
  //-----------------------------Motor 3------------------------------------------------------
  myStepperZ.attach( stepPin3, dirPin3 );
  myStepperZ.attachEnable( enaPin3, 10, LOW );        // Enable Pin aktivieren ( LOW=aktiv )
  myStepperZ.setSpeed( 200 );
  myStepperZ.setRampLen( 100 );                       // Rampenlänge 100 Steps bei 20U/min
  //------------------------------------------------------------------------------------------
  //----------CD_Kartenleser aktivieren-------------------------------------------------------
  pinMode(SS, OUTPUT);
  Serial.begin(9600);
  while (!Serial)
    Serial.print("Initializing SD card...");
  if (!SD.begin(chipSelectPin))
  {
    Serial.println("Initialisierung fehlgeschlagen!");
    while (1);
  }
  //Serial.println("Initialisierung abgeschlossen .");
  //-----------------------------------------------------------------------------------------
}
//=============================================================================================================
void loop() {
  lcd.setCursor (0, 0);
  lcd.print(F("Kreuztisch_Pr._V3.2 "));
  //------SD_Karte öffnen zum Lesen-------------------------------------------------------
  if (automatik == 1)
  {
    myFile = SD.open(filename);
    //Serial.print(filename);
    if (myFile)
    {
      //Serial.println(F(" geöffnet!"));
      while (myFile.available())
      {
        if (fahren == 1)
        {
          leseZeile();
          ausgabeZeile();
          teileZeile();
          ausgabeWerte();
        }
        else {
          if (digitalRead(entsperrtaste) == 0)
          {
            fahren = 1;
          }
        }
      }
      // schließe die Datei:
      myFile.close();
      //Serial.println(F(" geschlossen!"));
      //while (1);
      automatik = 0;
      lcd.setCursor (0, 2);
      lcd.print (F("                    "));
      lcd.setCursor (0, 2);
      lcd.print (F(" Karte abgearbeitet "));
    }
    else
    {
      // Wenn die Datei nicht geöffnet wurde, drucke einen Fehler :
      //Serial.print("Fehler beim öffnen von ");
      //Serial.println(filename);
    }
  }
  //--------------------------------------------------------------------------------------
  button.processButtons();          // Taster einlesen und bearbeiten

  // Speed alle 100ms neu einlesen und setzen
  if ( speedIntervall.tick() ) {
    // wird alle 100ms aufgerufen ( Tickerzeit = 100ms im setup() )
    vspeed = map((analogRead(potPin)), 0, 1023, 20, 1800);  //Poti mappen auf 2 ... 180 Umdr/Min
    //min speed =2 and max speed =180 rpm
    tempo1 = vspeed;
    if (millis() - Sekundenablauf01 >= Pausezeit01)  // 1000msec abgelaufen?
    {
      lcd.setCursor (0, 3);
      lcd.print (F("  VSPEED = "));
      lcd.setCursor (12, 3);
      lcd.print (F("     "));
      lcd.setCursor (12, 3);
      lcd.print (vspeed);
      Sekundenablauf01 = millis();
    }
    myStepperX.setSpeed( tempo );
    myStepperY.setSpeed( tempo );
    myStepperZ.setSpeed( tempo );
  }
  //----------------------------------------------------------------
  // Drehen Motor1 rechtsrum
  if (button.pressed(Button1) ) {
    //Taster1 gedrückt
    tempo = tempo1;
    myStepperX.rotate( 1 );          // Stepper1 dreht vorwärts
  }
  if ( button.released(Button1) ) {
    //Taster1 losgelassen
    myStepperX.rotate(0);             // Stepper1 stoppt
  }

  //Drehen Motor1 linksrum
  if (button.pressed(Button2) ) {
    //Taster2 gedrückt
    tempo = tempo1;
    myStepperX.rotate( -1 );         // Stepper1 dreht rückwärts
  }
  if ( button.released(Button2) ) {
    //Taster2 losgelassen
    myStepperX.rotate(0);    // Stepper1 stoppt
  }
  //-----------------------------------------------------------------
  // Drehen Motor2 rechtsrum
  if (button.pressed(Button3) ) {
    //Taster1 gedrückt
    tempo = tempo1;
    myStepperY.rotate( 1 );          // Stepper2 dreht vorwärts
  }
  if ( button.released(Button3) ) {
    //Taster1 losgelassen
    myStepperY.rotate(0);             // Stepper2 stoppt
  }

  //Drehen Motor2 linksrum
  if (button.pressed(Button4) ) {
    //Taster2 gedrückt
    tempo = tempo1;
    myStepperY.rotate( -1 );         // Stepper2 dreht rückwärts
  }
  if ( button.released(Button4) ) {
    //Taster2 losgelassen
    myStepperY.rotate(0);            // Stepper2 stoppt
  }
  //-----------------------------------------------------------------
  // Drehen Motor3 rechtsrum
  if (button.pressed(Button5) ) {
    //Taster1 gedrückt
    tempo = tempo1;
    myStepperZ.rotate( 1 );          // Stepper3 dreht vorwärts
  }
  if ( button.released(Button5) ) {
    //Taster1 losgelassen
    myStepperZ.rotate(0);             // Stepper3 stoppt
  }

  //Drehen Motor3 linksrum
  if (button.pressed(Button6) ) {
    //Taster2 gedrückt
    tempo = tempo1;
    myStepperZ.rotate( -1 );         // Stepper3 dreht rückwärts
  }
  if ( button.released(Button6) ) {
    //Taster2 losgelassen
    myStepperZ.rotate(0);            // Stepper3 stoppt
  }
  if (button.pressed(Button7) ) {
    //Taster7 gedrückt
    automatik = 1;
  }
  if ( button.released(Button7) ) {
    //Taster7 losgelassen
  }
  //-----------------------------------------------------------------

}
//=========================================================================================
void leseZeile()
{
  char myChar = '\0';
  static byte bufferPosition = 0;
  if (bufferPosition == 0) memset(zeilenBuffer, '\0', sizeof(zeilenBuffer));
  while (myFile.available() && myChar != '\n')
  {
    myChar = myFile.read();
    if (isPrintable(myChar))
    {
      zeilenBuffer[bufferPosition] = myChar;
      bufferPosition++;
    }
  }
  // Hier ist ZeilenEnde / DateiEnde
  bufferPosition = 0;
}
//=========================================================================================
void ausgabeZeile()
{
  //Serial.print(F("eingelsene Zeile ist: "));
  //Serial.println(zeilenBuffer);
  lcd.setCursor (0, 0);
  lcd.print (F("                    "));
  lcd.setCursor (0, 0);
  lcd.print (zeilenBuffer);
}
//=========================================================================================
void teileZeile()
{
  // zeilenbuffer in auswerteBuffer umschreiben
  memset(auswerteBuffer, '\0', sizeof(auswerteBuffer) / sizeof(auswerteBuffer[0]));
  strcpy (auswerteBuffer[0], strtok(zeilenBuffer, ";"));
  strcpy (auswerteBuffer[1], strtok(NULL, ";"));
  strcpy (auswerteBuffer[2], strtok(NULL, ";"));
  strcpy (auswerteBuffer[3], strtok(NULL, ";"));
  strcpy (auswerteBuffer[4], strtok(NULL, ";"));
  strcpy (auswerteBuffer[5], strtok(NULL, ";"));
  //Serial.println(F("Puffer geteilt!"));
}
//========================================================================================
void ausgabeWerte()
{
  for (byte b = 0; b < sizeof(auswerteBuffer) / sizeof(auswerteBuffer[0]); b++)
  {
    //Serial.print(F("Wert "));
    //Serial.print(b);
    //Serial.print(F(" ist: "));
    //Serial.println(auswerteBuffer[b]);
    motor = atoi(auswerteBuffer[0]);
    fahren = atoi(auswerteBuffer[1]);
    richtung = atoi(auswerteBuffer[2]);
    tempo = atoi(auswerteBuffer[3]);
    myStepperX.setSpeed(tempo);
    myStepperY.setSpeed(tempo);
    myStepperZ.setSpeed(tempo);
    schritte = atoi(auswerteBuffer[4]);

    lcd.setCursor (0, 2);
    lcd.print(F("                    "));
    lcd.setCursor (0, 2);
    lcd.print(motor);
    lcd.print (F("/"));
    lcd.print(fahren);
    lcd.print (F("/"));
    lcd.print(richtung);
    lcd.print (F("/"));
    lcd.print(tempo);
    lcd.print (F("/"));
    lcd.print(schritte);
    //-------------Motor 1-----------------
    if (motor == 1)
    {
      if (richtung == 1)
      {
        myStepperX.doSteps(schritte);
      }
      if (richtung == 2)
      {
        myStepperX.doSteps(-schritte);
      }
      
      motor = 0;
      richtung = 0;
      schritte = 0;
    }
    //-------------Motor 2-----------------
    if (motor == 2)
    {
      if (richtung == 1)
      {
        myStepperY.doSteps(schritte);
      }
      if (richtung == 2)
      {
        myStepperY.doSteps(-schritte);
      }
      
      motor = 0;
      richtung = 0;
      schritte = 0;
    }
    //------------Motor 3------------------
    if (motor == 3)
    {
      if (richtung == 1)
      {
        myStepperZ.doSteps(schritte);
      }
      if (richtung == 2)
      {
        myStepperZ.doSteps(-schritte);
      }
      
      motor = 0;
      richtung = 0;
      schritte = 0;
    }
  }//---------fahren ende-----------------
  while (myStepperX.moving() > 0) {}
  while (myStepperY.moving() > 0) {}
  while (myStepperZ.moving() > 0) {}
}
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 »

Guten Morgen Franz,

ich habe mir diesen MEGA bestellt.

https://www.amazon.de/gp/product/B09F9V ... UTF8&psc=1

Wenn er für Dich in Ordnung ist (chip) kann ich Dir gerne 2 Stück bestellen ( tarnen und täuschen). Da sind die Versandkosten schon dabei.

Denk bitte an den Link für den cardreader.

Schönen Tag - Wolfgang

PS. Gestern hatten wir ein sehr interessantes Treffen - Danke für Deine Geduld :(V):
Grüße aus der Heimat der E69
Antworten

Zurück zu „Fertige Projekte Vorstellen“

Wer ist online?

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