Моя марбл машина, версия 3
Мне нравятся марбл машины. Это уже третья машина, которую я делаю. Проектирую в САПР FreeCAD и печатаю на 3D принтере. Моя первая марбл было довольно простой, вторая была посложнее. И вот я сделал третью.
Постепенно, работая с 3D принтером, разрабатывая всякие механические штуки, я усвоил для себя несколько простых правил:
если две детали подвижны относительно друг друга — ставь подшипник;
даже если все детали разные их много, то старайся стандартизировать хоть что ни будь, например, метод соединения разнородных деталей, желоба, башмачки вертикальных опор или даже просто цвет деталей «белый низ — чёрный верх»;
по возможности избегай ударных нагрузок, например, падения шариков, это создаёт значительный шум и разбалтывает механизм; мои первые две марбл машины очень страдали этими недугами;
как можно меньше склеек, лучше, чтоб всё разбиралось, а чтобы соединение винт-гайка было надежным — ставь шайбу Гровера;
прежде чем печатать какую-то деталь разработай и смоделируй весь механизм, где будет эта деталь стоять.
Последний пункт один из самых важных.
Поначалу я очень страдал от непонимания этой простой истины. Моя разработка марбл машины была очень хаотичной. Сегодня я хочу, чтобы шарики скатывались влево и здесь я поставлю ловушку, а там придумаю что ни будь. Напечатаю ловушку и путь к ней, потом что-то пошло не так. нет пусть лучше скатываются вправо, а тут я буду делать…, а что делать ещё и сам не придумал. В результате, разработаю деталь и напечатаю, потом понимаю, что она не совсем подходит, а вот если бы у неё вот этот поворот был чуть круче, вот тогда бы…
Казалось бы, пока одна деталь печатается, ты проектируешь другую и это же экономия времени? В реальной жизни так не работает. В реальной жизни только теряешь время и портишь пластик. Нужно вычертить весь проект, все детали расставить по местам, посмотреть, чтоб они все хорошо соединялись, чтоб был приемлемый перепад высот. И вот только тогда имеет смысл начинать печатать.
Так, постепенно, я освоил сборку сложных деталей во FreeCAD. Например, вот так выглядит модель винта Архимеда для марбл в сборе:
А вот это сборка деталей спуска после гусеничного подъемника:
Или вот снимок ну почти полностью собранной модели марбл машины:
Не знаю как на хабре вставлять в статью 3D модели для просмотра. Возможно ли это? Была бы интересная фишка. Читатели бы могли вращать и рассматривать модель со всех сторон ну и всё такое…
Как вы понимаете, моя марбл машина состоит не только из пластиковых деталей. Здесь есть еще моторчики и плата управления. Я использую шаговые двигатели 28byj-48. Здесь их три: на винте Архимеда, на гусеничном подъемнике и на делителе потока. Двигатели просты в управлении и имеют небольшие габариты. Меня уже как-то критиковали, мол двигатель должен быть только один и он должен приводить в движение всю машину. Ну тем не менее, мне проще использовать несколько моторчиков. Таков мой путь.
Плату контроллера я так же разработал сам в САПР KiCAD:
Да, я знаю, что существуют всякие «ардуины», но мне как-то ближе и роднее ПЛИС, на моей плате стоит CPLD Altera MAX3128. Логических элементов не очень много, но для разных самоделок типа моей хватает вполне. Плата выглядит вот так:
Эта плата в моем проекте управляет тремя шаговыми двигателями (а вообще-то может управлять четырьмя) и самое сложное, что здесь есть это управление делителем потока шариков. Это в центре марбл машины такой качающаяся стрелка. Там стоит простой ИК датчик. Когда стрелка идет влево «программа» в ПЛИС ожидает срабатывания датчика, после чего стрелка идет вправо на заданное число шагов и там разворачивается.
Программа в ПЛИС написана на Verilog HDL и компилируется в среде Altera Quartus v13.0.
На самом деле у меня большие планы на эту маленькую платку. Да, я собираюсь использовать её во всех своих марб машинах и не только. Это пока еще у меня логика работы машины очень простая. А вот когда проект будет сложнее или потребуется к примеру управление по сети или WiFi, то тогда я планирую устанавливать эту плату на Raspberry Pi или какой ни будь другой одноплатник.
Я уже испытал эту возможность. Например, вот здесь на видео:
Здесь платка МА3128 установленная на одноплатник Orange Pi PC2 управляет сразу четырьмя шаговыми моторчиками, а программа управления написана на питоне. Таким образом, будущие машинки смогут иметь очень продвинутую логику работы.
Схему платы и некоторые ПЛИС проекты для этой платы можно посмотреть на github: https://github.com/marsohod4you/MA3128
Ну и более подробное описание МА3128 и как её программировать в среде Altera Quartus, вот здесь.
Вот так получается, что для создания моей марбл машины я применил многое из арсенала своих знаний: 3D проектирование во FreeCAD, проектирование печатной платы в KiCAD, программирование ПЛИС на верилоге в САПР Altera Quartus.
Следующий этап проекта — объединить все когда-то сознанные мною Marble машины в единый живой механизм.