- PVSM.RU - https://www.pvsm.ru -
О конструкторе Makeblock [1] я узнал уже после того, как завершилась его кампания на кикстартере [2]. А жаль, поскольку был шанс приобрести наборы конструктора по достаточно низкой цене. После удачной кампании авторы продолжили развивать свои идеи и создали набор для плоттера — XY-Plotter Robot Kit v2.0 [3]. Мне он обошелся в $300 с бесплатной доставкой через EMS в рамках акции «накупи на $500».
Плоттер заинтересовал меня по двум причинам: возможность рисовать ручкой Circuit Scribe [4] с токопроводящими чернилами и возможность проапгрейдить плоттер лазерным резаком [5]. В этой статье я расскажу о своих впечатлениях от плоттера в его оригинальной конфигурации.
Посылка пришла примерно через две недели после оформления заказа в виде увесистой и плотно набитой деталями коробки из грубого картона. Внутри все в хорошем состоянии, каждая деталь в какой-нибудь обертке, но на одной из несущих конструкций рамы я обнаружил неприятную вмятину, которая, впрочем, не повлияла на функциональность детали.
На сборку плоттера у меня ушло не меньше 10 часов. План сборки содержится в PDF документе [7], где шаг за шагом плоттер обретает свой вид. При всей подробности инструкции, иногда приходилось разбирать и заново собирать отдельные блоки когда приходило понимание их функции. Рекомендую при сборке забегать на несколько страниц вперед.
Один раз застрял винт во втулке. Дело в том, что втулки крепятся к оси маленькими установочными винтами без шляпки. На начальной стадии сборки не было указано, что потом эти втулки надо куда-то смещать и выравнивать, поэтому я их хорошо затянул. Позже обнаружилось, что винт застрял — отвертка буксует и не хочет отвинчивать. К слову, материал прилагаемых инструментов самый дешевый, метал мягкий. Я рассматривал несколько вариантов решения, от покупки новых деталек до вытаскивания винта методом накручивания еще меньшего винта с левой резьбой. Положения спасла отвертка из более твердой стали.
Имеются два шаговых двигателя, по одному на каждую ось перемещения. С помощью передаточных ремней, закрепленных концами на платформе, вращение оси двигателя преобразуется в линейное движение платформы вдоль «рельс».
Карандаш жестко крепится к планке, а планка крепится на ось. Планка делится осью на два плеча — на одном карандаш, а на другом крепится резинка так, чтобы планка прижимала карандаш к бумаге. «Лопасть» сервопривода имеет два рабочих положения: вертикальное, в котором «лопасть» поднимает планку, не давая ей прижимать карандаш к бумаге, и горизонтальное, в котором «лопасть» не препятствует планке прижимать карандаш к бумаге.
Вдоль оси крепления планки существует люфт, который приводит к «дрожанию» линий. Мне удалось его убрать, добавив резинку, прижимающую планку к платформе.
В плате имеется 8 портов RJ25, через которые соединяются контроллеры двух шаговых двигателей, сервопривод и четыре выключателя на случай, когда платформа упирается в раму. Питание для шаговых двигателей подводится отдельно через поставляемый блок питания с американской вилкой.
В теории [9] увеличение количества микрошагов улучшает плавность линий и уменьшает шум, но и существенно понижает крутящий момент двигателей. Я попробовал сравнить качество получаемого изображения в зависимости от количества микрошагов:
Как видно из этой картинки, самое лучшее качество дает 1/8 и 1/4 шага. Далее оказалось, что при разрешении 1/8 шага один из двигателей начинает буксовать и «терять» микрошаги из-за нехватки крутящего момента. Увеличение силы тока до максимума только немного улучшило положение, поэтому победителем вышел режим 1/4 шага. Кстати, в режиме микрошагов двигатель шумит заметно меньше!
В конце сборки необходимо запрограммировать управляющую плату плоттера. Программа реализует трансляцию так называемого G-кода [10], в котором комманды перемещения карандаша записаны в текстовом виде.
Для преобразования векторного изображения в G-код существует много редакторов, но авторы рекомендуют использовать кроссплатформенный и бесплатный редактор Inkscape [11] с установленным плагином для генерации G-кода Gcodetools [12].
Чтобы выслать плоттеру G-код на исполнение, необходимо подключиться к его управляющей плате через USB кабель и открыть последовательное соединение. Для Windows это будет какой-нибудь COM3 или COM4 порт, для MacOS это что-нибудь вроде /dev/tty.usbmodem1421
Программа изначально рассчитана на Windows, но после загрузки нужной библиотеки запускается и под MacOS.
Я обнаружил, что иногда соединение с плоттером зависает, поэтому написал на этот случай скрипт на Python, высылающий G-код напрямую через последовательное соединение. При этом Java-программу я использую, чтобы установить исходную точку, потом запускаю скрипт.
###############################################################################
import serial, re, time
import sys, argparse
SERIAL = "/dev/tty.usbmodem1421"
parser = argparse.ArgumentParser(description = "G-code file sender")
parser.add_argument("--input", help = "file to send", required = True)
args = vars(parser.parse_args())
###############################################################################
def send(stream, command):
if command[-1] != "n": command += "n"
sys.stdout.write("<= " + command)
stream.write(command)
while True:
s = stream.readline()
sys.stdout.write("=> " + s)
if s[0] != "#": break
fin = open(args["input"])
stream = serial.Serial(SERIAL, 115200)
send(stream, "$1 X8 Y12 Z21")
send(stream, "$2 X11 Y13 Z9")
send(stream, "$3 X22 Y19 Z22")
send(stream, "$4 X23 Y18 Z23")
send(stream, "$6 X88.0 Y88.0 Z40.0") # set axis resolution
send(stream, "G90")
send(stream, "G21")
for s in fin:
s = re.sub(r"([^)]*)", r"", s)
if s.strip(): send(stream, s.strip())
fin.close()
###############################################################################
long calculate_feedrate_delay(float feedrate)
{
//how long is our line length?
float distance = sqrt(delta_units.x*delta_units.x + delta_units.y*delta_units.y + delta_units.z*delta_units.z / 100.f);
...
}
Когда я уже собирался запустить плоттер на отрисовку каких-нибудь наглядных картинок для этой статьи, обнаружилась серьезная неисправность: линии рисунка перестали сходиться друг с другом. Оказалось, что линейные подшипники [13] процарапали борозды на направляющих осях [14] и стали время от времени пробуксовывать. Я подозревал, что оси надо смазывать, но сомневался, поскольку в инструкции про это не было ни слова. Итак, плоттер теперь требует ремонта и смазки.
Подшипники на замену я заказал на eBay [17] по $2.55 за штуку, всего шесть штук. Направляющие оси оказались гораздо дороже, поскольку они сделаны по специальному заказу, но я решил их не менять, а провернуть, чтобы сместить борозды с путей подшипников.
Проблема с пробуксовкой натолкнула меня на мысль про контроль пропущенных шагов двигателя с помощью лазерной мыши. Судя по найденным статьям [18], это был бы весьма эффективный и красивый способ решения точного позиционирования шаговых двигателей.
Заканчивая статью, я все же рискну и отрисую несколько рисунков в менее точном режиме 1/2 шага, не дожидаясь комплектующих и смазки. Изображения сделаны линером с шириной линии 0.3 мм
Автор: barabanus
Источник [19]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/e-lektronika/78712
Ссылки в тексте:
[1] Makeblock: http://habrahabr.ru/post/237079/
[2] кикстартере: https://www.kickstarter.com/projects/1397854503/makeblock-next-generation-of-construct-platform
[3] XY-Plotter Robot Kit v2.0: http://www.makeblock.cc/xy-plotter-robot-kit-v2-0-with-electronic/
[4] Circuit Scribe: http://habrahabr.ru/post/205406/
[5] лазерным резаком: http://www.makeblock.cc/laser-engraver-upgrade-pack-500mw-for-xy-plotter-robot-kit-v2-0/
[6] Seeed: http://www.seeedstudio.com/depot/
[7] PDF документе: https://github.com/Makeblock-official/XY-Plotter-2.0/blob/master/XY%20Plotter%20V2.0%20Assembly%20Instruction.pdf
[8] здесь: http://wiki.makeblock.cc/index.php?title=Me_Stepper_Driver
[9] В теории: http://www.micromo.com/microstepping-myths-and-realities
[10] G-кода: https://ru.wikipedia.org/wiki/G-code
[11] Inkscape: https://inkscape.org/en/
[12] Gcodetools: http://www.shapeoko.com/wiki/index.php/User:BHSPitMonkey/Inkscape_and_Gcodetools_Tutorial
[13] линейные подшипники: http://www.makeblock.cc/linear-motion-slide-unit-8mm-pair/
[14] направляющих осях: http://www.makeblock.cc/linear-motion-shaft-d8x496mm/
[15] этой: http://reprap.org/wiki/Lubrication#Linear_bearings
[16] Super Lube: http://www.super-lube.com/synthetic-oil-with-ptfe-high-viscosity-ezp-56.html
[17] заказал на eBay: http://www.ebay.com/sch/i.html?_from=R40&_trksid=p2050601.m570.l1313.TR0.TRC0.H0.Xsc8uu&_nkw=sc8uu&_sacat=0
[18] статьям: http://reprap.org/wiki/Bamboo_Printer#Optical_2D_feedback
[19] Источник: http://habrahabr.ru/post/247045/
Нажмите здесь для печати.