MarlinFirmware / Marlin

Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.
https://marlinfw.org
GNU General Public License v3.0
16.17k stars 19.21k forks source link

[FR] (disable homing independent axis's I, J, K, U, V, W) #24901

Closed alfskaar closed 6 months ago

alfskaar commented 1 year ago

Is your feature request related to a problem? Please describe.

I'm working on implementing ERCF, ENRAGED RABBIT CARROT FEEDER on local HW using BTT Octopus Pro this is on Voron 2.4 R2 I'm using: X Y Z0 & Z1 (hopeful BTT will make a future version where this two are not on parallel stepper driver) Z2 Z3 A (I) selector ERCF B (J) gear that load and unload filament Servo (pins_BTT_OCTOPUS_V1_common.h SERVO0_PIN PB6)

It will be useful to treat any axis's that is not X, X2, Y, Y2, Z0, Z1, Z3, Z4 as independent axis's

disable homing I disable homing J

I'm use G28, G34 this also home A, B this is not needed as A is the selector and will only move on filament change, B is the gear (extruder) that load filament and this is disengage with the servo and filament is just running free going true it.

define MAIN_MENU_ITEM_1_DESC "Home XYZ & Z stepper auto align"

define MAIN_MENU_ITEM_1_GCODE "G28 XYZ\nG34 W"

I use StallGuard to home A this is already working. ERCF have end stop but I'm not using it since it will be useful to have StallGuard if any filament is in the way or some how is locking up the selector.

Next to work on is to home B (load filament using StallGuard) Under the gear at the extruder I have FILAMENT_RUNOUT_SENSOR "#define FIL_RUNOUT_PIN PG12" so if loading fails I think this should detect it and try again.

github.com/EtteGit/EnragedRabbitProject

Are you looking for hardware support?

.

Describe the feature you want

.

Additional context

.

ellensp commented 1 year ago

I think your potentially doing this the wrong way. Ie your basically trying to implement this without any code...

You have told marlin you have a I and a J so its treating it like a standard axies

You need to actually add code ...

Something like defines to say which extruders are what

define ERCF_selector_on E3

define ERCF_loader_on E4

with new code that moves these steppers as needed on tool change

Have your thought about the slicing?

with your method your going to need to add gcodes to manually move I and J vs the expected Tool change command.

alfskaar commented 1 year ago

I have be thinking about slicing yes but the problem is that StallGuard is not available if I defined them as extruder so as a prof of concept I'm doing it to see if the HW can do this then I will add the need code. I have to start somewhere. So I want to be sure my idea can work. I have already spent weeks on this. Since the diag pins where not defined the way they need and this is all new to me doing debugging on pin map.

And you are right tool change is the correct way to do this. But I want to be sure it can work first.

Are there really any 3d printers that have (I, J, K, U, V, W) as connected to XYZ X1 Y1 Z1 ? will they not be independent ?

I can work around this problem I just don’t understand that (I, J, K, U, V, W) should not be independent in the first place.

https://github.com/MarlinFirmware/Marlin/issues/17303

ellensp commented 1 year ago

You should take a look at https://github.com/MarlinFirmware/Marlin/issues/24196 for how to disable the end stops in code.

DerAndere1 commented 1 year ago

Problem 1) With the recent endstop refactoring, I do not know how to disable endstops for an axis. Maybe in file Configuration.h set

#define I_HOME_DIR 0

in file pins_postprocess.cpp, add:

#if I_HOME_DIR == 0
  #undef I_MIN_PIN
  #define I_MIN_PIN -1
  #undef I_MAX_PIN
  #define I_MAX_PIN -1
#endif

Problem 2) There is no solution for an infinite axis when NO_WORKSPACE_OFFSETS is disabled. in this case G92 modifies variable workspace_offset and thus does not prevent overflow of the variable current_position. For a possible fix for problem 2, see https://github.com/Snapmaker/Snapmaker2-Controller/commit/65c7e67ad42081a9656985bc8c7630543d39cec2

thisiskeithb commented 6 months ago

https://github.com/MarlinFirmware/Marlin/pull/26174 has been merged.

github-actions[bot] commented 4 months ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.