пятница, 10 июля 2015 г.

Гравировка медали на самодельном ЧПУ станке. LinuxCNC.

     Понадобилось мне тут недавно выполнить небольшой заказ для местного турнира по таеквондо - сделать гравировку медалей. Пришлось сдуть пыль с моего старого фрезерного станка с ЧПУ. Небольшое видео процесса гравировки, хотя, правильнее сказать - фрезеровки:


Результат:


Парочка фотографий станка:




Управляющая программа называется "Linux CNC", она же "EMC2". Вот главное окно программы:


Если интересно, опишу поподробнее про использованный софт и конструкцию станка.

...


четверг, 26 июня 2014 г.

Teensylu. Настраиваем электронику принтера.

     Итак.

     Механика готова, нигде ничего не люфтит и не болтается, все подвижные соединения смазаны, а неподвижные - зафиксированы. Теперь надо все это дело оживить.
     Пораньше я уже писал про электронику под названием 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" в программе, чтобы видеть изменения температуры в реальном времени в виде графика.

     На этом пока все. Задавайте вопросы в комментариях.

понедельник, 23 июня 2014 г.

Rostock mini. Продолжение сборки.

     Итак.

     Печатаем платформу, файл так и называется platform.stl. Я решил печатать с поддержкой, которая называется raft, т.к. деталька достаточно большая и шансов на то, что края не отлипнут ближе к середине печати было очень мало.
   
     Вот так выглядит raft в процессе печати:


     А вот печатается сама платформа. Видно заполнение внутренностей - в слайсере этот параметр называется Fill Density (плотность заливки) и детали к принтеру я печатаю с заполнением равным 30%.


     Пока печатается платформа, примеряем движки осей:


     И электронику:


     Rostock mini изначально рассчитан на использование электроники Sanguinololu , с установленным в нее ATmega1284P контроллером. Я поставлю Teensylu, которая также прекрасно подходит по крепежным отверстиям.

     Нарезаем валы диаметром 8 мм в нужный нам размер, исходя из того, что 492 мм (как у автора) дают возможность печати высотой 192 мм. Это все очень приблизительно, поэтому делаем с небольшим запасом. Валы нарезаются болгаркой отрезным диском. Им же после этого сглаживаем концы.


     Вставляем:


     Тем временем платформа напечаталась полностью:


     Отрываем от стола напечатанную деталь. Кстати, проще всего это делать, когда стол уже остынет. Но ждать обычно лениво, да и времени это занимает очень прилично, поэтому отрываем "нагорячую". Я это делаю просто подковыривая с одного края не сильно острым ножом, чтобы не порезать каптоновый скотч. 
     Далее самый сложный из самых сложных процессов - отрывание рафта. Делается это при помощи скальпеля, либо острого ножа. В этом деле - главное не торопиться, иначе гарантированно наличие порезов. Отверстия любых напечатанных деталей содержат небольшие наплывы, которые удаляются подходящим по диаметру сверлом:


     Чтобы продолжить сборку нам необходимо также напечатать мелочевку. Это вилки (файл jawsx6.stl):


     В файле их 6 штук, а нам для сборки надо 12, поэтому печатаем два раза подряд, либо размещаем на столе сразу все. Я печатал за два раза.


     Случайно забыл выключить рафт в слайсере, поэтому напечатал с подложкой:


     Для таких мелких деталей подложка в принципе не нужна. 
Просто для примера отправил на печать следующую мелочь (файл jointx12.stl) с другим видом подложки - в слайсере Cura она называется Brim:


     Суть ее в том, что под деталью сначала печатается тонкая основа толщиной в один слой (а не пирог как с рафтом), которую потом очень легко оторвать от напечатанной детали.


     Если деталь не слишком большая, то Brim является очень даже неплохой альтернативой рафту. Тут надо самим экспериментировать.

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


     Под винт концевика на каретке отверстие проходим метчиком 3 мм:


     Собираем:


     Не забываем и про платформу:


     Подгоняем детали (при помощи напильника) так, чтобы они достаточно свободно вращались, но при этом не люфтили.

     Надеваем каретки на направляющие - все очень легко катается):

     
     И снимаем обратно, чтобы доделать "ноги".


     Автор рекомендует использовать карбоновую трубку диаметром около 5 мм, но откуда в нашей деревне такие диковины. Берем обычную резьбовую шпильку и нарезаем по 166 мм. Одной метровой шпильки по логике должно было бы хватить (166 мм * 6 штук = 996 мм), но по факту шестая получается короче. Придется "портить" еще одну метровую. Я резал болгаркой - так быстрее и проще.
     Дальше просто вкручиваем шпильки в напечатанные вилки и собираем до конца кинематику:


     Пробуем как катается - я тягал за платформу по всем возможным направлениям. Должно ездить без заеданий и без особых усилий.

     Тем временем запускаем на печать файл idler_end_1deg.stl. Их тоже надо 3 штуки.


     Пока оно печаталось, вспомнил, что забыл нарезать резьбу в отверстиях для стола:


     Самой большой моей ошибкой было сделать это, не разбирая только что собранную конструкцию. В итоге на одном из отверстий метчик лопнул около самой рамы, не оставив ни одного шанса выкрутить его останки. Пришлось все разобрать. Остатки метчика удалось выбить его же остатками (другой стороной). Про резьбу, естественно, придется забыть, но гайка М3 спасет положение.

     Пока я ковырялся с метчиком распечаталась очередная деталь:


     Прочищаем большие отверстия сверлом диаметром 8 мм, маленькие - 3 мм. Самые маленькие не трогаем - в них будет вкручиваться микрик концевика. У себя я нашел старые советские:


     МП5 чуть побольше, МП9 - поменьше. Их и поставим. Сразу вкручиваем подшипник марки 608:


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


     У меня оказалось в наличии 3 зубчатых ремня белого цвета, что и определило мой выбор.


     Шкивы я печатал раньше и просто надел их на валы двигателей. Мои ремни с шагом 2,5 мм - для них подходят шкивы с Thingiverse.com.


     Пока не придумал ничего умнее, чем просто закрепить концы ремней пластиковыми хомутами. В оригинале применяется закольцованный ремень:


     Окончательно собираем всю механику, выравниваем края и натягиваем ремни:


     Следующим этапом будет установка электроники и оживление механической части. А после этого займемся экструдером и печатающей головкой.

...