From 81860e9deb7bdc66d87384abcf050d57b8b14588 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 25 Mar 2020 14:50:58 -0500 Subject: [PATCH] Work on Malyan M200 V1 build --- Marlin/Configuration.h | 71 +++++++++++-------- Marlin/Configuration_adv.h | 31 ++++---- Marlin/src/feature/controllerfan.h | 2 +- Marlin/src/lcd/extui_malyan_lcd.cpp | 19 ++--- Marlin/src/pins/pins.h | 2 +- .../share/PlatformIO/boards/malyanM200.json | 2 +- platformio.ini | 13 +++- 7 files changed, 81 insertions(+), 59 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index df99f8b676..fbef143154 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -71,7 +71,7 @@ // @section info // Author info of this build printed to the host during boot and M115 -#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. +#define STRING_CONFIG_H_AUTHOR "(xC0000005, Malyan M200 build)" // Who made the changes. //#define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes) /** @@ -104,10 +104,11 @@ * * :[-1, 0, 1, 2, 3, 4, 5, 6, 7] */ -#define SERIAL_PORT 0 +#define SERIAL_PORT -1 /** * Select a secondary serial port on the board to use for communication with the host. + * * :[-1, 0, 1, 2, 3, 4, 5, 6, 7] */ //#define SERIAL_PORT_2 -1 @@ -121,18 +122,18 @@ * * :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000] */ -#define BAUDRATE 250000 +#define BAUDRATE 500000 // Enable the Bluetooth serial interface on AT90USB devices //#define BLUETOOTH // Choose the name from boards.h that matches your setup #ifndef MOTHERBOARD - #define MOTHERBOARD BOARD_RAMPS_14_EFB + #define MOTHERBOARD BOARD_MALYAN_M200 #endif // Name displayed in the LCD "Ready" message and Info menu -//#define CUSTOM_MACHINE_NAME "3D Printer" +#define CUSTOM_MACHINE_NAME "STM32F103CB_malyan-tests (1)" // Printer's unique ID, used by some programs to differentiate between machines. // Choose your own or use a service like http://www.uuidgenerator.net/version4 @@ -145,7 +146,7 @@ #define EXTRUDERS 1 // Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc. -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.0 +#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75 // For Cyclops or any "multi-extruder" that shares a single nozzle. //#define SINGLENOZZLE @@ -406,7 +407,7 @@ * 998 : Dummy Table that ALWAYS reads 25°C or the temperature defined below. * 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below. */ -#define TEMP_SENSOR_0 1 +#define TEMP_SENSOR_0 11 #define TEMP_SENSOR_1 0 #define TEMP_SENSOR_2 0 #define TEMP_SENSOR_3 0 @@ -414,7 +415,7 @@ #define TEMP_SENSOR_5 0 #define TEMP_SENSOR_6 0 #define TEMP_SENSOR_7 0 -#define TEMP_SENSOR_BED 0 +#define TEMP_SENSOR_BED 11 #define TEMP_SENSOR_PROBE 0 #define TEMP_SENSOR_CHAMBER 0 @@ -450,7 +451,7 @@ // Above this temperature the heater will be switched off. // This can protect components from overheating, but NOT from shorts and failures. // (Use MINTEMP for thermistor short/failure protection.) -#define HEATER_0_MAXTEMP 275 +#define HEATER_0_MAXTEMP 250 #define HEATER_1_MAXTEMP 275 #define HEATER_2_MAXTEMP 275 #define HEATER_3_MAXTEMP 275 @@ -458,7 +459,7 @@ #define HEATER_5_MAXTEMP 275 #define HEATER_6_MAXTEMP 275 #define HEATER_7_MAXTEMP 275 -#define BED_MAXTEMP 150 +#define BED_MAXTEMP 100 //=========================================================================== //============================= PID Settings ================================ @@ -484,9 +485,9 @@ // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it // Ultimaker - #define DEFAULT_Kp 22.2 - #define DEFAULT_Ki 1.08 - #define DEFAULT_Kd 114 + //#define DEFAULT_Kp 26.15 + //#define DEFAULT_Ki 2.74 + //#define DEFAULT_Kd 62.35 // MakerGear //#define DEFAULT_Kp 7.0 @@ -498,6 +499,11 @@ //#define DEFAULT_Ki 2.25 //#define DEFAULT_Kd 440 + // Malyan M200 + #define DEFAULT_Kp 20.0 + #define DEFAULT_Ki 2.02 + #define DEFAULT_Kd 100.00 + #endif // PIDTEMP //=========================================================================== @@ -517,7 +523,7 @@ * heater. If your configuration is significantly different than this and you don't understand * the issues involved, don't use bed PID until someone else verifies that your hardware works. */ -//#define PIDTEMPBED +#define PIDTEMPBED //#define BED_LIMIT_SWITCHING @@ -535,9 +541,9 @@ //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) - #define DEFAULT_bedKp 10.00 - #define DEFAULT_bedKi .023 - #define DEFAULT_bedKd 305.4 + //#define DEFAULT_bedKp 231.09 + //#define DEFAULT_bedKi 45.21 + //#define DEFAULT_bedKd 295.34 //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) //from pidautotune @@ -545,6 +551,11 @@ //#define DEFAULT_bedKi 1.41 //#define DEFAULT_bedKd 1675.16 + // Malyan M200 + #define DEFAULT_bedKp 14.00 + #define DEFAULT_bedKi 0.9 + #define DEFAULT_bedKd 120.4 + // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. #endif // PIDTEMPBED @@ -646,9 +657,9 @@ #endif // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). -#define X_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define Y_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. -#define Z_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. +#define X_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop. +#define Y_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop. +#define Z_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop. #define X_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define Y_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define Z_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. @@ -730,7 +741,7 @@ * Override with M92 * X, Y, Z, E0 [, E1[, E2...]] */ -#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 4000, 500 } +#define DEFAULT_AXIS_STEPS_PER_UNIT { 93, 93, 1097.5, 97 } /** * Default Max Feed Rate (mm/s) @@ -1041,9 +1052,9 @@ // Disables axis stepper immediately when it's not being used. // WARNING: When motors turn off there is a chance of losing position accuracy! -#define DISABLE_X false -#define DISABLE_Y false -#define DISABLE_Z false +#define DISABLE_X true +#define DISABLE_Y true +#define DISABLE_Z true // Warn on display about possibly reduced accuracy //#define DISABLE_REDUCED_ACCURACY_WARNING @@ -1063,7 +1074,7 @@ // @section extruder // For direct drive extruder v9 set to true, for geared extruder set to false. -#define INVERT_E0_DIR false +#define INVERT_E0_DIR true #define INVERT_E1_DIR false #define INVERT_E2_DIR false #define INVERT_E3_DIR false @@ -1092,8 +1103,8 @@ // @section machine // The size of the print bed -#define X_BED_SIZE 200 -#define Y_BED_SIZE 200 +#define X_BED_SIZE 120 +#define Y_BED_SIZE 120 // Travel limits (mm) after homing, corresponding to endstop positions. #define X_MIN_POS 0 @@ -1101,7 +1112,7 @@ #define Z_MIN_POS 0 #define X_MAX_POS X_BED_SIZE #define Y_MAX_POS Y_BED_SIZE -#define Z_MAX_POS 200 +#define Z_MAX_POS 120 /** * Software Endstops @@ -1656,7 +1667,7 @@ * you must uncomment the following option or it won't work. * */ -//#define SDSUPPORT +#define SDSUPPORT /** * SD CARD: SPI SPEED @@ -2071,7 +2082,7 @@ // // Touch-screen LCD for Malyan M200 printers // -//#define MALYAN_LCD +#define MALYAN_LCD // // Touch UI for FTDI EVE (FT800/FT810) displays diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 370fbaf6ec..fee48fadf5 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -177,7 +177,7 @@ * Thermal Protection parameters for the bed are just as above for hotends. */ #if ENABLED(THERMAL_PROTECTION_BED) - #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds + #define THERMAL_PROTECTION_BED_PERIOD 50 // Seconds #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius /** @@ -340,11 +340,10 @@ * * The fan turns on automatically whenever any driver is enabled and turns * off (or reduces to idle speed) shortly after drivers are turned off. - * */ -//#define USE_CONTROLLER_FAN +#define USE_CONTROLLER_FAN // Malyan M200: uncomment if you use FAN2 to cool the board (original) #if ENABLED(USE_CONTROLLER_FAN) - //#define CONTROLLER_FAN_PIN -1 // Set a custom pin for the controller fan + #define CONTROLLER_FAN_PIN MALYAN_FAN2_PIN // Set a custom pin for the controller fan //#define CONTROLLER_FAN_USE_Z_ONLY // With this option only the Z axis is considered #define CONTROLLERFAN_SPEED_MIN 0 // (0-255) Minimum speed. (If set below this value the fan is turned off.) #define CONTROLLERFAN_SPEED_ACTIVE 255 // (0-255) Active speed, used when any motor is enabled @@ -420,7 +419,9 @@ * Multiple extruders can be assigned to the same pin in which case * the fan will turn on when any selected extruder is above the threshold. */ -#define E0_AUTO_FAN_PIN -1 +//#define FAN_PIN MALYAN_FAN1_PIN // Malyan M200: uncomment if you use FAN1 to cool the part and FAN2 to cool the extruder +//#define E0_AUTO_FAN_PIN MALYAN_FAN2_PIN // Malyan M200: uncomment if you use FAN1 to cool the part and FAN2 to cool the extruder +#define E0_AUTO_FAN_PIN MALYAN_FAN1_PIN // Malyan M200: uncomment if you use FAN1 to cool the extruder and the part (original) #define E1_AUTO_FAN_PIN -1 #define E2_AUTO_FAN_PIN -1 #define E3_AUTO_FAN_PIN -1 @@ -470,7 +471,7 @@ // @section extras -//#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. +#define Z_LATE_ENABLE // Enable Z the last moment. Needed if your Z driver overheats. // Employ an external closed loop controller. Override pins here if needed. //#define EXTERNAL_CLOSED_LOOP_CONTROLLER @@ -715,14 +716,14 @@ // Define one position per Z stepper in stepper driver order. #define Z_STEPPER_ALIGN_STEPPER_XY { { 210.7, 102.5 }, { 152.6, 220.0 }, { 94.5, 102.5 } } #else - // Amplification factor. Used to scale the correction step up or down in case - // the stepper (spindle) position is farther out than the test point. - #define Z_STEPPER_ALIGN_AMP 1.0 // Use a value > 1.0 NOTE: This may cause instability! + // Amplification factor. Used to scale the correction step up or down. + // In case the stepper (spindle) position is further out than the test point. + // Use a value > 1. NOTE: This may cause instability + #define Z_STEPPER_ALIGN_AMP 1.0 #endif - // On a 300mm bed a 5% grade would give a misalignment of ~1.5cm #define G34_MAX_GRADE 5 // (%) Maximum incline that G34 will handle - #define Z_STEPPER_ALIGN_ITERATIONS 5 // Number of iterations to apply during alignment + #define Z_STEPPER_ALIGN_ITERATIONS 3 // Number of iterations to apply during alignment #define Z_STEPPER_ALIGN_ACC 0.02 // Stop iterating early if the accuracy is better than this #define RESTORE_LEVELING_AFTER_G34 // Restore leveling after G34 is done? // After G34, re-home Z (G28 Z) or just calculate it from the last probe heights? @@ -760,6 +761,7 @@ // Minimum time that a segment needs to take if the buffer is emptied #define DEFAULT_MINSEGMENTTIME 20000 // (ms) +// If defined the movements slow down when the look ahead buffer is only half full // Slow down the machine if the look ahead buffer is (by default) half full. // Increase the slowdown divisor for larger buffer sizes. #define SLOWDOWN @@ -1056,9 +1058,6 @@ * during SD printing. If the recovery file is found at boot time, present * an option on the LCD screen to continue the print from the last-known * point in the file. - * - * If the machine reboots when resuming a print you may need to replace or - * reformat the SD card. (Bad sectors delay startup triggering the watchdog.) */ //#define POWER_LOSS_RECOVERY #if ENABLED(POWER_LOSS_RECOVERY) @@ -1115,7 +1114,7 @@ #endif // This allows hosts to request long names for files and folders with M33 - //#define LONG_FILENAME_HOST_SUPPORT + #define LONG_FILENAME_HOST_SUPPORT // Enable this option to scroll long filenames in the SD card menu //#define SCROLL_LONG_FILENAMES @@ -1625,7 +1624,7 @@ // // G2/G3 Arc Support // -#define ARC_SUPPORT // Disable this feature to save ~3226 bytes +//#define ARC_SUPPORT // Disable this feature to save ~3226 bytes #if ENABLED(ARC_SUPPORT) #define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment //#define ARC_SEGMENTS_PER_R 1 // Max segment length, MM_PER = Min diff --git a/Marlin/src/feature/controllerfan.h b/Marlin/src/feature/controllerfan.h index cd56ff8ced..6ea7c1cee1 100644 --- a/Marlin/src/feature/controllerfan.h +++ b/Marlin/src/feature/controllerfan.h @@ -58,7 +58,7 @@ class ControllerFan { #if ENABLED(CONTROLLER_FAN_EDITABLE) static controllerFan_settings_t settings; #else - static const controllerFan_settings_t constexpr &settings = controllerFan_defaults; + static const controllerFan_settings_t constexpr settings = controllerFan_defaults; #endif static inline bool state() { return speed > 0; } static inline void init() { reset(); } diff --git a/Marlin/src/lcd/extui_malyan_lcd.cpp b/Marlin/src/lcd/extui_malyan_lcd.cpp index 0bb8060b07..1687c579fc 100644 --- a/Marlin/src/lcd/extui_malyan_lcd.cpp +++ b/Marlin/src/lcd/extui_malyan_lcd.cpp @@ -194,18 +194,19 @@ void process_lcd_eb_command(const char* command) { * {J:E}{J:X+200}{J:E} * X, Y, Z, A (extruder) */ -void process_lcd_j_command(const char* command) { - auto move_axis = [command](const auto axis) { - const float dist = atof(command + 1) / 10.0; - ExtUI::setAxisPosition_mm(ExtUI::getAxisPosition_mm(axis) + dist, axis); - }; +template +void j_move_axis(const char* command, const T axis) { + const float dist = atof(command + 1) / 10.0; + ExtUI::setAxisPosition_mm(ExtUI::getAxisPosition_mm(axis) + dist, axis); +}; +void process_lcd_j_command(const char* command) { switch (command[0]) { case 'E': break; - case 'A': move_axis(ExtUI::extruder_t::E0); break; - case 'Y': move_axis(ExtUI::axis_t::Y); break; - case 'Z': move_axis(ExtUI::axis_t::Z); break; - case 'X': move_axis(ExtUI::axis_t::X); break; + case 'A': j_move_axis(command, ExtUI::extruder_t::E0); break; + case 'Y': j_move_axis(command, ExtUI::axis_t::Y); break; + case 'Z': j_move_axis(command, ExtUI::axis_t::Z); break; + case 'X': j_move_axis(command, ExtUI::axis_t::X); break; default: DEBUG_ECHOLNPAIR("UNKNOWN J COMMAND ", command); } } diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index a275ec1230..580f8c435f 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -469,7 +469,7 @@ #elif MB(STM32F103RE) #include "stm32f1/pins_STM32F1R.h" // STM32F1 env:STM32F103RE #elif MB(MALYAN_M200) - #include "stm32f1/pins_MALYAN_M200.h" // STM32F1 env:STM32F103CB_malyan + #include "stm32f1/pins_MALYAN_M200.h" // STM32F1 env:STM32F103CB_malyan env:malyanM200 #elif MB(MALYAN_M200_V2) #include "stm32f1/pins_MALYAN_M200.h" // STM32F1 env:STM32F070CB_malyan #elif MB(STM3R_MINI) diff --git a/buildroot/share/PlatformIO/boards/malyanM200.json b/buildroot/share/PlatformIO/boards/malyanM200.json index dc0cf51f9e..89b32211dc 100644 --- a/buildroot/share/PlatformIO/boards/malyanM200.json +++ b/buildroot/share/PlatformIO/boards/malyanM200.json @@ -10,7 +10,7 @@ ], "ldscript": "jtagOffset.ld", "mcu": "stm32f103cb", - "variant": "malyanM200", + "variant": "MALYANM200_F103CB", "genericvariant" : "MALYAN_M200_V1", "vec_tab_addr": "0x8002000" }, diff --git a/platformio.ini b/platformio.ini index f57870dfba..3a625dab65 100644 --- a/platformio.ini +++ b/platformio.ini @@ -567,7 +567,7 @@ lib_ignore = Adafruit NeoPixel, SPI # # Malyan M200 (STM32F103CB) # -[env:STM32F103CB_malyan] +[env:malyanM200] platform = ststm32 board = malyanM200 build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py -DMCU_STM32F103CB -D __STM32F1__=1 -std=c++1y -D MOTHERBOARD="BOARD_MALYAN_M200" -DSERIAL_USB -ffunction-sections -fdata-sections -Wl,--gc-sections @@ -575,6 +575,17 @@ build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py -DMCU_STM32F103CB -D src_filter = ${common.default_src_filter} + lib_ignore = Adafruit NeoPixel, LiquidCrystal, LiquidTWI2, TMCStepper, U8glib-HAL, SPI +# +# Malyan M200 (STM32F103CB) +# +[env:STM32F103CB_malyan] +platform = ststm32 +board = maple +build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py -DMCU_STM32F103CB -D __STM32F1__=1 -std=c++1y -DSERIAL_USB -ffunction-sections -fdata-sections -Wl,--gc-sections + -DDEBUG_LEVEL=0 -D__MARLIN_FIRMWARE__ +src_filter = ${common.default_src_filter} + +lib_ignore = Adafruit NeoPixel, LiquidCrystal, LiquidTWI2, TMCStepper, U8glib-HAL, SPI + # # Malyan M200 (STM32F070CB) #