Оглавление:

Роботизированный диспенсер нитей для Arduino: 8 шагов (с изображениями)
Роботизированный диспенсер нитей для Arduino: 8 шагов (с изображениями)

Видео: Роботизированный диспенсер нитей для Arduino: 8 шагов (с изображениями)

Видео: Роботизированный диспенсер нитей для Arduino: 8 шагов (с изображениями)
Видео: Публичная программа "Будущее время". Лекция А. Казанцевой 2024, Июль
Anonim
Image
Image

Почему моторизованный инструмент

Нить для 3D-принтеров - обычно почти прочная - вытягивается экструдером, в то время как рулон помещается рядом с принтером, чтобы он мог свободно вращаться. Я заметил существенные различия в поведении материала в зависимости от уровня использования, относящиеся к рулонам с нитью весом 1 кг. Новая (полная) катушка с нитью течет почти хорошо, но сила, прикладываемая экструдером, должна быть относительно соответствующей: вес составляет не менее 1,5 кг.

Электродвигатель экструдера (в большинстве случаев это шаговый двигатель Nema17) обладает достаточной мощностью для выполнения работы, но две шестерни экструдера, толкающие нить к стороне горячего конца во время работы, собирают частицы нити из-за приложенных сил; это требует частого обслуживания экструдера, чтобы избежать засорения сопла. Эти частицы имеют тенденцию отделяться и смешиваться с чистой нитью во время подачи, что увеличивает проблемы с соплами и более частый износ сопел; чаще это происходит с соплами диаметром 0,3 мм.

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

Комплект доступен на Tindie.com

Шаг 1. Содержимое комплекта

Содержание комплекта
Содержание комплекта
Содержание комплекта
Содержание комплекта

В комплект входят все детали и механизмы, напечатанные на 3D-принтере, для сборки моторизованного диспенсера нити. Вместо этого есть две дополнительные части: двигатель и плата контроллера двигателя.

В своей установке я использовал щеточный мотор-редуктор McLennan на 12 В, но любой мотор-редуктор диаметром 37 мм может правильно поместиться внутри опоры мотора.

Наилучшие характеристики достигаются с экраном TLE94112LE Arduino от Infineon (полный обзор здесь); Эта плата контроллера двигателя постоянного тока может поддерживать до 6 различных комплектов роботизированных дозаторов одновременно.

Я протестировал всю систему как на Arduino UNO R3, так и на Arduino-совместимой плате XMC1100 Boot kit от Infineon, и система очень хорошо реагировала на обе платы микроконтроллера.

Использование экрана TLE94112LE рекомендуется, но не обязательно. Любой контроллер двигателя постоянного тока для Arduino - в том числе и ваш собственный проект! - может отлично работать с этим инструментом

Комплект разделен на два набора компонентов, так как две части созданы для совместной работы. Базовая платформа будет поддерживать валок с нитью, вращающийся на четырех подшипниках свободного хода. Основание прикреплено к датчику веса, чтобы управлять вращающимся механизмом, запускающим его активацию, а также контролировать состояние нити: вес, метры и процентное содержание. Большой объем информации, а также полный набор команд доступны из Arduino через последовательный терминал.

Необходимые инструменты

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

Шаг 2: Проект и дизайн

Проект и дизайн
Проект и дизайн
Проект и дизайн
Проект и дизайн
Проект и дизайн
Проект и дизайн

Этот проект является третьим этапом эволюции серии диспенсеров для нити для 3D-принтера. Несколько раз назад я создал вращающееся основание, чтобы оптимизировать поток нити при ее вытягивании экструдером 3D-принтера.

Вторая модель включала датчик веса для мониторинга использования нити в реальном времени с помощью платы Arduino. Этот последний проект включает в себя автоматический выпуск нити в зависимости от потребностей 3D-принтера. Он основан на виртуальном изменении веса, когда экструдер вытягивает нить. Это событие запускает микроконтроллер через датчик веса, и моторизованный валок с нитью начинает выпускать несколько дюймов материала, затем замедляется и останавливается.

Компоненты были экспортированы в формат STL и напечатаны на 3D-принтере, а затем доработаны и собраны вместе. Я создал специальную опору, чтобы выровнять движущуюся часть с основанием. Более длинная алюминиевая шина также использовалась для поддержки Arduino и моторного щита, чтобы сделать весь инструмент компактным и легким в перемещении.

Создавая дизайн, я руководствовался рядом предположений:

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

Это результат, которого я добился.

Шаг 3: Сборка основания

Сборка базы
Сборка базы
Сборка базы
Сборка базы
Сборка базы
Сборка базы

Первый шаг - это сборка основания с датчиком веса.

  1. Вставьте малую осевую трубку подшипника в отверстие подшипника.
  2. Поместите два разделительных диска по бокам подшипника.
  3. Поместите компоненты внутрь опоры подшипника U-образного размера, совместив отверстия.
  4. вставьте винт с внутренним шестигранником с одной стороны, а шайбу и гайку с другой стороны, закрыв гайку без особых усилий

Повторите операцию на всех четырех опорах подшипников. Затем проверьте сборку: подшипники должны свободно вращаться.

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

Следующим шагом является сборка планки датчика веса, удерживающей вместе нижнее и верхнее основание. Датчик веса имеет два разных винта с внутренним шестигранником с обеих сторон, и вы должны ориентировать его так, чтобы метка максимального веса была читаемой при правильном расположении основания. В нижней части основания есть два дополнительных боковых отверстия для крепления аналого-цифрового усилителя датчика веса. Усилитель на базе микросхемы HX711 будет запитан и подключен к плате Arduino через четыре провода, как показано в прилагаемом листе данных датчика.

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

Настроен первый компонент!

Шаг 4: Сборка деталей двигателя с золотниковым движением

Сборка деталей двигателя с золотниковым движением
Сборка деталей двигателя с золотниковым движением
Сборка деталей двигателя с золотниковым движением
Сборка деталей двигателя с золотниковым движением
Сборка деталей двигателя с золотниковым движением
Сборка деталей двигателя с золотниковым движением

Более простая процедура сборки двигателя золотникового движения - это раздельная сборка четырех наиболее важных компонентов и завершение окончательной сборки:

Редукторный двигатель постоянного тока в моторной коробке передач

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

Ведомая большая шестерня

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

Держатель замка катушки

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

Как показано на изображениях, держатель замка катушки состоит из двух частей. Сначала вставьте гайку M4 в большую часть блока, затем приклейте вторую часть (крышку), удерживая блоки вместе. Гайка остается зажатой внутри держателя замка, который будет навинчиваться на ведомую ось с резьбой.

Коробка подшипников

Подшипниковая коробка выполняет две функции: обеспечивает хорошую опору для шестерен трансмиссии и обеспечивает плавное и бесшумное движение. Чтобы собрать подшипниковую коробку, выполните следующие простые шаги:

  1. Прикрутите первую гайку M4 к одному из двух концов ведомой оси держателя катушки с резьбой.
  2. Вставьте первый подшипник
  3. Вставьте разделитель
  4. Вставляем второй подшипник
  5. Заверните вторую гайку и умеренно затяните. Внутренний пластиковый разделитель будет противодействовать достаточной силе, чтобы удерживать вещи на месте даже в течение длительного времени.
  6. Вставьте собранные подшипники в подшипниковую коробку. Это должно быть сделано принудительно, чтобы получить лучшие результаты, поэтому не расширяйте слишком сильно внутреннюю часть коробки при доработке пластиковых деталей.

Мы готовы к финальной сборке комплектующих!

Шаг 5: Завершение сборки движка

Завершение сборки движка
Завершение сборки движка
Завершение сборки движка
Завершение сборки движка
Завершение сборки движка
Завершение сборки движка

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

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

Когда эта настройка будет завершена, перед добавлением ведомой шестерни (большей) добавьте маленькое разделительное кольцо: оно удерживает большую шестерню на одной линии с шестерней двигателя, действуя как шайба для фиксации ведомого движущегося узла.

Затем вставьте ведущую шестерню (маленькую) в вал двигателя. Обратите внимание, что в двигателе есть плоская сторона, а также в центральном отверстии шестерни, чтобы шестерня вращалась, приводимая в движение двигателем постоянного тока.

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

Строительство механики завершено!

Шаг 6: Бонус: как я настроил поддержку для управления комплектом

Бонус: как я настроил поддержку для управления комплектом
Бонус: как я настроил поддержку для управления комплектом
Бонус: как я настроил поддержку для управления комплектом
Бонус: как я настроил поддержку для управления комплектом
Бонус: как я настроил поддержку для управления комплектом
Бонус: как я настроил поддержку для управления комплектом

Чтобы удержать комплект на месте, я сделал очень простую конструкцию на основе двух алюминиевых квадратных трубок, которые поддерживают как основание, так и подвижную конструкцию. Основание было прикреплено четырьмя винтами к двум направляющим (длиной около 25 см) и с помощью пары небольших напечатанных на 3D-принтере опор, которые у меня есть, фиксирует двигатель движения, чтобы его можно было свободно перемещать, чтобы упростить установку и удаление рулона с нитью.

Каждый может выбрать свое решение в зависимости от того, как устроен его верстак.

Шаг 7: проводка и подключение к Arduino

Image
Image
Электромонтаж и подключение к Arduino
Электромонтаж и подключение к Arduino

Как объяснялось на этапе «Содержимое комплекта», я использовал щит двигателя постоянного тока Infineon TLE94112LE для Arduino и протестировал двигатель как на Arduino UNO R3, так и на загрузочном комплекте Infineon XMC110.

Если вы будете управлять двигателем (вам нужны функции ШИМ) с помощью платы контроллера постоянного тока по вашему выбору, просто адаптируйте инструкции к техническим характеристикам вашего щита.

Заметка о TLE04112LE Arduino Shield

Одно из ограничений, с которыми я столкнулся с другими щитами управления двигателем для Arduino, заключается в том, что они используют функции одного и того же микроконтроллера (т.е. контакты PWM и GPIO); это означает, что ваша плата будет посвящена этим задачам, в то время как только несколько других ресурсов (MPU и GPIO) доступны для других целей.

Имея возможность взять в руки TLE94122LE Arduino Shield для дорожных испытаний, наиболее очевидным преимуществом микросхемы, на которой основана плата, является ее полнота. Плата Arduino связывается с щитом по протоколу SPI, используя только два контакта. Каждая команда, которую вы отправляете на экран, обрабатывается автономно микросхемой TLE94112LE без использования ресурсов MPU. Еще одна замечательная особенность платы Infineon - это возможность управлять шестью щеточными двигателями с помощью трех программируемых каналов ШИМ. Это означает, что Arduino может настроить один или несколько двигателей, запустить их и продолжить работу над другими задачами. Этот экран идеально подходит для одновременной поддержки до шести различных катушек с нитью. Движение - это только одна из задач, возложенных на MPU. Учитывая возможность управления шестью разными катушками с нитью с помощью одного экрана Arduino +, стоимость микроконтроллера значительно сокращается. на каждый контроллер накаливания менее чем за 5 евро.

Датчик веса

Проведя несколько экспериментов, я увидел, что можно контролировать всю систему - мониторинг и автоматическое кормление - с помощью одного датчика; датчик веса (датчик веса) может динамически измерять изменения веса катушки с нитью, предоставляя всю необходимую нам информацию.

Я использовал недорогой тензодатчик в диапазоне 0-5 кг вместе с небольшой платой на базе усилителя HX711 AD, интегральной схемы, предназначенной для управления датчиками тензодатчиков. Проблем с интерфейсом не было, так как имеется хорошо работающая библиотека Arduino.

Три шага для настройки оборудования

  1. Вставьте экран сверху платы Arduino или загрузочного комплекта Infineon XMC110.
  2. Подключите провода двигателя к резьбовым разъемам Out1 и Out2 экрана.
  3. Подключите питание и сигналы усилителя датчика веса HX711 AD к контактам Arduino. В этом случае я использовал контакты 2 и 3, но со всеми свободными контактами все в порядке.

Предупреждение: контакты 8 и 10 зарезервированы экраном TLE94113LE для подключения SPI.

Это все! Готовы установить программу? Вперед, продолжать.

Шаг 8: Программное обеспечение и набор команд управления

Программное обеспечение и набор команд управления
Программное обеспечение и набор команд управления
Программное обеспечение и набор команд управления
Программное обеспечение и набор команд управления
Программное обеспечение и набор команд управления
Программное обеспечение и набор команд управления
Программное обеспечение и набор команд управления
Программное обеспечение и набор команд управления

Полное документированное программное обеспечение можно загрузить из репозитория GitHub 3DPrinterFilamentDispenserAndMonitor.

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

Есть причина, связанная с количеством доступных контактов на Arduino UNO. Я решил управлять системой через последовательный порт USB; Поскольку каждый моторизованный блок основан на датчике веса, для управления шестью различными дозаторами нити требуется считывание данных с шести датчиков веса. Каждый тензодатчик «потребляет» два контакта, контакты 0 и 1 зарезервированы (Tx / Rx) для последовательного порта, а контакты 8 и 10 зарезервированы для канала SPI, соединяющего экран TLE94112LE.

Состояние системы

Управляющее программное обеспечение работает в четырех различных состояниях, определенных в filament.h:

#define SYS_READY "Готов" // Система готова

#define SYS_RUN "Running" // Нить используется #define SYS_LOAD "Load" // Рулон загружен #define SYS_STARTED "Started" // Приложение запущено // Коды состояния #define STAT_NONE 0 #define STAT_READY 1 #define STAT_LOAD 2 #define STAT_RUN 3

Статус: запущен

Это состояние возникает после аппаратного сброса или при включении системы. Включение питания (и вызов setup () при запуске эскиза) инициализирует внутренние значения по умолчанию и должен запускаться без дополнительного веса на платформе, поскольку часть последовательности инициализации - получение абсолютной тары для достижения физического нулевого веса..

Статус: Готов

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

Статус: Загрузить

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

Статус: Работает

Этот статус включает автоматический расчет веса и автоматический дозатор нити.

Терминальные сообщения

Текущая версия программного обеспечения возвращает на терминал удобочитаемые сообщения в зависимости от команд. Строковые сообщения определены в двух файлах заголовков: commands.h (сообщения и ответы, связанные с командами) и filament.h (строки, используемые анализатором для создания составных сообщений).

Команды

В управлении командами задействованы два разных файла: commands.h, включающее все команды и связанные параметры, и filament.h, включая все константы и определения, используемые системой взвешивания и анализатором.

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

Ключевые слова команд чувствительны к регистру и должны просто отправляться с терминала. Если команда не соответствует текущему состоянию или она не распознается, возвращается неправильное командное сообщение, иначе команда выполняется.

Команды состояния

Измените текущий статус системы, и поведение также будет адаптировано

Команды филамента

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

Команды юнитов

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

Информационные команды

Показывать группы информации в зависимости от состояния системы

Моторные команды

Управляйте двигателем подачи или вытягивания нити.

Все команды двигателя следуют по траектории ускорения / замедления. Две команды feed и pull выполняют короткую последовательность, как определено в motor.h константой FEED_EXTRUDER_DELAY, в то время как команды feedc и pullc выполняются бесконечно, пока не будет получена команда останова.

Команды рабочего режима

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

Принцип основан на показаниях веса, привязанных к конкретной среде. Мы ожидаем, что расход нити относительно медленный, 3D-принтеры почти медленные, а нормальные колебания веса зависят от вибрации окружающей среды (лучше, если вы не поместите весь материал на 3D-принтер).

Когда экструдер вытягивает нить, разница в весе резко увеличивается (50 г или более) за очень короткое время, обычно между двумя или тремя показаниями. Эта информация фильтруется программным обеспечением, которое «вычитает» необходимость новой нити. Во избежание неправильных показаний отклонения веса при работающем двигателе вообще игнорируются.

Логика приложения

Логика приложения распределена в главном файле.ino (скетч Arduino) по трем функциям: setup (), loop () и parseCommand (commandString).

В скетче используются два отдельных класса: класс FilamentWeight для управления всеми вычислениями нити накала и считывание показаний датчика через микросхему HX711 и класс MotorControl, взаимодействующий с низкоуровневыми методами щита TLE94112LE Arduino.

настраивать()

Запускается один раз при включении питания или после аппаратного сброса, инициализирует экземпляры классов, настраивает оборудование и связь с терминалом.

петля()

Функция основного цикла управляет тремя различными условиями.

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

  1. Проверьте (в автоматическом режиме), требуется ли экструдеру больше нити.
  2. Если двигатель работает, проверьте наличие аппаратных ошибок (возвращается TLE94112LE)
  3. Если доступны последовательные данные, проанализируйте команду

parseCommand (commandString)

Функция синтаксического анализа проверяет строки, поступающие из последовательного порта, и когда команда распознается, она немедленно обрабатывается.

Каждая команда действует как конечный автомат, воздействуя на какой-то параметр системы; следуя этой логике, все команды сводятся к трем последовательным действиям:

  1. Отправьте команду классу FilamentWeight (команды веса) или классу MotorControl (команды двигателя)
  2. Выполняет расчет для обновления значений веса или обновления одного из внутренних параметров.
  3. Показывать на терминале и выводить информацию по завершении выполнения

Установите библиотеку HX711 Arduino, загрузите программное обеспечение с GitHub, загрузите его на свою плату Arduino и наслаждайтесь!

Рекомендуемые: