Вы здесь

RAMPS-электроника 3D-принтера

общий вид 1

Добрый день.

Благодаря сотрудничеству нашей творческой группы LivelyMinds и проекта PrintAndPlay с фирмой Devicter, теперь у нас в Новосибирске появились достаточно дешевые комплекты электронных плат для 3D-принтеров от компании ElecFreaks, которые можно массово использовать в репрапостроительстве. Это RAMPS-плата (RepRap Arduino Mega Pololu Shield), являющаяся неформальным стандартом в мире репрап-электроники. Вместе с драйверами двигателей Pololu и платой Arduino она составляет комплект, достаточный для сборки 3D-принтера. Одновременно с ними ко мне поступил RAMPS-комплект от компании Gadgets3D, купленный на EBay, поэтому у меня была возможность не только запустить собственно сами платы, но и сравнить различные реализации.

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

Содержание

Железо: описание и сборка

Как вы, возможно, уже знаете, комплект RAMPS-плат для 3D-принтера состоит из трех основных элементов: платы RAMPS, являющейся основной платой системы, платы Arduino, крепящейся к плате RAMPS снизу, и четырех либо пяти платок Pololu-двигателей, крепящихся на плату RAMPS сверху. С точки зрения компьютерщика плата RAMPS является материнской платой, к которой крепятся прочие платы расширения, ведь именно на нее подается питание, на ней расположены разъемы двигателей и на ней содержится силовая часть электроники - управляющие полевые транзисторы для управления нагревом печатающих головок (экструдеров) и подогреваемого стола. С точки же зрения электронщиков, работающих с Arduino, сама плата RAMPS является шилдом (shield) - платой расширения для Arduino-платы, содержащей мозг системы - микроконтроллер фирмы Atmel. Все, что в нее втыкается выше, следствие того, что этот шилд достаточно многофункционален, в отличие от обычных шилдов wi-fi/3G/Bluetooth/Ethernet-связи, датчиков или дисплейных контроллеров, которые поддерживают лишь одну конкретную возможность.

общий вид 2

Набор плат от Gadgets3D поставлялся в уже собранном виде, и с ним проблем не было. Набор плат от ElecFreaks поставлялся в отдельных коробочках, и для сборки мне пришлось спилить надфилем слишком далеко торчащие выводы разъема питания на основной плате, а также отшлифовать бока у плат Pololu, которые без этого ни в какую не хотели вставать плотно одна к другой в линию.

плата elecfreaks дисплей плата elecfreaks обратная сторона плата elecfreaks бок

Кроме того, комплекты имели другие отличия:

  • Набор Gadgets3D был построен на классической Arduino Mega 2560 R3, набор ElecFreaks - на Freaduino MEGA 2560 v1.4 (на два вывода меньше с обоих боков, кнопка Reset выведена вбок, вместо USB - mini USB).
  • У набора Gadgets3D Pololu-драйвера имели дополнительный регулятор и уже наклеенные радиаторы на микросхемах.
  • На плате RAMPS набора Gadgets3D было больше полезных обозначений - указана полярность подключения питания, надписи X/Y/Z/E0/E1 для двигателей и экструдеров, был установлен дополнительный радиатор для силового транзистора. На плате RAMPS набора ElecFreaks, наоборот, не было I2C разъема.
  • В наборе Gadgets3D был LCD-дисплей с SD-слотом, подошедший, кстати, и на другой комплект. Как я узнал позже, это тоже своего рода стандарт на дисплей, описанный на RepRap.Org и имеющий поддержку в некоторых прошивках.

В остальном платы были очень похожи.

плата elecfreaks плата gadgets3d плата gadgets3d 2 lcd дисплей

Прочее железо

Конечно, для проверки платы вам понадобятся шаговые двигатели, термодатчики, источник питания 12В, а также концевые переключатели. Для проверки нагрева экструдера и стола нужен также экструдер и стол. Характеристики:

  • Входное сопротивление цепи экструдера - 8 Ом
  • Входное сопротивление цепи стола - 3 Ома
  • Термодатчики проволочные - 85 кОм

Для сравнения - у Кипариса экструдер 16 Ом, стол - 1,5 Ома, SMD-термодатчик стола 100 кОм, экструдера 50 кОм.

Источник питания был использован компьютерный ATX, модель LW2-500W. Он был переделан простейшим способом:

  • у основания платы были откушены все черные провода земли (GND), красные (5В) и желтые (12В). Ну и все прочие, кроме зеленого.
  • зеленый (green) провод был припаян на землю, чтобы обеспечить запуск без компьютера
  • к 12В и к земле (GND) были припаяны по 2 провода увеличенной толщины
  • БП (блок питания) был аккуратно собран, внутренности корпуса около площадок были проклеены изолентой для пущей изоляции

Установка необходимых программ

Для запуска плат и проверки их работы мне понадобились следующие программы:

  1. GIT - SCM-система для скачивания прошивки (firmware) и просмотра изменений, сделанных различными людьми в ней (ставим обычным образом)
  2. Marlin - одна из множества open-source прошивок для 3D-принтера (выполняем на C: "git clone git://github.com/ErikZalm/Marlin marlin")
  3. Arduino 0023 - программа-IDE для изменения, компиляции и закачивания (upload) прошивки в контроллер платы (распаковываем архив на C:)
  4. ReplicatorG 0040 - одна из множества open-source программ управления 3D-принтером (ставим обычным образом)
  5. Repetier-Host - другая программа управления 3D-принтером (ставим обычным образом)

Подключение к компьютеру, прошивка

Для подключения к компьютеру комплекта ElecFreaks использовался короткий miniUSB-кабель, для Gadgets3D - стандартный USB-кабель. При подключении обе платы потребовали драйвера, которые в моей Windows XP, конечно, отсутствовали. Подумав, я открыл папку C:/arduino-0023/drivers/FTDI USB Drivers и указал ее как папку для поиска драйверов. Это сработало, установился USB Serial Converter и USB Serial Port.

start FTDI USB Drivers USB Serial Converter USB Serial Port

Если не сработает, попробуйте C:/arduino-0023/drivers в качестве альтернативы. Для Gadgets3D понадобилась установка драйвера Arduino Mega 2560 R3. Для ElecFreaks сработал первый вариант.

start drivers Arduino Mega 2560 R3 Arduino Mega 2560 R3 complete

Запустив Arduino IDE, я выбрал Tools - Board - Arduino Mega 2560 в качестве платы, и Tools - Serial Port - COM23 в качестве порта, к которому подключена плата. Определить, на каком порту плата, можно так: порт платы исчезает из списка, если ее отключить от компьютера. Далее я открыл в Arduino IDE файл C:/marlin/Marlin/Marlin.pde и перешел на вкладку Configuration.h, где проделал следующие настройки (заменены оригинальные строки, не добавлено ничего нового):

  1. define BAUDRATE 57600 // для снижения скорости работы порта

// (ReplicatorG не сработал с 250000)

  1. define MOTHERBOARD 33 // выставлен тип платы RAMPS с двумя экструдерами
  2. define TEMP_SENSOR_0 1 // 100кОм термистор на первом выводе
  3. define TEMP_SENSOR_BED 1 // 100кОм термистор стола
  4. define ULTRA_LCD // подключен ЖК дисплей
  5. define SDSUPPORT // подключена SD карта
  6. define G3D_PANEL // выбран дисплей от Gadgets3D

Verify - Upload... Индикаторы на плате весело мигают, показывая процесс заливки. Готово.

Arduino IDE

Marlin не компилируется в более новых версиях Arduino IDE, используйте версию 0023. После прошивки вы уже должны наблюдать симпатичную ошибку на дисплее.

плата gadgets3d, дисплей подключен

Подключение обвеса

Подключив первый температурный датчик и нажав RESET на плате RAMPS, мы увидим на дисплее надпись Mendel Ready. Второй датчик покажет нам температуру стола.

плата gadgets3d, дисплей и датчики подключены

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

подключение концевика

Подключение обвеса завершено. Включим блок питания. Если полярность выводов верная, дисплей должен загореться и не выключаться, даже если мы отключим USB-кабель от компьютера.

плата gadgets3d на стенде

Печать

Запустим для начала печать в программе ReplicatorG 0040. Закроем Arduino IDE во избежание конфликтов и запустим программу. В ней идем в File - Preferences и ставим галку Show experimental machine profiles. Затем в Machine-Connection выбираем COM-порт платы, а в Machine - Machine Type - Other Bots - Mendel with Mega/RAMPS Electronics (57600 baud). После чего жмем кнопку Connect на панели управления.

Если вы увидите сообщение "port already in use" или наоборот, "port not found", закройте программу, вытащите и вновь воткните USB-кабель в компьютер. Иногда порт забивается данными и перестает принимать новую информацию. Также может помочь кнопка RESET на плате RAMPS.

Для проверки работы отдельных подсистем (двигателей, концевых датчиков, нагрева и контроля нагрева) откройте Control panel. В ней вы уже должны увидеть текущую температуру, совпадающую с данными на LCD-дисплее (если дисплея нет, то тут вы получите первые данные о работоспособности системы). Попробуйте двинуть двигателем, нажав X+ или Y+. Все должно заработать, двигатель должен прокрутиться. На дисплее и в программе должны измениться показания. Выставление температуры нагрева стола или экструдера должно привести к изменению показаний соответствующего датчика на дисплее и в программе.

ReplicatorG

Загрузив какую-либо STL-модель и переведя ее в GCODE, вы можете нажать Print и убедиться в том, что печать запускается и работает. Единственный момент - двигатель экструдера не будет прокручиваться, если температура нагревателя ниже определенного значения. Эта защита от работы "в холодную" очень полезна при случайном запуске печати, чтобы головка не забилась ошметками холодного прутка.Сюрприз! Ожидалось, что печать заработает, но в моем случае при тестировании обоих плат процесс в ReplicatorG зависал на этапе Print, выдавая сообщение "Estimating time to completion...". В чем дело, я разбираться не стал, поскольку эта проблема явно была связана не с электроникой, а с самим репликатором. Поэтому я запустил Repetier-Host и продолжил тестирование. Подсоединившись к принтеру и загрузив файл GCode, я нажал Пуск и двигатели поехали.

Repetier-Host

С платой от ElecFreaks пришлось перестроить тестовый стенд из-за короткого кабеля, перенеся ноутбук под стол. Также обнаружился косяк - из-за схемной ошибки или пробоя транзистора плата стола не грелась, а сам транзистор начинал дымиться при подаче питания. Я отключил стол и запустил печать без него. Возможно, мне попалась бракованная плата.

плата elecfreaks на стенде

Также я замкнул в определенный момент концевой выключатель по оси Z, чтобы отметить "ноль" по этой оси. Отметил я и достаточно тихий звук работы двигателей, и отсутствие их перегрева. И тем, и другим в худшую сторону отличается Кипарисовская электроника (в ней драйверы двигателей работают в полушаговом режиме, здесь - 1/8). А вот драйвера Pololu греются довольно сильно - без радиаторов для них обязательно внешнее охлаждение от вентилятора, иначе они могут через некоторое время выйти из строя.

Печать с SD-карты

Для тестирования печати с SD-карты я взял карту и записал на нее в корень несколько файлов STL и GCODE. При этом у меня на ней еще были папки с фотографиями.

SD card files

Вытащив карту из компьютера, я вставил ее в слот за дисплеем. Перевернув экран, я обнаружил на нем надпись "Card inserted."

sd карта lcd дисплей карта вставлена

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

lcd дисплей вход в меню lcd дисплей выбор пункта в меню

С помощью ручки можно настроить принтер и, открыв меню карточки и выбрав файл, запустить его на печать. Дисплей покажет процент готовности, время печати и печатаемый файл.

Выводы

Обе платы подходят для создания 3D-принтера, причем в идеале с двумя экструдерами. Надеюсь, что глюк со столом в плате от ElecFreaks сопутствует лишь моему тестовому экземпляру. Дисплей с SD-слотом служит замечательным и очень удобным дополнением к функционалу принтера и позволяет контролировать принтер без привязки к компьютеру, а также следить за ходом печати, не глядя в программу, пользуясь монитором для решения других задач.

В сотрудничестве со студентами НГТУ мы скоро надеемся представить вашему вниманию прекрасный 3D-принтер, изготовленный на высокоточном оборудовании с электроникой от Gadgets3D. А партия принтеров на раме из оргстекла будет сделана на электронике от ElecFreaks, предоставляемой фирмой Devicter, т.к. теперь есть возможность покупать эти платы в любых объемах прямо в Новосибирске. Вы также можете обращаться ко мне в магазин PrintAndPlay, я буду продавать эти платы по той же цене - но только когда проблема с подогревом стола у этих плат будет полностью решена.

В заключение предлагаю вашему вниманию несколько коротких видеороликов.

ВИДЕО

The media player is loading...

The media player is loading...

The media player is loading...

The media player is loading...

The media player is loading...

Дополнение (8 января 2014)

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

Легко проверять RAMPS-платы, используя дисплей. Без него запуск сложнее. Предостерегу новичков от простых ошибок, которые, тем не менее, могут сильно затормозить процесс запуска электроники.

  1. Всегда используйте хорошие разъемы с надежными контактами.
  2. Пропаивайте все соединения, а не скручивайте их.
  3. Проверьте, чтобы ножки термистора не замыкались между собой и контакт термистора с платой RAMPS не был потерян из-за скрутки или обрыва провода. Нулевое сопротивление (замыкание) или бесконечное сопротивление (разрыв) не позволит вам запустить двигатели.
  4. Проверьте правильность подключения обмоток двигателей. Биполярные и униполярные двигатели включаются по разным схемам. Не подключайте на землю оставшиеся провода у шестипроводных двигателей. Просто замотайте концы скотчем и оставьте висеть.
  5. Проверьте величину и полярность подаваемого напряжения с блока питания перед подключением его к плате.
  6. При заливке прошивки Marlin запомните скорость порта (#define BAUDRATE 250000) - ту же скорость вы должны выставить в настройках Repetier Host (Настройки принтера - Соединение - Скорость в бодах). Иначе соединяться не будет.
  7. Включение строк #define EEPROM_SETTINGS и #define EEPROM_CHITCHAT позволит менять коэффициенты перемещения по осям принтера и некоторые другие настройки без перепрошивки принтера. Зайдите в Repetier Host в Конфигурация - Конфигурация EEPROM и там вы увидите коэффициенты. Предположим, что у вас там число N, вы задали перемещение головки на X мм (или напечатать X мм), а переместилось или напечаталось Y мм вдоль какой-либо оси. Тогда измените число N на N1 = N * X/Y. Процесс настройки экструдера похож: отметьте маркером 5 см пластика над головкой, и выдавите 2 см, после чего померьте остаток. Если выдавилось не 2 см, скорректируйте число шагов на мм для экструдера.
  8. В прошивке Marlin по умолчанию включен контроль температуры (#define PREVENT_DANGEROUS_EXTRUDE). Если температура ниже заданной (#define EXTRUDE_MINTEMP 170), двигатель экструдера не будет вращаться. Поэтому или отключите контроль, закомментировав PREVENT_DANGEROUS_EXTRUDE, или не удивляйтесь тому, что двигатель экструдера невозможно запустить при тестировании платы без нагревательного элемента.
  9. Не забывайте для нормально разомкнутых концевиков выставлять const bool X_ENDSTOPS_INVERTING = true;
  10. Не забывайте выставлять #define INVERT_X_DIR false или true в соответствии с нужным направлением вращения двигателей.

Минимум, необходимый для запуска движков: прошитая Arduino+RAMPS+1 драйвер двигателя, подключенный верно двигатель, блок питания и подаваемые на плату 12В, подключенный термистор, подключенный USB, управляющая программа на компьютере. Вместо последних двух пунктов можно использовать дисплей.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer