Weird behaviour homing Y-axis (only)
-
Hi all
I have quite a strange behavior homing the y-axis – it looks like the G1 H2 command «turns» the moving direction of the axis temporarly!It's a core-xy machine (Voron 300mm) with max-endstops on x and y. Running on a 6HC with the 1LC toolboard. RepRapFirmware for Duet 3 MB6HC version 3.4.0 (2022-03-15 18:57:24) running on Duet 3 MB6HC v1.01 or later (standalone mode)
Even though this should crash, it's the only way it works. From the homey.g (config.g and this one attached):
G91 ; REL M913 X30 Y30 ; Current to 30% G1 H2 Z2 F6000 G1 H1 Y310 F10000 ; +Y probe move, fast, set axis limit G1 H2 Y10 F1000 ; back off from the endstop, individual motor mode G1 H1 Y5.2 F1000 ; +Y probe move, slow, set axis limit G1 H2 Y10 F10000 ; back off from the endstop, Individual motor mode G1 H2 Z-2 F6000 M913 X100 Y100 ; Current to 100% G90 ; ABS
Please note the "wrong" direction backing off from the touch&set axis limits on the two "G1 H2 Y10 F1000". I think this is not correct and it took me a long time to set it this way!?
Everything else works correct: the endstops are sensed, and all axis behave correct (and in the correct direction) after homing. On the X the homing is not behaving this way.
Am I missing something here? This is really very confusing…
Thank you for your inputs – Tomi
; Configuration file for Duet 3 (firmware version 3.3) ; 220508 ; Startup --------------------------------------------------- G21 ; work in millimeters G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Boron" ; set printer name G4 S2 ; CAN expansion pause ; Network ------- M552 P192.168.1.211 S1 ; enable network and set IP address M553 P255.255.255.0 ; set netmask M554 P192.168.1.1 ; set gateway M586 P0 S1 ; enable HTTP M586 P1 S1 ; enable FTP M586 P2 S1 ; enable Telnet ; Drives --------------------------------------------------- ; Z1 | Z2 A B ; 0.1 | 0.2 0.4 0.5 ; ––––––––––––– ; Z0 | Z3 E ; 0.0 | 0.3 121.0 M569 P0.0 S1 ; Z0 physical drive 0.0 goes forwards M569 P0.1 S0 ; Z1 physical drive 0.1 goes backwards M569 P0.2 S1 ; Z2 physical drive 0.2 goes forwards M569 P0.3 S0 ; Z3 physical drive 0.3 goes backwards M569 P0.4 S1 ; A physical drive 0.4 goes forwards M569 P0.5 S1 ; B physical drive 0.5 goes forwards M569 P121.0 S1 ; E physical drive 121.0 goes forwards ; Bindings ------- M584 Z0.0:0.1:0.2:0.3 ; Bindings Z-Motor Board 0 Pin 0 to 3 M584 X0.4 Y0.5 E121.0 ; Bindings other ; Conventionals ------- M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z320.00 E655.00 ; set steps per mm M906 I30 ; motor idle current percentage M84 S60 ; Set idle timeout ; velocity, acceleration, and current settings are in these macros M98 P"/macros/drives/xy_fullcurrent.g" M98 P"/macros/drives/z_fullcurrent.g" M98 P"/macros/drives/e_fullcurrent.g" ; GEOMETRY ------------------------------------------------ ; Limits ------- M669 K1 ; select CoreXY mode M208 X0 Y0 Z0 S1 ; set axis minima M208 X300 Y300 Z225 S0 ; set axis maxima ; Endstops (M574) ------- M574 X2 S1 P"^io3.in" ; X high end, active high M574 Y2 S1 P"^io4.in" ; Y high end, active high M574 Z1 S1 P"^io6.in" ; Z low end , active high ;M574 Z0 P"nil" ; No Z endstop ; Z-Probe ------- M558 P8 C"^121.io0.in" H5 F300 T500 ; Z probe type + the dive height + speeds ; Fnnn Feed rate (i.e. probing speed, mm/min) ; Hnnn Dive height (mm) ; Tnnn Travel speed to and between probe points (mm/min) ; In 1==invert G31 P500 X25 Y25 Z2.5 ; set Z probe trigger value, offset and trigger height M557 X40:260 Y40:260 S20 ; define mesh grid ; THERMIC ------------------------------------------------ ; Heaters M308 S0 P"spi.cs0" Y"rtd-max31865" A"Bed" ; configure sensor 0 as thermistor on pin temp0 M950 H0 C"out0" T0 ; create bed heater output on out0 and map it to sensor 0 M307 H0 B1 S1.00 ; enable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M308 S1 P"121.temp0" Y"pt1000" A"Hotend" ; configure sensor 1 as thermistor on pin 121.temp0 M950 H1 C"121.out0" T1 ; create nozzle heater output on 121.out0 and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S280 ; set temperature limit for heater 1 to 280C M308 S2 P"spi.cs1" Y"rtd-max31865" A"Short" ; define temperature sensor number 3 as a PT100 M950 H2 C"spi.cs1" T2 M308 S3 A"Chamber" P"temp_0" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 0 as thermistor on pin temp0 ; Fans ------------------------------------------------ M950 F0 C"121.out1" Q10 ; PARTS - create fan 0 on pin 121.out1 and set its frequency M106 P0 C"Fan_Part" S0 H-1 ; PARTS - set fan 0 name and value. Thermostatic control is turned off M950 F1 C"121.out2" Q250 ; HOTEND - create fan 1 on pin 121.out2 and set its frequency M106 P1 C"Fan_Hotend" S1 H1 T45 ; HOTEND - set fan 1 name and value. Thermostatic control is turned on ; Tools ------------------------------------------------ M563 P0 S"Dragon Hotend" D0 H1 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 T0 ; select first tool ; Custom settings ------------------------------------------------ M575 P1 S1 B57600 ; PanelDue M950 J1 C"io8.in" ; eStop Definition -> https://docs.duet3d.com/User_manual/Connecting_hardware/IO_E_stop M581 P1 T0 S1 R0 ; eStop Behaviour ; Misc ------------------------------------------------ ;M501 ; load sys/config-override.g on the SD card
; homey.g ; Basis https://duet3d.dozuki.com/Wiki/Stall_detection_and_sensorless_homing if sensors.probes[0].value[0] = 1000 ;G92 Y0 G91 ; REL M913 X30 Y30 ; Current to 30% G1 H2 Z2 F6000 G1 H1 Y310 F10000 ; +Y probe move, fast, set axis limit G1 H2 Y10 F1000 ; back off from the endstop, individual motor mode G1 H1 Y5.2 F1000 ; +Y probe move, slow, set axis limit G1 H2 Y10 F10000 ; back off from the endstop, Individual motor mode G1 H2 Z-2 F6000 M913 X100 Y100 ; Current to 100% G90 ; ABS else echo "homey.g: REMOVE THE PROBE
; homey.g ; Basis https://duet3d.dozuki.com/Wiki/Stall_detection_and_sensorless_homing if sensors.probes[0].value[0] = 1000 G92 X0 G91 ; REL M913 X30 Y30 ; Set Current to 30% G1 H2 Z2 F3000 G1 H1 X310 F10000 ; +X probe move, fast, set axis limit G1 H2 X-5 F10000 ; back off from the endstop, individual motor mode G1 H1 X6 F1000 ; +X probe move, slow, set axis limit G1 H2 X-10 F10000 ; back off from the endstop, Individual motor mode G1 H2 Z-2 F3000 M913 X100 Y100 ; Set Current to 100% G90 ; ABS ;G1 H2 X20 F99999 else echo "homex.g: REMOVE THE PROBE"
=== Diagnostics === RepRapFirmware for Duet 3 MB6HC version 3.4.0 (2022-03-15 18:57:24) running on Duet 3 MB6HC v1.01 or later (standalone mode) Board ID: 08DJM-956BA-NA3TN-6J9DD-3S86T-KUBGS Used output buffers: 14 of 40 (14 max) === RTOS === Static ram: 151000 Dynamic ram: 96296 of which 328 recycled Never used RAM 103048, free system stack 200 words Tasks: NETWORK(ready,26.3%,227) ETHERNET(notifyWait,0.1%,173) HEAT(notifyWait,0.0%,321) Move(notifyWait,0.0%,352) CanReceiv(notifyWait,0.0%,797) CanSender(notifyWait,0.0%,374) CanClock(delaying,0.0%,339) TMC(notifyWait,8.1%,92) MAIN(running,65.5%,925) IDLE(ready,0.0%,30), total 100.0% Owned mutexes: === Platform === Last reset 00:08:33 ago, cause: software Last software reset at 2022-05-08 10:50, reason: User, GCodes spinning, available RAM 102976, slot 2 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00400000 BFAR 0x00000000 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,0 Step timer max interval 130 MCU temperature: min 36.3, current 38.0, max 38.1 Supply voltage: min 23.8, current 23.8, max 23.9, under voltage events: 0, over voltage events: 0, power good: yes 12V rail voltage: min 12.0, current 12.0, max 12.1, under voltage events: 0 Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0 Events: 0 queued, 0 completed Driver 0: standstill, SG min 0, mspos 8, reads 41462, writes 14 timeouts 0 Driver 1: standstill, SG min 0, mspos 8, reads 41462, writes 14 timeouts 0 Driver 2: standstill, SG min 0, mspos 8, reads 41461, writes 15 timeouts 0 Driver 3: standstill, SG min 0, mspos 8, reads 41462, writes 15 timeouts 0 Driver 4: standstill, SG min 0, mspos 888, reads 41462, writes 15 timeouts 0 Driver 5: standstill, SG min 0, mspos 248, reads 41462, writes 15 timeouts 0 Date/time: 2022-05-08 11:13:32 Slowest loop: 12.43ms; fastest: 0.05ms === Storage === Free file entries: 10 SD card 0 detected, interface speed: 25.0MBytes/sec SD card longest read time 3.0ms, write time 1.8ms, max retries 0 === Move === DMs created 125, segments created 0, maxWait 0ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === AuxDDARing === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 Heater 1 is on, I-accum = 0.0 === GCodes === Segments left: 0 Movement lock held by null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is idle in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is idle in state(s) 0 Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty === CAN === Messages queued 4628, received 6153, lost 0, boc 0 Longest wait 2ms for reply type 6053, peak Tx sync delay 6, free buffers 50 (min 49), ts 2566/2565/0 Tx timeouts 0,0,0,0,0,0 === Network === Slowest loop: 29.08ms; fastest: 0.02ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions Telnet(0), 0 sessions HTTP sessions: 1 of 8 - Ethernet - State: active Error counts: 0 0 0 0 0 Socket states: 5 5 2 2 2 2 0 2```
-
@tomi just to make sure, if you check endstop state using M119 they show as not triggered when they aren't? Otherwise you will have to invert the pins.
-
@oliof M119 shows the right status and reacts as intended by activating the endstops. Same with the movement of the gantry: before and after the home script it moves the correct way (in all ways XY and Z) – just with this homey.g it's behaving strange…
-
@tomi I just noticed
G1 H1 Y310 F10000 ; +Y probe move, fast, set axis limit G1 H2 Y10 F1000 ; back off from the endstop, individual motor mode
should be
Y-10
G1 H1 Y5.2 F1000 ; +Y probe move, slow, set axis limit
should be
Y11
(larger than the backoff)G1 H2 Y10 F10000 ; back off from the endstop, Individual motor mode
should be
Y-10
-
@oliof Thanks oliof: that‘s right what you mention.
But this is exactly the problem. If I use those (negative) G1 movements to back off it crashes into the endstop - not as you expect changing the direction!!!
Only if I keep the positive numbers it goes away from the endstop. As I said: weird! -
@tomi said in Weird behaviour homing Y-axis (only):
@oliof Thanks oliof: that‘s right what you mention.
But this is exactly the problem. If I use those (negative) G1 movements to back off it crashes into the endstop - not as you expect changing the direction!!!
Only if I keep the positive numbers it goes away from the endstop. As I said: weird!What direction do the G1 H1 moves go? Away from or towards the endstop?
And what is the purpose of checking the probe when homing?
Thanks.
Frederick
-
@fcwilt said in Weird behaviour homing Y-axis (only):
Hi FrederikWhat direction do the G1 H1 moves go? Away from or towards the endstop?
-
The G1 H1 moves towards the endstop. Intended behavior in all axes – everything good here. BTW same as when I move the carriage by typing the commands.
-
The G1 H2 though behaves different:
– on homeX.g it works as we would expect (moving away from the endstop by using «negative values»).
– but on the homeY.g with negative values it moves towards the endstop (it overshoots). Therefore I had do change this to positive values – what seems very silly to me…
And what is the purpose of checking the probe when homing?
I'm not yet probing – and I don't have touched the z-axis yet, because of the described strange behavior. The probing will use the clicky probe (https://github.com/jlas1/Klicky-Probe) combined with the z-endstop (https://github.com/protoloft/klipper_z_calibration).
But this is fiction at the moment: since I don't like a machine not to behave in a predictable manner...
Greetings and thanks – Tomi
-
-
Thanks for the feedback.
Just FYI:
I have a Euclid Z probe (a removeable type) and I have found no reason to check the mounted state of the probe during homing of any axis other than Z.
I equip all my printers with both a Z endstop and a Z probe. Having a Z endstop speeds homing and simplifies homing code.
As to your Y issue:
It's more than weird it simply shouldn't be happening.
I would suggest you comment out the M913 commands in homeY.g and see if that makes a difference.
Also you need to put a M400 command immediately before each M913 command you use.
Let us know what happens.
Frederick
-
This post is deleted! -
@arnold_r_clark said in Weird behaviour homing Y-axis (only):
@fcwilt said in Weird behaviour homing Y-axis (only):
Having a Z endstop speeds homing and simplifies homing code.
How so ?
When you home with a Z probe the X and Y homing code has commands to raise/lower Z to be sure the nozzle is clear of the bed. No need for that with a Z endstop since you first home Z.
And generally you can use fasters speeds with an endstop sensor then you can with a Z probe, but the varies with the specific endstop sensor and Z probe type.
I use optical endstop sensors and you can use very fast speeds with them since there is no impact and they can be mounted so there is plenty of room for movement to stop.
Frederick
-
This post is deleted! -
@arnold_r_clark said in Weird behaviour homing Y-axis (only):
When you home with a Z probe the X and Y homing code has commands to raise/lower Z to be sure the nozzle is clear of the bed.
im sorry but that statement is not 100% correct which you tried to cover by stating "but varies with the specific end-stop sensor and z probe type" so in effect your initial statement should be preceded with "in my opinion"
That part about moving Z up/down during homing X and Y does not depend on the type of hardware. It's about being sure nothing is touching the bed during the XY moves.
And the statement about "varying" was part of the sentence dealing with speed and it is not an opinion.
And to throw another spanner into the mix what about a z probe that uses an optical end-stop on its trigger ?
The only device I know like that is servo based and you have to deploy/retract some part of it, which takes time. A Z endstop if fixed in place.
Frederick