Итак.
Механика готова, нигде ничего не люфтит и не болтается, все подвижные соединения смазаны, а неподвижные - зафиксированы. Теперь надо все это дело оживить.
Пораньше я уже писал про электронику под названием
Teensylu, но в этой статье я более подробно опишу процесс настройки платы под более конкретный принтер.
Я не буду останавливаться на том как паять
Teensylu, тем более, что это очень подробно расписано в
RepRapWiki. А на
ebay.com эти платы уже вовсю продают за тысячу с небольшим рублей в готовом к употреблению виде.
Teensylu построена на базе микроконтроллера
AT90USB1286, работающего на частоте 16 Mhz. На борту МК интегрирован USB-UART модуль, что позволяет подключить его напрямую к USB порту без всяких преобразователей. Также возможен вариант установки контроллера
AT90USB1287, который отличается только тем, что работает на тактовой частоте 20 MHz. Больше всего мне на этой плате нравится возможность замены драйверов шаговых двигателей. Используются драйвера
Pololu в количестве 4 штук на панельках.
Практически полным аналогом данной плате является
Printrboard:
Она построена на базе того же самого контроллера, что и Teensylu. Разница лишь в том, что в нее уже интегрированы драйвера шаговиков и есть возможность подключения MicroSD карточки. Вместо Pololu на базе А4988 используются драйвера А4982, которые, почему-то, являются большей редкостью, чем обычные Pololu.
Процедура настройки обеих плат в принципе аналогичная, поэтому используем ту, которая есть под рукой.
...
Подключаем плату к компьютеру USB-шнурком и видим такую картину:
Все очень логично - железка требует драйвера. Первым делом идем на сайт Atmel и качаем оттуда софтину под названием
Flip. Выбираем версию программы, в которую уже включены необходимые библиотеки JRE - я качал
эту.
После установки Flip вручную указываем путь для установки драйверов нашей железке. У меня это:
C:\Program Files\Atmel\Flip 3.4.7\usb\
Все, железка определяется как
AT90USB128 и готова к программированию.
Запускаем Flip и первым делом выбираем нашу микросхему:
Далее жмем кнопку "
Select communication medium" и выбираем тип подключения "usb". Либо просто нажимаем комбинацию "Ctrl+U":
В открывшемся диалоговом окне выбираем "
Open", после чего мы должны увидеть вот такую картину:
Это означает, что все успешно подключилось и определилось. И теперь мы можем заливать в наш контроллер прошивку. Для этого надо будет нажать
File -> Load Hex File в появившемся окне выбрать готовый файл прошивки с расширением
.hex и прошить кнопкой "
Run". Галочки в окошке "
Operations Flow" рекомендую оставить как есть.
Нам остается подготовить файл прошивки, чтобы нам было что заливать. Для этого качаем среду
Arduino и устанавливаем. Далее необходимо скачать исходники прошивки Marlin, модифицированные для работы с параллельной кинематикой. Выложены они на
GitHub. Качаем весь архив целиком кнопкой
Download ZIP и распаковываем в удобное нам место. Чтобы наш проект впоследствии удачно скомпилировался необходимо скопировать дополнительные библиотеки отсюда:
Marlin-deltabot\ArduinoAddons\Arduino_1.x.x\libraries\
сюда:
C:\Program Files\Arduino\libraries\. Ну или куда у вас там установлена среда Arduino.
Теперь надо обучить среду программирования Arduino работать с нашей платой. Для этого качаем небольшой аддон под названием
Teensyduino и устанавливаем его. После этого в списке плат, доступных для программирования из-под ардуины появляются всякие Teensy:
Если заморочиться еще немного, то можно добиться программирования нашей Teensylu прямо из-под ардуины.
Здесь можно почитать как это делается.
Я же нацелился на получение HEX-файла для заливки через атмеловский FLIP. Поэтому все, что требуется в данном случае от ардуиновского компилятора - это откомпилировать прошивку с нужными нам параметрами и собрать драгоценный HEX-файл.
В среде Arduino сначала выбираем Board -
Teensy++ 2.0, после чего открываем скетч, слитый чуть ранее с GitHub. Нас интересует файл
Marlin.ino- при этом открываются и все остальные файлы проекта.
Теперь надо внести изменения в проект, чтобы он соответствовал нашей конфигурации.
Открываем вкладку "
Configuration.h" и правим:
#define MOTHERBOARD 8 // (для Printrboard ставим 81)
#define TEMP_SENSOR_0 1 // Указываем, что у нас термистор на хотэнде на 100к
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 1 // Стол тоже будет греться
Дальше идем в раздел "Delta Settings" в том же Configuration.h и меняем размеры кинематических элементов согласно нашему принтеру. Есть неплохая картинка, описывающая все параметры дельта-принтера:
Еще важный параметр, который обязательно будет индивидуальным:
#define MANUAL_Z_HOME_POS 214 // For delta: Distance between nozzle and print surface after homing.
После того, как наш принтер коснется концевика (а он у нас стоит сверху) - мерим расстояние от кончика сопла до печатной поверхности - это и будет MANUAL_Z_HOME_POS.
Дальше идем в раздел
default settings:
#define XYZ_FULL_STEPS_PER_ROTATION 200 - Ставим количество импульсов на один полный оборот шагового двигателя. Параметр рассчитывается как 360 / величину полного шага. Для моих FL42STH величина полного шага = 1,8 градуса.
#define XYZ_MICROSTEPS 16 - Режим микрошага. Для Pololu максимальное значение = 16.
#define XYZ_BELT_PITCH 2.5 - Шаг зубчатого ремня
#define XYZ_PULLEY_TEETH 16 - Число зубов зубчатого шкива
Еще можно поменять значение максимальных скоростей / ускорений:
#define DEFAULT_MAX_FEEDRATE {200, 200, 200, 200} // (mm/sec)
#define DEFAULT_MAX_ACCELERATION {9000,9000,9000,9000}
И значения по-умолчанию:
#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for printing moves
#define DEFAULT_RETRACT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for retracts
Еще один момент - если не планируется установка концевиков еще и снизу, то необходимо убрать (закомментировать) параметр автоподбора высоты стола по контрольным точкам:
#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)
Теперь можно попробовать откомпилировать:
Если нет ошибок, ардуина радостно сообщит, что "Компилирование выполнено" и предложит нажать кнопку на Teensy для вливания прошивки. У нас нет никаких Teensy и нам надо выковырять hex-файлик для заливки другими средствами.
Для этого идем в каталог временных файлов
Windows под названием
Temp. Если установлен XP, то это:
c:\Documents and Settings\[Имя_пользователя]\Local Settings\Temp. В 7-ке путь другой:
c:\Users\SV\AppData\Local\Temp. Эти папки являются скрытыми, поэтому необходимо будет включить отображение скрытых папок, либо прописать путь вручную в адресной строке.
Попав в нужную нам папку, ищем каталог временных файлов ардуины. Называться он будет примерно так
build4447737510719035439.tmp. Если временных файлов очень много - ищем вручную по имени. Нужный нам файл называется
Marlin.cpp.hex и
имеет размер 154 кб. Берем его и заливаем в нашу
Teensylu атмеловским
Flip'ом как было описано выше. После этого "передергиваем" питание платы (отключаем и заново подключаем usb-шнур).
Все, дело сделано! Осталось проверить работоспособность.
Если все было сделано правильно, плата определится уже не как
AT90USB, а как "
USB Serial" устройство:
Качаем драйвер
USB Serial Device и устанавливаем его в систему:
Обновляем драйвера для нашего USB Serial устройства в диспетчере устройств, либо просто еще раз "передергиваем" шнурок:
Нашей плате присвоили номер COM-порта:
В моем случае это - COM6. Запоминаем на каком порту будет жить наше устройство, чтобы в дальнейшем выбрать правильный порт в программе.
Качаем интерфейсную программу
Printrun для Windows (
Printrun-Win-Slic3r-10Mar2014.zip), распаковываем и запускаем
pronterface.exe. После запуска указываем на каком порту живет наше устройство:
Жмем на кнопку "
Connect" и надеемся увидеть вот такой результат:
"
Printer is now online" - означает, что мы все сделали правильно и наша железка ждет от нас дальнейших распоряжений. Теперь мы можем подключать драйвера шаговых двигателей, датчики, нагревательные элементы, концевики и все, что угодно. При этом, используя
Printrun, мы можем сразу проверить работу наших устройств на практике.
Самое простое, что можно подключить, чтобы побыстрее увидеть результаты трудов - это датчик температуры, который мы подключаем сюда:
Если нет датчика, можно обойтись простым резистором:
Резистор на 10к должен показать температуру порядка 80 градусов:
p.s. Не забываем поставить галочку "
Watch" в программе, чтобы видеть изменения температуры в реальном времени в виде графика.
На этом пока все. Задавайте вопросы в комментариях.