Главная » Хабрахабр » Самодельный установщик компонентов OpenPnP

Самодельный установщик компонентов OpenPnP

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

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

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

Затем чисто из любопытства, посмотрел что предлагает мир opensource и наткнулся на Openpnp. Под влиянием ностальгии, полез смотреть ролики, вздыхать, осознавая что мечта так и осталась мечтой. В этот раз их сайт был изучен более детально, среди прочего нашелся бом лист, прошивка для контроллера и программа для ПК. Не скажу что не слышал про него ранее, но как то мало тех, кто повторил конструкцию, это сильно настораживало. Затем, отключив на секунду мозг, я заказал первую деталь из списка и решил что отступать поздно.

Не было цели и делать коммерческий продукт. Надеюсь, из данного вступления стало понятно, что автор ранее не собирал pick and place станки. Мне просто было интересно повторить устройство, разобраться с его принципами и попробовать свои силы. Поэтому, не исключаю что далее по тексту будут ошибки в терминах и некоторые выводы могут быть неверными. Вот этим и хотелось бы поделиться с читателем.

Даже сегодня сложно ответить на этот вопрос. Первое, что вводит в некое заблуждение, это вообще что такое OpenPnP. Вы можете с легкостью выкинуть любой компонент железяки и поменять его на другой. Железо может сильно отличаться, например в основе моей сборки лежит железо от OpenBuilds и контроллер Smoothieboard, обе фирмы не имеют никакого отношения к OpenPnP. Общими остаются принципы: есть одноименная программа для ПК, в которую вы загружаете pick and place из своего трассировщика, далее программа выдает на контроллер команды, едь туда, включи то.

Внешний вид программы.

Для меня они были открытием, в двух словах сложно объяснить все их плюсы, но их них очень просто делать любые конструкции. Как уже выше упоминалось, основной каркас взят из OpenBuilds, в качестве направляющих используются V-slot рейки.

Если нужно что то прикрепить к рейке, то в нее сбоку вставляются пластины с резьбой, официальное их название t-nut.

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

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

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

С каждого конца на рейку одевается концевая пластина.

На мотор одевается зубчатое колесо, которое тянет ремень, ремень двумя концами крепится к каретке. Сбоку пластины имеются отверстия, к которым крепится мотор типа Nema17. Таким образом когда мотор крутится в одну сторону, каретка едет вперед, когда в другую — назад.

На втором конце рейки просто вал, по которому скользит ремень.

Концевая пластина. Теперь тонкости которые возникли. Поэтому практически все покупалось с али. Мне не известно насколько в оригинале она жесткая, дело в том что цены на openbuilds по большей части адекватные, однако не адекватная цена на доставку. В том числе и эта деталь.

В оригинальной сборке, каркас крепится именно за него, мне же пришлось использовать боковые отверстия. Пластины очень легко гнутся, а нижнее «ухо» так и норовит отломаться. Но в остальном это не сыграло роли, на рейке держится мертво.

Это одна из немногих деталей, которые я покупал в России, потому что есть мнение что из Китая их везут гнутыми. По поводу реек. По объявлениям они есть везде, по факту или нет в наличии, или никто не хочет с вами связываться из за 3м. Проверять так ли это желания не было, но купить их у местных было тем еще квестом. Есть мнение что они заменяемые в данном случае, однако проверять не решился. Очень часто под видом V-slot, предлагают T-slot, которые очень похожи и более доставаемые. В итоге они оказались в наличии только в одном месте, за доставку пришло заплатить больше чем цена самих реек.

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

Длина оригинальных реек 400х400. Размер поля. Поэтому размер мне показался огромным. Думаю, многие как и я, редко собирают платы большого размера. Хоть и небольшую часть, но отъедают концевики, еще часть уходит на угловые пластины, еще часть на головку и т.п. На практике это оказалось не так. В итоге реальное поле чуть больше 250х250, а это уже не так и много.

В начале я их проигнорировал. Пружины для натяжения ремней. На практике в первые прогоны по оси Y постоянно была небольшая погрешность. Показалось что это бесполезная вещь. В итоге пришлось разбираться, что такое пружины со странной маркировкой 7/32".

Полный процесс сборки одной направляющей хорошо показан на видео. В остальном с основой вообще не возникло вопросов, механика собирается очень просто.

Возможно у вас возникнет такой же вопрос, как и у меня, почему было не взять шпильку с резьбой в качестве направляющих? Зачем эти рейки, ремни, зубчатые колеса? Есть мнение, которое попалось на одном из форумов, что вал под собственным весом будет иметь небольшое искривление в центре, которое будет создавать ошибку. А делать точный вал будет намного дороже стоить.

Честно, не знаю как оценить. Тут же возникнет следующий вопрос, насколько вся эта конструкция точно ездит? Если поставить железную линейку и кататься вдоль нее, контролируя по камере, то миллиметр в миллиметр. Субъективно — очень точно, превзошло ожидания. Явного накопления ошибки я не заметил.

В оригинальном OpenPnP стоит Smoothieboard, ориентированная на 3D принтеры, однако это не мешает их приладить к pnp станку. Следующая часть повествования — контроллер. Пусть некоторые читатели меня осудят, но цена в 150 евро без учета доставки, для платы такого уровня мне показалась неадекватной. Если глубоко копнуть, то на борту у него стоит микроконтроллер LPC1769 и пара драйверов шаговых двигателей. Самое интересное, что плата позиционируется как opensource, но вменяемой версии pcb или герберов мне так и не удалось найти.

В итоге, проблема решилась сама собой, обнаружилось что у китайцев есть аналогичная плата.

Камни одинаковые и расположение GPIO похоже, поэтому софт подходит. Надо сразу оговориться, что платы очень похожи, но не идентичны. Все настройки хранятся в текстовом файле на карте памяти. И тем не менее мелкие различия есть. На борту есть Ethernet, если включить который, можно покататься по осям через веб браузер. Настроек очень много и это тема для отдельной статьи.

программа кидает по уарту G коды, а контроллер только их исполняет. В остальном все управление платой осуществляется через USB-UART, на ПК определяется как обыкновенный виртуальный COM порт, т.е. Y — нижние 2 рейки, вверх, вниз тянут два мотора одновременно. Всего у станка 3 основных оси: X — верхняя балка, когда головка ездит влево вправо, тянет только один мотор. При этом станок использует правостороннюю систему координат, т.е. Z — опускание сопла вверх, вниз. Дом определяется концевиками, по сути обычные GPIO. правый нижний угол — дом это 0, 0. Также используется дополнительная ось С, которая отвечает за разворот компонента.

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

Вот с ней больше всего было непонятностей. Теперь самое главное, головка. Для этого используется 12В насос, от него трубка идет к клапану. Тут стоит объяснить, как вообще захватывается компонент — вакуумом. В оригинале, насос работает только когда подъезжает к компоненту, у меня на плате не оказалось большого полевика, как на оригинальной плате, поэтому временно оставил насос тарахтеть постоянно.

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

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

Само сопло в оригинальном боме было такое

Из-за этого возникает куча проблем с калибровкой, так как сопло все равно жестко упирается в компонент. Опыты показали что им пользоваться невозможно, как видно на фото оно представляет собой кусочек трубки. Между тем на видосе, на который я молился, было другое сопло с пружинкой, которое в итоге пришлось дозаказывать.

он поворачивается и коромыслом давит на деталь держащую C-мотор (тот самый с полым валом). Опускается сопло за счет Z-мотора, т.е.

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

Запускается программа на ПК. Теперь самое главное как же эта вся конструкция работает в сборе? Вы выбираете нужные компоненты и указываете fiducial point, т.е. В нее загружается pick and place из вашего трассировщика. Они на плате выглядят как медные кругляши. точки привязки на плате.

в правый нижний угол до концевиков, чтобы станок понял свои координаты. Едете в «дом», т.е. Для этого, нужно руками подъехать к нижнему левому углу платы, весьма приблизительно. Далее нужно указать, где расположена плата. Поиск производится камерой, которая расположена на головке — верхнее зрение. Запускаем поиск fiducial point, эта процедура нужна чтобы понять точное начало координат и угол наклона платы. Распознавание точек производится с помощью opencv.

Итого, известно положение платы, за счет верхнего зрения и компонентов, за счет относительных координат, выгруженных из pick and place. Остается только запустить процесс расстановки.

Как выяснилось запустить движение по осям и опускание сопла не самое главное в этом деле. Вот тут наступает момент, на котором пока я остановился.

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

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

Первые тесты со старым соплом

Тесты с новым соплом


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

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

[Перевод] Курс MIT «Безопасность компьютерных систем». Лекция 18: «Частный просмотр интернета», часть 1

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы ...

[Из песочницы] Как я понял, что ем много сладкого, или классификация товаров по чекам в приложении

Задача В этой статье мы хотим рассказать, как мы создали решение для классификации названий продуктов из чеков в приложении для учёта расходов по чекам и помощника по покупкам. Мы хотели дать пользователям возможность просматривать статистику по покупкам, собранную автоматически на ...