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 »

Guten Morgen. :(V):

Kann man machen aber ich weiß nicht ob es nötig ist.
Was willst du da alles anzeigen?
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,

damit könnte ich mein Bedienpanel übersichtlicher gestalten und habe vor dem "START" alle 3 Werte dargestellt.

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 »

Schauen wir mal wenn die Software Gestalt annimmt. Ich ändere jetzt mal diese vorhandene Software ab, dass man sie für die neuen Funktionen benutzen kann. Oder gleich ganz anders und neu. Ich muss mal den Kopf schief halten, dass das Resthirn zusammenläuft :roll: :roll: Ich überlege auch, ob ich MobaTools verwende. Wenn ich alles neu mache.

Mal schauen wie es besser geht. UNd wenn errst mal die Richtung klar ist, können wir überlegen was wir an Display Anzeigen brauchen.
Franz

PS: Ich habe übrigens mal die Geschwindigkeiten noch ein wenig getestet. Ich bin mit dem Tempo runter, nicht nur auf 200, sondern auf 400. Wir haben ja 50 für schnell, 200 für langsam. Da kann man auch 400 für sehr langsam nutzen. 400 ist nochmal halb so schnell wie mit 200.

Aber das ist jetzt erst mal alles nur Testen um einen Entschluss zu bekommen, ob das Programm als Grundmodul für das neue brauchbar ist.
Ich muss für das neue Programm immer erst eine Liste erstellen, was alles passieren soll. Das wäre als erstes vielleicht mit Excel auf eine Speicherkarte. Wie folgt:

Motor Richtung mm Schritte
3---------0---------0,5----200
1---------0---------77-----30800
2---------0---------27-----10800
1---------1---------77-----30800
2---------1---------27-----10800
3---------0---------0,5----200
1---------0---------77-----30800
2---------0---------27-----10800
1---------1---------77-----30800
2---------1---------27-----10800
3---------0---------0,5----200
1---------0---------77-----30800
2---------0---------27-----10800
1---------1---------77-----30800
2---------1---------27-----10800
3---------0---------0,5----200
1---------0---------77-----30800
2---------0---------27-----10800
1---------1---------77-----30800
2---------1---------27-----10800
3---------0---------0,5----200

Diese Liste muss dann der Arduino umsetzen, also nur noch ausführen. Das wäre dann ein z.B. Displayausschnitt in einem 2mm Blech auf 4x gefräst. Motor 3 ist dann die Z-Achse. Also das ist nur mal meine Vorstellung. Die --- sind nur zum Füllen weil die Forumssoftware mehrere Leerzeichen hintereinander nicht macht. Am Anfang muss man natürlich den Fräser Nullen. Also oben links in der Ecke des Ausschnittes, direkt auf das Blech positionieren.
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 arbeite gerade mal mit den MobaTools für das neue Programm. Ich denke die Mobatools sind recht gut dafür. :(oo):
Hier habe ich mal die Vorbereitung für die drei Motoren. Da ich jetzt nicht simultan fahren muss, kann ich die Mobatools locker nehmen. In meinem Testprogramm das ist bis jetzt verwendet habe, ging es ja darum, absolut gleich zu bewegen. Also immer erst Motor 1 einen Schritt, dann Motor 2, dann Motor 3, dann wieder Motor 1, u.s.w., bis zum Schritte Ende. Damit kann ich aber eben nur den Gleichlauf, also den Schrittverlust testen. Und höchstens noch wie hier jetzt am Kreuztisch eine 45 Grad schräge fahren. Da muss ja auch immer ein Schritt für X, ein Schritt für Y, gefahren werden. Also wie oben schon gesagt, das ist jetzt die Vorbereitung für das Programm, mit dem ich dann zumindest den Fräser immer in X ODER Y ODER Z Richtung bewegen kann.
.

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
*/

#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      = 6;
const byte enaPin1       = 7;
//----------Motor 2------------
const byte dirPin2       = 8;
const byte stepPin2      = 9;
const byte enaPin2       = 10;
//----------Motor 3------------
const byte dirPin3       = 11;
const byte stepPin3      = 12;
const byte enaPin3       = 13;
//----------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 = 1;                  // Richtung der Bewegung
int tempo1 = 20;                    // Tempo für Handsteuerung
int tempo2 = 800;                   // Tempo zum Fräsen
int tempo = 0;                      // Wird vom Programm zur übergabe benutzt
unsigned long schritte = 12800;      // 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()
{
  //-----------------------------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 );
  }
  //----------------------------------------------------------------
  // 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
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 »

Also. Ich habe jetzt das Programm mal nach meiner Vorstellung vorbereitet. Es gibt Tasten zum langsam fahren um auf eine Startposition zu fahren, von der aus die Kiste dann fräsen soll. 6 Tasten für die drei Motoren. Also jeder Motor vor und zurück. Wenn ich eine dieser Tasten drücke wird als erstes mal das Tempo auf die Einstellung des Potis umgeschalten, weil man da ja sehr langsam fahren muss, dass man auf die genaue Startposition kommt.
Dann habe ich die sogenannten "Fahrdaten".
"motor" = 1 oder 2 oder 3
"fahren" = 0 oder 1
"richtung" = 1 oder 2
"tempo1" = 2 bis 1000 (wird vom Poti übergeben)
"tempo2" = Das Vorschubtempo beim Fräsen (Kann für jeden Weg neu übergeben werden)
"tempo" = Wird vom Programm benutzt, kann und soll von uns nicht beeinflusst werden.
"schritte" = Sind die Schritte die der jeweilige Motor bei dem Vorgang fahren soll.

Ich habe vor, diese Fahrdaten in Excel zu erstellen. Habe aber noch keine Ahnung, wie ich diese Daten dann ans Programm übergebe. Aber das wird schon werden. :O:
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 habe mal schon vorgegriffen und ein bisschen herumgespielt.

Meine Zeichnungen von Frontplatten mit LibreOffice https://de.libreoffice.org/discover/draw habe ich als svg - Datei exportiert und mit EstlCam geöffnet.

:(V): funktioniert.

LibreOffice und EstlCam sind gratis, es fehlt nur noch die Schnittstelle vom arduino-club https://www.arduinoclub.shop/epages/836 ... 71255-0004 -

50 EURO incl. arduino MEGA sind auch nicht die Welt.

Langsam trudeln alle Beiteile ein, nur Amazon hat sich entschludigt, dass er heute nicht liefern kann. Die haben wohl keinen Kalender- Amis halt.

Dann müsste ich mir mal die Verkabelung bei Dir aufzeichnen.

Servus, ich schüre jetzt den Kachelofen ein - 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 »

Morgen habe ich zu tun.
Aber am Samstag könnten wir uns ja mal zusammen setzen. Wenn du gleich mit EstlCam einsteigen willst, dann brauchst du ja das Programm nicht, das ich mir da machen möchte. Dann brauchst die Arduino-Club Platine mit dem Mega, und die Anschaltungen an mein Programm brauchst du dann auch nicht. Dann mußt du die Treiber ja direkt an diese Arduino-Club Platine anschließen. Dann brauchst du die Info, welche Endschalter sind Pflicht, und musst die an deinem Kreuztisch anbauen. Die Treiber werden an der Platine glaube ich ohne Enable, nur mit Dir und Puls angeschloßen. Und das EstlCam Programm von PC spielt das nötige Arduino Programm offenbar selbst über die USB am Arduino auf.

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,

das war ein Gedankenspiel zum übernächsten Schritt.

Ich werde als erstes den Kreuztisch mit den bestellten Bauteilen fertigstellen und "Deine" Softwarelösung einsetzen.
Das ganze soll weiterhin als Bohrständer ohne angetriebene z- Achse eingesetzt werden - Bohrlöcher exakt positionieren und zur Not Mal "Überfräsen".

Estlcam soll auf einer separaten kleinen Fräse eingesetzt werden, aber das hat noch Zeit.

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, ich dachte du willst gleich Nägel mit Köpfen machen. Ich muss ja langsammer machen. Und das Programm mache ich auch zum Spass. Das sind ja noch etwa 460,00 Euro auszugeben bei mir. Z-Achse 75,- Euro, Maschine 250,- Euro, Estlcam Software 50,- Euro, Estelcam Hardware 50,- Euro, paar Endschalter, Joystick.
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 verstehe ich nicht ganz:
Achso, ich dachte du willst gleich Nägel mit Köpfen machen.
Ich habe doch geschrieben, dass ich zweigleisig fahre und die Vor- und Nachteile der jeweiligen Ausführung berücksichtige.

1. Haupteinsatz:
Kreuztisch mit Bohrständer, Bohrmaschine und starke Steppermotoren - Bohrlöcher sollen durch Deine Software angefahren werden.
ggf. Bohrmaschine gegen Fräsmotor tauschen und fräsen. Das geht prima mit einer EURO - Normaufnahme an den beiden Maschinen.
Bohrständer mit z-Achse nachrüsten wird wahrscheinlich Probleme aufwerfen.


2. Für anspruchsvolle Konturen und gravieren schau ich mich ggf. nach einer anderen Anlage um.

3. große komplexe Frästeile lasse ich außer Haus machen. (vorerst)

Servus - Pakete gekommen - es geht ans Auspacken
Wolfgang
Grüße aus der Heimat der E69
Antworten

Zurück zu „Fertige Projekte Vorstellen“

Wer ist online?

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