Over the last couple of weeks I developed a simple SCARA arm based on a Duet 3 HC Mainboard.
So far I got everything set up based on the instructions on Scara Arms on the duet3d site.
https://duet3d.dozuki.com/Wiki/ConfiguringRepRapFirmwareSCARAPrinter
However I am struggling with getting the whole thing to run which is probably due to a wrong config (M669).
I get the whole machine homed and at some point I was able to move the head within pretty narrow boundaries. Which is why I kept fiddling with the config and now it doesn't move at all. I always get the error "intermediate position outside machine limits".
Maybe some more information about the arm:
Lengths: Proximal:239mm Distal: 184.5mm
The maximum movement of the proximal joint is about -90 to 90 degrees and the distal joint can move from -90 to 180 since there is no collision between the tool head and the arm which was one important thing I kept in mind while designing it.
current setup:
What would the appropriate parameters for my config look like?
Here is my thought process:
X parameter
Arm fully extended:
Arm fully collapsed:
guide:
"You should specify xxx and yyy in the M669 command as the location you want for X0, Y0 relative to the proximal joint"
which means my offset would be:
"Proximal length" + "Distal length" = X -> 239mm+184.5mm = 423.5mm
"X offset will be positive by an amount somewhat smaller than the square printable X range"
I have no idea how to interpret this, to be honest.
Y parameter
"the Y offset will be negative by about half the square printable Y range."
This would probably be just the arm-length as an offset, right?
Which means
"Proximal length" + "Distal length" = Y -> 239mm+184.5mm = 423.5mm
config.g:
; Configuration file for Duet 3 (firmware version 3)
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool v3.1.10 on Sun Dec 13 2020 17:17:21 GMT+0100 (Mitteleuropäische Normalzeit)
; General preferences
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M550 P"meta" ; set printer name
; Drives
M569 P0.0 S0 ; physical drive 0.0 goes forwards
M569 P0.1 S0 ; physical drive 0.1 goes forwards
M569 P0.2 S1 ; physical drive 0.2 goes forwards
M569 P0.3 S1 ; physical drive 0.3 goes forwards
M584 X0.0 Y0.1 Z0.2 E0.3 ; set drive mapping
M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation
M92 X55.555 Y55.555 Z400.00 E420.00 ; set steps per mm
M566 X900.00 Y900.00 Z60.00 E120.00 ; set maximum instantaneous speed changes (mm/min)
M203 X10000.00 Y10000.00 Z1800.00 E1200.00 ; set maximum speeds (mm/min)
M201 X500.00 Y500.00 Z20.00 E250.00 ; set accelerations (mm/s^2)
M906 X800 Y800 Z1200 E800 I30 ; set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout
; Axis Limits
; M208 X-100 Y-100 Z0 S1 ; set axis minima
; M208 X600 Y600 Z300 S0 ; set axis maxima
; Endstops
M574 X1 S1 P"!^io0.in" ; configure active-high endstop for low end on X via pin ^io0.in
M574 Y1 S1 P"!^io1.in" ; configure active-high endstop for low end on Y via pin ^io1.in
M574 Z2 S1 P"^io2.in" ; configure active-high endstop for high end on Z via pin ^io2.in
M669 K4 P239 D184.5 A-90:90 B-90:180 X423.5 Y-423.5 ; set SCARA kinematics parameters
; Z-Probe
M558 P0 H5 F120 T6000 ; disable Z probe but set dive height, probe speed and travel speed
M557 X15:215 Y15:195 S20 ; define mesh grid
; Heaters
; Fans
; Tools
M563 P0 S"pump" D0 F0 ; define tool 0
G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets
G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C
; Custom settings are not defined
Here are some photos of the robot. Excuse the messy environment
The endstops are hall-effect-sensors at 90° clockwise by the way.