Технический форум по робототехнике.
egorka75 » 24 фев 2015, 23:12
icehardy писал(а):мне лениво было серву приделывать, просто щуп втыкаю перед калибровкой, и потом вытаскиваю
принтер все равно уже сейчас другой, этот или продам или разберу
Судя по прошиве прямо на хотэнд ???
icehardy » 24 фев 2015, 23:26
egorka75 писал(а):icehardy писал(а):мне лениво было серву приделывать, просто щуп втыкаю перед калибровкой, и потом вытаскиваю
принтер все равно уже сейчас другой, этот или продам или разберу
Судя по прошиве прямо на хотэнд ???
на картерку оси Х приклеил концевик с направляющей для щупа
щуп - Г образный ключик, шестигранник
SkyFlyer » 25 фев 2015, 21:46
Сегодня весь день провозился, но кажется что-то получилось. Пришлось выломать с концевика пластинку с колесиком, чтобы чисто кнопкой микрика нажимался. Стало лучше. Еще направление оси поменял и отключил ретракт сервы в процессе калибровки.
В общем, теперь после нескольких калибровок зазор почти одинаков, разбос значений при нескольких замерах не более 0.02-0.03 мм. по Z.
Надо оптический концевик ставить, если смогу печатать, то сделаю его первым.
ursus » 10 мар 2015, 15:37
Скачал тут новый марлин. Изменили они сильно код автолевела. Добавили функцию не убирать серву при перемещениях между пробами, т.е. опускается серва, берется проба первая , приподнимается голова на расстояние #define Z_RAISE_BETWEEN_PROBINGS и едет к следующей точке не убирая серву. Для активации такого автолевела нужно дать команду G29 E. Без Е будет по старому. НО после замера последней точки серва убирается по старому и естественно цепляет стол. Так же осталась проблема с G28. Не поднимает голову перед ретрактом.
Помог справиться с G28 код Ande:
- Код: Выделить всё • Развернуть
Find the following code:
// Retract Servo endstop if enabled
#ifdef SERVO_ENDSTOPS
if (servo_endstops[axis] > -1) {
servos[servo_endstops[axis]].write(servo_endstop_angles[axis * 2 + 1]);
}
#endif
#if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0)
if (axis==Z_AXIS) retract_z_probe();
#endif
add these lines of code immediately after the "// Retract Servo endstop if enabled" comment.
#if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0)
if (axis==Z_AXIS)
do_blocking_move_relative(0, 0, Z_RAISE_BEFORE_PROBING);
#endif
It should look like this when you have made the change:
// Retract Servo endstop if enabled
#if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0)
if (axis==Z_AXIS)
do_blocking_move_relative(0, 0, Z_RAISE_BEFORE_PROBING);
#endif
#ifdef SERVO_ENDSTOPS
if (servo_endstops[axis] > -1) {
servos[servo_endstops[axis]].write(servo_endstop_angles[axis * 2 + 1]);
}
#endif
#if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0)
if (axis==Z_AXIS) retract_z_probe();
#endif
А вот с ретрактом в конце g29 пока не разобрался.
SkyFlyer » 10 мар 2015, 16:13
Да я уже с этим ретрактом одну серву практически запорол.
Код прошивки написан отвратительно, на мой взгляд.
После замера последней точки серва делает ретракт без какой-либо задержки. Это обязательно надо править, у меня при этом оптический датчик щелкает, царапая стол (и ломая серву).
Вообще ужасно проблемный этот автолевел. Как ни выставляю, зазор не соответствует тому, что было измерено при начальной калибровке. И результаты замеров отличаются друг от друга, особенно первый.
Можно как-то поправить скорость поворота сервопривода? На той скорости, на которой марлин это делает, она развалится и зубья на шестеренках посрезает.
ursus » 10 мар 2015, 19:54
Ну не знаю у меня когда стоял микрик все норм было. Я просто выставлял смещения по Х и У по инструкции а Z сначала так же а потом просто подбирал подходящий методом тыка, но в итоге зазор был нормальный по всему столу. Просто сам микрик не слишком точный(я его выковырял из мышки какой то), вот и решил поменять на оптодатчик, а вот с ним да никак не получается до конца добить.
Добавлено спустя 3 часа 32 минуты 22 секунды:Нашел я кусок кода который отвечает за то что серва не убирается во время движения и убирается на последней точке.
- Код: Выделить всё • Развернуть
// Enhanced G29 - Do not retract servo between probes
ProbeAction act;
if (enhanced_g29) {
if (yProbe == front_probe_bed_position && xCount == 0)
act = ProbeEngage;
else if (yProbe == front_probe_bed_position + (yGridSpacing * (auto_bed_leveling_grid_points - 1)) && xCount == auto_bed_leveling_grid_points - 1)
act = ProbeRetract;
else
act = ProbeStay;
}
Кто шарит подскажите как его поправить что б сначала поднималась голова и только потом серва убиралась плз.
SkyFlyer » 10 мар 2015, 20:54
Наверное, как то так:
- Код: Выделить всё • Развернуть
do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS);
Вставлять надо после проверки на последнюю точку. Только где эта проверка, я в этой кривой логике найти не могу. Это где-то в этом куске кода, что вы привели выше.
Проверьте, а то у меня под рукой принтера нет.
Добавлено спустя 14 минут 11 секунд:Возможно, вот сюда надо вставить.
Это ф-я ретракта сервы. Думаю, что перед любым ретрактом полезно поднимать пробу.
- Код: Выделить всё • Развернуть
static void retract_z_probe() {
.......
}
ursus » 10 мар 2015, 22:44
Я сделал пока таким образом.
act = ProbeRetract; Заменил на act = ProbeStay; т.е. от теперь не поднимает щуп по окончании замеров. А в слайсере добавил G1 Z15 и M402 после G29 E. Вроде работает.
ursus » 11 мар 2015, 07:17
Создал тему
https://github.com/MarlinFirmware/Marlin/issues/1589на гитхабе по поводу ретракта сервы. Товарищ просит подтверждения проблемы еще от нескольких человек для занесения ее в список на исправление.
SkyFlyer » 11 мар 2015, 11:13
Отписался туда, подождем - может поправят. Самому править неудобно, как потом марлина обновлять, все правки слетят.
Я сделал пока таким образом.
Несколько некорректно, больше похоже на костыль)
Все же правильнее будет делать подъем оси Z перед любым ретрактом.
ursus » 11 мар 2015, 14:48
Так если даешь команду G29 E серва ваще не убирается во время перемещений, имхо так даже лучше, нет погрешности в механике сервы. Остается только ретракт после G28, но это правится кодом и последний ретракт после всех замеров.
В гкод кстати пришлось еще задержку добавить перед ретрактом после команды поднятия, иначе серва убиралась сразу после начала движения головы вверх. Теперь все отлично.
Понятно что это костыль, но поправить серьезно код сам я не могу, к сожалению, остается только ждать когда допилят разрабы. А пока попользуюсь костылями.
SkyFlyer » 11 мар 2015, 15:19
Ну, это я к тому, что любой ретракт должен быть только после подъема сервы. В любой команде.
Править самому можно, но как потом апдейт накатывать? Так что лучше, пусть они правят. Вроде собрались.)
Я пока попробую добавить эту команду подъема.
Chpok » 03 апр 2015, 03:26
http://www.thingiverse.com/thing:739401 -там есть файлы в "Sprint 6" для лута платы концевика оптического,файлы в автокаде если кому размеры подогнать под свои,схема
Добавлено спустя 44 минуты 21 секунду:вот прошивка рабочая
https://github.com/beckdac/Marlin ,у меня работает
,в файле Configuration.h ( #define Z_RAISE_BETWEEN_PROBINGS 7) есть подьем между измерениями если его увеличивать ,увеличивается высота после которой серва убирает лапку
SkyFlyer » 03 апр 2015, 15:18
Сомневаюсь, что эта загогулина будет точнее хотя бы даже обычного микрика. Нехватало еще самому делать оптические концевики, проще в Китае заказать.
И зачем вы опять нам подсовываете кривую и старую прошивку, да еще и неоригинал? Есть 1.0.2, который нормально работает. А этот форк у меня даже не заработал. Почитайте хотя бы страничку выше.
Хотя я к примеру, от автолевела вообще отказался, ручное выравнивание у меня дает лучшие результаты.
Chpok » 04 апр 2015, 03:56
На рошивку я дал ссылку для образца там уже почти все настроено,у меня работает.Загогулина реально точнее,кому то в кайф купить мне в кайф сделать самому люблю мастерить,а по поводу новой прошивки у меня принтер без примочек пока ,текста много а работает так же, автоуровень - это первая