Elektronische Leitspindel

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

Re: Elektronische Leitspindel

Beitrag von Nicolas » Di 7. Nov 2017, 07:37

NixToDo hat geschrieben: Den Winkelencoder musste ich aus Platzgründen über drei Zahnräder an die Leitspindel anbinden.
Ja, ich habe befürchtet, soetwas auch machen zu müssen, aber dann hat ein anderer Forenbeitrag (http://forum.zerspanungsbude.net/viewto ... 16&t=31119) mich auf eine andere Lösung gebracht: auf dem "Sensorring" mit den Magneten ist noch genügend Platz für ein Zahnriemenrad. Dann muß ich noch nicht einmal das Orginal-Zahnrad mit der Evolventenverzahnung (Rückbaubarkeit) verzichten.

Die einzige Frage ist, wie ich den Sensorring überdreht bekomme. Wahrscheinlich muß ich dafür erst einmal einen Ersatz-Abstandhalter drehen, damit die Maschine auch ohne diesen Ring läuft.


Gut ist ja erst einmal, daß durch das Zahnspiel bei Dir keine Falsch-Impulse ausgelöst werden.
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 » Do 28. Dez 2017, 16:30

Hallo zusammen,
ich habe lange nicht mehr zu diesem Thema geschrieben, was aber nicht bedeutet, daß mein Projektchen sang- und klanglos gestorben wäre. Die Fortschritte waren nur sehr klein in der Zwischenzeit, da die Vorweihnachtszeit anderweitige Aufmerksamkeit erforderte.

Inzwischen hat der Drehgeber seinen Platz am Spindelstock bekommen:
Drehgeber_576.jpg
Mir war es wichtig, daß der Spindeldurchlaß frei bleibt und daß sich später die originale Abdeckung wieder montieren läßt. Meine erste Wahl wäre ein Zahnriementrieb gewesen, aber ich hatte keine passenden Riemenräder -weder zu vernünftigen Konditionen zu bestellen noch in meiner Bastelkiste- gefunden. Also habe ich mich dazu entschlossen, ein Zahnrad aus Messing (Modul 1,0), das ich noch hier herumliegen hatte, mit einem Feingewinde zu versehen und außen gegen die Riemenscheibe zu schrauben. Das Gegenstück bildet ein billiges Kunststoff-Zahnrad aus einem Sortiment von Conrad.

Die Drehgeber-Halterung wurde aus Alu-Profilen (weil meine Fräse in der letzten Woche nicht einsatzbereit war) gefeilt und geklebt. Der Lautstärkezuwachs durch den zusätzlichen Zahnradtrieb hält sich auch bei Maximaldrehzahl in Grenzen, womit sich die Zahnrad-Lösung durchaus als Dauerlösung qualifizieren könnte.


Heute kam dann der erste Test meines Elektronik-Testaufbaus an der Maschine (sozusagen der "Smoke-Test"):
Erster_Versuch_576.jpg
Wichtig war mir die Messung der maximalen Spindelbeschleunigung und der Test des Drehzahlmessers.

Die Abweichung zwischen dem Original-Drehzahlmesser und meinem Aufbau liegt durchgehend bei -1,5% - ich hätte schlimmeres (vom Original-Drehzahlmesser) erwartet.

Die ersten Beschleunigungsmessungen sagen mir: Ich kann meine ursprünglichen Forderungen im Lastenheft massiv nach unten korrigieren. Bislang sind meine Softwaretests immer von Beschleunigungen ausgegangen, die mehrere tausend mal höher als das, was die Maschine schafft, liegen. Schadet nichts. So bin ich definitiv auf der sicheren Seite :-D . Sagt aber auch: Es wurde höchste Zeit, von den theoretischen Überlegungen auf die praktischen Versuche überzugehen.

Der nächste Schritt liegt in der Montage des Motors an die Leitspindel. Da ich keine Lust habe, auf einen funktionierenden Testaufbau zu verzichten, muß das warten, bis der zweite bestellte Schrittmotor ankommt.

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 3. Jan 2018, 11:52

Das letzte Basteln im alten Jahr ist recht erfolgreich verlaufen: Ein Schrittmotor hat seinen Platz an der Leitspindel gefunden. Da die Maschine doch recht klein ist, reicht ein NEMA17 aus:
Schrittmotorflaschn_576.jpg
Wie man erkennt, ist einfach die Schere eine neuen Halterung gewichen. Damit bleibt die Maschine völlig rückbaubar - auch wenn ich nicht mehr davon ausgehe, daß das Projektchen so grundlegende Schwächen hat, daß es komplett scheitern könnte. Höchstens, daß ich im Endspurt die Lust verliere. Der 4 mm starke Haltewinkel, auf dem der Motor sitzt, dient gleichzeitig als Kühlkörper.

Damit konnte getestet werden, ob sich die Leitspindel auch mit angeflanschtem Motor noch hinreichend einfach von Hand kurbeln läßt, oder ob künftig ein MPG die Leitspindelkurbel ersetzt. Das Ergebnis: Alles gut. Der Motor läßt sich einfach genug durchkurbeln und der Zahnradantrieb ist hinreichend leise.

Gestern stand dann der erste vollständige Test von Maschine, Elektronik und Software an:
  • Der Schrittmotor stallt an der echten Leitspindel bei einer weitaus geringeren Drehzahl als bei meinem Schreibtisch-Testaufbau.
    • Ich werde also weitaus früher auf meine finale Versorgungsspannung von 42 V gehen müssen (mein bisheriger Testaufbau hat 19 V Versorgungsspannung).
    • Das Flankenspiel ist an der echten Maschine allerdings noch nicht perfekt eingestellt (das geht mit den Inbus-Schrauben nicht besonders gut - ich warte noch auf eine Bestellung Sechskantschrauben). Eventuell steht aber doch noch der Umbau auf einen Riementrieb an.
  • Bei der Software fehlt eine wichtige Funktion, auf die ich am Schreibtisch nicht gekommen bin:
    Eine Anzeige, bis zu welcher Maximaldrehzahl (Hauptspindel) Gewindeschneiden bei der eingestellten Steigung möglich ist.
  • Wenn ich an der Spindelkurbel den Schrittmotor manuell durchdrehe, steigt die Spannung im "Zwischenkreis" schneller an, als ich vorher abgeschätzt habe. Dafür ist noch eine schaltungstechnische Lösung erforderlich.
Alles in allem war das Ergebnis weniger schlimm, als ich befürchtet habe. Ich schätze, daß ich bei meinem Projekt jetzt die 50-Prozent-Marke erreicht habe.
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 17. Jan 2018, 09:31

Hallo zusammen,

vorneweg: als ich die Anfrage nach Ideen für eine elektronische Leitspindel seinerzeit sowohl in der Bastelstube als auch hier gestellt habe, um durch die unterschiedlichen Schwerpunkte der Foren unterschiedliche Meinungen zu erfahren, hat es in beiden Foren gute Rückmeldungen gegeben. Deswegen ist es nur fair, daß ich die Statusupdates in beiden Foren gebe. Der Thread in der Bastelstube liegt hier:

http://www.plexxart.at/bastelstube/show ... p?tid=6250

Die Schwerpunkte sind leicht unterschiedlich, aber ich halte beide Beschreibungen vollständig. Wer also nicht in der Bastelstube angemeldet ist, verpaßt in Bezug auf meine elektronische Leitspindel nichts, sondern liest höchstens ein paar Statusupdates ein wenig später, weil ich sie (grob) abwechselnd und nicht gleichzeitig mache.


Es ist in der Zwischenzeit weitergegangen.

Die Software hat in der Zwischenzeit ihre Funktion bekommen, um bei gegebenen Motorparametern und gewünschten Gewindesteigung eine maximal mögliche Spindeldrehzahl anzuzeigen. Später einmal wird als Sicherheitsfunktion implementiert, daß der Bettschlitten dann erst gar nicht losfährt und eine Warnung wird ausgegeben. Jetzt versucht er noch, mitzubeschleunigen und gibt dann recht schnell wegen des steil ansteigenden Schleppfehlers auf.

Nachdem diese Funktion implementiert war, folgte auch direkt die absolute Ernüchterung: Der kleine Antrieb ist im Momentanzustand völlig unterdimensioniert. Bei einer Gewindesteigung von 1,25 mm sind gerade einmal Spindeldrehzahlen von 375 U/min möglich.

Das ist störend, aber eine Reihe von Maßnahmen sollte das in absehbarer Zeit beheben:
  • Ein kräftigerer Schrittmotor ist bestellt
  • Es war ohnehin immer geplant, die Versorgungsspannung von 19 V auf 42 V anzuheben.
  • Das Übersetzungsverhältnis zwischen Schrittmotor und Leitspindel wird von 1:4 auf 1:2 verringert.
  • Ein Riementrieb dämpft und macht den Antriebsstrang vom Schrittmotor bis zur Schwungmasse Leitspindel spielfrei.
Jede einzelne Maßnahme wird der Maximaldrehzahl zugutekommen. Jede einzelne davon ist allerdings auch auf bestelltes Material angewiesen. Deswegen geht es erst einmal mit der Software weiter.

Viele Grüße
Nicolas
Zuletzt geändert von Nicolas am Mi 17. Jan 2018, 10:07, insgesamt 1-mal geändert.
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 17. Jan 2018, 09:35

Weiter geht es mit der Softwareentwicklung.

Beim Schreiben von Software nutze ich für jeden Programmteil grundsätzlich immer das folgende Vorgehen:
  1. Zuerst eine Skizze
  2. Programm implementieren
  3. Skizze und Programmteil in die Doku einpflegen
  4. Anhand der Doku das Programm noch einmal überprüfen und verbessern.
Das Problem ist: Das "grundsätzlich immer" ist nur ein frommer Wunsch. Genau wie das große, laminierte Schild in der Werkstatt "Kein Spänchen ohne bemaßte Skizze!" Die Folgen bei der Mißachtung sind auch ähnlich.


Implementiert werden sollten die folgenden Funktionen:
  • Die MPG-Funktion (Bisher hat das schöne Handrad, das schon im Aufbau auf der ersten Seite zu sehen ist, nur dazu gedient, schnell durch Menüs scrollen zu können.)
  • DRO
  • Aktuelle Leitspindeldrehzahl (zu Entwicklungszwecken)
Sprich: Ich wollte endlich recht einfache Funktionen implementieren, stand aber vor einem undurchdringlichen Wust an Parametern (bislang waren nur ein Gesamtübersetzungsverhältnis und ein Tacho-Übersetzungsverhältnis, beide hart codiert). Tatsächlich war es so, daß ich die grundlegenden Parameter meiner elektronischen Leitspindel noch nie zu Papier gebracht habe.

Es nützt nichts- jetzt wird erst einmal an der Dokumentation gearbeitet.
Wenn man merkt, daß die Namen für Parameter eine sauber gezeichnete Skizze häßlich machen, bedeutet das, daß man sich neue Namen ausdenken sollte. So ist es geschehen:
Gearbox.png
Nachdem so ziemlich jeder Getriebe-Parameter einen neuen Namen bekommen hat, und Variablen angepaßt wurden, daß sie etwas mehr den physikalischen Größen und nicht irgendwelchen Zwischenergebnissen entsprechen, war dann die Implementierung des MPGs, des DROs und des Leitspindeltachometers nur noch eine kleine Fingerübung.
Gearbox_MPG_cnv_576.png
In Zukunft werde ich definitiv wieder mehr darauf achten, erst eine vernünftige Funktionsskizze und dann erst das Programm zu machen. Genauso wie erst die bemaßte Skizze vor dem Zerspanen. Zumindest bis zum nächsten Mal, wo ich es doch "mal eben" sein lasse. Ist ja nur eine Kleinigkeit.

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 » Do 18. Jan 2018, 12:26

Nachdem das Tachometer, die DRO und das MPG nach meiner Aufräumaktion in der Software so nahtlos ihren Platz gefunden haben, ist ein Punkt, der schon lange in der Software überarbeitet werden wollte, drangekommen: Die Begrenzungen/Limits. Bisher war es so, daß die Positionsbegrenzung (nennen wir es einfach analog zu Mach 3 soft limits) gut 25-30% der gesamten Rechenleistung gefressen hat. Dafür war sie sehr genau: An den Soft Limits wurde auf ±1/2 Mikroschritt genau gestoppt.

Lieber ist es mir, wenn die Bedienoberfläche sich zügig bedienen läßt. Dafür ist ein Überschießen von <1 Vollschritt erlaubt.

Der erlaubte Weg-Geschwindigkeitsbereich sieht prinzipiell so aus:
Geschwindigkeitsbereich2_576.png
Der Bettschlitten darf sich innerhalb eines bestimmten Wegbereichs s (dargestellt in Mikroschritten) und eines bestimmten Geschwindigkeitsbereichs v (dargestellt in einer programminternen Einheit) bewegen.

Als Wegstreckenbegrenzung (schwarz gestrichelte Linien) links und rechts habe ich willkürlich ±1000 Mikroschritte eingezeichnet, damit das Bild noch übersichtlich bleibt. Die Maximalgeschwindigkeit ist blau eingezeichnet.

Grau ist der erlaubte Weg-Geschwindigkeits-Bereich. Der links oben und rechts unten außerhalb der rot gestrichelten Linie liegende Bereich wird allerdings - bedingt durch die Beschleunigungsrampe - nie erreicht.

Rechts oben und links unten muß ich immer innerhalb oder auf der roten Linie bleiben, damit der Bettschlitten rechtzeitig an der Wegstreckenbegrenzung stoppt.

Die Priorität der Limits ist:
  1. Beschleunigungsgrenze
  2. Geschwindigkeitsgrenze
  3. Positionsbegrenzung
d.h. der Schrittpulserzeuger ist so implementiert, daß er konstruktionsbedingt die eingestellte Maximalbeschleunigung nie überschreiten kann. Geschwindigkeits- und Positionsgrenzen dagegen müssen aktiv eingefordert werden.

Die ursprüngliche Implementierung der Positionsbegrenzung erfolgte durch eine Berechnung des Bremswegs:
s_brems.png
s_brems.png (1.55 KiB) 2019 mal betrachtet
(s_\text{brems} = \frac{v_\text{act}^2 \cdot C_1}{C_2})

Der Bremsweg kann aus der IST-Geschwindigkeit und zwei internen Konstanten berechnet werden. Sobald der Bremsweg dem Abstand zu Positionsbegrenzung erreicht, wird die SOLL-Geschwindigkeit auf Null geklemmt und der Motor fährt genau auf die Stop-Position.

Das Problem daran ist, daß
  1. Der Zähler dieser Formel mühelos die 32-Bit-Grenze überschreitet und daher die ganze Formel in 64 Bit gerechnet werden muß und das noch
  2. sehr oft (nämlich jedes Mal, wenn sich die Momentangeschwindigkeit ändert, also 500000 Mal in der Sekunde).
Damit war es tatsächlich diese unscheinbare Formel, die die Rangliste des größten Rechenaufwands angeführt hat.

Der neue Ansatz ist andersherum: Ich berechne jetzt aus meinem Abstand zum Positionslimit die erlaubte Maximalgeschwindigkeit:
v_lim.png
v_lim.png (1.21 KiB) 2019 mal betrachtet
(v_\text{lim} = C_0 \cdot \sqrt{ s_\text{act} - s_\text{lim} })

Die Quadratwurzel ist deutlich rechenaufwendiger als ein Quadrat und zudem verfügt die ARM-Standard-Library über keine eingebaute Quadratwurzelfunktion für Integer-Variablen. Diese mußte also auch erst gesucht, angepaßt und getestet werden. Allerdings kann ich ihre Berechnung mit Sicherheit auf 16-Bit-Werte begrenzen (ich weiß ja schon vorher, wie lang mein Bremsweg bei Höchstgeschwindigkeit ist) und muß sie hundertmal seltener aufrufen (nämlich dann, wenn ich die SOLL-Geschwindigkeit neu berechne). Damit ist sie vom Rechenaufwand jetzt unterhalb des PID-Reglers und ich habe jetzt wieder knapp 50% freie Rechenzeit für Bedienerinteraktion.

Der prinzipbedingte Nachteil ist natürlich, daß ich auf dieser Ebene jetzt bei Maximalverzögerung ein leichtes, geschwindigkeitsabhängiges Überschießen erzeuge. Bei meiner Maximalgeschwindigkeit beträgt das etwas weniger als einen Vollschritt. Bei 90% Maximalverzögerung sinkt dieser Fehler auf ±1 Mikroschritt. Sprich: Ich habe wieder eine Einstellung mehr.
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 » Do 18. Jan 2018, 12:40

Die guten Vorsätze aus dem vorletzten Beitrag sind noch nicht vergessen. Deshalb ist aus den vorher grob überdachten Bedienmöglichkeiten ein Bedienkonzept geworden.

Vorgesehen sind vier für den Bediener unterscheidbare Betriebsmodi:
  1. Getriebemodus
    Der Getriebemodus (gear mode) ist der Arbeits-Betriebsmodus für das Gewindeschneiden. Der Drehwinkel der Hauptspindel und die Position des Bettschlittens stehen in einem festen Verhältnis, solange die Endpositionen nicht erreicht sind. Wird in der erreichten Endposition die Drehrichtung der Hauptspindel umgekehrt, wird wieder innerhalb eines Gewindeganges zurückgefahren.
  2. Handrad-Modus
    Der Handrad-Modus (MPG mode) dient dem manuellen Verfahren der Achsen. Ein Rastpunkt des Handrads entspricht einem festen Weg des Bettschlittens. Wird ein soft limit erreicht, wird die Bewegung der Achse gestoppt. Sobald die Drehrichtung des Handrads umgekehrt wird, setzt sich die Achse wieder in Bewegung. Der Skala auf dem Handrad entspricht also keine feste Position der Achse. (Dieses Verhalten entspricht dem des elektronischen Handrads unter Mach 3.)
  3. Handrad-Modus ohne Begrenzung der Endpositionen
    Dieser Modus dient dem Einstellen der Endpositionen.
  4. Geschwindigkeits-Modus
    Der Geschwindigkeits-Modus (velocity mode) dient als "elektronische Zugspindel" und dem schnellen Verfahren. Als Stellgeber für die Geschwindigkeit wird das Handrad verwendet. Jeder Rastpunkt des Handrads entspricht einer Geschwindigkeitsstufe.
    Die volle Eilganggeschwindigkeit wird bei einer halben Umdrehung des Handrads erreicht, d.h. die Geschwindigkeit ist in 50 Stufen einstellbar.
Das Gewindeschneiden findet hauptsächlich in den Betriebsmodi 1 und 2 statt. Zum schnellen Umschalten zwischen diesen Betriebsmodi dient die "virtuelle Schloßmutter". Sie kann auch bei laufender Spindel umgeschaltet werden. Abhängig von der Maximalbeschleunigung des Leitspindelantriebs benötigt sie eine Einlaufstrecke, bei der die gewünschte Gewindesteigung noch nicht eingehalten wird.


Soweit das Konzept. Implementiert sind davon allerdings erst die Punkte 1,2 und 4. Der Betriebsmodus 3 und die "virtuelle Schloßmutter" sind noch nicht implementiert, wobei von letzterer aber schon ein proof of concept existiert.

Bevor diese beiden Teile implementiert werden, steht aber ein bis dahin noch völlig unbedachter Softwareteil an. Aber dazu demnächst mehr.
Mein Werkzeug hat hauptsächlich den Zweck, das Werkzeug für mein Werkzeug herstellen zu können.

HeinzHerbert
Beiträge: 575
Registriert: Fr 21. Okt 2011, 16:23
Wohnort: Ostalb
Germany

Re: Elektronische Leitspindel

Beitrag von HeinzHerbert » Do 18. Jan 2018, 12:58

Hallo Nicoals,

bitte unbedingt weiterberichten! Ich finde das Thema sehr spannend und bin beeindruckt, wie Du das alles umsetzt. Bei mir wäre kurz nach der Deklaration der Variablen Schluß mit der Weisheit. Ich hoffe, daß Du an dem Open Source Gedanken festhältst...

Danke
Grüße
Georg
1.) Heb's wenn's pfuust!
2.) Der Kopf ist rund, damit das Denken die Richtung wechseln kann.
3.) Rede erst, wenn es besser ist als Schweigen.

Benutzeravatar
groovingandi
Beiträge: 462
Registriert: Sa 28. Dez 2013, 22:27
Wohnort: Bayern
Germany

Re: Elektronische Leitspindel

Beitrag von groovingandi » Do 18. Jan 2018, 13:03

Nicolas hat geschrieben:Das Problem daran ist, daß
- Der Zähler dieser Formel mühelos die 32-Bit-Grenze überschreitet und daher die ganze Formel in 64 Bit gerechnet werden muß und das noch
Nur zu meinem Verständnis: implementierst Du alles mit Integer-Arithmetik und normierst auf Mikroschritte? Wenn der ARM keine FPU hat würde ich zumindest auf FixedPoint-Arithmetik gehen, damit Du mit den Zahlen auf vernünftige Einheiten kommst.
Nicolas hat geschrieben:- sehr oft (nämlich jedes Mal, wenn sich die Momentangeschwindigkeit ändert, also 500000 Mal in der Sekunde).
Du regelst im 500kHz-Takt? Mit realistischen Beschleunigungsrampen reicht doch locker ein Update mit 1kHz.

Andreas

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

Re: Elektronische Leitspindel

Beitrag von Nicolas » Do 18. Jan 2018, 16:13

Hallo Georg und Andi,
HeinzHerbert hat geschrieben:[...] Ich hoffe, daß Du an dem Open Source Gedanken festhältst...
Mein Plan lautet:
  1. Bauen
  2. Benutzen
  3. Glücklich sein
Open Source ist nicht mein Plan. Die Erfahrung lehrt: Das macht nur Ärger und kostet Zeit, die man im Hobby anderweitig besser verbringen kann. Es tut mir leid, sollte ich eine mißverständliche Äußerung gemacht haben, die anderes nahelegt.

groovingandi hat geschrieben: Nur zu meinem Verständnis: implementierst Du alles mit Integer-Arithmetik und normierst auf Mikroschritte? Wenn der ARM keine FPU hat würde ich zumindest auf FixedPoint-Arithmetik gehen, damit Du mit den Zahlen auf vernünftige Einheiten kommst.
Unterschiedliche Teile sind unterschiedlich implementiert. Die Basis-Einheit für Positionen sind Halbmikroschritte. Für alle Getriebefunktionen nutze ich Integer-Arithmetik mit ganzzahligen Brüchen. So kann alles auf ewig laufen, Richtungen wechseln, vibrieren, etc, ohne daß sich der Gesamtfehler akkumuliert.

Für Teile, die sich nicht akkumulieren, nutze ich größtenteils Festkommaarithmetik (z.B. Tachometer, DRO, Geschwindigkeiten, Handvorschub).

Der PID-Regler ist in 32-Bit-Float implementiert. Der ARM Cortex M4 hat eine FPU und steckt das locker weg. Eine Funktion (das Eingangsfilter des PIDs) ist sogar in Doppelter Genauigkeit implementiert. Die Überprüfung, ob das nötig ist, ist noch ein Punkt auf meiner ToDo-Liste - aber kein dringender. Ich wollte es erst einmal ans Laufen bringen.
groovingandi hat geschrieben:
Nicolas hat geschrieben:- sehr oft (nämlich jedes Mal, wenn sich die Momentangeschwindigkeit ändert, also 500000 Mal in der Sekunde).
Du regelst im 500kHz-Takt? Mit realistischen Beschleunigungsrampen reicht doch locker ein Update mit 1kHz.
Nein, die Regelschleife läuft mit 5 kHz. Nicht, weil es nötig ist, sondern weil es keinen Grund gibt, der dagegen spricht und man im Debugger Zahlen sieht, die sich im Kopf in die physikalischen Größen umrechnen lassen. Mit 500 kHz läuft die Schrittmotortakterzeugung, bei der eine interne Rechengröße, die in jedem Takt aktualisiert werden muß, physikalisch der Momentangeschwindigkeit entspricht. Die obige Beschreibung war also etwas verkürzt.

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

Antworten