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 »

Ich habe jetzt mal das Programm mit den MobaTools angepasst, dass die Treiber an den selben Pins angeschlossen werden, wie bei meinem alten Testprogramm für drei Stepper Motoren. Also egal welches der beiden Programme ich auf den Arduino lade, man muss nichts an den Anschlüssen ändern.

Und hier ist mal das derzeitige Programm mit den MobaTools. Das haben wir glaube ich weiter oben hier schon mal drin, aber das hier ist aktueller. Ich habe auch das mit der Motorrichtung noch in Ordnung gebracht.

Was jetzt noch nicht geht, ist die Übergabe der Fräs-Daten aus Excel. Da muss ich mir noch was überlegen.

Hast du morgen Samstag Zeit und Lust, dass du mal hier auf nen Kaffee vorbei kommst? Vielleicht bin ich dann schon wieder ein bischen weiter. Aber ich stelle mal das derzeitige Programm rein.

Code: Alles auswählen

////////// Beispiel 3 für MoToStepper - Betreiben eines bipolaren Steppers mit step/dir und enable  ////////////
/*  Beispiel für die Ansteuerung eines bipolaren Steppers über 4 Taster und
    ein Poti ( für die Geschwindigkeit )
    In diesem Beispiel werden neben der Stepperklasse (MoToStepper), auch die MoToButtons
    und der MoToTimebase genutzt.
    Der Spulenstrom wird abgeschaltet, wenn der Stepper nicht läuft.
    Die Taster müssen gegen Gnd schalten, es sind keine Widerstände notwendig
    Button1:  Dreht rechts, solange Taster gedrückt
    Button2:  Dreht links, solange Taster gedrückt
    Button3:  1 Umdrehung rechts
    Button4:  1 Umdrehung links
*/
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#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;
const byte button8Pin   = A8;
//----------Tempo_Poti--------
const byte potPin       = A0;   // Poti muss ein analoger Eingang sein
const int STEPS_REVOLUTION = 1600;
//--------Fahrdaten-----------
byte motor = 1;                     // Achsenauswahl 1-2-3 ist X-Y-Z
byte fahren = 1;                    // Motoren bewegen
byte richtung = 2;                  // Richtung der Bewegung 1 oder 2
int tempo1 = 20;                    // Tempo für Handsteuerung
int tempo2 = 1000;                   // Tempo zum Fräsen
int tempo = 0;                      // Wird vom Programm zur übergabe benutzt
unsigned long schritte = 3200;      // 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();
  //-----------------------------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
}
//=============================================================================================================
void loop() {
  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;
    myStepperX.setSpeed( tempo );
    myStepperY.setSpeed( tempo );
    myStepperZ.setSpeed( tempo );
  }
    lcd.setCursor (0, 0);
    lcd.print ("Tempo - Motor");
    lcd.setCursor (0, 1);
    lcd.print (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
  }
  //-----------------------------------------------------------------
  //--------fahren ja?---------------------
  if (fahren == 1)
  {
    tempo = tempo2;
    //-------------Motor 1-----------------
    if (motor == 1)
    {
      if (richtung == 1)
      {
        myStepperX.doSteps(schritte);
      }
      if (richtung == 2)
      {
        myStepperX.doSteps(-schritte);
      }
      fahren = 0;
      motor = 0;
      richtung = 0;
    }
    //-------------Motor 2-----------------
    if (motor == 2)
    {
      if (richtung == 1)
      {
        myStepperY.doSteps(schritte);
      }
      if (richtung == 2)
      {
        myStepperY.doSteps(-schritte);
      }
      fahren = 0;
      motor = 0;
      richtung = 0;
    }
    //------------Motor 3------------------
    if (motor == 3)
    {
      if (richtung == 1)
      {
        myStepperZ.doSteps(schritte);
      }
      if (richtung == 2)
      {
        myStepperZ.doSteps(-schritte);
      }
      fahren = 0;
      motor = 0;
      richtung = 0;
    }
  }//---------fahren ende-----------------
}
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,

Du bist ja schon ganz schön weit gekommen - tolle Arbeit. :(V):

Zu den Tastern hätte ich noch eine Anmerkung.

Bei #include <MoToButtons.h> aus dem Mobatools gibt es die Möblichkeit zu unterscheiden ob der Taster kurz oder lang gedrückt wurde.

Ein Beispiel findest Du unter den MobaTools Beispiel: ButtonTest. Ich hatte das vor längerer Zeit erfolgreich ausprobiert.

Unseren Kaffeeklatsch müssen wir leider verschieben - Familienbesuch hat sich angekündigt.

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 8. Jan 2022, 09:59 Unseren Kaffeeklatsch müssen wir leider verschieben - Familienbesuch hat sich angekündigt.
OK, wenn wir was haben, dann ist es Zeit :(V): Wir haben auch Besuch. :(V):

Ja, das mit dem langen Tastendruck kann man ja mal im Hinterkopf behalten. Und für die X-Y Tastsensteuerung werde ich wahrscheinlich einen Joystick verwenden. Also die ersten 4 Tasten sind dann ein Joystick, für den Tisch rechts, links, rauf, runter. Und die Z-Achse sind dann zwei Tasten. Jetzt muss ich das mit dem Aeray noch ausbrüten, wo immer ein Datensatz enthalten ist. Da muss ich noch ein wenig üben. :roll:

Mein Netzteil habe ich auch schon probeweise angehängt. Aber im Moment ist mir das Labornetzteil noch lieber, weil ich da ein- und ausschalten kann, wie ich will.

Schönen Samstag
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 wollte jetzt "mal schnell" einen SD-Karten Leser/Schreiber an den Arduino hängen, um damit Fahrdaten für den Kreuztisch vom PC zum Arduino übergeben zu können. Aber das Scheiß Zeug ist irgendwie doch nicht so einfach. Jetzt geht schon mal das Erkennen der Karte, aber noch nicht das erkennen der Daten und der Formation. Jetzt habe ich mir mal keinere CD-Karten bestellt, weil die 64 GB möglicherweise zu große ist. Alles nicht soooo einfach. :xx:

PS: Im Kleingedrucken nicht im Verkaufstext währe gestanden, dass dieser Leser, den ich hier einsetze, nur bis 32 GB kann. Am Mittwoch bekomme ich hoffentlich die bestellten 32GB SDHC Karten Dann gehts weiter. Bin gespannt ob ich das so hinbringe wie es mir vorschwebt.

Franz

Code: Alles auswählen

////////// Beispiel 3 für MoToStepper - Betreiben eines bipolaren Steppers mit step/dir und enable  ////////////
/*  Beispiel für die Ansteuerung eines bipolaren Steppers über 4 Taster und
    ein Poti ( für die Geschwindigkeit )
    In diesem Beispiel werden neben der Stepperklasse (MoToStepper), auch die MoToButtons
    und der MoToTimebase genutzt.
    Der Spulenstrom wird abgeschaltet, wenn der Stepper nicht läuft.
    Die Taster müssen gegen Gnd schalten, es sind keine Widerstände notwendig
    Button1:  Dreht rechts, solange Taster gedrückt
    Button2:  Dreht links, solange Taster gedrückt
    Button3:  1 Umdrehung rechts
    Button4:  1 Umdrehung links
*/
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#include <SPI.h>
#include <SD.h>
File myFile;
#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;
const byte button8Pin   = A8;
//----------Tempo_Poti--------
const byte potPin       = A0;   // Poti muss ein analoger Eingang sein
const int STEPS_REVOLUTION = 1600;
//--------Fahrdaten-----------
byte motor = 0;                     // Achsenauswahl 1-2-3 ist X-Y-Z
byte fahren = 0;                    // 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
unsigned long Fahrdaten[20];    // Datensätze zum fahren
byte uebergabe = 0; 
//----------------------------
//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();
  //-----------------------------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
  //------------------------------------------------------------------------------------------
  Fahrdaten[0] = 3;     // Motor/Achse= 1,2,3 ist X,Y,Z
  Fahrdaten[1] = 1;     // Losfahren = 1 Nichts tun ist 0
  Fahrdaten[2] = 2;     // Richtung = 1 oder 2
  Fahrdaten[3] = 1000;  // Fahrgeschwindigkeit = 2-1000
  Fahrdaten[4] = 32000; // Schritte = Was eben für eine Richtung nötig ist *0,00125mm
  //------------------------------------------------------------------------------------------
}
//=============================================================================================================
void loop() {
  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;
    myStepperX.setSpeed( tempo );
    myStepperY.setSpeed( tempo );
    myStepperZ.setSpeed( tempo );
  }
  if (uebergabe == 0)
  {
  lcd.setCursor (0, 0);
  lcd.print ("Tempo - Motor");
  lcd.setCursor (0, 1);
  lcd.print (tempo);
  lcd.setCursor (0, 3);
  lcd.print (Fahrdaten[0]);
  motor = Fahrdaten[0];
  lcd.print ("/");
  lcd.print (Fahrdaten[1]);
  fahren = Fahrdaten[1];
  lcd.print ("/");
  lcd.print (Fahrdaten[2]);
  richtung = Fahrdaten[2];
  lcd.print ("/");
  lcd.print (Fahrdaten[3]);
  tempo2 = Fahrdaten[3];
  lcd.print ("/");
  lcd.print (Fahrdaten[4]);
  schritte = Fahrdaten[4];
  uebergabe = 1;
  }
  //----------------------------------------------------------------
  // 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
  }
  //-----------------------------------------------------------------
  //--------fahren ja?---------------------
  if (fahren == 1)
  {
    tempo = tempo2;
    //-------------Motor 1-----------------
    if (motor == 1)
    {
      if (richtung == 1)
      {
        myStepperX.doSteps(schritte);
      }
      if (richtung == 2)
      {
        myStepperX.doSteps(-schritte);
      }
      fahren = 0;
      motor = 0;
      richtung = 0;
      schritte = 0;
    }
    //-------------Motor 2-----------------
    if (motor == 2)
    {
      if (richtung == 1)
      {
        myStepperY.doSteps(schritte);
      }
      if (richtung == 2)
      {
        myStepperY.doSteps(-schritte);
      }
      fahren = 0;
      motor = 0;
      richtung = 0;
      schritte = 0;
    }
    //------------Motor 3------------------
    if (motor == 3)
    {
      if (richtung == 1)
      {
        myStepperZ.doSteps(schritte);
      }
      if (richtung == 2)
      {
        myStepperZ.doSteps(-schritte);
      }
      fahren = 0;
      motor = 0;
      richtung = 0;
      schritte = 0;
    }
  }//---------fahren ende-----------------
}
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 »

const byte button4Pin = A4; //---Motor2 rechts--
const byte button5Pin = A5; //---Motor3 links---

hängt da nicht das Display mit I2c drann ?

Mfg - 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 »

Nö, beim Mega nicht. Aber mit der SPI für den Kartenleser bin ich falsch gelegen. Ich dachte die ist wie beim UNO auf Pin 11, 12, 13. Dabei ist die beim Mega auf 50 bis 53. :roll:

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 »

:agt: Ich hatte den MEGA nicht auf dem Schirm


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 »

Ich schätze mal, dass ich mit den Speicherkarten bis zum Wochenende einigermaßen durch bin. Die Lieferung ist für Dienstag oder Mittwoch angekündigt. Und erst wenn ich mit denen fit bin, geht die Reise weiter. Dann kann ich am PC mal einen Probe - Fahrdaten - Satz mit mehreren Achsen Fahrten auf Excel anfertigen, auf die SD Karte laden, und dann schauen, wie ich den Datensatz am Arduino benutze.

Wenn das klappt, ist mein Programm schon mal grundsäzlich zu gebrauchen. Dann kann der Tisch X-Y-Z Achse fahren und z.B. ein Displayfenster selbsständig in mehreren Lagen Fräsen. Im zweiten Durchgang dann die Bohrungen, weil man dafür ja ein anderes Werkzeug braucht. Also das wäre schon ein erster Erfolg.

Franz

PS: Das Kaffeekränzchen sollten wir also vielleicht auf das kommende Wochenende verschieben, da sollte ich dann soweit sein, wenn sich keine größeren Probleme auftun :(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,

in Ordnung, so machen wir es.
Dann kann ich noch weiter an der Mechanik bauen.

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 »

Achso,
wenn du so eine Alustange brauchst wie ich sie für die Motorhalterung benutzt haben, die liegt hier rum, auch extra kurze, 14mm Gewinde M8 Schrauben, zum fixieren der Halterung am Tisch. Und zwei Aluminium Wellenverbinder kannst du auch zum Testen mitnehmen. Ich musste ja die mit dem roten Plastikpuffer dazwischen weiter benutzen, weil die Neuen deutlich kürzer sind. Da müßte ich erst die Halterung verkürzen, dass der Motor näher an die Tischwelle kommt. Die Neuen haben nur 2/3 der Länge meiner Wellenverbinder.

Franz

Wenn du da was brauchst dann komme einfach vorher schon mal kurz vorbei.
Antworten

Zurück zu „Fertige Projekte Vorstellen“

Wer ist online?

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