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.35k stars 19.26k forks source link

[BUG] (Z-home does not work on the Makertech 3D Profoge 2s Dual) #24613

Closed Fhalo48 closed 2 years ago

Fhalo48 commented 2 years ago

Did you test the latest bugfix-2.1.x code?

Yes, and the problem still exists.

Bug Description

When Z-home is active the printer move 10mm or so up, then stop. It will not move down toward the bed until the inductive sensor is activated.

But, Y and X homing are working fine.

The printer also works fine with the factory installed Marlin V1.1.x

https://github.com/Makertech3D/Proforge-2S/tree/master/Printer%20Firmware

Attached are the factory configuration file, V2.1.x configuration file. Settings from working printer and settings from failed printer. workingDefaultConfig.zip

FailedBugFix2xConfig.zip

Bug Timeline

Started when upgrading the firmware from factory version to V2.1.x

Expected behavior

The Z home should work regardless of the printer head position.

Actual behavior

When I start the Z home. It move the print head up few mm then pause, it move the print head up few mm then stop,

Steps to Reproduce

  1. Power off the printer
  2. Move the bed some distance from the probe/nozzle, maybe about 30mm
  3. Turn on the printer, then select Auto Home

Version of Marlin Firmware

Marlin 2.1.1

Printer model

Makertech 3D, Proforge 2s Dual

Electronics

MKS_GEN_L

Add-ons

No changes to stock hardware

Bed Leveling

UBL Bilinear mesh

Your Slicer

Cura

Host Software

Pronterface

Don't forget to include

Additional information & file uploads

The Problem is repeated if I use the Pronterface, or the touch screen display on the printer.

ellensp commented 2 years ago

This is symptomatic of the Z endstop already being triggered...

What does M119 say?

Fhalo48 commented 2 years ago

Give me few min. I get the info. Thanks for quick reply

Fhalo48 commented 2 years ago

I've re-installed the V2.1.1 release version. Ran M119 and it return the following:-

M119 SENDING:M119

Reporting endstop status x_max: open y_max: open z_min: TRIGGERED

ellensp commented 2 years ago

and there is the issue... z_min: TRIGGERED

So hold something under the inductive sensor... and send a new M119. does z_min change to open? In which case change #define Z_MIN_ENDSTOP_INVERTING

If its not changing, it's something else

Fhalo48 commented 2 years ago

The LED on the inductive sensor turn red. But, M119 still shows trigger. Will try changing #define Z_MIN_ENDSTOP_INVERTING

ellensp commented 2 years ago

wont work if it doesn't change...

Is the probe really plugged into to Z-Min endstop? Or is it plugged in somewhere else and they changed the pins file

Fhalo48 commented 2 years ago

Is the probe really plugged into to Z-Min endstop? Yes, as it worked with the factory firmware.

I could compare the pin file between the factory firmware & the V2.1.1

Changed #define Z_MIN_ENDSTOP_INVERTING to true. It failed to compiled:-

Compiling .pio\build\mega2560\src\src\HAL\AVR\Servo.cpp.o In file included from Marlin\src\HAL\AVR../../inc/MarlinConfig.h:49:0, from Marlin\src\HAL\AVR\HAL.cpp:24: Marlin\src\HAL\AVR../../inc/SanityCheck.h:1805:8: error: #error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires Z_MIN_ENDSTOP_INVERTING to match Z_MIN_PROBE_ENDSTOP_INVERTING."

error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires Z_MIN_ENDSTOP_INVERTING to match Z_MIN_PROBE_ENDSTOP_INVERTING."

    ^~~~~

In file included from Marlin\src\HAL\AVR../../inc/MarlinConfig.h:49:0, from Marlin\src\HAL\AVR\HAL_SPI.cpp:34: Marlin\src\HAL\AVR../../inc/SanityCheck.h:1805:8: error: #error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires Z_MIN_ENDSTOP_INVERTING to match Z_MIN_PROBE_ENDSTOP_INVERTING."

error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires Z_MIN_ENDSTOP_INVERTING to match Z_MIN_PROBE_ENDSTOP_INVERTING."

    ^~~~~

In file included from Marlin\src\HAL\AVR../../inc/MarlinConfig.h:49:0, from Marlin\src\HAL\AVR\MarlinSerial.cpp:39: Marlin\src\HAL\AVR../../inc/SanityCheck.h:1805:8: error: #error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires Z_MIN_ENDSTOP_INVERTING to match Z_MIN_PROBE_ENDSTOP_INVERTING." In file included from Marlin\src\HAL\AVR../../inc/MarlinConfig.h:49:0, from Marlin\src\HAL\AVR\Servo.cpp:55: Marlin\src\HAL\AVR../../inc/SanityCheck.h:1805:8: error: #error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires Z_MIN_ENDSTOP_INVERTING to match Z_MIN_PROBE_ENDSTOP_INVERTING."

error "Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN requires Z_MIN_ENDSTOP_INVERTING to match Z_MIN_PROBE_ENDSTOP_INVERTING."

    ^~~~~

[.pio\build\mega2560\src\src\HAL\AVR\HAL_SPI.cpp.o] Error 1 [.pio\build\mega2560\src\src\HAL\AVR\HAL.cpp.o] Error 1 [.pio\build\mega2560\src\src\HAL\AVR\MarlinSerial.cpp.o] Error 1 [.pio\build\mega2560\src\src\HAL\AVR\Servo.cpp.o] Error 1 =============================================================================== [FAILED] Took 16.02 seconds ===============================================================================

Environment Status Duration


mega2560 FAILED 00:00:16.020 ========================================================================== 1 failed, 0 succeeded in 00:00:16.020 ========================================================================== PS C:\DATA\MerlinRelease> echo "done" >"C:\Users\ds\AppData\Local\Temp\ipc" PS C:\DATA\MerlinRelease> platformio run --target upload -e mega2560 Processing mega2560 (board: megaatmega2560; platform: atmelavr@~3.4; framework: arduino) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via -v, --verbose option CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/megaatmega2560.html PLATFORM: Atmel AVR (3.4.0) > Arduino Mega or Mega 2560 ATmega2560 (Mega 2560) HARDWARE: ATMEGA2560 16MHz, 8KB RAM, 248KB Flash DEBUG: Current (avr-stub) On-board (avr-stub, simavr) PACKAGES:

Fhalo48 commented 2 years ago

Attached pins used in the factory firmware:- `/**

/**

if !defined(AVR_ATmega1280) && !defined(AVR_ATmega2560)

error "Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu."

endif

ifndef BOARD_NAME

define BOARD_NAME "RAMPS 1.4"

endif

// // Servos //

ifdef IS_RAMPS_13

define SERVO0_PIN 7 // RAMPS_13 // Will conflict with BTN_EN2 on LCD_I2C_VIKI

else

define SERVO0_PIN 11

endif

define SERVO1_PIN 6

define SERVO2_PIN 5

ifndef SERVO3_PIN

define SERVO3_PIN 4

endif

// // Limit Switches //

define X_MIN_PIN 3

ifndef X_MAX_PIN

define X_MAX_PIN 2

endif

define Y_MIN_PIN 14

define Y_MAX_PIN 15

define Z_MIN_PIN 63

define Z_MAX_PIN 19

// // Z Probe (when not Z_MIN_PIN) //

ifndef Z_MIN_PROBE_PIN

define Z_MIN_PROBE_PIN 32

endif

// // Steppers //

define X_STEP_PIN 54

define X_DIR_PIN 55

define X_ENABLE_PIN 38

ifndef X_CS_PIN

define X_CS_PIN 53

endif

define Y_STEP_PIN 60

define Y_DIR_PIN 61

define Y_ENABLE_PIN 56

ifndef Y_CS_PIN

define Y_CS_PIN 49

endif

define Z_STEP_PIN 46

define Z_DIR_PIN 48

define Z_ENABLE_PIN 62

ifndef Z_CS_PIN

define Z_CS_PIN 40

endif

define E0_STEP_PIN 26

define E0_DIR_PIN 28

define E0_ENABLE_PIN 24

ifndef E0_CS_PIN

define E0_CS_PIN 42

endif

define E1_STEP_PIN 36

define E1_DIR_PIN 34

define E1_ENABLE_PIN 30

ifndef E1_CS_PIN

define E1_CS_PIN 44

endif

/**

if HAS_DRIVER(TMC2208)

/**

// // Temperature Sensors //

define TEMP_0_PIN 13 // Analog Input

define TEMP_1_PIN 15 // Analog Input

define TEMP_BED_PIN 14 // Analog Input

// SPI for Max6675 or Max31855 Thermocouple

if DISABLED(SDSUPPORT)

define MAX6675_SS 66 // Do not use pin 53 if there is even the remote possibility of using Display/SD card

else

define MAX6675_SS 66 // Do not use pin 49 as this is tied to the switch inside the SD card socket to detect if there is an SD card present

endif

// // Augmentation for auto-assigning RAMPS plugs //

if DISABLED(IS_RAMPS_EEB) && DISABLED(IS_RAMPS_EEF) && DISABLED(IS_RAMPS_EFB) && DISABLED(IS_RAMPS_EFF) && DISABLED(IS_RAMPS_SF) && !PIN_EXISTS(MOSFET_D)

if HOTENDS > 1

#if TEMP_SENSOR_BED
  #define IS_RAMPS_EEB
#else
  #define IS_RAMPS_EEF
#endif

elif TEMP_SENSOR_BED

#define IS_RAMPS_EFB

else

#define IS_RAMPS_EFF

endif

endif

// // Heaters / Fans //

ifndef MOSFET_D_PIN

define MOSFET_D_PIN -1

endif

ifndef RAMPS_D8_PIN

define RAMPS_D8_PIN 8

endif

ifndef RAMPS_D9_PIN

define RAMPS_D9_PIN 9

endif

ifndef RAMPS_D10_PIN

define RAMPS_D10_PIN 10

endif

define HEATER_0_PIN RAMPS_D10_PIN

if ENABLED(IS_RAMPS_EFB) // Hotend, Fan, Bed

define HEATER_BED_PIN RAMPS_D8_PIN

elif ENABLED(IS_RAMPS_EEF) // Hotend, Hotend, Fan

define HEATER_1_PIN RAMPS_D9_PIN

elif ENABLED(IS_RAMPS_EEB) // Hotend, Hotend, Bed

define HEATER_1_PIN RAMPS_D9_PIN

define HEATER_BED_PIN RAMPS_D8_PIN

elif ENABLED(IS_RAMPS_EFF) // Hotend, Fan, Fan

define FAN1_PIN RAMPS_D8_PIN

elif DISABLED(IS_RAMPS_SF) // Not Spindle, Fan (i.e., "EFBF" or "EFBE")

define HEATER_BED_PIN RAMPS_D8_PIN

if HOTENDS == 1

#define FAN1_PIN       MOSFET_D_PIN

else

#define HEATER_1_PIN   MOSFET_D_PIN

endif

endif

ifndef FAN_PIN

if ENABLED(IS_RAMPS_EFB) || ENABLED(IS_RAMPS_EFF) // Hotend, Fan, Bed or Hotend, Fan, Fan

#define FAN_PIN        RAMPS_D9_PIN

elif ENABLED(IS_RAMPS_EEF) || ENABLED(IS_RAMPS_SF) // Hotend, Hotend, Fan or Spindle, Fan

#define FAN_PIN        RAMPS_D8_PIN

elif ENABLED(IS_RAMPS_EEB) // Hotend, Hotend, Bed

#define FAN_PIN         4   // IO pin. Buffer needed

else // Non-specific are "EFB" (i.e., "EFBF" or "EFBE")

#define FAN_PIN        RAMPS_D9_PIN

endif

endif

// // Misc. Functions //

define SDSS 53

define LED_PIN 13

ifndef FILWIDTH_PIN

define FILWIDTH_PIN 5 // Analog Input on AUX2

endif

// define digital pin 4 for the filament runout sensor. Use the RAMPS 1.4 digital input 4 on the servos connector

ifndef FIL_RUNOUT_PIN

define FIL_RUNOUT_PIN 4

endif

ifndef PS_ON_PIN

define PS_ON_PIN 12

endif

if ENABLED(CASE_LIGHT_ENABLE) && !defined(CASE_LIGHT_PIN) && !defined(SPINDLE_LASER_ENABLE_PIN)

if NUM_SERVOS <= 1 // try to use servo connector first

#define CASE_LIGHT_PIN    6   // MUST BE HARDWARE PWM

elif !(ENABLED(ULTRA_LCD) && ENABLED(NEWPANEL) \

  && (ENABLED(PANEL_ONE) || ENABLED(VIKI2) || ENABLED(miniVIKI) || ENABLED(MINIPANEL) || ENABLED(REPRAPWORLD_KEYPAD)))  // try to use AUX 2
#define CASE_LIGHT_PIN   44   // MUST BE HARDWARE PWM

endif

endif

// // M3/M4/M5 - Spindle/Laser Control //

if ENABLED(SPINDLE_LASER_ENABLE) && !PIN_EXISTS(SPINDLE_LASER_ENABLE)

if !defined(NUM_SERVOS) || NUM_SERVOS == 0 // try to use servo connector first

#define SPINDLE_LASER_ENABLE_PIN  4   // Pin should have a pullup/pulldown!
#define SPINDLE_LASER_PWM_PIN     6   // MUST BE HARDWARE PWM
#define SPINDLE_DIR_PIN           5

elif !(ENABLED(ULTRA_LCD) && ENABLED(NEWPANEL) \

  && (ENABLED(PANEL_ONE) || ENABLED(VIKI2) || ENABLED(miniVIKI) || ENABLED(MINIPANEL) || ENABLED(REPRAPWORLD_KEYPAD)))  // try to use AUX 2
#define SPINDLE_LASER_ENABLE_PIN 40   // Pin should have a pullup/pulldown!
#define SPINDLE_LASER_PWM_PIN    44   // MUST BE HARDWARE PWM
#define SPINDLE_DIR_PIN          65

endif

endif

// // Průša i3 MK2 Multiplexer Support //

ifndef E_MUX0_PIN

define E_MUX0_PIN 40 // Z_CS_PIN

endif

ifndef E_MUX1_PIN

define E_MUX1_PIN 42 // E0_CS_PIN

endif

ifndef E_MUX2_PIN

define E_MUX2_PIN 44 // E1_CS_PIN

endif

////////////////////////// // LCDs and Controllers // //////////////////////////

if ENABLED(ULTRA_LCD)

// // LCD Display output pins //

if ENABLED(REPRAPWORLD_GRAPHICAL_LCD)

#define LCD_PINS_RS         49   // CS chip select /SS chip slave select
#define LCD_PINS_ENABLE     51   // SID (MOSI)
#define LCD_PINS_D4         52   // SCK (CLK) clock

elif ENABLED(NEWPANEL) && ENABLED(PANEL_ONE)

#define LCD_PINS_RS         40
#define LCD_PINS_ENABLE     42
#define LCD_PINS_D4         65
#define LCD_PINS_D5         66
#define LCD_PINS_D6         44
#define LCD_PINS_D7         64

else

#if ENABLED(CR10_STOCKDISPLAY)

  #define LCD_PINS_RS       27
  #define LCD_PINS_ENABLE   29
  #define LCD_PINS_D4       25

  #if DISABLED(NEWPANEL)
    #define BEEPER_PIN      37
  #endif

#elif ENABLED(ZONESTAR_LCD)

  #define LCD_PINS_RS       64
  #define LCD_PINS_ENABLE   44
  #define LCD_PINS_D4       63
  #define LCD_PINS_D5       40
  #define LCD_PINS_D6       42
  #define LCD_PINS_D7       65

#else

  #if ENABLED(MKS_12864OLED) || ENABLED(MKS_12864OLED_SSD1306)
    #define LCD_PINS_DC     25   // Set as output on init
    #define LCD_PINS_RS     27   // Pull low for 1s to init
    // DOGM SPI LCD Support
    #define DOGLCD_CS       16
    #define DOGLCD_MOSI     17
    #define DOGLCD_SCK      23
    #define DOGLCD_A0       LCD_PINS_DC
  #else
    #define LCD_PINS_RS     16
    #define LCD_PINS_ENABLE 17
    #define LCD_PINS_D4     23
    #define LCD_PINS_D5     25
    #define LCD_PINS_D6     27
  #endif

  #define LCD_PINS_D7       29

  #if DISABLED(NEWPANEL)
    #define BEEPER_PIN      33
  #endif

#endif

#if DISABLED(NEWPANEL)
  // Buttons are attached to a shift register
  // Not wired yet
  //#define SHIFT_CLK       38
  //#define SHIFT_LD        42
  //#define SHIFT_OUT       40
  //#define SHIFT_EN        17
#endif

endif

// // LCD Display input pins //

if ENABLED(NEWPANEL)

#if ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER)

  #define BEEPER_PIN        37

  #if ENABLED(CR10_STOCKDISPLAY)
    #define BTN_EN1         17
    #define BTN_EN2         23
  #else
    #define BTN_EN1         31
    #define BTN_EN2         33
  #endif

  #define BTN_ENC           35
  #define SD_DETECT_PIN     49
  #define KILL_PIN          41

  #if ENABLED(BQ_LCD_SMART_CONTROLLER)
    #define LCD_BACKLIGHT_PIN 39
  #endif

#elif ENABLED(REPRAPWORLD_GRAPHICAL_LCD)

  #define BTN_EN1           64
  #define BTN_EN2           59
  #define BTN_ENC           63
  #define SD_DETECT_PIN     42

#elif ENABLED(LCD_I2C_PANELOLU2)

  #define BTN_EN1           47
  #define BTN_EN2           43
  #define BTN_ENC           32
  #define LCD_SDSS          SDSS
  #define KILL_PIN          41

#elif ENABLED(LCD_I2C_VIKI)

  #define BTN_EN1           22   // http://files.panucatt.com/datasheets/viki_wiring_diagram.pdf explains 40/42.
  #define BTN_EN2            7   // 22/7 are unused on RAMPS_14. 22 is unused and 7 the SERVO0_PIN on RAMPS_13.
  #define BTN_ENC           -1

  #define LCD_SDSS          SDSS
  #define SD_DETECT_PIN     49

#elif ENABLED(VIKI2) || ENABLED(miniVIKI)

  #define DOGLCD_CS         45
  #define DOGLCD_A0         44
  #define LCD_SCREEN_ROT_180

  #define BEEPER_PIN        33
  #define STAT_LED_RED_PIN  32
  #define STAT_LED_BLUE_PIN 35

  #define BTN_EN1           22
  #define BTN_EN2            7
  #define BTN_ENC           39

  #define SD_DETECT_PIN     -1   // Pin 49 for display sd interface, 72 for easy adapter board
  #define KILL_PIN          31

#elif ENABLED(ELB_FULL_GRAPHIC_CONTROLLER)

  #define DOGLCD_CS         29
  #define DOGLCD_A0         27

  #define BEEPER_PIN        23
  #define LCD_BACKLIGHT_PIN 33

  #define BTN_EN1           35
  #define BTN_EN2           37
  #define BTN_ENC           31

  #define LCD_SDSS          SDSS
  #define SD_DETECT_PIN     49
  #define KILL_PIN          41

#elif ENABLED(MKS_MINI_12864)   // Added in Marlin 1.1.6

  #define DOGLCD_A0         27
  #define DOGLCD_CS         25

  // GLCD features
  //#define LCD_CONTRAST   190
  // Uncomment screen orientation
  //#define LCD_SCREEN_ROT_90
  //#define LCD_SCREEN_ROT_180
  //#define LCD_SCREEN_ROT_270

  #define BEEPER_PIN        37
  // not connected to a pin
  #define LCD_BACKLIGHT_PIN 65   // backlight LED on A11/D65

  #define BTN_EN1           31
  #define BTN_EN2           33
  #define BTN_ENC           35

  #define SD_DETECT_PIN     49
  #define KILL_PIN          64

#elif ENABLED(MINIPANEL)

  #define BEEPER_PIN        42
  // not connected to a pin
  #define LCD_BACKLIGHT_PIN 65   // backlight LED on A11/D65

  #define DOGLCD_A0         44
  #define DOGLCD_CS         66

  // GLCD features
  //#define LCD_CONTRAST   190
  // Uncomment screen orientation
  //#define LCD_SCREEN_ROT_90
  //#define LCD_SCREEN_ROT_180
  //#define LCD_SCREEN_ROT_270

  #define BTN_EN1           40
  #define BTN_EN2           63
  #define BTN_ENC           59

  #define SD_DETECT_PIN     49
  #define KILL_PIN          64

#elif ENABLED(ZONESTAR_LCD)

  #define ADC_KEYPAD_PIN    12

#else

  // Beeper on AUX-4
  #define BEEPER_PIN        33

  // Buttons are directly attached using AUX-2
  #if ENABLED(REPRAPWORLD_KEYPAD)
    #define SHIFT_OUT       40
    #define SHIFT_CLK       44
    #define SHIFT_LD        42
    #define BTN_EN1         64
    #define BTN_EN2         59
    #define BTN_ENC         63
  #elif ENABLED(PANEL_ONE)
    #define BTN_EN1         59   // AUX2 PIN 3
    #define BTN_EN2         63   // AUX2 PIN 4
    #define BTN_ENC         49   // AUX3 PIN 7
  #else
    #define BTN_EN1         37
    #define BTN_EN2         35
    #define BTN_ENC         31
  #endif

  #if ENABLED(G3D_PANEL)
    #define SD_DETECT_PIN   49
    #define KILL_PIN        41
  #endif

#endif

endif // NEWPANEL

endif // ULTRA_LCD

`

ellensp commented 2 years ago

define Z_MIN_PIN 63 <----- this is not stock z_min pin

stock for mks_gen_l is #define Z_MIN_PIN 18

In your Configuration.h add the line

define Z_MIN_PIN 63

after #define MOTHERBOARD BOARD_MKS_GEN_L

To make this change in the config instead of hidden in the pins file.

Fhalo48 commented 2 years ago

Thanks I'll do that.

ellensp commented 2 years ago

Not a Marlin bug.

Fhalo48 commented 2 years ago

You are correct. Without your help I would not be able to resolve this. Thanks again. Proforge 2s Dual is now 2.1.x. I will need to run more tests.

Final output when Z is home:- SENDING:M119 Reporting endstop status x_max: open y_max: open z_min: open

Thanks again.

ellensp commented 2 years ago

You should upload the configs to https://github.com/MarlinFirmware/Configurations when your sure its all working. To help out the next person with your printer

Fhalo48 commented 2 years ago

I'll be happy to do that. I'll also give you credit foe helping me out.

Fhalo48 commented 2 years ago

Hi

I'm getting remote: Permission to MarlinFirmware/Configurations.git denied. I do have github account. When I try to push the configuration file

ellensp commented 2 years ago

you can only create PR's against the IMPORT branch of Configurations

ellensp commented 2 years ago

If your really struggling, just create a new job in Configurations, with new configs to add, and someone will turn it into a pr

Fhalo48 commented 2 years ago

Thanks ellensp. I'm trying to push to import-2.1.x, on the master branch. I'll try the new job option thanks.

Fhalo48 commented 2 years ago

Thanks again. Files updaloded :)

github-actions[bot] commented 2 years 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.