MKS-Base problem and solution for two extruders...

My original printer build used a RAMPS clone main board called an MKS-Base v1.2
This is supposed to be a RAMPs1.4 system on a single board.
It worked well using RAMPS in the firmware config (board #33)

However when I went to add a second extruder things went wrong.  Activating the second extruder heater produced a high whining sound.
Looking at the board I noticed the LED for the FET controlling the print cooling fan came on but dimly while the LED for the heater did not light.

A little messing around and I felt like their must be a short in the board or a miss connection, the whine came from the fan trying to run
but at too low of a duty cycle.  Removing the Fan from the configuration allowed the FAN LED to go full bright when the heater turned on.
I decided the board must be defective so I ordered a replacement..now at ver 1.5

Of course the replacement did exactly the same thing....so now I suspected the Firmware.  As it turns out I think there is something wrong in the PINS header file and the second heater and the print cooling fan seem to map to the same pin.  I made a small change "see below" and now it all works.  Not sure if this is specific to the MKS boards or is a general problem but if it is just the board then maybe adding a new board to the configurator would be a better solution.


// uncomment one of the following lines for RAMPS v1.3 or v1.0, comment both for v1.2 or 1.1
// #define RAMPS_V_1_3
// #define RAMPS_V_1_0

#ifdef RAMPS_V_1_3

#define ORIG_X_STEP_PIN         54
#define ORIG_X_DIR_PIN          55
#define ORIG_X_ENABLE_PIN       38
#define ORIG_X_MIN_PIN          3
#define ORIG_X_MAX_PIN          2

#define ORIG_Y_STEP_PIN         60
#define ORIG_Y_DIR_PIN          61
#define ORIG_Y_ENABLE_PIN       56
#define ORIG_Y_MIN_PIN          14
#define ORIG_Y_MAX_PIN          15

#define ORIG_Z_STEP_PIN         46
#define ORIG_Z_DIR_PIN          48
#define ORIG_Z_ENABLE_PIN       62
#define ORIG_Z_MIN_PIN          18
#define ORIG_Z_MAX_PIN          19

#define ORIG_E0_STEP_PIN         26
#define ORIG_E0_DIR_PIN          28
#define ORIG_E0_ENABLE_PIN       24

#define ORIG_E1_STEP_PIN         36
#define ORIG_E1_DIR_PIN          34
#define ORIG_E1_ENABLE_PIN       30

#define SDPOWER            -1
#define SDSS               53
#define ORIG_SDCARDDETECT    49

#define LED_PIN            13
#define ORIG_FAN_PIN            9
#define ORIG_PS_ON_PIN          12

#define HEATER_0_PIN       10
#define HEATER_1_PIN       8
#define HEATER_2_PIN       7 //Was pin 9 changed for MKS-BASE
// ANALOG NUMBERING
#define TEMP_0_PIN         13   
#define TEMP_1_PIN         14
#define TEMP_2_PIN         15
#define E0_PINS ORIG_E0_STEP_PIN,ORIG_E0_DIR_PIN,ORIG_E0_ENABLE_PIN,
#define E1_PINS ORIG_E1_STEP_PIN,ORIG_E1_DIR_PIN,ORIG_E1_ENABLE_PIN,






Comments

  • Ramps has no special fan pin so by default fan and heater 2 use same pin. Means if you have 2 extruders you have to disable fan control or it will mix signals from both. Pin 9 is definitely correct for RAMPS 1.4. Not sure why 7 then works for you.
  • edited December 2022
    I first thought this was the solution but I've tried it and the second extruder still won't heat up
  • Try assigning the pin number directly in configuration.h in case you changed it in wrong #ifdef section in pins.h and as said make sure no other function has same pin number. Only heaters and fans and bed are here of interest.
  • Done that, works now :)
  • To be more prrecise, since other users of this board also seem to have had this problem:

    in pins_MKS_BASE_14.h:
    ```
    #define FAN_PIN                                9
    ```
    in pins_MKS_BASE_common.h:
    ```
      #define MOSFET_D_PIN                         8
    ```
    in pins_RAMPS.h:
    ```
    //
    // Heaters / Fans
    //
    #ifndef MOSFET_A_PIN
      #define MOSFET_A_PIN                        10
    #ifndef MOSFET_B_PIN
      #define MOSFET_B_PIN                         7 //9
    #ifndef MOSFET_C_PIN
      #define MOSFET_C_PIN                         9
    #ifndef MOSFET_D_PIN
      #define MOSFET_D_PIN                         8

    #define HEATER_0_PIN                MOSFET_A_PIN

    #if FET_ORDER_EFB                                 // Hotend, Fan, Bed
      #define HEATER_BED_PIN            MOSFET_D_PIN
    #elif FET_ORDER_EEF                               // Hotend, Hotend, Fan
      #define HEATER_1_PIN              MOSFET_B_PIN
    #elif FET_ORDER_EEB                               // Hotend, Hotend, Bed
      #define HEATER_1_PIN              MOSFET_B_PIN
      #define HEATER_BED_PIN            MOSFET_D_PIN
    #elif FET_ORDER_EFF                               // Hotend, Fan, Fan
      #define FAN1_PIN                  MOSFET_C_PIN
    #elif DISABLED(FET_ORDER_SF)                      // Not Spindle, Fan (i.e., "EFBF" or "EFBE")
      #define HEATER_BED_PIN            MOSFET_D_PIN
      #if EITHER(HAS_MULTI_HOTEND, HEATERS_PARALLEL)
        #define HEATER_1_PIN            MOSFET_B_PIN
        #define FAN1_PIN                MOSFET_C_PIN

    #ifndef FAN_PIN
      #if EITHER(FET_ORDER_EFB, FET_ORDER_EFF)        // Hotend, Fan, Bed or Hotend, Fan, Fan
        #define FAN_PIN                 MOSFET_C_PIN
      #elif EITHER(FET_ORDER_EEF, FET_ORDER_SF)       // Hotend, Hotend, Fan or Spindle, Fan
        #define FAN_PIN                 MOSFET_C_PIN
      #elif FET_ORDER_EEB                             // Hotend, Hotend, Bed
        #define FAN_PIN                 MOSFET_C_PIN  // IO pin. Buffer needed
      #else                                           // Non-specific are "EFB" (i.e., "EFBF" or "EFBE")
        #define FAN_PIN                 MOSFET_C_PIN
    ```

    I have overwritten all possible ifdefs, so this will only work with an EFBE configuation.



Sign In or Register to comment.