Elektronische Leitspindel

Benutzeravatar
Nicolas
Beiträge: 277
Registriert: So 15. Jan 2017, 10:08
Wohnort: Kreuztal/Siegen
Kontaktdaten:

Elektronische Leitspindel

Beitrag von Nicolas » Di 31. Okt 2017, 10:00

Hallo zusammen,

einfach, weil es mich als Projekt interessiert, habe ich mich in den letzten Monaten daran gemacht, eine elektronische Leitspindel für meine kleine Drehbank zu entwickeln. Es soll das Wechselrad-Gebtriebe meiner Optimum D180 x 300 ersetzt werden. Auf dem Bild sieht man den bisherigen Hardware-Stand:
Testaufbau_768.jpg
Ich bin also noch auf dem Stand des Funktionsmodells (die meiste Arbeit steckt eben in der Software).

Folgende Features sind bislang oder werden noch implementiert:
  • Verstellbares Übersetzungsverhältnis für Gewindesteigungen von 0,1...4,0mm. Prinzipiell sind alle Übersetzungverhältnisse einstellbar, die sich durch einen Bruch z/n darstellen lassen.
  • Elektronischer Anschlag für den Gewindeauslauf
  • Drehzahlmesser
  • Anzeige der Momentanposition
  • "Virtuelle Schloßmutter"
  • Handsteuerung über elektronisches Handrad.
  • Integierung in den Not-Aus-Kreis der Maschine
  • Anschlußmöglichkeit für ein oder zwei externe Schrittmotorendstufen (wobei die internen Endstufen mit 48V/3A auch nicht ohne sind).
Wahrscheinlich werde ich auch noch implementieren:
  • Zwei-Achsen-Steuerung zum Kugel- und Kegeldrehen
Und jetzt die Frage ins Forum: Was habe ich vergessen? Was könnte noch auf meinem Wunschzettel stehen? Ich habe noch nie mit einer elektronischen Leitspindel gearbeitet, deswegen bin ich da etwas unbeleckt.

Viele Grüße
Nicolas
Mein Werkzeug hat hauptsächlich den Zweck, das Werkzeug für mein Werkzeug herstellen zu können.

Benutzeravatar
Claugsheister
Beiträge: 756
Registriert: Di 15. Dez 2015, 16:02
Wohnort: Mecklenburg - Vorpommern
Germany

Re: Elektronische Leitspindel

Beitrag von Claugsheister » Di 31. Okt 2017, 10:55

Nicolas, es gibt hier bereits einen fertig entwickelten Leitspindelantrieb. Du kennst den Beitrag sicherlich.
Was hat dich zu einer eigenen Entwicklung bewogen?

Arnd

Benutzeravatar
Stahlfussel
Beiträge: 1005
Registriert: Mi 5. Nov 2014, 17:28
Wohnort: Mainz
Germany

Re: Elektronische Leitspindel

Beitrag von Stahlfussel » Di 31. Okt 2017, 11:02

Hallo Nicolas,
mir ist eine solche Einrichtung von autoartisans bekannt. Schon da habe ich mir die Frage gestellt, wie das wohl mit der virtuellen Schlossmutter funktioniert. Eine zuverlässige Umsetzung stelle ich mir als sehr anspruchsvoll vor. Ich denke das ist so gedacht, daß man nach dem Zurückfahren und Wiedereinschalten direkt den zuvor geschnittenen Gewindegang wieder richtig trifft. Die richtige Sensorik vorausgesetzt, kann man das ja wahrscheinlich noch gut programmieren. Die Programmierung verlangt dann aber auch eine ihr ebenbürtige Zuverlässigkeit der Mechanik, Sensorik und Positionierung, Pipapo. Das stelle ich mir nicht einfach vor (Spiel, Trägheit, Gummifaktor der Bauteile etc.).
Nicolas hat geschrieben:... alle Übersetzungverhältnisse einstellbar, die sich durch einen Bruch z/n darstellen lassen
Das klingt so, als wolltest Du Modulgewinde ausklammern?

Zeige bitte, wie Du weiter vorgehst.

Gruß,
Jochen

Benutzeravatar
Nicolas
Beiträge: 277
Registriert: So 15. Jan 2017, 10:08
Wohnort: Kreuztal/Siegen
Kontaktdaten:

Re: Elektronische Leitspindel

Beitrag von Nicolas » Di 31. Okt 2017, 15:35

Claugsheister hat geschrieben:Nicolas, es gibt hier bereits einen fertig entwickelten Leitspindelantrieb. Du kennst den Beitrag sicherlich.
Was hat dich zu einer eigenen Entwicklung bewogen?
Quelloffen habe ich noch keinen gesehen. Ich kenne nur einen, den man kaufen kann. Und kaufen kann jeder.

Stahlfussel hat geschrieben: wie das wohl mit der virtuellen Schlossmutter funktioniert. Eine zuverlässige Umsetzung stelle ich mir als sehr anspruchsvoll vor.
Das geht einfacher, als es klingt. Bei stehender Spindel ist das einfach etwas Grundschulmathematik (Division mit Rest), bei laufender Spindel etwas komplizierter, da ich das Beschleunigungsverhalten des Schlittens einrechnen muß, aber auch kein Hexenwerk. Da sind andere Teile deutlich komplizierter.

Stahlfussel hat geschrieben: Das klingt so, als wolltest Du Modulgewinde ausklammern?
Modulgewinde war der Anlaß, überhaupt mit dem Projekt anzufangen. Der Bruch 3216/1024 entspricht pi schon bis auf 0,3 Promille. Das ist schon besser, als meine Mechanik hergibt. Aber wäre natürlich überhaupt kein Problem, Zähler und Nenner noch größer zu machen. Bei 1686629713/536870912 ist allerdings bei meiner derzeitigen Implementierung Schluß. :-D

Stahlfussel hat geschrieben: Zeige bitte, wie Du weiter vorgehst.
Wird gemacht.

Viele Grüße
Nicolas
Mein Werkzeug hat hauptsächlich den Zweck, das Werkzeug für mein Werkzeug herstellen zu können.

MalteS
Beiträge: 150
Registriert: Sa 22. Sep 2012, 23:05
Wohnort: Nürnberg

Re: Elektronische Leitspindel

Beitrag von MalteS » Di 31. Okt 2017, 15:53

Nur so als Idee:
Warum nicht auch den Planvorschub noch ansteuern? Dann hättest du eine CNC drehe.
Ich hätte dazu auf Linuxcnc gesetzt. Meine Fräse hab ich so umgerüstet. Die kann spindelsyncron Verfahren.
Ist aber eine etwas andere Richtung

Gruß
Malte

NixToDo
Beiträge: 290
Registriert: Mo 12. Nov 2012, 10:37
Wohnort: Hamburg
Germany

Re: Elektronische Leitspindel

Beitrag von NixToDo » Mi 1. Nov 2017, 17:59

Hallo Nicolas,

schau mal was bei mir seit ein paar Wochen auf dem Arbeitstisch liegt... :-D
IMG_0036.JPG
IMG_0037.JPG
IMG_0038.JPG
Magst du etwas über dein Konzept (Hw & Sw) sagen?

Ich will deinen Thread hier nicht kapern und mache sonst einen eigenen auf.

Viele Grüße,
Dirk
Ich bin weder Profi noch mache ich Profit.
Ich profitiere aber vom Wissen anderer und gebe mein Wissen anderen weiter.
Drehe: Bernardo Profi 550LZ
Fräse: Paulimot F400-GV

Benutzeravatar
Nicolas
Beiträge: 277
Registriert: So 15. Jan 2017, 10:08
Wohnort: Kreuztal/Siegen
Kontaktdaten:

Re: Elektronische Leitspindel

Beitrag von Nicolas » Mi 1. Nov 2017, 20:45

Hallo Dirk,

das sieht ja richtig gut aus. Zumindest mit der Grafik bist Du schon deutlich weiter als ich. Und eine Dreh-Auflösung von 1/25000 Umdrehungen ist auch etwas jenseits meiner Planungen.
NixToDo hat geschrieben: Ich will deinen Thread hier nicht kapern und mache sonst einen eigenen auf.
Wenn Du schon hier bist... :-D


NixToDo hat geschrieben: Magst du etwas über dein Konzept (Hw & Sw) sagen?
Hmmm....was gibt es über das Konzept zu sagen? Was ich erreichen will, habe ich ja schon oben geschrieben. Die internen Endstufen basieren auf zwei L6474, die mit 48V/3A für meine kleine Drehbank durchaus ordentliche Motoren treiben können. Den Anschluß für externe Endstufen sehe ich also nur vor, falls mal irgendwann eine größere Drehbank im Haus steht. Prozessorseitig sitze ich auf einem 32-Bit-ARM (Cortex M4), der mit 168 MHz getaktet ist, aber wahrscheinlich später noch durch einen 78-MHz Cortex M3 ersetzt wird (bevor ihm zu langweilig wird). Als maximale Schrittfrequenz sind 200 kHz mit einem Jitter von 1µs angedacht.

Für die Spindelposition nutze ich einen optischen Drehgeber mit 1600 Pulsen/Umdrehung. Da die MCU interne Hardware-Dekoder besitzt, geht es dort recht gemütlich zu.

Softwareseitig basiert das Ganze auf einem dicken Stapel Papier, der hier auf meinem Schreibtisch (und auch sonst noch) herumliegt.

Mit der Dynamik bin ich noch nicht 100%ig zufrieden (der maximale Schleppfehler liegt noch etwas zu hoch), allerdings ist momentan auch noch nur ein P-Regler implementiert. Momentan ist die Genauigkeit noch nicht viel besser als die ursprünglichen Wechselräder.

Jetzt bin ich noch auf der Suche nach weiteren Ideen. Schließlich wäre es ärgerlich, wenn die erst kommen, kurz bevor man fertig ist.

Kannst Du etwas zu Deinem Konzept schreiben?

Viele Grüße
Nicolas
Mein Werkzeug hat hauptsächlich den Zweck, das Werkzeug für mein Werkzeug herstellen zu können.

Benutzeravatar
Nicolas
Beiträge: 277
Registriert: So 15. Jan 2017, 10:08
Wohnort: Kreuztal/Siegen
Kontaktdaten:

Re: Elektronische Leitspindel

Beitrag von Nicolas » Mi 1. Nov 2017, 22:47

Nicolas hat geschrieben: Kannst Du etwas zu Deinem Konzept schreiben?
Nachtrag: Ich rate mal ins Blaue: Bei der Winkelauflösung brauchst Du keine dynamische Berechnung mehr, sondern implementierst einfach einen variablen Frequenzteiler.
Mein Werkzeug hat hauptsächlich den Zweck, das Werkzeug für mein Werkzeug herstellen zu können.

NixToDo
Beiträge: 290
Registriert: Mo 12. Nov 2012, 10:37
Wohnort: Hamburg
Germany

Re: Elektronische Leitspindel

Beitrag von NixToDo » Do 2. Nov 2017, 10:16

Hallo Nicolas,

fast richtig, der Spindelencoder ist ein industrieller Typ, sozusagen ein Glasmaßstab in rotierender Ausführung.
Der Sensor ist einstellbar auf 5000, 10500, 12500 und 25000 Impulse.

Als MCU verwende ich einen ATmega1284 mit 20 MHz. Der hat leider keinen Hardwaredecoder für den Sensor sondern nur einen 16 Bit Zähler den ich vom Encoder takten lasse. Dadurch geht mit die Richtungsinformation "verloren", was aber nicht wirklich schlimm ist. Gestartet / synchronisiert wird mit dem Indeximpuls des Sensors. Da eine Umdrehung der Spindel gleich eine Umdrehung des Encoders ist, gibt es immer nur einen Indeximpuls pro Umdrehung.

In meinem Fall habe für eine Bettschlittenbewegung von einem Millimeter 533,3333 Schritte mit dem Stepper zu fahren.
Bei einer gewünschten Steigung von z.B. 1 mm je Umdrehung müssen also nach 25000 Encoderimpulsen 533,3333 Stepperimpulse ausgegeben worden sein.
D.h. ich müsste alle 46,875 Indeximpulse einen Stepperimpuls generieren. Das geht natürlich nicht. Daher erzeuge ich den Stepperimpuls schon bei 46 Indeximpulsen und merke mir den Rest. Der nächste Stepperimpuls müsste wieder nach 46,875 Indeximpulsen "erscheinen". Zu diesem Wert addiere ich den gemerkten Rest. (= 47,75) Daher kommt der nächste Stepperimpuls nach 47 Encoderimpulsen. Auch diesen Rest merke ich mir wieder. So entsteht nur ein maximaler Winkelfehler von 1/25000 (= 0,0144 Grad). Das sollte völlig OK sein. Zusätzlich wird die ganze Berechnung nicht in Float sondern in Festkomma gerechnet um CPU Leistung zu sparen.

Viel interessanter waren die Beschleunigungsrampen für den Stepper.
Für den "automatischen" Betrieb beim Gewindeschneiden oder Längsdrehen muss der Bettschlitten verfahren werden.
Da die max. Startgeschwindigkeit des Steppers ohne Schrittverluste begrenzt ist, ich aber schneller fahren will, benötige ich Beschleunigungs- und Bremsrampen.
Diese auf dem ATmega "live" zu berechnen begrenzt die max. Geschwindigkeit so sehr das das ganze sinnlos wird.
Daher habe ich eine Vorberechnung in Tabellenform entwickelt die mit einer angenäherten Kurve eine "echte" Beschleunigung abbildet.
Das war eine ganz schöne Herausforderung für mich.

Die zweite Sache war, das ich die Grafik incl. Touchscreen in C++ objektorientiert programmiert habe.
Meine erste "ernsthafte" Anwendung von C++ auf einen Mikrocontroller! :-)
Abstrakte Basisklasse aus der alle Bedienelemente wie z.B. Commandbutton, Textbox, Checkbox, Bargraf, ... abgeleitet werden.
Auch der "Displaytreiber" ist eine abgeleitete Klasse. Über eine Zwischenklasse ist sie von der Arduino print Klasse abgeleitet.
Alles ohne dynamische Speicherverwaltung! Derzeit bin ich bei ca. 23 kB Flash Programmumfang.

Die mechanische Anbindung von Stepper und Encoder an die Drehmaschine ist auch schon fertig. Nur blöd im Keller zu programmieren...

Viele Grüße,
Dirk
Ich bin weder Profi noch mache ich Profit.
Ich profitiere aber vom Wissen anderer und gebe mein Wissen anderen weiter.
Drehe: Bernardo Profi 550LZ
Fräse: Paulimot F400-GV

Benutzeravatar
Nicolas
Beiträge: 277
Registriert: So 15. Jan 2017, 10:08
Wohnort: Kreuztal/Siegen
Kontaktdaten:

Re: Elektronische Leitspindel

Beitrag von Nicolas » Do 2. Nov 2017, 11:50

Hallo Dirk,

da gehen wir sozusagen komplett gegenteilige Wege. Du nutzt hochwertige Peripherie, um Rechenleistung zu sparen, ich Rechenleistung, um mit billiger Peripherie auszukommen.
NixToDo hat geschrieben: [...]D.h. ich müsste alle 46,875 Indeximpulse einen Stepperimpuls generieren. Das geht natürlich nicht. Daher erzeuge ich den
[...]
Klar- davon war ich ausgegangen, daß Du das Restglied beim Frequenzteilen immer mitschleppst, um den Steigungsfehler im Mittel zu kompensieren (und damit einen kleinen Jitter erzeugst).
NixToDo hat geschrieben: [...]
Viel interessanter waren die Beschleunigungsrampen für den Stepper.
[...]
Das war eine ganz schöne Herausforderung für mich.
[...]
Die Beschleunigungsrampen haben mich auch eine gewisse Zeit gekostet. Vor allem, weil man es erst selbst implementiert und nachgerechnet haben muß, daß die Näherungen à la David Austin oder Atmel Application Note AVR 446 ganz erbärmliche Ergebnisse liefern, sobald die Teilungsverhältnisse einen bestimmten Wert unterschreiten.

Ich bin dann von einem 78 MHz STM32F103 auf einen 168 MHz STM32F446 umgestiegen, um erst einmal genügend Rechenleistung für eine Live-Berechnung der Wurzelfunktion zu haben, ohne zu viel Entwicklungszeit in die Optimierung irgendwelcher Tabellen zu stecken, bevor ich nicht weiß, ob das Grundprinzip funktioniert - nur um zwei Wochen später die komplette Rampenberechnung komplett herauszuschmeißen, die zwar super für Positionieraufgaben funktioniert, aber nicht dann, wenn ich mehrere Achsen synchronisieren will.
NixToDo hat geschrieben: Die zweite Sache war, das ich die Grafik incl. Touchscreen in C++ objektorientiert programmiert habe.
Sieht auf jeden Fall gut aus.
NixToDo hat geschrieben: Die mechanische Anbindung von Stepper und Encoder an die Drehmaschine ist auch schon fertig. Nur blöd im Keller zu programmieren...
Kenne ich. Deswegen mein Schreibtischmodell. Meine finale mechanische Anbindung an die Spindel steht noch aus. Provisorisch tut es erst einmal ein Plastikzahnrad, wie in meinem Schreibtischmodell. Es hat den Nachteil, daß mein Regler mit kleinen Störschwingungen klar kommen muß.

Ich bin mal gespannt, wie es bei Dir weitergeht.

Viele Grüße
Nicolas
Mein Werkzeug hat hauptsächlich den Zweck, das Werkzeug für mein Werkzeug herstellen zu können.

Antworten