Моя марбл машина, версия 3

Мне нравятся марбл машины. Это уже третья машина, которую я делаю. Проектирую в САПР FreeCAD и печатаю на 3D принтере. Моя первая марбл было довольно простой, вторая была посложнее. И вот я сделал третью.

Постепенно, работая с 3D принтером, разрабатывая всякие механические штуки, я усвоил для себя несколько простых правил:

  1. если две детали подвижны относительно друг друга — ставь подшипник;

  2. даже если все детали разные их много, то старайся стандартизировать хоть что ни будь, например, метод соединения разнородных деталей, желоба, башмачки вертикальных опор или даже просто цвет деталей «белый низ — чёрный верх»;

  3. по возможности избегай ударных нагрузок, например, падения шариков, это создаёт значительный шум и разбалтывает механизм; мои первые две марбл машины очень страдали этими недугами;

  4. как можно меньше склеек, лучше, чтоб всё разбиралось, а чтобы соединение винт-гайка было надежным — ставь шайбу Гровера;

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

Последний пункт один из самых важных.

Поначалу я очень страдал от непонимания этой простой истины. Моя разработка марбл машины была очень хаотичной. Сегодня я хочу, чтобы шарики скатывались влево и здесь я поставлю ловушку, а там придумаю что ни будь. Напечатаю ловушку и путь к ней, потом что-то пошло не так. нет пусть лучше скатываются вправо, а тут я буду делать…, а что делать ещё и сам не придумал. В результате, разработаю деталь и напечатаю, потом понимаю, что она не совсем подходит, а вот если бы у неё вот этот поворот был чуть круче, вот тогда бы…

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

Так, постепенно, я освоил сборку сложных деталей во FreeCAD. Например, вот так выглядит модель винта Архимеда для марбл в сборе:

8e05b1aa9092eff7a262d50105fe5511.png

А вот это сборка деталей спуска после гусеничного подъемника:

8ce0bbe5b1e99bee55dd2682bfe48174.png

Или вот снимок ну почти полностью собранной модели марбл машины:

a8cf4c6386ca33d3082f26941f6f1824.png

Не знаю как на хабре вставлять в статью 3D модели для просмотра. Возможно ли это? Была бы интересная фишка. Читатели бы могли вращать и рассматривать модель со всех сторон ну и всё такое…

Как вы понимаете, моя марбл машина состоит не только из пластиковых деталей. Здесь есть еще моторчики и плата управления. Я использую шаговые двигатели 28byj-48. Здесь их три: на винте Архимеда, на гусеничном подъемнике и на делителе потока. Двигатели просты в управлении и имеют небольшие габариты. Меня уже как-то критиковали, мол двигатель должен быть только один и он должен приводить в движение всю машину. Ну тем не менее, мне проще использовать несколько моторчиков. Таков мой путь.

Плату контроллера я так же разработал сам в САПР KiCAD:

332fa1c06eefb058e49be59af7b83cc2.png

Да, я знаю, что существуют всякие «ардуины», но мне как-то ближе и роднее ПЛИС, на моей плате стоит CPLD Altera MAX3128. Логических элементов не очень много, но для разных самоделок типа моей хватает вполне. Плата выглядит вот так:

00ea9149f4de3fc8c781a2934a7f00b9.jpg

Эта плата в моем проекте управляет тремя шаговыми двигателями (а вообще-то может управлять четырьмя) и самое сложное, что здесь есть это управление делителем потока шариков. Это в центре марбл машины такой качающаяся стрелка. Там стоит простой ИК датчик. Когда стрелка идет влево «программа» в ПЛИС ожидает срабатывания датчика, после чего стрелка идет вправо на заданное число шагов и там разворачивается.

Программа в ПЛИС написана на 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 машины в единый живой механизм.

© Habrahabr.ru