Encoder an Mesa-Karte 7i95
(or 7I95 single ended vs differential encoder setting)
Please Log in or Create an account to join the conversation.
Aus HAL gelöscht
# Encoder // net z-pos-fb <= [HMOT](CARD0).stepgen.04.position-fb
# Encoder // net z-pos-fb => joint.2.motor-pos-fb
dafür aufgenommen
net z-pos-fb <= [HMOT](CARD0).encoder.02.position
net z-pos-fb => joint.2.motor-pos-fb
net z-vel-fb <= [HMOT](CARD0).encoder.02.velocity
net z-index-enable joint.2.index-enable <=> [HMOT](CARD0).encoder.02.index-enable
net z-pos-rawcounts <= [HMOT](CARD0).encoder.02.rawcounts
Jetzt wird etwas angezeigt wenn der Encoder bewegt wird.
Jetzt muss ich noch die Wärter einstellen.
Please Log in or Create an account to join the conversation.
Wenn ich den Encoder drehe, ändert sich die Position der Z-Achse in LinuxCNC, was korrekt ist. Allerdings bleibt der Wert "Counts" in der HAL-Konfiguration immer bei 0 stehen.
Mein Encoder sollte jedoch bei einer Umdrehung 1024 Schritte gezählt haben, und meine Spindel hat eine Steigung von 4 mm. Der Verbauten Schrittmotoren machen 200 Vollschritte der Treiber ist auf 1/64 eingestellt, pro umdrehung solten demnach 12.800 Steps generiert werden.
Ich habe meine HAL- und INI-Dateien als Anhang beigefügt und möchte euch einen Auszug aus meiner HAL zeigen:
#*******************
# AXIS Z JOINT 2
#*******************
setp pid.z.Pgain [JOINT_2]P
setp pid.z.Igain [JOINT_2]I
setp pid.z.Dgain [JOINT_2]D
setp pid.z.bias [JOINT_2]BIAS
setp pid.z.FF0 [JOINT_2]FF0
setp pid.z.FF1 [JOINT_2]FF1
setp pid.z.FF2 [JOINT_2]FF2
setp pid.z.deadband [JOINT_2]DEADBAND
setp pid.z.maxoutput [JOINT_2]MAX_OUTPUT
setp pid.z.error-previous-target true
setp pid.z.maxerror 0.000500
# Encoder // net z-index-enable <=> pid.z.index-enable
net z-enable => pid.z.enable
net z-pos-cmd => pid.z.command
net z-pos-fb => pid.z.feedback
net z-output <= pid.z.output
# Step Gen signals/setup
setp [HMOT](CARD0).stepgen.04.dirsetup [JOINT_2]DIRSETUP
setp [HMOT](CARD0).stepgen.04.dirhold [JOINT_2]DIRHOLD
setp [HMOT](CARD0).stepgen.04.steplen [JOINT_2]STEPLEN
setp [HMOT](CARD0).stepgen.04.stepspace [JOINT_2]STEPSPACE
setp [HMOT](CARD0).stepgen.04.position-scale [JOINT_2]STEP_SCALE
setp [HMOT](CARD0).stepgen.04.step_type 0
setp [HMOT](CARD0).stepgen.04.control-type 1
setp [HMOT](CARD0).stepgen.04.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.04.maxvel [JOINT_2]STEPGEN_MAXVEL
# --- Encoder feedback signals/setup ---
setp [HMOT](CARD0).encoder.02.counter-mode 0
setp [HMOT](CARD0).encoder.02.filter 1
setp [HMOT](CARD0).encoder.02.index-invert 0
setp [HMOT](CARD0).encoder.02.index-mask 0
setp [HMOT](CARD0).encoder.02.index-mask-invert 0
setp [HMOT](CARD0).encoder.02.scale [JOINT_2]ENCODER_SCALE
net z-pos-fb <= [HMOT](CARD0).encoder.02.position
net z-pos-fb => joint.2.motor-pos-fb
net z-vel-fb <= [HMOT](CARD0).encoder.02.velocity
net z-index-enable joint.2.index-enable <=> [HMOT](CARD0).encoder.02.index-enable
net z-pos-rawcounts <= [HMOT](CARD0).encoder.02.rawcounts
# ---closedloop stepper signals---
net z-pos-cmd <= joint.2.motor-pos-cmd
net z-vel-cmd <= joint.2.vel-cmd
net z-output <= [HMOT](CARD0).stepgen.04.velocity-cmd
# Encoder // net z-pos-fb <= [HMOT](CARD0).stepgen.04.position-fb
# Encoder // net z-pos-fb => joint.2.motor-pos-fb
net z-enable <= joint.2.amp-enable-out
net z-enable => [HMOT](CARD0).stepgen.04.enable
# ---setup home / limit switch signals---
net z-home-sw => joint.2.home-sw-in
net z-neg-limit => joint.2.neg-lim-sw-in
net z-pos-limit => joint.2.pos-lim-sw-in
Könnt ihr mir dabei helfen, das Problem zu identifizieren und eine Lösung zu finden? Ich bin für jede Unterstützung dankbar.
ps. welche Werte müsste ich im HAL-Konfiguration anzeigen lassen um Motor / Encoder / Skalirung Motor & Encoder /Wegstrecke zu überprüfen.
Gruß Mücke
Attachments:
Please Log in or Create an account to join the conversation.
Deine config sieht fast so aus wie meine bis auf
net z-index-enable <=> pid.z.index-enable
der ist bei mir auch aktiv.
Für screenshots installiere
sudo apt install xfce4-screenshooter
damit kannst du auch Ausschnitte aufnehmen und zeigen.
Please Log in or Create an account to join the conversation.
- tommylight
- Away
- Moderator
- Posts: 19206
- Thank you received: 6437
Encoder_scale = encoder pulses per mm
1024 PPR encoder = 4096 pulse pro umdrehung.
Please Log in or Create an account to join the conversation.
loadrt encoder num_chan=5
It may be causing confusion by creating 5 non-working software encoders
Please Log in or Create an account to join the conversation.
Also delete this line in your hal file
loadrt encoder num_chan=5
It may be causing confusion by creating 5 non-working software encoders
Das habe ich gemacht.
Jetzt bekomme ich auch im COUNT etwas angezeigt. (Bild)
Frage: Ist die Basis zum Zählen 0 oder 1?
Der Mesa 7i95 hat Encoder 0 bis 5.
Scale = schritt motor pulse
sper mm
Encoder_scale = encoder pulses per mm
1024 PPR encoder = 4096 pulse pro umdrehung.
Ok.
Meine Daten Schrittmotor + Spindel
- Schrittmotor: 1,8° = 200 Schritte pro Umdrehung
- Spindel: 4mm Steigung
- Treiber: 1/64 Mikroschritte
STEP_SCALE = (200 x 64) / 4
STEP_SCALE = (12.800) / 4
STEP_SCALE = 3.200
Der Motor müsste 3.200 Steps machen um 1mm bewegung zu erzeugen?
Meine Daten: Encoder + Spindel
- Encoder: 1.024 P/R
Wie kommst du auf 4.096 pulse pro Umdrehung? Was bedeutet P/R ?Pulse / Rotation ? - Spindel: 4mm Steigung
Berechnung:
STEP_SCALE = Pulse pro Umdrehung / 4
STEP_SCALE = (1.024) / 4
STEP_SCALE = 256
oder
STEP_SCALE = Pulse pro Umdrehung / 4
STEP_SCALE = (4.096) / 4
STEP_SCALE = 1.024
Was macht die Zeile?Das ist sehr seltsam. Wenn das Signal encoder.**.count nicht zählt kann sich auch nichts in der Anzeige ändern. Das gleiche wie rawcounts. Encoder rohdaten ohne Scalierung.
Deine config sieht fast so aus wie meine bis auf
net z-index-enable <=> pid.z.index-enable
der ist bei mir auch aktiv.
Für screenshots installiere
sudo apt install xfce4-screenshooter
damit kannst du auch Ausschnitte aufnehmen und zeigen.
net z-index-enable <=> pid.z.index-enable
Ich habe sie eingefügt, aber noch keinen Unterschied gesehen.
Allerdings habe ich die Zeile wie von PCW vorgeschlagen entfernt und bekomme etwas angezeigt.
Für Screenshots habe ich den Flameshot installiert, kann der Xfce4-Screenshooter mehr oder auch Videos aufnehmen?
Jetzt muss ich mich an die Arbeit machen und herausfinden, was die Fehlermeldungen bedeuten (wann ein Fehler auftreten soll (Dieferenz) und wie ich die Skala richtig hinbekomme und dann muss ich das an der Achse überprüfen .
Außerdem möchte ich mit dem HAL-Oszilloskop den Motor richtig einstellen, starten usw.
Aber das kann ich auch noch nicht, jetzt müssen erst mal die anderen Einstellungen passen.
Es ist noch ein langer Weg, habe ich das Gefühl.
Attachments:
Please Log in or Create an account to join the conversation.
Dies ist für die Referenzierung zum Index erforderlich, da die Encoder-Position macht bei der Indexerkennung einen Sprung auf 0. Dies informiert den PID-Regler keine Ableitungsberechnungen für FF1 oder FF2 im aktuellen Zyklus durchzuführen da sie nach diesem Sprung völlig falsch wären.Was macht die Zeile?
net z-index-enable <=> pid.z.index-enable
Ich habe sie eingefügt, aber noch keinen Unterschied gesehen.
Please Log in or Create an account to join the conversation.
[/quote]Ich habe eine gewisse Vorstellung davon, was Du meinen.
Ich habe sie eingefügt, aber noch keinen Unterschied gesehen.Was macht die Zeile?
net z-index-enable <=> pid.z.index-enable
Dies ist für die Referenzierung zum Index erforderlich, da die Encoder-Position macht bei der Indexerkennung einen Sprung auf 0. Dies informiert den PID-Regler keine Ableitungsberechnungen für FF1 oder FF2 im aktuellen Zyklus durchzuführen da sie nach diesem Sprung völlig falsch wären.
Auf meinem Screenshot sind die Spuren A, B und Z (Index) zu sehen.
A und B zeigen Veränderungen an (dargestellt durch den roten bzw. gelben Punkt).
Im Gegensatz dazu scheint sich der Z (Index) nie zu ändern.
Ist es üblich, dass der Z (Index) nicht erfasst wird oder habe ich etwas missverstanden?
Please Log in or Create an account to join the conversation.
Sie können den Indexvorgang überprüfen, indem Sie sagen:
halcmd sets z-index-enable true
und dann die Z-Achse verschieben, bis der Index erreicht ist. In diesem Fall sollte z-index-enable auf false gesetzt werden
Please Log in or Create an account to join the conversation.