roboforum.ru

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

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

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

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

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

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


Да, не вернул установки по умолчанию. Да заработало :Bravo: :Yahoo!: но при выборе смены прутка начал тускнеть и подмаргивать экран сейчас скину даже видео, и после смены когда он возвращается уже к модели немного странно себя видет :(
antonkopa
 
Сообщения: 73
Зарегистрирован: 10 фев 2015, 10:42

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

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

Замените это
Код: Выделить всёРазвернуть
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();
    }


этим

Код: Выделить всёРазвернуть
    LCD_ALERTMESSAGEPGM("Пруток вставлен ?");
    millis_t next_tick = 0;
    while (!lcd_clicked()) {
      millis_t ms = millis();
      if (ms >= next_tick) {
      lcd_quick_feedback();
      next_tick = ms + 1000; //
      }
        manage_heater();
        manage_inactivity(true);
        lcd_update();
    }


Да, это я уже накосячил, там в цикле перерисовка вот и помаргивает.
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, 16:16

Отлично, можно ли как то сделать паузу после "Загрузки прутка" ? так как он сразу начинает с кучей этого пластика ехать к модели. Вот видео поведения на модели сори за качество слишком шустро уехал https://www.dropbox.com/s/m58sptfa4m5es ... 9.mov?dl=0
antonkopa
 
Сообщения: 73
Зарегистрирован: 10 фев 2015, 10:42

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

Сообщение stepmotor » 24 янв 2016, 16:55

Код: Выделить всёРазвернуть
#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.
   *
   */
  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();

    LCD_ALERTMESSAGEPGM("Пруток вставлен ?");
    millis_t next_tick = 0;
    while (!lcd_clicked()) {
      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_ALERTMESSAGEPGM("Продолжаем печатать?");
    delay(300);
    next_tick = 0;
    while (!lcd_clicked()) {
      millis_t ms = millis();
      if (ms >= next_tick) {
      lcd_quick_feedback();
      next_tick = ms + 1000; //
      }
        manage_heater();
        manage_inactivity(true);
        lcd_update();
    }
   
    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

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

  }

#endif // 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 » 24 янв 2016, 17:33

ШИКАРНО :) :good:
antonkopa
 
Сообщения: 73
Зарегистрирован: 10 фев 2015, 10:42

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

Сообщение antonkopa » 25 янв 2016, 11:49

Вылезла не хорошая проблема :( после начала печати через несколько минут по разному начала вылетать ошибка температуры стола.

может проблема тут ?

if (degHotend(active_extruder) < extrude_min_temp) { // Проверяем температуру, если она ниже минимальной то выводим ошибку.
SERIAL_ERROR_START;
SERIAL_ERRORLNPGM(MSG_TOO_COLD_FOR_M600);
return;
antonkopa
 
Сообщения: 73
Зарегистрирован: 10 фев 2015, 10:42

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

Сообщение stepmotor » 25 янв 2016, 12:02

Команда М600 работает только тогда когда Вы ее вызываете. Она не может влиять на процесс печати.

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


Этот кусок проверяет наличие минимальной температуры, если температура меньше минимальной то M600 (смена прутка) не будет исполняться.

Проверьте качество соединения проводов со столом и термодатчиком стола, Пробуйте откалибровать PID нагрева стола командой M303.
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 » 25 янв 2016, 12:10

Ясно,тогда сейчас попробую пере калибровать если не поможет буду менять провода. ((

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

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

Сообщение qqwert » 28 янв 2016, 23:28

Здравствуйте заменил на Prusa i3 после катастрофы плату Melzi 2.0 1284Р, теперь по оси Z все расстояния стали на порядок больше, плата не прошита. Можно ли прошить её через Cura, прошивку китайцы прислали. Вопрос возник потому что Cura не видит принтер, говорит про "вставьте usb", при том что РепитерХост его видит и даже печатает.
qqwert
 
Сообщения: 16
Зарегистрирован: 02 июл 2015, 20:12
Откуда: Волгоград

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

Сообщение unigenum » 28 янв 2016, 23:59

если немного подумать, совсем чуть-чуть...
настройки/параметры соединения, номер порта, скорость порта и т.п.
если репетирхост соединяется, а кура не соединяется, то в куру надо прописать правильные настройки соединения, которые можно подсмотреть в репетирхосте.
если бы плата была не прошита, оно вообще бы не коннектилось никак и тем более не печатало. значит плата прошита.

всетаки по таким вопросам лучше в тему для новичков. оптимизация прошивки тут вообще никаким боком....
unigenum
 
Сообщения: 705
Зарегистрирован: 29 окт 2012, 13:55
Откуда: СПб

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

Сообщение qqwert » 29 янв 2016, 00:40

Номер порта и скорость указаны правильно, в том то и дело. Можно ли залить прошивку другой программой? Файл с расширением .hex
qqwert
 
Сообщения: 16
Зарегистрирован: 02 июл 2015, 20:12
Откуда: Волгоград

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

Сообщение unigenum » 29 янв 2016, 01:38

если репетирхост соединяется, то в куре нужно установить те же самые значения, и она соединиться. если не соединяется, значит параметры указаны неверно. тут все элементарно просто, никакой мистики и танцев с бубном быть не может. единственный нюанс, одновременное соединение двух программ невозможно. если репетир подконнектился и занял порт, кура уже не сможет получить доступ к порту, пока репетир не закрыть.
файл с расширением .hex можно залить только с помощью программатора. на плате должен присутствовать разъем ISP, к которому подключается ISP-программатор.
и далеко не факт, что в этом файле содержится прошивка марлин, может быть какой-нить китайский teacup или sprinter. так что темой ошиблись точно. как прошить экзотическую китайскую плату непонятной китайской прошивкой, это к оптимизации марлина не имеет никакого отношения.
unigenum
 
Сообщения: 705
Зарегистрирован: 29 окт 2012, 13:55
Откуда: СПб

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

Сообщение stepmotor » 09 фев 2016, 21:43

Кто как настраивал управление вентилятором обдува пластика?

#define CONTROLLERFAN_PIN -1 // Вентилятор обдува драйверов.

#define EXTRUDER_0_AUTO_FAN_PIN -1 // Вентилятор обдува радиатора экструдера
#define EXTRUDER_1_AUTO_FAN_PIN -1
#define EXTRUDER_2_AUTO_FAN_PIN -1

#define FAN_PIN 11 // Еще вентилятор, по сути наверно вентилятор обдува пластика

, но работает почему-то только в режиме вкл\выкл по M106,M107:) Скорость обдува регулировать через S (M106 S200) не получается. Как будто ШИМ на 11 пине не работает, хотя по даташиту D11 как раз PWM.

Интересно кто как управляет обдувом пластика ?
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 » 09 фев 2016, 22:18

можно управлять любым пином произвольно например M48 P8 255 (на пин 8 подать значение 255)
кроме этого есть простые команды M106 , M107 (включить и выключить) и даже с аппаратным PWM например M106 S127 (включить на 50%)
но все это баловство - обдув вреден почти всегда (уменьшает межслойное сцепление)
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

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

Сообщение stepmotor » 09 фев 2016, 22:42

На мелочевке при печати PLA не успевает застывать и в следствии вместо ровной геометрии получается лизун из охотников за приведениями :)
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 печать

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

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