roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 май 2025, 05:23

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 810 ]  На страницу Пред.  1 ... 11, 12, 13, 14, 15, 16, 17 ... 54  След.
Автор Сообщение
 Заголовок сообщения: Re: 3D принтер. Прошивка Marlin, оптимизация.
СообщениеДобавлено: 25 авг 2012, 02:58 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2012, 13:01
Сообщения: 971
Skype: fooltroll
+1 кисс хорош. ему б еще управления мостами... а как включить экспериментальные функции? )

_________________
90% моих ответов абсолютно верны, но входит ли это в их число?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер. Прошивка Marlin, оптимизация.
СообщениеДобавлено: 25 авг 2012, 03:20 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
Jonatan писал(а):
Bridging is coming...I just have not had much time, for sleep, much less for KISSlcier


Добавлено спустя 2 минуты 57 секунд:
мосты скоро будут, а с экспериментальными функциями я пока сам не понимаю ...
у меняя от них только хуже:
(соответственно нужно разремарить #define ADVANCE )
Код:
// extruder advance constant (s2/mm3)
//
// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTUDER_ADVANCE_K * cubic mm per second ^ 2
//
// hooke's law says:      force = k * distance
// bernoulli's priniciple says:   v ^ 2 / 2 + g . h + pressure / density = constant
// so: v ^ 2 is proportional to number of steps we advance the extruder
//#define ADVANCE

#ifdef ADVANCE
  #define EXTRUDER_ADVANCE_K .01

  #define D_FILAMENT 1.75
  #define STEPS_MM_E 604
  #define EXTRUTION_AREA (0.5 * D_FILAMENT * D_FILAMENT * 3.14159)
//  #define STEPS_PER_CUBIC_MM_E (axis_steps_per_unit[E_AXIS]/ EXTRUTION_AREA)
  #define STEPS_PER_CUBIC_MM_E (STEPS_MM_E / EXTRUTION_AREA)

#endif // ADVANCE


Добавлено спустя 3 минуты 41 секунду:
вот тут почитать можно : preliminary support for Matthew Roberts advance algorithm For more info see: http://reprap.org/pipermail/reprap-dev/ ... 03323.html

я нифига не понял, контроль за давлением в экструдере что ли ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер. Прошивка Marlin, оптимизация.
СообщениеДобавлено: 25 авг 2012, 04:03 
Не в сети
Аватара пользователя

Зарегистрирован: 06 июн 2012, 09:42
Сообщения: 615
Откуда: Киев
прог. языки: Алгол :)
ФИО: Александр
дк я и не говорил, что в прошивке диаметр - просто на шарике не видно, а на последней модели заметил, когда за печатью наблюдал - щели остаются - просто в слике изменить диаметр нужно... надеюсь, что до замены болта в экструдере, я к прошивке прикасаться не буду, а то, если честно, надоело уже - подбор параметров, компиляция, программатор, прошивка, проверка...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер. Прошивка Marlin, оптимизация.
СообщениеДобавлено: 25 авг 2012, 05:00 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
ReaN писал(а):
а то, если честно, надоело уже - подбор параметров, компиляция, программатор, прошивка, проверка...

я так пару месяцев развлекался, иной раз казалось что эта куча параметров никогда не сведется к приемлемому результату :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер. Прошивка Marlin, оптимизация.
СообщениеДобавлено: 25 авг 2012, 15:25 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2012, 13:01
Сообщения: 971
Skype: fooltroll
разкомментить в прошивке?

_________________
90% моих ответов абсолютно верны, но входит ли это в их число?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер. Прошивка Marlin, оптимизация.
СообщениеДобавлено: 25 авг 2012, 16:32 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
разумеется :) это тема про прошивку


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер. Прошивка Marlin, оптимизация.
СообщениеДобавлено: 25 авг 2012, 18:00 
Не в сети
Аватара пользователя

Зарегистрирован: 27 янв 2012, 13:01
Сообщения: 971
Skype: fooltroll
ну тут кисс упоминался думал может где можно в бетта тестеры записаться )

_________________
90% моих ответов абсолютно верны, но входит ли это в их число?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер. Прошивка Marlin, оптимизация.
СообщениеДобавлено: 26 авг 2012, 04:46 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
Были выпущены новые апдейты к прошивке, теперь SD карта умеет работать с длинными именами (vfat)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер. Прошивка Marlin, оптимизация.
СообщениеДобавлено: 24 окт 2012, 11:10 
Не в сети

Зарегистрирован: 04 мар 2012, 01:06
Сообщения: 1607
Откуда: Севастополь-Москва
вчера прошил ардуину мегу 2560 той же прошивкой что для 1280 (с учётом платы) дык зараза пронтерфейс не хочет с ней коннетиться на 250000 пришлось поставить 115200 тогда без проблем.
Всё это под федорой 15. И ещё эта мега опознаётся не как USB0 а как ACM0...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер. Прошивка Marlin, оптимизация.
СообщениеДобавлено: 25 окт 2012, 23:15 
Не в сети
Аватара пользователя

Зарегистрирован: 14 май 2008, 15:49
Сообщения: 1585
Откуда: Москва
ФИО: Алексей
Сидел тут разбирался как marlin работает со фидрейтом/ускорением, решил опубликовать записки по алгоритму. Начинаем с момента когда мы нашли G1:

// обработчик GCODE (marlin.pde)
1) Парсим координаты XYZE
2) Парсим F (ставим next_feedrate = F и, если найденное значение больше нуля (а F можно передать отрицательное значение?) - то и текущий фидрейт тоже)
3) Если включен FWRETRACT: если авторетракт включен (M209) и если в G1 нет движений по XYZ, но есть по E то: если засасываем на больше чем MIN_RETRACT(т.е. это ретракт), поднимаем по Z на zlift, исправляем объем ретракта и фидрейт ретракта(задаются в M207); если выплевываем больше чем на MIN_RETRACT(рестарт), корректируем объем и фидрейт(M208), но почему-то не возвращаем Z вниз
4) Проверяем на попадание движения в софтовые ограничения размера платформы
5) Умножаем фидрейт на фидрейт мультиплайер (M220 Sxxx)
// планнер (planner.cpp)
6) Если буффер планировщика полный - ждем пока появица место под команду
7) Если PREVENT_DANGEROUS_EXTRUDE, он включен (M302 отключает) и температура экструдера ниже желаемой, выкидываем движение по E как если его не было (считаем что текущие абсолютные координаты равны тем, которые мы должно были получить)
8 ) Если PREVENT_LENGTHY_EXTRUDE и длина экструзии больше EXTRUDE_MAXLENGTH - как в пункте 7
9) Считаем по какой оси будет самое большое перемещение (учитывая extrudemultiply, который задается через M221 Sxxx), если это перемещение меньше чем dropsegments (configuration_adv.h), то забиваем на эту команду (текущая позиция остается прежней, соответственно следующая пройдет по гипотенузе)
10) Включаем моторы осей (если Z_LATE_ENABLE, то не включаем мотор Z) и экструдеров(всегда всех трех)
11) Проверяем что текущий feedrate не меньше чем minfeedrate для экструдирования, и mintravelrate для перемещений без E
12) Если нет движений, а тока экструзия, то размер движения = размер экструзии, иначе только по осям sqrt(X^2+Y^2+Z^2)
13) Считаем скорость перемещения (inverse_second) == фидрейт/размер движения
14.1) Если стоит OLD_SLOWDOWN и буфер заполнен меньше, чем на половину, то фидрейт уменьшается пропорционально заполнению количеством команд
14.2) Если стоит SLOWDOWN и буфер заполнен меньше, чем на половину, то считаем время сегмента в мкс (1e6/inverse_second) и он оказывается короче, чем MINSEGMENTTIME (M205 Bxxx), то замедляем движение через inverse_second
15) Для каждой оси считается текущая скорость (delta_mm*inverse_second), и если превышает макс. скорость оси(DEFAULT_MAX_FEEDRATE или M203) то замедляем всю скорость чтобы попал в эту ось (общий коэффициент speed_factor)
16) Если XY_FREQUENCY_LIMIT, проверяем была ли смена направления вращения мотора по осям, если да, то: для каждой оси выбираем самый долгий сегмент из трех, между осями выбираем меньший, и сравниваем с (1e6/XY_FREQUENCY_LIMIT), если оказывается меньше - то замедляем всю скорость (speed_factor).
17) Окончательно рассчитываем скорость с применения спид_фактора для всех осей.
18) Делим максимальное количество шагов по одной из осей на длину всего движения и умножаем на ускорение (M204 Sxxx) - это нормальное ускорение в шагах/сек^2
19) Если нормальное_ускорение*размер_сегмента_по_оси_в_шагах/максимальный_сегмент_в_шагах больше максимального ускорения по этой оси(M201) - замедляем нормальное ускорение
20) Делаем обратную 18й операцию с нормальным ускорением - это ускорение для этого блока
--Расчет поворотов
21) jerk - это вектор изменения скорости, т.е. считается как sqrt((cur_speed_x-prev_speed_x)^2+(cur_speed_y-prev_speed_y)^2+(cur_speed_z-prev_speed_z)^2)
22) Если текущий jerk>max_xy_jerk (или любой другой из max_??_jerk) - вводим замедляющий фактор
23) Максимальная скорость входа в текущий сегмент - min(скорость прошлого сегмента, jerk*замедляющий_фактор)
24) Допустимая скорость входа в текущий сегмент - такая, чтобы за размер этого сегмента с максимальным допустимым для него ускорениям мы могли замедлиться до нуля в рамках сегмента
25) Реальная скорость входа в сегмент - min((23),(24))
26) С учетом этого у предыдущего сегмента обновляется его номинальная скорость
27) Считаем алгоритм ADVANCE'а.. основная идея вот тут http://reprap.org/pipermail/reprap-dev/ ... 03323.html (надо попробовать)
28) Пересчитываем весь план (проходим в обратном порядке, с учетом jerk'а замедляем скорости, а потом снова в хронологическом порядке и пробуем их поднять обратно)

Не знаю уж насколько это кому-то будет полезно, но у меня какое-то количество мыслей вызвало..

_________________
У меня в голове опилки и длинные слова меня только огорчают.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер. Прошивка Marlin, оптимизация.
СообщениеДобавлено: 25 окт 2012, 23:26 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
проверь плиз фикс FWRETRACT на логику :

Код:
Marlin/Marlin.pde
@@ -672,26 +672,34 @@ void process_commands()
       case 10: // G10 retract
       if(!retracted)
       {
+        SERIAL_ECHO_START;
+        SERIAL_ECHOLN("Retract");
         destination[X_AXIS]=current_position[X_AXIS];
         destination[Y_AXIS]=current_position[Y_AXIS];
-        destination[Z_AXIS]=current_position[Z_AXIS];
-        current_position[Z_AXIS]+=-retract_zlift;
+        current_position[Z_AXIS]+=retract_zlift;
         destination[E_AXIS]=current_position[E_AXIS]-retract_length;
+        destination[Z_AXIS]=current_position[Z_AXIS];
         feedrate=retract_feedrate;
         retracted=true;
         prepare_move();
       }
       
       break;
-      case 11: // G10 retract_recover
-      if(!retracted)
+      case 11: // G11 retract_recover
+      if(retracted)
       {
+        SERIAL_ECHO_START;
+        SERIAL_ECHOLN("UnRetract");
+//        SERIAL_ECHO("G11:E=");
+//        SERIAL_ECHO(current_position[E_AXIS]);
         destination[X_AXIS]=current_position[X_AXIS];
         destination[Y_AXIS]=current_position[Y_AXIS];
+        current_position[Z_AXIS]+=-retract_zlift;
+        current_position[E_AXIS]+=retract_recover_length;
+        destination[E_AXIS]=current_position[E_AXIS];
         destination[Z_AXIS]=current_position[Z_AXIS];
-       
-        current_position[Z_AXIS]+=retract_zlift;
-        current_position[E_AXIS]+=-retract_recover_length;
+//        SERIAL_ECHO("->E=");
+//        SERIAL_ECHOLN(destination[E_AXIS]);
         feedrate=retract_recover_feedrate;
         retracted=false;
         prepare_move();
@@ -1550,11 +1558,13 @@ void get_coordinates()
   if( !(seen[X_AXIS] || seen[Y_AXIS] || seen[Z_AXIS]) && seen[E_AXIS])
   {
     float echange=destination[E_AXIS]-current_position[E_AXIS];
+      SERIAL_ECHO_START;
+      SERIAL_ECHO("AutoRetract:");
+      SERIAL_ECHOLN(echange);
     if(echange<-MIN_RETRACT) //retract
     {
       if(!retracted)
       {
-     
       destination[Z_AXIS]+=retract_zlift; //not sure why chaninging current_position negatively does not work.
       //if slicer retracted by echange=-1mm and you want to retract 3mm, corrrectede=-2mm additionally
       float correctede=-echange-retract_length;
@@ -1571,6 +1581,7 @@ void get_coordinates()
       if(retracted)
       {
       //current_position[Z_AXIS]+=-retract_zlift;
+      destination[Z_AXIS]+=-retract_zlift;
       //if slicer retracted_recovered by echange=+1mm and you want to retract_recover 3mm, corrrectede=2mm additionally
       float correctede=-echange+1*retract_length+retract_recover_length; //total unretract=retract_length+retract_recover_length[surplus]
       current_position[E_AXIS]+=correctede; //to generate the additional steps, not the destination is changed, but inversely the current position


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер. Прошивка Marlin, оптимизация.
СообщениеДобавлено: 25 окт 2012, 23:41 
Не в сети
Аватара пользователя

Зарегистрирован: 14 май 2008, 15:49
Сообщения: 1585
Откуда: Москва
ФИО: Алексей
Ой, я на самом деле не уверен. Я не понимаю почему, но он оба раза реализовал zlift не как изменение дестинейшена, а как изменение начальной координаты. И в таком формате G10 реализован у него был в общем-то правильно, а в G11 одна опечатка, там надо if(!retracted) поправить на if(retracted).

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

_________________
У меня в голове опилки и длинные слова меня только огорчают.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер. Прошивка Marlin, оптимизация.
СообщениеДобавлено: 25 окт 2012, 23:44 
Не в сети
Site Admin
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер. Прошивка Marlin, оптимизация.
СообщениеДобавлено: 25 окт 2012, 23:48 
Не в сети
Аватара пользователя

Зарегистрирован: 14 май 2008, 15:49
Сообщения: 1585
Откуда: Москва
ФИО: Алексей
И zlift работает?

_________________
У меня в голове опилки и длинные слова меня только огорчают.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 3D принтер. Прошивка Marlin, оптимизация.
СообщениеДобавлено: 26 окт 2012, 00:26 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
разумеется, только ради него и есть смысл делать аппаратный ретракт

Добавлено спустя 1 минуту 5 секунд:
проверял просто - ставил zlift 5mm

Добавлено спустя 39 секунд:
сейчас ещё раз проверю

Добавлено спустя 31 минуту 48 секунд:
да, работает.
за таким нюансом что изначально я не правильно понял суть
M208 - set recover=unretract length S[positive mm surplus to the M207 S*] F[feedrate mm/sec]
и у меня этот параметр определяет не "добавку" а полное движение назад.
например если M208 = 0 то будем оттягивать пластик не возвращая вовсе.
но это правится просто


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 810 ]  На страницу Пред.  1 ... 11, 12, 13, 14, 15, 16, 17 ... 54  След.

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO