Собираем знаменитый яйцебот ( EggBot).

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

Нашел в сети более-менее дизайнерский вариант, вот такой:

eggbot на thingiverse

eggbot на thingiverse

Ссылка на модель:  http://www.thingiverse.com/thing:1683764

Эта модель выглядит прилично, красиво и есть место крепления для платы управления, плюс можно спрятать все провода внутри корпуса — он, как оказалось, полый внутри. Все продумано.

Прикинул в уме что потребуется:

2шт Nema17 или анлоги
2шт драйвера A4988 или аналоги
1шт серва SG90
1шт arduino uno
1шт cnc shield
2шт подшипников 623 (в крайнем случае, можно обойтись и без них..)
пара пружинок,резинка,болтики, гайки… маркер с тонким жалом.

Распечатал все детали и собрал агрегат воедино:

конструкция яйцебота

конструкция яйцебота

Осталось установить маркер и шар.

Первая засада:

На всех сайтах для данного агрегата продают специальный шилд по 30 евро, с wi-fi на борту и специальным плагином и прогой для работы с компа.
Но мы не гордые и лишних денег нет, поэтому юзаем обычный cnc-шилд. На борту шилда есть все необходимое — разъемы для 4 драйверов и куча выводов, к которым можно подрубить серву.

Вот так выглядит cnc шилд:

cnc shield

cnc shield

Если хотим максимальное качество прорисовки узоров, то ставим все перемычки M0,M1,M2 для осей X и Y, устанавливаем на свои места драйвера А4988.

Далее заливаем прошивку GRBL:

Прошивку берем тут: https://github.com/robottini/grbl-servo

Заливается прошивка через Arduino IDE. Файл для заливки через IDE спрятан тут (как и инструкция, как это сделать): https://github.com/robottini/grbl-servo/tree/master/examples/grblUpload

У кого не получается залить прошивку, делаем так:

файл grblUpload.ino копируем в папку с остальными файлами grbl-servo-master
переименовываем файл grblUpload.ino в grbl-servo-master.ino
внутри файла grbl-servo-master.ino заменяем строчку

#include <grbl.h>
на
#include «grbl.h»

Далее все должно компилиться..

Следующую процедуру можно не делать, но желательно (указываем кол-во шагов для каждого двигателя ):
Правим в файле defaults_generic.h (в каталоге defaults) вот эти две строки:

#define DEFAULT_X_STEPS_PER_MM 250.0 //заменяем на 32
#define DEFAULT_Y_STEPS_PER_MM 250.0 //заменяем на 32

откуда берется 32:

3200 — это количество шагов двигателя на один полный оборот при всех выставленных перемычках драйвера А4988 (микрошаг 1/16) и двигателе 1,8 гр/шаг

Предполагаем, что длина окружности 100мм (по Х и У), поэтому считаем, что на 1мм приходится 32 микрошага (3200/100=32). Можно выставить любые другие значения, от этого зависит только масштаб картинки в редакторе.

Либо заливаем прошивку как есть и потом правим из программы gcodesender при помощи команды $$ (выводит текущие настройки), забегая вперед, покажу как это сделать:

после команды $$ терминал должен выдать примерно следующее:

$100=314.961 (x, step/mm)
$101=314.961 (y, step/mm)
$102=314.961 (z, step/mm)
$110=635.000 (x max rate, mm/min)
$111=635.000 (y max rate, mm/min)
$112=635.000 (z max rate, mm/min)
$120=50.000 (x accel, mm/sec^2)
$121=50.000 (y accel, mm/sec^2)
$122=50.000 (z accel, mm/sec^2)
$130=225.000 (x max travel, mm)
$131=125.000 (y max travel, mm)
$132=170.000 (z max travel, mm)

Чтобы задать новое кол-во шагов для оси Х пишем: $100=32
Все, новые значения заданы и ничего не надо править в прошивке..

Можно, конечно, совсем ничего не править, но тогда размер изображения будет 12,8мм х 4мм — рисовать можно, тем более это векторный рисунок, но постоянно масштабировать скачанные картинки очень неудобно..

Засада вторая:

По идее, шим сигнал для сервы берется с платы с вывода SpnEn(управление шпинделем), но не все так просто.

В новой прошивке GRBL 0,9 сделали переназначение пинов и теперь шим сигнал управления выводится на пин Z+ из ряда пинов END STOPS.

Поэтому подключаем серву вот к этим выводам (про +5V и GND не забываем):

подключение сервы к CNC shield

подключение сервы к CNC shield

Вроде все готово.

Как управлять:

Обычный Pronterface тут не подходит.. Поэтому качаем любую программу по работе с лазерным гравировщиком,фрезером или простой gcode sender. Я взял вот этот вариант: https://github.com/grbl/Universal-G-Code-Sender

Здесь версия поновее: http://winder.github.io/ugs_website/

Выставляем com-порт и скорость соединения 115 200 бод.

Все должно подключиться.

Картинка примерно вот такая:

gcode sender

gcode sender

Осталось выяснить, какой ширины картинку можно нарисовать на шаре/яйце..

Переводим руками маркер в крайнее левое положение как на картинке:

конструкция яйцебота

конструкция яйцебота

Нажимаем в интерфейсе кнопку Y+ и смотрим, при каком значении Y маркер окажется в крайнем правом положении. Для объектов разной формы и размеров это значение может немного отличаться, т.к. конструкция зажима не всегда обеспечивает симметричный зажим.

Теперь, у нас есть размер поля в мм. По Х — 100мм, а по Y — примерно 30мм.

Кто умеет подготавливать файлы для лазерной резки, дальше можно не читать, а смотреть только видео в конце статьи.

 

Подготавливаем GCODE:

Управление сервой производится командой M3 S254 (повернуть серву на 360гр) и M3 S0 (повернуть в исходное положение) (либо M5 — выключение сервы). Для лазерных резаков эта команда задает мощность лазера, а для шпинделя фрезера — кол-во оборотов.
Можно пользоваться любым преобразователем векторной графики в gcode, который умеет вставлять нужную нам команду  управления  M3.

Самый удобный из легко-доступных редакторов векторной графики — Inkscape (качаем тут)

Сразу качаем для него плагин для g-кодов тут. Можно сразу туториалы почитать.
Очень хороший плагин!!! В отличии от всех других плагинов он работает на всех типах винды без проблем и без танцев с бубном — поставил, и все заработало.
Просто копируется все содержимое плагина в папку «..inkscape\share\extensions».

Запускаем inkscape и далее по шагам:

 

1. устанавливаем размер рабочего поля:

шаг 1

шаг 1

2.Выставляем размеры

установка размеров

установка размеров

3. Рисуем или пишем что-либо:

шаг 3

шаг 3

4.Оконтуриваем (преобразуем в кривые):

шаг 4

шаг 4

5. Применяем плагин:

шаг 5

шаг 5

6. Настраиваем плагин:

шаг 6

шаг 6

Угол поворота сервы подбираем опытным путем и исходя из размеров маркера.
Время задержки, необходимое для сработки сервы ставим 1, что означает 1 секунда, хоть в плагине и написаны миллисекунды, но grbl почему-то считает это значение в секундах.

Обязательно укажите каталог, в который будет сохранен готовый файл, иначе плагин ругается.

7. Получаем вот такую картинку и файл в нашем каталоге:

шаг 7

шаг 7

8. В программе GcodeSender во вкладке File Mode выбираем наш файл output.gcode и жмем кнопку Send и смотрим на процесс рисования:

Ну и результат на фото:

diylife

diylife

Текст деформирован, т.к. для шара таких размеров возникает несоосность оси Y и центра шара.

Максимальный диаметр шара, который можно установить в этот агрегат — 68мм. С небольшими переделками можно увеличить до 75-80мм.

Можно менять маркеры и делать цветные узоры.

Сразу отвечу на вопрос, почему не стал использовать готовую программу-плагин Inkscape для EggBot-а, с помощью которого можно рисунок сразу отправлять «на печать» из inkscape одним нажатием кнопки.

Плагин установился, но вот заставить его работать никак не получилось — постоянно выдавал ошибку com-порта. Разбираться было лень, поэтому решил использовать 100% работающий плагин..

Примеры:

Вот еще фото того, что получилось сделать на яцеботе:

рисуем снежинку

рисуем снежинку

Самое сложное — найти тонкий маркер (0,3-0,5мм). Толстым маркером не так красиво.

узоры на шарике

узоры на шарике

Немного красных шаров:

разрисовка красных шаров

разрисовка красных шаров

Результат:

готовые шары :)

готовые шары :)

И видосы:

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

Понравилась статья? Получай обновления блога на e-mail:

Введите ваш e-mail:

41 комментариев к статье

  1. Игорь:

    Наверно единственная статейка на русском языке. Всё супер, получилось. Кроме одного НО. Как заставить управлять сервой? Уходит до упора и держит, когда команда поднять перо — она останавливается, но назад-то не возвращается. Помогите!

  2. denis-on:

    Прив! возми GRBL с поддержкой сервы
    https://github.com/robottini/grbl-servo
    и все ок будет

  3. Anzib:

    Очень подробная статья, автору большое спасибо.
    Вот только у меня при подаче команды m3 s20 сервомотор уходит в крайнее положение по часовой стрелке, а при подаче m3 s0 на исходную не возвращается и команды m4 (вращение против часовой стрелки) работают не правильно, вращение все равно идет по часовой стрелке.
    Не подскажете где я мог ошибиться?

  4. Виктор:

    Собрал все по статье, моторы работают, а вот серва убегает вверх до упора и гудит. Нет ШИМ похоже. Подскажите что сделать?

  5. Евгений:

    Всем привет,нигде не могу скачать расширение j tech photonics laser tool,может кто поможет?

  6. Александр:

    Всем доброе время суток, ребята помогите кто сможет не могу создать Gcode с J-Tech-Photonics-Laser-Tool-master, стоит inkscape 0.48.5 выдает ошибку:
    Traceback (most recent call last):
    File «laser.py», line 3172, in
    e.affect()
    File «C:\Program Files (x86)\Inkscape\share\extensions\inkex.py», line 221, in affect
    self.effect()
    File «laser.py», line 3156, in effect
    self.orientation( self.layers[min(0,len(self.layers)-1)])
    File «laser.py», line 3085, in orientation
    doc_height = self.unittouu(self.document.getroot().xpath(‘@height’, namespaces=inkex.NSS)[0])
    AttributeError: laser_gcode instance has no attribute ‘unittouu’ и че он хочет не пойму.

  7. Евгений:

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

  8. Евгений:

    так и не получается скачать с того сайта: ОШИБКА

    Запрошенный URL не может быть получен

  9. Александр:

    Спасибо пробовал не работает, проблема решилась после установки последней версии Inkscape 0.92.1. Подскажите что поправить в G-коде что бы в процессе рисования моторы оставались постоянно в удержании, а то при переходе от одной области к другой мотор по оси-Y отключается и маркер заваливается в оду сторону, и соответственно сбиваются координаты.
    Долго мучался с прошивкой ваши способы не помогали, нашел на каком то забугорном сайте вариант решения проблемы. Нужно zip. архив добавить в Arduino как библиотеку, потом Файл > примеры > выбрать grbl-servo-master (в моем случая это имя моего zip. архива который добавляли в библиотеку) там выбираем grblUpload, выбрав нужную плату и порт прошиваем. Может кому то будет полезно.

  10. Александр:

    Евгений вот от туда ссылка на архив http://www.jtechphotonics.com/Downloads/Inkscape/JTP_Laser_Tool_V1_7.zip

  11. Евгений:

    спасибо Александр,но не пускает меня туда почему-то,с трёх компов пробовал и ни в какую
    ОШИБКА

    Запрошенный URL не может быть получен

    При получении URL http://www.jtechphotonics.com/Downloads/Inkscape/JTP_Laser_Tool_V1_7.zip произошла следующая ошибка

    Соединение с 65.254.227.224 не удалось

    Система вернула: (110) Connection timed out

    Удаленный узел или сеть недоступен. Повторите запрос позднее

    Администратор Вашего кэша: webmaster.

    вот что пишет

  12. Александр:

    Евгений попробуй так https://yadi.sk/d/iogRzlkN3GfEKM залил на Яндекс Диск

  13. Александр:

    Sam скажи пожалуйста можно как то избавится от рисования ступеньками?

  14. Евгений:

    Саня спасибо огромное!!!С диска нормально скачало.

  15. Евгений:

    попробуй напругу больше дать,у меня от 12 вольт тоже дёргалось,дал 24 и нормально стало

  16. Александр:

    Евгений, мои двигатели рассчитаны на 12в, страшновато подавать на них 24в. Ладно завтра промеряю напряжение может просаживается во время работы.

  17. Евгений:

    НЕ СГОРЯТ,ГЛАВНОЕ С ТОКОМ НЕ ПЕРЕБОРЩИТЬ

  18. Евгений:

    У МЕНЯ ТОЖЕ НА 12 ВОЛЬТ :roll:

  19. Sam:

    НЕ ВЗДУМАЙТЕ ПОДАВАТЬ 24В!!!
    Ардуина запитывается от шилда, а её dc-преобразователь не потянет 24В. Плюс проверьте на какое напряжение рассчитаны кондеры на самом шилде — они там обычно 16-вольтные стоят.

  20. Виктор:

    Подскажите где взять рисунки или как конвертировать в нужный размер. В сети все 3200х800 px. Сам красиво нарисовать не могу :sad:

  21. Александр:

    Arduino Uno и шилд делал самодельный, кондеры ставил на 35v на ардуино питание от шилда не идет, ардуино питается от usb а шилд (моторы) от своего 12v питания, да суть не в этом Sam как сделать чтобы маркер не падал на бок, а то при переходе от одного участка рисунка к другому отключается удержание двигателя и маркер падает и начинает рисовать уже в другом месте.
    Виктор, можно в Inkscape поменять размер листа с 3200х800 px на 100х30мм и пропорционально изменить размер рисунка под ваш нужный размер. Можете взять любую (растровую)картинку сделать из нее векторную. Во вкладке Контур выбрать векторизировать растровое изображение (Shift+Alt+B) там подобрать по своему усмотрению, и будет вам счастье ;-)

  22. Евгений:

    у меня кондёры на 50 вольт на шилде

  23. Евгений:

    ардуина питается от USB

  24. Евгений:

    Александр,серва нормально у тебя работает?

  25. Александр:

    Да нормально, с сервой проблем нет

  26. Евгений:

    а вот у меня наоборот,есть :sad:

  27. Евгений:

    С УДЕРЖАНИЕМ ДЕЙСТВИТЕЛЬНО ФИГНЯ КАКАЯ-ТО

  28. Александр:

    Решил проблему с удержанием маркера, удалил из кода все строки с командой G4 и все стало просто супер.

  29. Евгений:

    МОЖНО ПОПОДРОБНЕЙ?

  30. Александр:

    Созданный файлик с расширением *.gcode открываешь в любом удобном текcтовом редакторе (типа notepad++, простой блокнот и т.д.) находишь строки которые начинаются на G4 P.. и удаляешь их, нажимаешь сохранить, вот и все.

  31. Евгений:

    спасибо,попробуем :smile:

  32. Евгений:

    Александр,получилось у тебя от лесенок во время печати избавиться?

  33. Sam:

    Ступеньки могут быть от того, что серва плохо закреплена на валу двигателя, либо есть люфты в креплении маркера — лучше все сочленения проверить и затянуть..

    Может это зависеть и от силы резинки — надо попробовать добавить еще резинок..

    Надо искать причину, наблюдать в какие моменты происходит лесенка.

    Насчет проблем удержания маркера и лесенок — я таких эффектов не замечал, может потому-что мало рисовал…

  34. Евгений:

    с ума блин сошёл пока все эти G4 убирал

  35. Александр:

    Осталась мелкая лесенка

  36. Александр:

    Что бы быстро убрать все G4 можно воспользоваться notepad++, в вкладке поиск выбираешь замена (Ctrl+H) в окошке Найти: пишешь G4 P0..4(после P может быть другая цифра), а в окне Заменить на: оставляешь пустым, далее нажимаешь заменить все и он удалит все строки.
    По поводу ступенек, люфтов нет, маркер закреплен жестко, если брать рисунок, наносить его на разные объекты все ступеньки повторяются (они все одинаковые по своему рисунку), под рисованием ступенек подразумевается рисование дуги или изгибов он их рисует мелкой ступенькой, а не ровной дугой.
    Евгений, можно как то с тобой связаться в ЛС?

  37. Евгений:

    Александр,вот мой ящик mr.Astral@yandex.ru

  38. Юрий:

    Спасибо за труды добрый человек!
    Столько вопросов отпало. Неделями искал ответы.

Оставить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

WordPress темы