SKR 1.3 Не хочет работать пид регулятор.

wano555
Идет загрузка
Загрузка
08.08.2020
318
5
Вопросы и ответы

Решил я перейти на 32б контроллер. СКР1.3 оказалась под рукой. 

Настройки прошли относительно гладко, пока дело не дошло до температуты...

Для начала я просто скопировал настройки пид со старой прошивки. Включил пид стола (на старой плате он тоже был включен). Как итог, температура стола прыгала на 1-2 градуса и по светодиоду было видно, что пид не работает (просто моргал, как будто пид не включен)

Температуру головы болтало градусов на 5-8. 

Уже все передумал. И автокалибровку проводил и значения вносил. Бесполезно. 

Кто может сталкивался?

Ниже часть кода. Если надо, могу скинуть зип с прошивкой.

//===========================================================================

//============================= PID Settings ================================

//===========================================================================

// PID Tuning Guide here: https://reprap.org/wiki/PID_Tuning

// Comment the following line to disable PID and enable bang-bang.

#define PIDTEMP

#define BANG_MAX 255 // Limits current to nozzle while in bang-bang mode; 255=full current

#define PID_MAX BANG_MAX // Limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current

#define PID_K1 0.95 // Smoothing factor within any PID loop

#if ENABLED(PIDTEMP)

  //#define PID_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of PROGMEM)

  //#define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of PROGMEM)

  //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)

                                  // Set/get with gcode: M301 E[extruder number, 0-2]

  // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it

  // Ultimaker

  #define DEFAULT_Kp 25.77

  #define DEFAULT_Ki 3.19

  #define DEFAULT_Kd 52.09

  // MakerGear

  //#define DEFAULT_Kp 7.0

  //#define DEFAULT_Ki 0.1

  //#define DEFAULT_Kd 12

  // Mendel Parts V9 on 12V

  //#define DEFAULT_Kp 63.0

  //#define DEFAULT_Ki 2.25

  //#define DEFAULT_Kd 440

#endif // PIDTEMP

//===========================================================================

//====================== PID > Bed Temperature Control ======================

//===========================================================================

/**

 * PID Bed Heating

 *

 * If this option is enabled set PID constants below.

 * If this option is disabled, bang-bang will be used and BED_LIMIT_SWITCHING will enable hysteresis.

 *

 * The PID frequency will be the same as the extruder PWM.

 * If PID_dT is the default, and correct for the hardware/configuration, that means 7.689Hz,

 * which is fine for driving a square wave into a resistive load and does not significantly

 * impact FET heating. This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W

 * 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 BED_LIMIT_SWITCHING

/**

 * Max Bed Power

 * Applies to all forms of bed control (PID, bang-bang, and bang-bang with hysteresis).

 * When set to any value below 255, enables a form of PWM to the bed that acts like a divider

 * so don't use it unless you are OK with PWM on your bed. (See the comment on enabling PIDTEMPBED)

 */

#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current

#if ENABLED(PIDTEMPBED)

  //#define MIN_BED_POWER 0

  //#define PID_BED_DEBUG // Sends debug data to the serial port.

  //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 63.18

  #define DEFAULT_bedKi 9.18

  #define DEFAULT_bedKd 289.88

  //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)

  //from pidautotune

  //#define DEFAULT_bedKp 97.1

  //#define DEFAULT_bedKi 1.41

  //#define DEFAULT_bedKd 1675.16

  // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.

#endif // PIDTEMPBED

#if EITHER(PIDTEMP, PIDTEMPBED)

  //#define PID_DEBUG // Sends debug data to the serial port. Use 'M303 D' to toggle activation.

  //#define PID_OPENLOOP // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX

  //#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay

  #define PID_FUNCTIONAL_RANGE 0 // If the temperature difference between the target temperature and the actual temperature

                                  // is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.

#endif

// @section extruder

/**

 * Prevent extrusion if the temperature is below EXTRUDE_MINTEMP.

 * Add M302 to set the minimum extrusion temperature and/or turn

 * cold extrusion prevention on and off.

 *

 * *** IT IS HIGHLY RECOMMENDED TO LEAVE THIS OPTION ENABLED! ***

 */

#define PREVENT_COLD_EXTRUSION

#define EXTRUDE_MINTEMP 170

/**

 * Prevent a single extrusion longer than EXTRUDE_MAXLENGTH.

 * Note: For Bowden Extruders make this large enough to allow load/unload.

 */

#define PREVENT_LENGTHY_EXTRUDE

#define EXTRUDE_MAXLENGTH 200

//===========================================================================

//======================== Thermal Runaway Protection =======================

//===========================================================================

/**

 * Thermal Protection provides additional protection to your printer from damage

 * and fire. Marlin always includes safe min and max temperature ranges which

 * protect against a broken or disconnected thermistor wire.

 *

 * The issue: If a thermistor falls out, it will report the much lower

 * temperature of the air in the room, and the the firmware will keep

 * the heater on.

 *

 * If you get "Thermal Runaway" or "Heating failed" errors the

 * details can be tuned in Configuration_adv.h

 */

#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders

#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed

#define THERMAL_PROTECTION_CHAMBER // Enable thermal protection for the heated chamber

Ответы на вопросы

Ответы

08.08.2020 в 16:20
0

У Вас #define PID_FUNCTIONAL_RANGE 0, вот PID и не работает. Этот параметр задает диапазон температур в котором работает PID (относительно целевой температуры). Поставьте его равным 10 (#define PID_FUNCTIONAL_RANGE 10), так кстати по умолчанию в Marlin е.

К примеру, Вы устанавливаете температуру hotend 205. Если PID_FUNCTIONAL_RANGE = 10, PID будет работать  в диапазоне  195-215. Ниже 195 нагреватель hotenda включен на максимум, а выше 215 выключен.

Соответственно если  PID_FUNCTIONAL_RANGE = 0, как у Вас, то ниже 205 нагреватель включен на максимум, а выше - отключен. Вот и колбасит.....

08.08.2020 в 17:52
0

Да, Вы правы. Голова стала греться адекватно.

Теперь стол не доходит до заданной температуры 10 градусов и останавливается. Как будто пид не включается. В итоге срабатывает защита.

08.08.2020 в 20:41
0

ПИД стола тоже калибровать, защиту загрубить примерно вдвое, дефолтные значения не для дохлых грелок.

08.08.2020 в 21:01
0

ПИД калибровал. Дохлая грелка))отлично справлялась с 110градусами на другой плате и первом марлине. Там тоже пид стоял...

08.08.2020 в 21:03
0

Ну значит копайте конфиг дальше, явно где-то косяк. Может термистор не тот.

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Лодка

Лодка

Longer LK4Pro: Печать

Когда всё, вдруг, плохо после того, как было хорошо.

Забавный баг Simplify3d: Ooze shield и brim

3D-сканирование для бесконтактного анализа произведений искусства