Howto: Zwei Schrittmotoren an einer Achse konfigurieren *howto*

  • spicer
  • spicer's Avatar Topic Author
  • Offline
  • Platinum Member
  • Platinum Member
More
28 Mar 2019 21:41 - 07 Jun 2019 04:27 #129862 by spicer
Zwei Schrittmotoren an einer Achse konfigurieren (Cantry)

Dieses Dokument ist zusätzlich als PDF und MS Word doc angehängt.

Habe hier mal versucht, die Anleitung von joel0407 ins Deutsche zu bringen.
Seine Anleitung war für mich die Beste. Nur leider in englisch.
Verwendetes System: LinuxCNC 2.8-master
Im Beispiel haben wir 1 X, 2 Y und 1 Z Motor.
Ansteuerung mittels Breakout Board über Parallelport.
Im zuvor benutzten Stepconf Wizard haben wir X, Y und Z Achse vorkonfiguriert.


Zuerst machen wir die Einstellungen im INI File:


Zunächst gehen wir zur KINS Sektion.
Hier die JOINTS (Anzahl Motoren) und Koordinaten-Buchstaben anpassen.
Das sieht dann so aus:

[KINS]
JOINTS = 4
KINEMATICS = trivkins coordinates=XYYZ


Jetzt zur TRAJ Sektion

[TRAJ]
COORDINATES = X Y Z
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 10.00
MAX_LINEAR_VELOCITY = 100.00

Hier lediglich überprüfen, ob die COORDINATES = X Y Z sind.

Jetzt setzen wir, welche Joints zu welcher Achse gehören.

Wir gehen zur AXIS Y Sektion.
Gleich darunter steht [JOINT_1].
Diese Sektion duplizieren wir (copy/paste)
Der rein kopierte Joint benennen wir in [JOINT_2] um.
Der Joint unten unter [AXIS Z] benennen wir [JOINT_3].
Danach sieht das ganze wie folgt aus:

[AXIS X]
Blah, blah, blah

[JOINT_0]
Blah, blah, blah

[AXIS Y]
Blah, blah, blah

[JOINT_1]
Blah, blah, blah

[JOINT_2]
Blah, blah, blah

[AXIS Z]
Blah, blah, blah

[JOINT_3]
Blah, blah, blah

“Blah, blah, blah” ist natürlich nur der Platzhalter für die davor von Stepconf konfigurierten Werte.

WICHTIG: Joint 1 und 2 müssen die gleichen Werte enthalten!

Jetzt müssen wir die Referenzsequenz einstellen.

Die Reihenfolge ist beginnend mit 0 und standardmässig für die Z-Achse.
HOME_SEQUENCE = 0
gefolgt von der X Achse HOME_SEQUENCE = 1
Dann die Y Achse.
Damit die beiden Motoren synchron referenzieren, muss ein – (Minuszeichen) vor der 2 eingefügt werden.
Somit haben Joint 1 und 2 HOME_SEQUENCE = -2
So laufen beide Motoren synchron bis zum Referenzpunkt. Falls einer von beiden eher dort ist, referenziert er sich fertig und wartet auf den anderen Motor, bis dieser auch fertig referenziert hat.
Danach fahren beide zum HOME-Punkt.

Damit wir die Y-Achse beim einrichten bewegen können, fügen wir an Ende von Joint 1 und 2 folgendes ein (die Originalzeilen können mit einem vorangestellten # ausgeblendet werden):

HOME_SEARCH_VEL = 0
HOME_LATCH_VEL = 0
HOME_FINAL_VEL = 5
HOME_USE_INDEX = NO
HOME_SEQUENCE = -2

Vorsicht, wenn der Referenzpunkt nicht auf der HOME-Seite liegt.
Die beiden Y-Motoren eilen nämlich sofort zum HOME-Punkt.



Jetzt zum HAL File:


Zuerst hängen wir ,0 an folgender Zeile an:

loadrt stepgen step_type=0,0,0,0

Jetzt scrollen wir runter zu „setp stepgen.1.position-scale [JOINT_1]SCALE“ (wo 6 Zeilen mit „setp“ gefolgt von 6-8 Zeilen „net“ stehen).

Bei mir sieht das so aus:

setp stepgen.1.position-scale [JOINT_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 1
setp stepgen.1.dirhold 73000
setp stepgen.1.dirsetup 73000
setp stepgen.1.maxaccel [JOINT_1]STEPGEN_MAXACCEL
net ypos-cmd joint.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => joint.1.motor-pos-fb
net ystep <= stepgen.1.step
net ydir <= stepgen.1.dir
net yenable joint.1.amp-enable-out => stepgen.1.enable
net both-home-y => joint.1.home-sw-in
net both-home-y => joint.1.neg-lim-sw-in
net both-home-y => joint.1.pos-lim-sw-in

Jetzt das ganze gleich anschliessend nochmal reinkopieren.
Da müssen wir jetzt mehrere Einsen (1) auf Zweien (2) ändern.
Und zwar überall wo ein * (Stern) steht.

setp stepgen.*.position-scale [JOINT_*]SCALE
setp stepgen.*.steplen 1
setp stepgen.*.stepspace 0
setp stepgen.*.dirhold 25000
setp stepgen.*.dirsetup 20000
setp stepgen.*.maxaccel [JOINT_*]STEPGEN_MAXACCEL
net xpos-cmd joint.*.motor-pos-cmd => stepgen.*.position-cmd
net xpos-fb stepgen.*.position-fb => joint.*.motor-pos-fb
net xstep <= stepgen.*.step
net xdir <= stepgen.*.dir
net xenable joint.*.amp-enable-out => stepgen.*.enable
net home-x => joint.*.home-sw-in

im nachfolgenden Joint nun die Zweien (2) in Dreien (3) ändern.

Im jetzigen Joint 2 nun alle y in y2 ändern. Das heisst:
alle y nach „net“ und „home-“.
Zwei gleiche Achsnamen versteht LinuxCNC nämlich nicht.

Bei mir sieht dieser HAL-Teil nun so aus:

setp stepgen.0.position-scale [JOINT_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 1
setp stepgen.0.dirhold 73000
setp stepgen.0.dirsetup 73000
setp stepgen.0.maxaccel [JOINT_0]STEPGEN_MAXACCEL
net xpos-cmd joint.0.motor-pos-cmd => stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb => joint.0.motor-pos-fb
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable joint.0.amp-enable-out => stepgen.0.enable
net both-home-x => joint.0.home-sw-in
net both-home-x => joint.0.neg-lim-sw-in
net both-home-x => joint.0.pos-lim-sw-in

setp stepgen.1.position-scale [JOINT_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 1
setp stepgen.1.dirhold 73000
setp stepgen.1.dirsetup 73000
setp stepgen.1.maxaccel [JOINT_1]STEPGEN_MAXACCEL
net ypos-cmd joint.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => joint.1.motor-pos-fb
net ystep <= stepgen.1.step
net ydir <= stepgen.1.dir
net yenable joint.1.amp-enable-out => stepgen.1.enable
net both-home-y => joint.1.home-sw-in
net both-home-y => joint.1.neg-lim-sw-in
net both-home-y => joint.1.pos-lim-sw-in

setp stepgen.2.position-scale [JOINT_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 1
setp stepgen.2.dirhold 73000
setp stepgen.2.dirsetup 73000
setp stepgen.2.maxaccel [JOINT_2]STEPGEN_MAXACCEL
net y2pos-cmd joint.2.motor-pos-cmd => stepgen.2.position-cmd
net y2pos-fb stepgen.2.position-fb => joint.2.motor-pos-fb
net y2step <= stepgen.2.step
net y2dir <= stepgen.2.dir
net y2enable joint.2.amp-enable-out => stepgen.2.enable
net both-home-y2 => joint.2.home-sw-in
net both-home-y2 => joint.2.neg-lim-sw-in
net both-home-y2 => joint.2.pos-lim-sw-in

setp stepgen.3.position-scale [JOINT_3]SCALE
setp stepgen.3.steplen 1
setp stepgen.3.stepspace 1
setp stepgen.3.dirhold 73000
setp stepgen.3.dirsetup 73000
setp stepgen.3.maxaccel [JOINT_3]STEPGEN_MAXACCEL
net zpos-cmd joint.3.motor-pos-cmd => stepgen.3.position-cmd
net zpos-fb stepgen.3.position-fb => joint.3.motor-pos-fb
net zstep <= stepgen.3.step
net zdir <= stepgen.3.dir
net zenable joint.3.amp-enable-out => stepgen.3.enable
net both-home-z => joint.3.home-sw-in
net both-home-z => joint.3.neg-lim-sw-in
net both-home-z => joint.3.pos-lim-sw-in


Weiter oben im HAL File finden wir Zeilen, welche zum grössten Teil mit „net“ beginnen.
Bei mir so:

net xstep => parport.0.pin-02-out
setp parport.0.pin-03-out-invert 1 # Nur wenn X-Richtung umgekehrt
net xdir => parport.0.pin-03-out
net ystep => parport.0.pin-04-out
net ydir => parport.0.pin-05-out
net zstep => parport.0.pin-06-out
net zdir => parport.0.pin-07-out

net xenable => parport.0.pin-14-out
net spindle-on => parport.0.pin-17-out

net both-home-x <= parport.0.pin-12-in
net both-home-y <= parport.0.pin-13-in

net both-home-z <= parport.0.pin-15-in

Wir fügen nun unseren Y2 Motor hinzu. Dabei auf die gewünschten Pins am Parallelport achten.

net y2step => parport.0.pin-08-out
net y2dir => parport.0.pin-09-out

net both-home-y2 <= parport.0.pin-11-in


Nun sieht das Ganze so aus bei mir:

net xstep => parport.0.pin-02-out
setp parport.0.pin-03-out-invert 1 # Nur wenn X-Richtung umgekehrt
net xdir => parport.0.pin-03-out
net ystep => parport.0.pin-04-out
net ydir => parport.0.pin-05-out
net zstep => parport.0.pin-06-out
net zdir => parport.0.pin-07-out
net y2step => parport.0.pin-08-out
net y2dir => parport.0.pin-09-out
net xenable => parport.0.pin-14-out
net spindle-on => parport.0.pin-17-out

net both-home-x <= parport.0.pin-12-in
net both-home-y <= parport.0.pin-13-in
net both-home-y2 <= parport.0.pin-11-in
net both-home-z <= parport.0.pin-15-in


Abspeichern und LinuxCNC starten.

Das war‘s. Viel Spass.
Attachments:
Last edit: 07 Jun 2019 04:27 by spicer.
The following user(s) said Thank You: tommylight, Muecke

Please Log in or Create an account to join the conversation.

More
29 Mar 2019 07:32 #129884 by pl7i92
Toll
bitte noch die HOME Geschwindigkeit anpassen
mit
HOME_FINAL_VEL = 5

an allen achsen


###HOME_SEARCH_VEL = 0
HOME_LATCH_VEL = 0
HOME_FINAL_VEL = 5
HOME_USE_INDEX = NO
HOME_SEQUENCE = -2

Please Log in or Create an account to join the conversation.

  • spicer
  • spicer's Avatar Topic Author
  • Offline
  • Platinum Member
  • Platinum Member
More
29 Mar 2019 15:46 #129904 by spicer

Toll
bitte noch die HOME Geschwindigkeit anpassen
mit
HOME_FINAL_VEL = 5

an allen achsen


###HOME_SEARCH_VEL = 0
HOME_LATCH_VEL = 0
HOME_FINAL_VEL = 5
HOME_USE_INDEX = NO
HOME_SEQUENCE = -2


Ok. Erledigt.

Please Log in or Create an account to join the conversation.

More
30 Mar 2019 08:25 #129959 by pl7i92
es ging nur um die
HOME_FINAL_VEL = 5

NICHT das du den SEARCH_Vel ausschaltest
das war ein Space Return Fehler

Please Log in or Create an account to join the conversation.

  • spicer
  • spicer's Avatar Topic Author
  • Offline
  • Platinum Member
  • Platinum Member
More
30 Mar 2019 14:26 #129968 by spicer
Achso. Und ich hab mich schon gefragt, warum Du das Einkommentiert hast ^^

Please Log in or Create an account to join the conversation.

More
30 Mar 2019 16:41 #129979 by pl7i92
Da wäre nochwas
A
net both-home-x <= parport.0.pin-12-in
net both-home-y <= parport.0.pin-13-in
net both-home-y2 <= parport.0.pin-11-in
net both-home-z <= parport.0.pin-15-in

BOTH warumm hängen da je 2 Switches drann

B Warum sind die Nicht in Reihe als öffner AUSER Y2 alle an einem PIN
und HOME fährt die Maschine vom SCHALTER

Damit spart man PINS für mehr flexibilität

Please Log in or Create an account to join the conversation.

  • spicer
  • spicer's Avatar Topic Author
  • Offline
  • Platinum Member
  • Platinum Member
More
30 Mar 2019 16:57 - 30 Mar 2019 16:59 #129982 by spicer
Ich habe genug Eingänge.
Habe für jede Achse 2 Schalter in Reihe (öffner).
Vom Schalter weg fahren ist doch gut, wenn die Schalter auch als Endschalter verwendet werden. Oder?

Aber das muss dann Jeder für sich passend konfigurieren.
Das Tutorial zeigt ja nur, wie man 2 Y Achsen konfiguriert.
Last edit: 30 Mar 2019 16:59 by spicer.

Please Log in or Create an account to join the conversation.

More
04 Apr 2019 06:51 #130268 by pl7i92
Genau so sollte es sein
ein Kommentar
# Endschalter X Beiderseits oeffner / Ref minus
wäre sinnvoll

Please Log in or Create an account to join the conversation.

  • spicer
  • spicer's Avatar Topic Author
  • Offline
  • Platinum Member
  • Platinum Member
More
06 Jun 2019 21:57 #136104 by spicer
Referenziere nur Y ins Plus, weil mein Kollege das so gewünscht hat.
Er möchte vorne (bei Y 0) den Tisch gleich frei zugänglich haben.

Please Log in or Create an account to join the conversation.

Time to create page: 0.180 seconds
Powered by Kunena Forum