Технический форум по робототехнике.
antonkopa » 24 янв 2016, 15:47
stepmotor писал(а):#define FILAMENTCHANGEENABLE
забыли комментарий снять в configuration_adv.h
Да, не вернул установки по умолчанию. Да заработало

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

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();
}
Да, это я уже накосячил, там в цикле перерисовка вот и помаргивает.
antonkopa » 24 янв 2016, 16:16
Отлично, можно ли как то сделать паузу после "Загрузки прутка" ? так как он сразу начинает с кучей этого пластика ехать к модели. Вот видео поведения на модели сори за качество слишком шустро уехал
https://www.dropbox.com/s/m58sptfa4m5es ... 9.mov?dl=0
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
antonkopa » 24 янв 2016, 17:33
ШИКАРНО

antonkopa » 25 янв 2016, 11:49
Вылезла не хорошая проблема

после начала печати через несколько минут по разному начала вылетать ошибка температуры стола.
может проблема тут ?
if (degHotend(active_extruder) < extrude_min_temp) { // Проверяем температуру, если она ниже минимальной то выводим ошибку.
SERIAL_ERROR_START;
SERIAL_ERRORLNPGM(MSG_TOO_COLD_FOR_M600);
return;
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.
antonkopa » 25 янв 2016, 12:10
Ясно,тогда сейчас попробую пере калибровать если не поможет буду менять провода. ((
Спасибо еще раз.
qqwert » 28 янв 2016, 23:28
Здравствуйте заменил на Prusa i3 после катастрофы плату Melzi 2.0 1284Р, теперь по оси Z все расстояния стали на порядок больше, плата не прошита. Можно ли прошить её через Cura, прошивку китайцы прислали. Вопрос возник потому что Cura не видит принтер, говорит про "вставьте usb", при том что РепитерХост его видит и даже печатает.
unigenum » 28 янв 2016, 23:59
если немного подумать, совсем чуть-чуть...
настройки/параметры соединения, номер порта, скорость порта и т.п.
если репетирхост соединяется, а кура не соединяется, то в куру надо прописать правильные настройки соединения, которые можно подсмотреть в репетирхосте.
если бы плата была не прошита, оно вообще бы не коннектилось никак и тем более не печатало. значит плата прошита.
всетаки по таким вопросам лучше в тему для новичков. оптимизация прошивки тут вообще никаким боком....
qqwert » 29 янв 2016, 00:40
Номер порта и скорость указаны правильно, в том то и дело. Можно ли залить прошивку другой программой? Файл с расширением .hex
unigenum » 29 янв 2016, 01:38
если репетирхост соединяется, то в куре нужно установить те же самые значения, и она соединиться. если не соединяется, значит параметры указаны неверно. тут все элементарно просто, никакой мистики и танцев с бубном быть не может. единственный нюанс, одновременное соединение двух программ невозможно. если репетир подконнектился и занял порт, кура уже не сможет получить доступ к порту, пока репетир не закрыть.
файл с расширением .hex можно залить только с помощью программатора. на плате должен присутствовать разъем ISP, к которому подключается ISP-программатор.
и далеко не факт, что в этом файле содержится прошивка марлин, может быть какой-нить китайский teacup или sprinter. так что темой ошиблись точно. как прошить экзотическую китайскую плату непонятной китайской прошивкой, это к оптимизации марлина не имеет никакого отношения.
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.
Интересно кто как управляет обдувом пластика ?
setar » 09 фев 2016, 22:18
можно управлять любым пином произвольно например M48 P8 255 (на пин 8 подать значение 255)
кроме этого есть простые команды M106 , M107 (включить и выключить) и даже с аппаратным PWM например M106 S127 (включить на 50%)
но все это баловство - обдув вреден почти всегда (уменьшает межслойное сцепление)
stepmotor » 09 фев 2016, 22:42
На мелочевке при печати PLA не успевает застывать и в следствии вместо ровной геометрии получается лизун из охотников за приведениями
