SCARA Crosstalk Not Behaving as Expected, Help Appreciated
-
I am currently configuring the firmware for my SCARA arm and have finally figured out how to get homing to work properly using
G90 G0 H1 X-300 Y-300 G91
which will home both arms at the same time resulting in no interference while homing which can occur using some other homing styles.
For reference, my SCARA machine follows the same mechanical design as the MPSCARA.
I can use the G0/G1 H2 X0 Y0 command to reach a position where the proximal arm is parallel to the X-axis and the distal and proximal arms are facing the same direction. Looking at the X/Y positioning I see that the coordinates are correct being at 752X and 0Y, but when I input G0/G1 H2 X90 Y0 I would expect the positioning to be -376X and 376Y, but the firmware reads 0X and 752Y. I have been trouble shooting for so long I don't even remember and have not came to a definitive solution.
Here is my config.g file (ignore the comment tags I have changed things, they are from the common/base file I copied, but I have changed the things):
; Axis and motor configuration ; Printer Settings M669 K4 P376 D376 A-140;110 B0;172 C-1:0:0 X0 Y0 M569 P0 S1 ; Drive 0 goes forwards M569 P1 S0 ; Drive 1 goes forwards M569 P2 S1 ; Drive 2 goes forwards M569 P3 S1 ; Drive 3 goes forwards M569 P4 S1 ; Drive 4 goes forwards ;Endstops M574 X1 S1 P"!xstop" ; X min active low endstop switch M574 Y1 S1 P"!ystop" ; Y min active low endstop switch ;M574 Z2 S3 P"zstop" ; Z max active high endstop switch ;M574 U2 S1 P"e0stop" ; U max active high endstop switch ;*** The homed height is deliberately set too high in the following - you will adjust it during calibration M350 X16 Y16 Z16 E16:16 I1 ; Set 16x microstepping with interpolation M92 X262.2222 Y262.2222 Z800 ; Set axis steps/degree M906 X800 Y800 Z1000 E800 I60 ; Set motor currents (mA) and increase idle current to 60% M201 X1000 Y1000 Z1000 E1000 ; Accelerations (mm/s^2) M203 X20000 Y20000 Z300 E3600 ; Maximum speeds (mm/min) M566 X1200 Y1200 Z800 E1200 ; Maximum instant speed changes mm/minute ; Thermistors M305 P0 T100000 B3950 R4700 H30 L0 ; Put your own H and/or L values here to set the bed thermistor ADC correction M305 P1 T100000 B3974 R4700 H30 L0 ; Put your own H and/or L values here to set first nozzle thermistor ADC correction M305 P2 T100000 B3974 R4700 H30 L0 ; Put your own H and/or L values here to set 2nd nozzle thermistor ADC correction M570 S180 ; Hot end may be a little slow to heat up so allow it 180 seconds ; Adjustments for dummy heaters on test rig M307 H0 A250 C140 D5.5 B1 M307 H1 A250 C140 D5.5 B0 M307 H2 A250 C140 D5.5 B0 ; Fans M106 P1 S-1 ; disable thermostatic mode for fan 1 ; Tool definitions M563 P0 D0 H1 ; Define tool 0 G10 P0 S0 R0 ; Set tool 0 operating and standby temperatures ;*** If you have a single-nozzle build, comment the next 2 lines M563 P1 D1 H2 ; Define tool 1 G10 P1 S0 R0 ; Set tool 1 operating and standby temperatures M92 E80:80 ; Set extruder steps per mm ; Z probe and compensation definition ;*** If you have a switch instead of an IR probe, change P1 to P4 in the following M558 command. M558 P5 F100 T6000 X0 Y0 Z0 H3 ; Z probe is a Smart Effector and is not used for homing any axes R0.4 not used. Reduced F300 to 100 G31 P100 X0 Y0 Z-0.25 ; Set the zprobe height and threshold for Smart Effector ;*** If you are using axis compensation, put the figures in the following command M556 S78 X0 Y0 Z0 ; Axis compensation here M208 S1 Z-0.2 ; set minimum Z T0 ; select first hot end ; M117 Use https://configurator.reprapfirmware.org/ to set up your printer config
I am not looking to have the tools work right now. I am looking to just get movement to work correctly and maybe run some gcode to get it to move properly.
While running Gcode currently I get the error "G1/G2/G3 Intermediate position outside machine limits" which I would assume comes from the Cartesian positioning and arm angle being off.
-
I have created a github which includes all pertinent information to figure out what's actually wrong with my stupidity. https://github.com/koaldesigns/IBIS-S1
-
Can you show us photos from the top showing arm positions
a) at homing positions
b) after yourG0 H2 X90 Y0
(I think your M669 requires X and Y offsets defined).
-
@oliof Image one is the homing position of the arm where both joints are in line and have the smallest (negative) angle in relation to the x-axis.
The second image shows the arm position after giving the G0 H2 X0 Y0 command (disregard the minor offset, I haven't fully tuned offsets yet)
The third image shows the arm position after giving the G0 H2 X90 Y0 command. -
With your move, You are moving the proximal Arm by plus 90 degrees (due to H2), and your crosstalk setting keeps the distal arm in place (barring some lack in precision somewhere). So I'd say homing and moving according to angular commands is working correctly.
If I understand correctly, you disagree with the position report in DWC.
I believe what's missing is a reasonable X and Y offset in your M669 to give you a properly addressable print space.
Add X and Y offsets in your M669 to modify the coordinates you currently see to what you want, and try again?
-
I have mathed out the entire diagram of what the positions should be....
The problem I seem to be having is that any movement of the distal arm seems to assume both the distal and proximal arm are moving even though the crosstalk is set to -1:0:0.
-
As discussed elsewhere, there are semicolons in the
M669
line. You also need to define axis limits withM208
or the defaults (min:0, max 200) will be applied.