Hallo Mike07,
ich hatte das selbe Problem bei meiner Eigenbau-CNC.
Zur Synchronisation der x-y-z Fahrten, also dass alle 3 Stepper bei unterschiedlichen Geschwindigkeiten zur selben
Zeit am Ziel ankommen, war es nötig die Dauer der Einzelschritte möglichst hoch aufzulösen.
Ich benutzte auch die AccelStepper-library.
Da wie hier schon erwähnt der Datentyp float wegen der Rundungsfehler keine zuverlässigen Ergebnisse brachte,
wechselte ich auf double.
Dabei stellte sich heraus, dass die Auflösung von double auf dem Uno und auch Mega nicht ausreichte um mein Ziel zu erreichen.
Erst mit dem Arduino Due klappte alles zur vollsten Zufriedenheit, denn der kann 32 Bit für double auflösen.
Außerdem hatte die höhere Taktung des Due den Vorteil, dass serielle Aus- und Eingaben während des Stepperbetriebs
diesen nicht aus dem Takt brachten.
Aber die beste Lösung fand ich mit der grbl-Software.
Da kannst du deine jetzige Hardware-Konfiguration beibehalten.
Die Ansteuerung des Arduino erfolgt dann direkt mittels gcode, den man dann natürlich etwas kennen muss, was aber im Vergleich zur Arduino-Programmierung sehr einfach ist.
Unabdingbare Voraussetzungen um Schrittverluste zu vermeiden sind nach wie vor:
- möglichst wenig Spiel bei Vor/Rücklaufumkehr an den Achsen
- die Frequenz und der Strom aus der Treiberendstufe müssen den technischen Daten des Steppermotors entsprechen
Den Uno kann man problemlos mittels der Arduino-IDE mit grbl flashen.
(Einfach mal nach "grbl gcode" googeln und dann erst lesen....)
Nachteil:
Es handelt sich um keinen üblichen Arduino-Sketch, lässt sich also nicht so ohne weiteres modifizieren.
Dazu muss man schon direkt in den C++-Dateien arbeiten. Dies ist aber im Normalfall nicht nötig.
Ich bin mit dieser Lösung jedenfalls vollstens zufrieden,
grbl erledigt alles was ich mir vorher mühevoll erarbeiten musste.
Gruß Welle