Git Product home page Git Product logo

Comments (38)

ellensp avatar ellensp commented on June 12, 2024 1

Everyone here please tests out #27137 (or use my fork of bugfix https://github.com/ellensp/Marlin/tree/auto-endstops)

This fixes the auto allocation of Z2, Z3 and Z4 and adds some sanity checks looking for for impossible settings
eg With X homing to min and setting Z2_STOP_PIN to X_MIN_PIN, this is a pin conflict.
eg With Z homing to max and setting Z2_STOP_PIN to Z_MAX_PIN, this is also a pin conflict.

from marlin.

ellensp avatar ellensp commented on June 12, 2024 1

Firstly to reiterate:

There is a bug in 2.1.2.2 and 2.1.2.3 that stops the Z axis moving when there are two Z axis on two drivers and two endstops.
This bug is not present in Bugfix 2.1.x, it was introduced in creating Marlin 2.1.2.2 from Marlin 2.1.2.1 with snippets of code from bugfix

Found it!

After a full very long day of digging through the bowels of Marlin, looking at every nook and cranny, after making a physical test rig to test this without taking up to much space. I have homing working on Dual Z under 2.1.2.3 (same patch should fix 2.1.2.2 also)

My 'fake' dual Z axis test rig (yea its shaky cam, I'm not a youtuber!) https://youtu.be/SlSB4AEmQ_A

Details

It comes down to 1 line of Marlin/src/module/stepper.cpp

#define STEPTEST(A,M,I) TERN0(HAS_ ##A## ##I## _ ##M, !(TEST(endstops.state(), A## ##I## _ ##M) && M## DIR(A)) && !locked_ ##A## ##I## _motor)

This macro builds a string starting with "HAS_" but "HAS_" was replaced in cbaff4b with "USE_" Old examples being HAS_X_MIN etc, Ie it is making endstop related strings.

Since this are now USE_X_MIN, this macro fails to find the end stops

This line should be the following (taken from bugfix 2.1.x)

#define STEPTEST(A,M,I) TERN0(USE_##A##I##_##M, !(TEST(endstops.state(), A##I##_##M) && M## DIR(A)) && !locked_ ##A##I##_motor)

After this line is updated I can home dual Z with Z_MULTI_ENDSTOPS again

Here is a diff for those that want that format

diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp
index 171fb7e2ee..9d30e3a479 100644
--- a/Marlin/src/module/stepper.cpp
+++ b/Marlin/src/module/stepper.cpp
@@ -274,7 +274,7 @@ xyze_int8_t Stepper::count_direction{0};
 #define MINDIR(A) (count_direction[_AXIS(A)] < 0)
 #define MAXDIR(A) (count_direction[_AXIS(A)] > 0)
 
-#define STEPTEST(A,M,I) TERN0(HAS_ ##A## ##I## _ ##M, !(TEST(endstops.state(), A## ##I## _ ##M) && M## DIR(A)) && !locked_ ##A## ##I## _motor)
+#define STEPTEST(A,M,I) TERN0(USE_##A##I##_##M, !(TEST(endstops.state(), A##I##_##M) && M## DIR(A)) && !locked_ ##A##I##_motor)
 
 #define DUAL_ENDSTOP_APPLY_STEP(A,V)             \
   if (separate_multi_axis) {                     \

I will create PR for this in a day or so.

from marlin.

thisiskeithb avatar thisiskeithb commented on June 12, 2024

Please download bugfix-2.1.x to test with the latest code and let us know if you're still having this issue.

from marlin.

arades79 avatar arades79 commented on June 12, 2024

Same problem exists for dual Y (and probably dual X).

Odd since this was working in the last release, and there's no obvious changes in the code around these.

Also odd since the firmware thinks it's moving the axes the whole time.

After doing some debugging, seems like the issue is any time 'set_separate_?_axis(true)' is active.

Ill see about fixing it this week and submit any fixes I find

from marlin.

ellensp avatar ellensp commented on June 12, 2024

2.1.2.2 is very buggy and should not be used. List of known 2.1.2.2 bugs and fixes https://github.com/MarlinFirmware/Marlin/issues?q=is%3Aissue+2.1.2.2+in%3Atitle+label%3A%22Bug%3A+Confirmed+!%22+

from marlin.

891paul avatar 891paul commented on June 12, 2024

I need a stable version. Which one would you recommend?

from marlin.

classicrocker883 avatar classicrocker883 commented on June 12, 2024

isnt there an option to enable for dual Z stepper endstops, like G34? because doesn't the I3 use this to level the gantry?
https://marlinfw.org/docs/gcode/G034-zsaa.html

from marlin.

mouse2233 avatar mouse2233 commented on June 12, 2024

The bug (on my board) is still active. After the suggested fixes, the behavior did not change on my Octopus PRO board. bugfix-2.1.x (03.05.2024) did not affect the printer behavior.

from marlin.

stklcode avatar stklcode commented on June 12, 2024

Same here on Anycubic i3 Mega P.

2.1.2.1
works fine

2.1.2.2
wrong Z stepping (manual movement is doubled), G28 blocks Z axes and does not move

2.1.x with all proposed fixes applied (pending PRs)
manual movement is fine again, Z homing still blocks

bugfix-2.1.x
works fine (answer updated, did not work in previous tests)

from marlin.

ellensp avatar ellensp commented on June 12, 2024

@stklcode

with all proposed fixes applied

What proposed fixes are you referring to?

And please provide your bugfix configs if you also have this issue under bugfix

from marlin.

stklcode avatar stklcode commented on June 12, 2024

What proposed fixes are you referring to?

All currently open PRs für 2.1.x
#27020 #27021 #27022 #27023 #27024 #27025 #27026

from marlin.

ellensp avatar ellensp commented on June 12, 2024

All currently open PRs für 2.1.x #27020 #27021 #27022 #27023 #27024 #27025 #27026

Those are not for bugfix
Those are fixes for broken 2.1.2.2. ie Marln 2.1.x, not bugfix 2.1.x
Use bugfix code unmodified

from marlin.

stklcode avatar stklcode commented on June 12, 2024

Those are not for bugfix

I know. As I wrote before: "2.1.x with all proposed fixes applied" (not "bugfix-").

from marlin.

ellensp avatar ellensp commented on June 12, 2024

It was unclear, before you edited it.

from marlin.

stklcode avatar stklcode commented on June 12, 2024

Yep, sorry for the confusion.

Just re-tested my configuration and extracted the actual target (Anycubic i3 Mega P with BLTouch and case light - guess the latter is not of any relevance here 😉) on top of the current bugfix-2.1.x branch (eb781af).

=> bugfix-2.1.x works ✔️ (just had a minor config bug with the endstops)
=> 2.1.x still broken

Configs attached:


Console outputs with DEBUG_LEVELING_FEATURE enabled and M111 S32 (on the broken 2.1.x branch)

Home X (G28 X)
Lifts Z axis, and homes X. So far acting normally.

console output
Send: G28 X
Recv: >>> G28  X2.00 Y2.00 Z0.00
Recv: Machine Type: Cartesian
Recv: Probe: BLTOUCH
Recv: Probe Offset X-2.00 Y-25.00 Z-0.40 (Left-Front & Below Nozzle)
Recv: Auto Bed Leveling: BILINEAR (disabled)
Recv: 
Recv: >>> set_bed_leveling_enabled  X2.00 Y2.00 Z0.00
Recv: <<< set_bed_leveling_enabled  X2.00 Y2.00 Z0.00
Recv: Raise Z before homing:
Recv: do_blocking_move_to_z(5.00, 10.00)
Recv: >>> do_blocking_move_to  X2.00 Y2.00 Z0.00
Recv: >  X2.00 Y2.00 Z5.00
Recv: <<< do_blocking_move_to  X2.00 Y2.00 Z5.00
Recv: BLTouch from 90 to 160
Recv: BLTouch from 160 to 90
Recv: >>> homeaxis(X)
Recv: Home Fast: -337.50mm
Recv: >>> do_homing_move  X2.00 Y2.00 Z5.00
Recv: ...(X, -337.50, [50.00])
[...]
Recv: <<< do_homing_move  X2.00 Y2.00 Z5.00
Recv: Move Away: 5.00mm
Recv: >>> do_homing_move  X2.00 Y2.00 Z5.00
Recv: ...(X, 5.00, [50.00])
Recv: <<< do_homing_move  X2.00 Y2.00 Z5.00
Recv: Re-bump: -10.00mm
Recv: >>> do_homing_move  X2.00 Y2.00 Z5.00
Recv: ...(X, -10.00, 25.00)
Recv: <<< do_homing_move  X2.00 Y2.00 Z5.00
Recv: >>> set_axis_is_at_home(X)
Recv: Axis X home_offset = 0.00 position_shift = 0.00
Recv: > home_offset[X] = 0.00
Recv:   current_position= X0.00 Y2.00 Z5.00 :
Recv: <<< set_axis_is_at_home(X)
Recv:   current_position= X0.00 Y2.00 Z5.00 : sync_plan_position
Recv:   current_position= X0.00 Y2.00 Z5.00 : > AFTER set_axis_is_at_home
Recv: <<< homeaxis(X)
Recv:   current_position= X2.00 Y2.00 Z5.00 : sync_plan_position
Recv: X:2.00 Y:2.00 Z:5.00 E:0.00 Count X:0 Y:160 Z:2000
Recv: <<< G28  X2.00 Y2.00 Z5.00
Recv: ok

Home Y (G28 Y)
The same as for X, works as expected.

Home Z (G28 Z)

Absolutely no movement on any Z stepper at all. Neither before nor after endstop push.

console output
Send: G28 Z
Recv: >>> G28  X2.00 Y2.00 Z5.00
Recv: Machine Type: Cartesian
Recv: Probe: BLTOUCH
Recv: Probe Offset X-2.00 Y-25.00 Z-0.40 (Left-Front & Below Nozzle)
Recv: Auto Bed Leveling: BILINEAR (disabled)
Recv: 
Recv: >>> set_bed_leveling_enabled  X2.00 Y2.00 Z5.00
Recv: <<< set_bed_leveling_enabled  X2.00 Y2.00 Z5.00
Recv: >>> homeaxis(Z)
Recv: Home Fast: -315.00mm
Recv: >>> do_homing_move  X2.00 Y2.00 Z5.00
Recv: ...(Z, -315.00, [4.00])

(no movement, just "busy: procwessing" messages)

(maually push Z endstops here)

Recv: <<< do_homing_move  X2.00 Y2.00 Z5.00
Recv: Move Away: 2.00mm
Recv: >>> do_homing_move  X2.00 Y2.00 Z5.00
Recv: ...(Z, 2.00, [4.00])
Recv: <<< do_homing_move  X2.00 Y2.00 Z5.00
Recv: Re-bump: -4.00mm
Recv: >>> do_homing_move  X2.00 Y2.00 Z5.00
Recv: ...(Z, -4.00, 1.00)
Recv: <<< do_homing_move  X2.00 Y2.00 Z5.00
Recv: >>> set_axis_is_at_home(Z)
Recv: *** Z HOMED TO ENDSTOP ***
Recv: Axis Z home_offset = 0.00 position_shift = 0.00
Recv: > home_offset[Z] = 0.00
Recv:   current_position= X2.00 Y2.00 Z0.00 :
Recv: <<< set_axis_is_at_home(Z)
Recv:   current_position= X2.00 Y2.00 Z0.00 : sync_plan_position
Recv:   current_position= X2.00 Y2.00 Z0.00 : > AFTER set_axis_is_at_home
Recv: <<< homeaxis(Z)
Recv: >>> move_z_after_homing  X2.00 Y2.00 Z0.00
Recv: >>> move_z_after_probing  X2.00 Y2.00 Z0.00
Recv: <<< move_z_after_probing  X2.00 Y2.00 Z0.00
Recv: <<< move_z_after_homing  X2.00 Y2.00 Z0.00
Recv:   current_position= X2.00 Y2.00 Z0.00 : sync_plan_position
Recv: X:2.00 Y:2.00 Z:0.00 E:0.00 Count X:160 Y:160 Z:0
Recv: <<< G28  X2.00 Y2.00 Z0.00
Recv: ok
Send: M113 S2
Recv: ok

Endstop detection with M119 looks okay.

condition z_min z2_min z_probe
no endstop pushed open open triggered
left Z endstop pushed triggered open triggered
right Z endstop pushed open triggered triggered
both Z endstops pushed triggered triggered triggered

from marlin.

SaKiEQ avatar SaKiEQ commented on June 12, 2024

same here on bugfix-2.1..x

Just migrated from an older Marlin version while moving Z-home positions from MIN to MAX, nothing in the wiring changed.

Left Z (Z) was using Z_MIN, Right Z (Z2) was using Z_MAX.

When I home Z, both motors spin as expected, only Z2 (aka Z_Max) triggers the home positions.

Enabling the Debug menu, reveals that Z2 endstop (aka Z_MAX) triggers both endstops in the debug display,
while Z_MIN does nothing !

I tripple checked config file, pin config, all seams ok.

Somewhere in the code Z_MIN and Z_MAX are mixed up, but I can not find where... (i mean deeper than the user config files, I dug trough a large portion of the code so far.)

from marlin.

SaKiEQ avatar SaKiEQ commented on June 12, 2024

The error only happens when Z -1 is set, on Z 1 both endstops register in the debugger normally.

from marlin.

SaKiEQ avatar SaKiEQ commented on June 12, 2024

Solved the problem for my self, Z is now homing using both ent stops and 'leveling' the Z axis.

The problem is when using "Z_Home_Dir 1", with the logical configuration to home_to_Max, it confuses
the end stop pins, by using both Z_Min and Z_Max on the same physical PIN. To circumvent this, I use
"Z_Home_Dir -1" but inverting the "INVERT_Z_DIR true". This is not ideal but seems to work.

I am somewhat confident the problem originates from pins_postprocess.h (around line 552 "HAS_Z_AXIS" and
onwards, but I did not dig deeper yet).

Dual Z-Endstops at Z-Max (Top, not like usual bottom),

Z -> Z_Min (plug)
Z2 -> Z_Max (plug)

Z_Home_Dir -1 (so it homes to Min, but using INVERT_Z_DIR true to achieve this)

Manually defined:
#define Z_MAX_PIN 19
#define Z_MIN_PIN 18

Screen Shot 2024-05-27 at 3 09 31 PM

Screen Shot 2024-05-27 at 3 09 44 PM

from marlin.

ellensp avatar ellensp commented on June 12, 2024

To all those who say they have the same issue. Please attach your Bugfix 2.1.x config files
There could be multiple issues here or just user errors, without configs there is no way to help those who have not provided config files..

Eg I suspect this is what is wrong with SaKiEQ But no configs to confirm

If your board has Z_MIN_PIN and Z_MAX_PIN changing Z homing from Z-Min to Z-Max then Z will use Z-Max and Z2 should be configured to use Z-Min.

I suspect simply defining Z2_STOP_PIN to Z_MIN_PIN in Configuration_adv.h will fix this for you.

While expecting Marlin to guess it for you currently does get it wrong.
Ie

#if HAS_Z_AXIS                                          // true
  #ifdef Z_STOP_PIN                                     // false
    #if Z_HOME_TO_MIN
      #define Z_MIN_PIN Z_STOP_PIN
    #elif Z_HOME_TO_MAX
      #define Z_MAX_PIN Z_STOP_PIN
    #endif
  #elif Z_HOME_TO_MIN                                   // false  
    #define Z_STOP_PIN Z_MIN_PIN
  #elif Z_HOME_TO_MAX                                   // true
    #define Z_STOP_PIN Z_MAX_PIN                        // Z_STOP_PIN is defined as Z_MAX_PIN
  #endif
  #if ENABLED(Z_MULTI_ENDSTOPS) && PIN_EXISTS(Z_STOP)   // true
    #ifndef Z2_STOP_PIN                                 // true
      #define Z2_STOP_PIN Z_STOP_PIN                    // error,  Z2_STOP_PIN should not be set to Z_MAX_PIN
    #endif

from marlin.

ellensp avatar ellensp commented on June 12, 2024

I have tagged this issue as bug confirmed for the above code issue, which is present in bugfix 2.1.x

from marlin.

SaKiEQ avatar SaKiEQ commented on June 12, 2024

My bad for not including the config. Will add shortly !

The rational of not including the config was, that it was an original config, with only the axis and endstops adjusted, so according to my self - nothing should interfere.

I am not currently on the machine that contains the used file, but will provide it to you as soon as I am back.

Furthermore I made a comparison of older version of Marlin's pins_postprocess.h, there are some minor discrepancies that I had no time to test yet.

from marlin.

SaKiEQ avatar SaKiEQ commented on June 12, 2024

Here we go,

Configuration.h
Configuration_adv.h

Comment out lines 1155 and 1556 in Configuration.h to replicate native error.

Hope this helps.

Archive.zip

from marlin.

ellensp avatar ellensp commented on June 12, 2024

@SaKiEQ Im confused

Line 1155 is " //#define ENDSTOPPULLDOWN_VMIN"
Line 1556 is " * to avoid collisions during probing."

from marlin.

SaKiEQ avatar SaKiEQ commented on June 12, 2024

Screen Shot 2024-05-29 at 10 23 10 PM

@SaKiEQ Im confused

Line 1155 is " //#define ENDSTOPPULLDOWN_VMIN" Line 1556 is " * to avoid collisions during probing."

I think my bad - without verifying. My work file has all the heat bed and other features I do not use removed, just items
that would not trigger from a non exiting #define. This mainly so I can find my faster around the file when testing configs... Once completed I merge the work file with original.
It might be that I read by accident the line numbers from the 'redacted' file, not original.

from marlin.

SaKiEQ avatar SaKiEQ commented on June 12, 2024

May I suggest a modification to the configuration_adv.h ?

//********************************************************************************************************************
// Multi-Z steppers - your version
// Using X/Y/Z _MAX_PIN's ase _MAX Enstops for Z2, Z3 and Z4 respectively
//********************************************************************************************************************
#ifdef Z2_DRIVER_TYPE
//#define INVERT_Z2_VS_Z_DIR // Z2 direction signal is the opposite of Z

#define Z_MULTI_ENDSTOPS          // Other Z axes have their own endstops

#if ENABLED(Z_MULTI_ENDSTOPS)
	#define Z2_STOP_PIN X_MAX_PIN   // Z2 endstop pin override
	#define Z2_ENDSTOP_ADJUSTMENT 0   // Z2 offset relative to Z endstop
#endif

#ifdef Z3_DRIVER_TYPE
	//#define INVERT_Z3_VS_Z_DIR      // Z3 direction signal is the opposite of Z
		#if ENABLED(Z_MULTI_ENDSTOPS)
		//#define Z3_STOP_PIN Y_MAX_PIN // Z3 endstop pin override
		#define Z3_ENDSTOP_ADJUSTMENT 0 // Z3 offset relative to Z endstop
	#endif
#endif
#ifdef Z4_DRIVER_TYPE
			//#define INVERT_Z4_VS_Z_DIR      // Z4 direction signal is the opposite of Z
		#if ENABLED(Z_MULTI_ENDSTOPS)
			//#define Z4_STOP_PIN Z_MAX_PIN // Z4 endstop pin override
		#define Z4_ENDSTOP_ADJUSTMENT 0 // Z4 offset relative to Z endstop
	#endif
#endif

#endif

//********************************************************************************************************************
// Multi-Z steppers - my suggestion
//********************************************************************************************************************
#define Z_MULTI_ENDSTOPS // Other Z axes have their own endstops

#ifdef Z_MULTI_ENDSTOPS
	#ifdef Z2_DRIVER_TYPE
		#if ENABLED(Z_MULTI_ENDSTOPS)
			//#define INVERT_Z2_VS_Z_DIR        // Z2 direction signal is the opposite of Z
			#define Z2_STOP_PIN X_MAX_PIN   	// Z2 endstop pin override
			#define Z2_ENDSTOP_ADJUSTMENT 0  	// Z2 offset relative to Z endstop
	  	#endif

	#ifdef Z3_DRIVER_TYPE
			//#define INVERT_Z3_VS_Z_DIR      	// Z3 direction signal is the opposite of Z
		#if ENABLED(Z_MULTI_ENDSTOPS)
		  //#define Z3_STOP_PIN Y_MAX_PIN 	// Z3 endstop pin override
		  #define Z3_ENDSTOP_ADJUSTMENT 0 	// Z3 offset relative to Z endstop
		#endif
	  #endif

	  #ifdef Z4_DRIVER_TYPE
		//#define INVERT_Z4_VS_Z_DIR      	// Z4 direction signal is the opposite of Z
		#if ENABLED(Z_MULTI_ENDSTOPS)
		  //#define Z4_STOP_PIN Z_MAX_PIN 	// Z4 endstop pin override
		  #define Z4_ENDSTOP_ADJUSTMENT 0 	// Z4 offset relative to Z endstop
		#endif
	  #endif
	#endif
#endif //Multi Enstops

from marlin.

ellensp avatar ellensp commented on June 12, 2024

That wont work.

What if you don't want Z_MULTI_ENDSTOPS (a very common configuration) how can you invert INVERT_Z2_VS_Z_DIR

from marlin.

SaKiEQ avatar SaKiEQ commented on June 12, 2024

from marlin.

stklcode avatar stklcode commented on June 12, 2024

Everyone here please tests out #27137 (or use my fork of bugfix https://github.com/ellensp/Marlin/tree/auto-endstops)

It doesn't break anything for me on bugfix-2.1.x, but it does not resolve my issue on 2.1.x either. (2 Z steppers and 2 Z_MIN endstops - homing Z does just blocks the axis and does not move)

So I would guess we have two different problems here.

Relevant config excerpt:

#define Z_HOME_DIR -1
#define INVERT_Z_DIR false

#define Z_DRIVER_TYPE  A4988
#define Z2_DRIVER_TYPE A4988

#define Z_MULTI_ENDSTOPS

// Implicitly from TRIGORILLA_MAPPING_I3MEGA
#define Z_STOP_PIN  43
#define Z2_STOP_PIN 18

On bugfix-2.1.x I do not have the issue, even without your patch, so it's likely a different problem. Just need to explicitly add a second config line to invert both endstops.

#define Z_MIN_ENDSTOP_HIT_STATE LOW
#define Z2_MIN_ENDSTOP_HIT_STATE LOW

Trying the equivalent on 2.1.x unfortunately does not change anything.

#define Z_MIN_ENDSTOP_INVERTING true
#define Z2_MIN_ENDSTOP_INVERTING true

(until 2.1.2.1 it actually worked fine without the explicit Z2 line, to that's yet another regression with trivial workaround)

Full configs already attached in previous comment #27014 (comment)

from marlin.

SaKiEQ avatar SaKiEQ commented on June 12, 2024

from marlin.

stklcode avatar stklcode commented on June 12, 2024

I found out that you cant assign the pins manually in the never versions.

Well, my config works fine in 2.1.2.1 and also in latest bugfix-2.1.x without additional patches. So it’s broken in 2.1.2.2 and 2.1.2.3, but older or newer is okay.

Marlin begins to do odd things, like trigger the two stops at once while only one is actually active.

Triggering does not seem to be my problem. It’s the Z steppers that block, pushing both endstops manually ends the leveling process as expected.

Have you enables Endstop debugging, so you get the live menu or via the M43 command, to test wether the endstops are triggering correctly.

Yes, see previously referenced comment #27014 (comment)

Looks like both endstops are detected correctly, at least in M119 output.

Only difference in pin assignments after postprocessing between 2.1.x and bugfix-2.1.x is that Z_MAX_PIN is defined as -1 in the postprocessor. But commenting out this assignment or explicitly using -1 (either way pin assignments are exactly the same after postprocess) does not make any difference, so that’s not the point either.

I see some stuff going wrong in the endstop assignments (which are taken care of in #27137), but I don’t think we have the same problem.

from marlin.

SaKiEQ avatar SaKiEQ commented on June 12, 2024

from marlin.

stklcode avatar stklcode commented on June 12, 2024

For my eyes the endstop pins do look just fine. Debugging with M119 gives plausible values and also with pin debugging with M43 E1 seems to report correct behavior on my machine:

Send: M43 E1
Recv: endstop monitor enabled
Recv: ok
Recv:   X_MIN:1  Y_MIN:1  Z_MIN:1  Z2_MIN:1

# push left endstop
Recv:   Z_MIN:0
# release left endstop
Recv:   Z_MIN:1
# push right endstop
Recv:   Z2_MIN:0
# release right endstop
Recv:   Z2_MIN:1
# push both endstops
Recv:   Z_MIN:0  Z2_MIN:0
# release both endstops
Recv:   Z_MIN:1  Z2_MIN:1

(all endstop inputs are active low)

No misassignment, double trigger or similar.

I have tried various combinations of [Z,Z2]_STOP_PIN, [Z,Z2]_MIN_PIN and [X,Z]_MAX_PIN as well without any change.

Z axis just does not move anywhere when homing with G28 Z. I hear and feel Z steppers blocking and when I finally push both endstops, Marlin "thinks" that homing is done and sets Z position to 0.
I skimmed through endstops, motion and G28 routines, but I'm not very deep into this part of the code to see any obvious things here.

from marlin.

SaKiEQ avatar SaKiEQ commented on June 12, 2024

Do you have any BLtouch or other leveling sensors configured.

I had some confusing behavior at one point while using the standard config for probe pin.
I switched to a manual pin assignment for the probe pin (pin 40 in my case) and I even have bed leveling
working.

I saw some wild double and tripple engagement of the Z endstops, where one endstop triggered two or 3 in the monitor.
(Z_Max, Z2_Max and Probe), before moving the Z_Min probe outside of the standard config pin range.

Just to confirm, are you also using inverted positioning of the Z endstops, meaning on the top of the frame instead of
bottom ?

If it helps you and you have a similar setup. I am happy to post my config files.

I am running on a Arduino Mega2560, with Ramps 1.4 board. I am using the machine as mini CNC not Printer, but
that should not change anything.

from marlin.

stklcode avatar stklcode commented on June 12, 2024

Do you have any BLtouch or other leveling sensors configured.

Yes. I will check this config as well and see if it can be fixed that way.

Probe pins also behave as expected, but I’ll dig down little deeper into the internal assignments.

Just to confirm, are you also using inverted positioning of the Z endstops, meaning on the top of the frame instead of bottom ?

No, 2 Z endstops at the bottom.

If it helps you and you have a similar setup. I am happy to post my config files.

I am running on a Arduino Mega2560, with Ramps 1.4 board. I am using the machine as mini CNC not Printer, but that should not change anything.

You already did or is the previous file out of date?

I’m on an Anycubic i3 Mega P, also with a RAMPS Trigorilla 1.4 board.
1 stepper/endstop each for X/Y, 2 for Z, 1 hotend, 1 laser cutter and a BLTouch probe. (configs attached to some previous answer)

from marlin.

SaKiEQ avatar SaKiEQ commented on June 12, 2024

In case you want to see it actually working...
I made a custom bed probe, based on a steel pin (on the right of the spindle), with a magnet on top and hall effect sensor.
It is held in stow position by a magnet, a move to Z and X_Max releases the pin, from where the probing starts.
The sequence show the entire stop, then release, then probe some points.

https://youtu.be/R-i3s8p36n4?si=mPGl7WFlnIsNA3vD

from marlin.

SaKiEQ avatar SaKiEQ commented on June 12, 2024

Do you have any BLtouch or other leveling sensors configured.

Yes. I will check this config as well and see if it can be fixed that way.

Probe pins also behave as expected, but I’ll dig down little deeper into the internal assignments.

Just to confirm, are you also using inverted positioning of the Z endstops, meaning on the top of the frame instead of bottom ?

No, 2 Z endstops at the bottom.

If it helps you and you have a similar setup. I am happy to post my config files.
I am running on a Arduino Mega2560, with Ramps 1.4 board. I am using the machine as mini CNC not Printer, but that should not change anything.

You already did or is the previous file out of date?

I’m on an Anycubic i3 Mega P, also with a RAMPS 1.4 board. 1 stepper/endstop for X/Y, 2 for Z, 1 hotend, 1 laser cutter and a BLTouch probe. (configs attached to some previous answer)

My above config would be out of date, since I used the latest version pushed for testing and reconfigured everything to have a clean configuration to report on.

My config contains the cheapo LCD config and some Neopixels, the later should not get in the way, the LCD you might want to disregard since you are running on a different system.

My config with the home position on the top made things very confusing, since the coordinate system still has to remain with Z_MIN at zero on the bed level, so home position is not ZERO ! its in my case +60mm or so. Else bed level / probing would not work, since the probe need to run to ZERO.

Im not on the right computer at the moment, will post the up to date config when i get back.

from marlin.

SaKiEQ avatar SaKiEQ commented on June 12, 2024

Here we go. That is the current config that works for my particular setup.

Marlin-auto-endstops Rev_001.zip

from marlin.

stklcode avatar stklcode commented on June 12, 2024

Awesome, thank you!

Successfully tested on my machine (Anycubic i3 Mega P, Trigorilla 1.4 board with dual Z setup).
No additional changes required for the pin, seems to work like it should.


btw. nice test rig 😉

from marlin.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.