MobaTools für "CNC" Steuerung geeignet?

Hallo miteinadner,

ich befasse mich gerade mit der MobaTools und lese die DE-Doku dazu.

Dabei ist mir der Befehl "MoToButtons" (Makro Funktion oder wie auch immer) aufgefallen.
Ich frage mich ob ich den verwenden soll,kann, muss.

Folgendes Szenario habe ich mir überlegt.

Achse X
|------------------------------------------------|
 A   S                                     S    A
 1   1                                     2    2

A = Notaus des Schrittmotors (Normaler Taster) 
S = Not Stopp (induktiver Sensor) 

A = Schaltet den Schrittmotor Stromlos und gibt ein Signal an den Arduino (Digitaler PIN)
Hier sollte der Schlitten niemals hinkommen!

S = Signal an Arduino (Digitaler Pin)
auf einer Seite soll 0 sein und auf der Anderen Seite soll x sein (X ist abhängig davon wie lange die Linearführung ist, bzw. wo der Schalter platziert wird)

Ich möchte jetzt bevor die Anlage irgend was macht eine kalibrieren durchführen.

  1. Sachreitmotor (-) schritte machen lassen bis Sensor S1 Auslöst.
  2. Flanke des Sensors richtig ermitteln
  3. Nullpunkt 100 Schritte in den (+) Bereich setzen.
  4. 0 Position anfahren
  5. Sachreitmotor (+) schritte machen lassen bis Sensor S2 Auslöst.
  6. Flanke des Sensors richtig ermitteln
  7. maximale schritte von 0 Punkt -100 Schritte = Arbeitslänge der Achse Definieren.
  8. 0 Position schnellst möglich anfahren

Oder Frage ich meinen Induktiven Sensor selbst ab?

Gruß Mücke

Ja, ja, nein.

"MoToButtons" dürfte eine Klasse sein: class MoToButtons {

1 Like

Ich kenne Referenzfahrt so:

die mechanische Konstruktion ist so, dass das Bauteil das den induktiven Referenz-Initiator (Kurz "ini" genannt) so gestaltet ist, dass dieses Bauteil den Ini bereits ca 5 mm vor erreichen des mechanischen Endanschlags schon schaltet und die Bauteillänge so ist, dass der Ini bis zum Erreichen des Endanschlags geschaltet bleibt.

Dadurch weiß man in der Software wenn ini geschaltet IST fahre vom Ini weg bis er ausschaltet = beweglicher Teil steht mindestens etwas in richtig Mitte.
Wenn ini nicht geschaltet ist dann steht der beweglichen Teil sowie genügend "mittig". Dann kann man direkt auf den ini zufahren.

Dann fahre auf den Ini zu bis der Ini schaltet. Dann fahre ganz langsam vom ini herunter bis er wieder abschaltet.

Das gibt mit induktiven Initatoren eine Wiederholgenauigkeit von mindestens 0,1 mm meistens auch 0,01 mm

Von dieser Position Ini hat abgeschaltet fährt man dann in ganz kleinen Schritten in Richtung mechanischen Anschlag bis man 0,5mm vor dem mechanischen Anschlag steht. Diese Differenz zwischen Position Ini hat gerade abgeschaltet und 0,5mm vor mechanischem Endanschlag ist dann der Offset gegenüber mechanisch 0,0 mm.

Als Fehlerkontrolle wenn man schon mehr Schritte gefahren ist als die mechanisch verfügbare Weglänge dann stimmt irgendwas nicht
Motor dreht nicht, Ini kaputt / nicht angeschlossen oder sonst was,
vgs

Bei einer CNC-Steuerung denke ich immer an exakt geführte Werkzeuge entlang einer vorgegebenen Kontur im Raum ( oder im einfacheren Fall in einer Fläche ). D.h. dass die verschiedenen Achsen sich jederzeit genau aufeinander abgestimmt bewegen müssen um diese Kontur abzufahren.
Für diesen Zweck bieten die MobaTools keine Unterstützung. Sie können zwar mehrere Schrittmotore gleichzeitig ansteuern, aber nicht mit der dafür notwendigen genauen Synchronisation untereinander. Für die MobaTools sind die Schrittmotore unabhängig voneinander.

Die Standard-DIY-Lösung für CNC ist GRBL. Da hat man 3 Achsen die in beliebigen Geschwindigkeitsverhältnissen gesteuert werden können.

Wenn man es unbedingt selbst programmieren will dann benutzt man dazu den Bresenham-Algorithmus. Die meisten Beschreibungen zeigen den Bresenham-Algorithmus für zwei Achsen. Für drei Achsen ist es aber im Prinzip dasselbe. Man bestimmt die Achse mit der größten Geschwindigkeit und statt eine Achse im passenden Geschwindigkeitsverhältnis anzusteuern macht man das einfach für zwei Achsen.

Das Grundprinzip ist schnell erklärt, das inklusive CNC-Befehlsinterpreter zu programmieren ist schon ein gewisser Aufwand.

vgs

@MicroBahner Hmm, da ist was dran, daran habe ich noch gar nicht genau drüber nachgedacht.
in erster Linie geht es mir darum das ich mit einem "Joystick" die Maschine bewegen kann.
die 100% Genauigkeit ist nicht so wichtig für den beginn.

@StefanL38, das mit dem Referenzfahrt muss ich noch 3-4 mal lesen bis ich es richtig und ganz verstanden habe :upside_down_face:

Es ist richtig was du sagst das die fast immer auf die RGBL setzen, wenn ich das jedoch richtig verstanden habe ist das jedoch immer so das man einen G-Code senden muss und die LIB macht dann den Rest.
das ist soweit alles OK, wenn man sein Objekt das man machen möchte schon kennt, sorry schwer zu verstehen, mein Objekt kenne ich immer nicht vorher.
man muss sich das so vorstellen, ein 3D Scanner scannt scannt ca. 5x360cm Fläche, und dann wird dann Analysiert und berechnet, daraus ergibt sich dann was gemacht werden muss.
leider ist es dann noch so das mein Objekt wegrutschen ( Trieftet ab bei Bewegung nicht durch den Fräßet) weshalb ich mir vorgestellt habe immer das Objekt Live zu betrachten und entsprechende Korrekturen nachzugeben. Was einen Staren G-Code wieder etwas sehr schwierig machen würden, in meiner Vorstellung.
ich lasse mich jedoch gerne vom gegen teil überzeugen!
da ich auch noch keinen fertigen Plan habe wie ich das alles machen möchte kann muss.

gruß Mücke

Das Hauptproblem sehe ich dabei bei Beschleunigung und Abbremsen. Ich weis aber nicht wie das beim RGBL gemacht wird.

Bresenham gibt auf der langsameren Achse alle n/m-tel Schritte einen Schritt aus. Dadurch läuft die zweite (und dritte) Achse langsamer aber trotzdem synchron. Dadurch wird die zweite Achse einfach mit dem genau passenden Bruchteil beschleunigt / abgebremst.

Man hat bei Bresenham eine Schleife die die Schritte für alle 2 bzw. 3 Achsen ausgibt.

Du kannst ja mal nach Grafik /Bresenham googeln. Schräge Linien bei denen man die einzelnen Pixel sieht veranschaulichen das Grundprinzip sehr schön

vgs

Ja, das habe ich schon gemacht. Aber das heißt dann eben auch, dass die Stepper streng synchron angesteuert werden müssen. Der erste/schnellste fährt 'unabhängig' , und alle anderen hängen dann mit ihrer Steperzeugung direkt da dran. So kommen dann auch alle gleichzeitig am Endpunkt an, und es gibt eine gerade Linie im Raum vom Start zum Endpunkt. Kurven müssen dann in entsprechend kleine Teilstücke aufgeteilt werden. So würde ich das verstehen.
Und genau das können die MobaTools eben nicht, dafür sind die nicht gemacht. Deshalb würde ich mal sagen, die sind für eine CNC-Steuerung ungeeignet.