roboforum.ru

Технический форум по робототехнике.

3D принтер. Прошивка Marlin, оптимизация.

Обсуждение технологии печати на 3D принтерах. Самостоятельное изготовление и приобретение. RepRap и его последователи.

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение setar » 20 янв 2016, 20:54

такие публикации кода лишены смысла, поскольку заведомо устарели.
нужно публиковать патчи, тогда их актуальность будет продолжительной, до кординальных правок исходника
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение stepmotor » 20 янв 2016, 20:56

Как это правильно оформить и куда заливать, не сталкивался ни разу. Обычно только все для своих нужд делал.
Sergey-3D Printer :) Arduino 2560 + Ramps 1.4 + Leadshine DM422C. Firmware: Marlin. + my Filament extruder :)
+ My H-Bot 218\218\218mm \ Mega2560 \ DRV8825 \ Marlin-RC
Аватара пользователя
stepmotor
 
Сообщения: 331
Зарегистрирован: 19 май 2014, 18:05
Откуда: Россия, Московская обл.
Skype: sergius_efremov
прог. языки: Delphi,VB,PHP,MicroC,CVAVR
ФИО: Сергей Ефремов

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение setar » 20 янв 2016, 21:12

если прошивку скачивали правильно, используя git то
достаточно сказать git diff имя_измененного_файла

ну а если скачивали в виде архива то нужно две папки например было , стало
и изменения вытаскиваются командой
diff было/имя_файла стало/имя_файла

результат называется файлом изменений (он же патч) и может быть приложен на текущую и свежую прошивку.

Существует много программ с удобным графическим интерфейсом которые умеют делать такие патчи, но их названий не подскажу - сам пользуюсь текстовой строкой.
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение antonkopa » 23 янв 2016, 18:27

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

Спасибо.
antonkopa
 
Сообщения: 73
Зарегистрирован: 10 фев 2015, 10:42

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение stepmotor » 23 янв 2016, 19:17

в configuration_adv.h

найдите строки

Код: Выделить всёРазвернуть
// Add support for experimental filament exchange support M600; requires display
#if ENABLED(ULTIPANEL)
  //#define FILAMENTCHANGEENABLE
  #if ENABLED(FILAMENTCHANGEENABLE)
    #define FILAMENTCHANGE_XPOS 3
    #define FILAMENTCHANGE_YPOS 3
    #define FILAMENTCHANGE_ZADD 10
    #define FILAMENTCHANGE_FIRSTRETRACT -2
    #define FILAMENTCHANGE_FINALRETRACT -100
    #define AUTO_FILAMENT_CHANGE                //This extrude filament until you press the button on LCD
    #define AUTO_FILAMENT_CHANGE_LENGTH 0.04    //Extrusion length on automatic extrusion loop
    #define AUTO_FILAMENT_CHANGE_FEEDRATE 300   //Extrusion feedrate (mm/min) on automatic extrusion loop
  #endif
#endif


тут идет проверка на ULTIPANEL , ее надо включить(раскоментировать) в configuration.h
#define ULTIPANEL //the UltiPanel as on Thingiverse

раскоментировать дефайн
#define FILAMENTCHANGEENABLE

Ну и прописать свои значения для смены прутка.

:)
Sergey-3D Printer :) Arduino 2560 + Ramps 1.4 + Leadshine DM422C. Firmware: Marlin. + my Filament extruder :)
+ My H-Bot 218\218\218mm \ Mega2560 \ DRV8825 \ Marlin-RC
Аватара пользователя
stepmotor
 
Сообщения: 331
Зарегистрирован: 19 май 2014, 18:05
Откуда: Россия, Московская обл.
Skype: sergius_efremov
прог. языки: Delphi,VB,PHP,MicroC,CVAVR
ФИО: Сергей Ефремов

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение antonkopa » 23 янв 2016, 19:32

Большое спасибо, расскоментировал выдало ошибку MSG_SD_OPEN_FILE_FAIL :(

In file included from cardreader.cpp:6:
/language.h:1:1: error: unterminated #ifndef
cardreader.cpp: In member function 'void CardReader::lsDive(const char*, SdFile, const char*)':
cardreader.cpp:83: error: 'MSG_SD_CANT_OPEN_SUBDIR' was not declared in this scope
cardreader.cpp: In member function 'void CardReader::initsd()':
cardreader.cpp:213: error: 'MSG_SD_INIT_FAIL' was not declared in this scope
cardreader.cpp:217: error: 'MSG_SD_VOL_INIT_FAIL' was not declared in this scope
cardreader.cpp:221: error: 'MSG_SD_OPENROOT_FAIL' was not declared in this scope
cardreader.cpp:226: error: 'MSG_SD_CARD_OK' was not declared in this scope
cardreader.cpp: In member function 'void CardReader::openFile(char*, bool, bool)':
cardreader.cpp:285: error: 'MSG_KILLED' was not declared in this scope
cardreader.cpp:335: error: 'MSG_SD_OPEN_FILE_FAIL' was not declared in this scope
cardreader.cpp:362: error: 'MSG_SD_FILE_OPENED' was not declared in this scope
cardreader.cpp:364: error: 'MSG_SD_SIZE' was not declared in this scope
cardreader.cpp:368: error: 'MSG_SD_FILE_SELECTED' was not declared in this scope
cardreader.cpp:373: error: 'MSG_SD_OPEN_FILE_FAIL' was not declared in this scope
cardreader.cpp:380: error: 'MSG_SD_OPEN_FILE_FAIL' was not declared in this scope
cardreader.cpp:386: error: 'MSG_SD_WRITE_TO_FILE' was not declared in this scope
cardreader.cpp: In member function 'void CardReader::getStatus()':
cardreader.cpp:454: error: 'MSG_SD_PRINTING_BYTE' was not declared in this scope
cardreader.cpp:460: error: 'MSG_SD_NOT_PRINTING' was not declared in this scope
cardreader.cpp: In member function 'void CardReader::write_command(char*)':
cardreader.cpp:480: error: 'MSG_SD_ERR_WRITE_TO_FILE' was not declared in this scope
cardreader.cpp: In member function 'void CardReader::chdir(const char*)':
cardreader.cpp:560: error: 'MSG_SD_CANT_ENTER_SUBDIR' was not declared in this scope
antonkopa
 
Сообщения: 73
Зарегистрирован: 10 фев 2015, 10:42

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение stepmotor » 23 янв 2016, 19:50

Сейчас попробую прошить , проверю.
У Вас Marlin-RC ?
Sergey-3D Printer :) Arduino 2560 + Ramps 1.4 + Leadshine DM422C. Firmware: Marlin. + my Filament extruder :)
+ My H-Bot 218\218\218mm \ Mega2560 \ DRV8825 \ Marlin-RC
Аватара пользователя
stepmotor
 
Сообщения: 331
Зарегистрирован: 19 май 2014, 18:05
Откуда: Россия, Московская обл.
Skype: sergius_efremov
прог. языки: Delphi,VB,PHP,MicroC,CVAVR
ФИО: Сергей Ефремов

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение antonkopa » 23 янв 2016, 19:51

Да, Marlin-RC

Только он как то странновато работает, пластик выплевывает, и крутит на прием ставлю нажимаю ок, и он возращает к модели после чего опять выплевывает пластик :o,
Последний раз редактировалось antonkopa 24 янв 2016, 00:51, всего редактировалось 1 раз.
antonkopa
 
Сообщения: 73
Зарегистрирован: 10 фев 2015, 10:42

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение stepmotor » 23 янв 2016, 21:37

Я обычно не пользуюсь этой функцией, сейчас допечатаю и попробую для интереса :)
Посмотрим чего там не так.
Sergey-3D Printer :) Arduino 2560 + Ramps 1.4 + Leadshine DM422C. Firmware: Marlin. + my Filament extruder :)
+ My H-Bot 218\218\218mm \ Mega2560 \ DRV8825 \ Marlin-RC
Аватара пользователя
stepmotor
 
Сообщения: 331
Зарегистрирован: 19 май 2014, 18:05
Откуда: Россия, Московская обл.
Skype: sergius_efremov
прог. языки: Delphi,VB,PHP,MicroC,CVAVR
ФИО: Сергей Ефремов

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение antonkopa » 23 янв 2016, 21:40

спасибо огромное ))
antonkopa
 
Сообщения: 73
Зарегистрирован: 10 фев 2015, 10:42

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение stepmotor » 24 янв 2016, 02:07

Да, что-то смена прутка неадекватно работает :)
Надо подумать, прям интересно :)
Sergey-3D Printer :) Arduino 2560 + Ramps 1.4 + Leadshine DM422C. Firmware: Marlin. + my Filament extruder :)
+ My H-Bot 218\218\218mm \ Mega2560 \ DRV8825 \ Marlin-RC
Аватара пользователя
stepmotor
 
Сообщения: 331
Зарегистрирован: 19 май 2014, 18:05
Откуда: Россия, Московская обл.
Skype: sergius_efremov
прог. языки: Delphi,VB,PHP,MicroC,CVAVR
ФИО: Сергей Ефремов

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение antonkopa » 24 янв 2016, 10:23

stepmotor писал(а):Да, что-то смена прутка неадекватно работает :)
Надо подумать, прям интересно :)


Самое досадное что и как раньше не работает ( с выплевываванием прутка и с звуковым сигналом https://www.youtube.com/watch?v=Qz15wzIDt-k ) без активации #define FILAMENTCHANGEENABLE такой функции в меню просто нет. ((

Вот кусок с которым работает но без автоматического захвата нового прутка (а это надо :) )

//adds support for experimental filament exchange support M600; requires display
#ifdef ULTIPANEL
#define FILAMENTCHANGEENABLE
#ifdef FILAMENTCHANGEENABLE
#define FILAMENTCHANGE_XPOS 3
#define FILAMENTCHANGE_YPOS 3
#define FILAMENTCHANGE_ZADD 10
#define FILAMENTCHANGE_FIRSTRETRACT -2
#define FILAMENTCHANGE_FINALRETRACT -100
#endif
#endif

#ifdef FILAMENTCHANGEENABLE
#ifdef EXTRUDER_RUNOUT_PREVENT
#error EXTRUDER_RUNOUT_PREVENT currently incompatible with FILAMENTCHANGE
#endif
#endif
antonkopa
 
Сообщения: 73
Зарегистрирован: 10 фев 2015, 10:42

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение stepmotor » 24 янв 2016, 14:56

Замените функцию М600 этой.. на всякий случай старую в бэкап куда нибудь сохраните.

Код: Выделить всёРазвернуть
inline void gcode_M600() {

    if (degHotend(active_extruder) < extrude_min_temp) {  // Проверяем температуру, если она ниже минимальной то выводим ошибку.
      SERIAL_ERROR_START;
      SERIAL_ERRORLNPGM(MSG_TOO_COLD_FOR_M600);
      return;
    }

    float lastpos[NUM_AXIS], fr60 = feedrate / 60;  //запоминаем позицию и тукущую подачу.

    for (int i = 0; i < NUM_AXIS; i++)
      lastpos[i] = destination[i] = current_position[i];

    #if ENABLED(DELTA)
      #define RUNPLAN calculate_delta(destination); \
                      plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], destination[E_AXIS], fr60, active_extruder);
    #else
      #define RUNPLAN line_to_destination();
    #endif

    //retract by E
    if (code_seen('E')) destination[E_AXIS] += code_value();
    #ifdef FILAMENTCHANGE_FIRSTRETRACT
      else destination[E_AXIS] += FILAMENTCHANGE_FIRSTRETRACT;
    #endif

    RUNPLAN;

    //lift Z
    if (code_seen('Z')) destination[Z_AXIS] += code_value();
    #ifdef FILAMENTCHANGE_ZADD
      else destination[Z_AXIS] += FILAMENTCHANGE_ZADD;
    #endif

    RUNPLAN;

    //move xy
    if (code_seen('X')) destination[X_AXIS] = code_value();
    #ifdef FILAMENTCHANGE_XPOS
      else destination[X_AXIS] = FILAMENTCHANGE_XPOS;
    #endif

    if (code_seen('Y')) destination[Y_AXIS] = code_value();
    #ifdef FILAMENTCHANGE_YPOS
      else destination[Y_AXIS] = FILAMENTCHANGE_YPOS;
    #endif

    RUNPLAN;

    LCD_ALERTMESSAGEPGM("Выгрузка прутка !");
    if (code_seen('L')) destination[E_AXIS] += code_value();
    #ifdef FILAMENTCHANGE_FINALRETRACT
      else destination[E_AXIS] += FILAMENTCHANGE_FINALRETRACT;
    #endif

    RUNPLAN;

    //finish moves
    st_synchronize();

   
    millis_t next_tick = 0;
    while (!lcd_clicked()) {
      LCD_ALERTMESSAGEPGM("Пруток вставлен ?");
      millis_t ms = millis();
      if (ms >= next_tick) {
      lcd_quick_feedback();
      next_tick = ms + 1000; //
      }
        manage_heater();
        manage_inactivity(true);
        lcd_update();
    }
 
    //disable extruder steppers so filament can be removed
    disable_e0();
    disable_e1();
    disable_e2();
    disable_e3();
    delay(300);
   
    #if ENABLED(AUTO_FILAMENT_CHANGE)
      current_position[E_AXIS] = 0;
      st_synchronize();
    #endif
   
    LCD_ALERTMESSAGEPGM("Загузка прутка !");
    //return to normal
    if (code_seen('L')) destination[E_AXIS] -= code_value();
    #ifdef FILAMENTCHANGE_FINALRETRACT
      else destination[E_AXIS] -= FILAMENTCHANGE_FINALRETRACT;
    #endif

    next_tick = 0;
    while (!lcd_clicked()) { 
        current_position[E_AXIS] += AUTO_FILAMENT_CHANGE_LENGTH;
        destination[E_AXIS] = current_position[E_AXIS];
        line_to_destination(AUTO_FILAMENT_CHANGE_FEEDRATE);
        st_synchronize();
    }
    lcd_quick_feedback(); // click sound feedback
   
  //  lcd_reset_alert_level();

    #if ENABLED(DELTA)
      // Move XYZ to starting position, then E
      calculate_delta(lastpos);
      plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], destination[E_AXIS], fr60, active_extruder);
      plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], lastpos[E_AXIS], fr60, active_extruder);
    #else

    LCD_ALERTMESSAGEPGM("Продолжаем печатать");
   
      // Move XY to starting position, then Z, then E
      destination[X_AXIS] = lastpos[X_AXIS];
      destination[Y_AXIS] = lastpos[Y_AXIS];
      line_to_destination();
      destination[Z_AXIS] = lastpos[Z_AXIS];
      line_to_destination();
      current_position[E_AXIS] = lastpos[E_AXIS];
      st_synchronize();
    #endif

    #if ENABLED(FILAMENT_RUNOUT_SENSOR)
      filrunoutEnqueued = false;
    #endif

  }



Должно нормально заработать :)
Sergey-3D Printer :) Arduino 2560 + Ramps 1.4 + Leadshine DM422C. Firmware: Marlin. + my Filament extruder :)
+ My H-Bot 218\218\218mm \ Mega2560 \ DRV8825 \ Marlin-RC
Аватара пользователя
stepmotor
 
Сообщения: 331
Зарегистрирован: 19 май 2014, 18:05
Откуда: Россия, Московская обл.
Skype: sergius_efremov
прог. языки: Delphi,VB,PHP,MicroC,CVAVR
ФИО: Сергей Ефремов

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение antonkopa » 24 янв 2016, 15:18

Выдало ошибку

AUTO_FILAMENT_CHANGE_LENGTH WAS NOT DECLARED IN THIS SCOPE

Marlin_main.cpp: In function 'void gcode_M600()':
Marlin_main.cpp:5394: error: 'AUTO_FILAMENT_CHANGE_LENGTH' was not declared in this scope
Marlin_main.cpp:5396: error: 'AUTO_FILAMENT_CHANGE_FEEDRATE' was not declared in this scope
antonkopa
 
Сообщения: 73
Зарегистрирован: 10 фев 2015, 10:42

Re: 3D принтер. Прошивка Marlin, оптимизация.

Сообщение stepmotor » 24 янв 2016, 15:29

#define FILAMENTCHANGEENABLE
забыли комментарий снять в configuration_adv.h

и шапку затерли скорее всего в marlin_main.cpp
Код: Выделить всёРазвернуть
#if ENABLED(FILAMENTCHANGEENABLE)  // Смена нити

  /**
   * M600: Pause for filament change
   *
   *  E[distance] - Retract the filament this far (negative value)
   *  Z[distance] - Move the Z axis by this distance
   *  X[position] - Move to this X position, with Y
   *  Y[position] - Move to this Y position, with X
   *  L[distance] - Retract distance for removal (manual reload)
   *
   *  Default values are used for omitted arguments.
   *
   */
Последний раз редактировалось stepmotor 24 янв 2016, 15:49, всего редактировалось 1 раз.
Sergey-3D Printer :) Arduino 2560 + Ramps 1.4 + Leadshine DM422C. Firmware: Marlin. + my Filament extruder :)
+ My H-Bot 218\218\218mm \ Mega2560 \ DRV8825 \ Marlin-RC
Аватара пользователя
stepmotor
 
Сообщения: 331
Зарегистрирован: 19 май 2014, 18:05
Откуда: Россия, Московская обл.
Skype: sergius_efremov
прог. языки: Delphi,VB,PHP,MicroC,CVAVR
ФИО: Сергей Ефремов

Пред.След.

Вернуться в 3D печать

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12