Оглавление:

Сортировочная корзина - обнаружение и сортировка мусора: 9 шагов
Сортировочная корзина - обнаружение и сортировка мусора: 9 шагов

Видео: Сортировочная корзина - обнаружение и сортировка мусора: 9 шагов

Видео: Сортировочная корзина - обнаружение и сортировка мусора: 9 шагов
Видео: Общественный контроль в решении муниципальных экологических проблем отходов и мусорных свалок 2024, Июль
Anonim
Image
Image
Как это работает
Как это работает

Вы когда-нибудь видели кого-нибудь, кто не перерабатывает или делает это плохо?

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

Продолжайте читать наш проект, вы не пожалеете!

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

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

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

В следующих разделах этот проект будет объяснен шаг за шагом.

Шаг 1. Как это работает

Как это работает
Как это работает
Как это работает
Как это работает

Бункер сортировщика был разработан, чтобы упростить работу для пользователя: мусор должен быть введен через отверстие, которое находится в верхней пластине, должна быть нажата желтая кнопка, и процесс начнется, и весь мусор будет помещен в один получателей. Но теперь вопрос в том … как этот процесс работает внутри компании?

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

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

Когда коробка дойдет до конца штриха и объект будет брошен в правильного получателя, коробка вернется в исходное положение. Наконец, когда ящик находится в исходном положении, желтый светодиод погаснет. Сортировщик будет готов к повторному запуску с той же процедурой. Этот процесс, описанный в последних абзацах, также показан на изображении диаграммы рабочего процесса, приложенной к Шагу 6: Программирование.

Шаг 2: ведомость материалов (BOM)

Механических частей:

  • Куплены запчасти на нижнюю конструкцию

    • Металлическая структура [Ссылка]
    • Серый ящик [Ссылка]
  • 3д принтер

    PLA для всех печатных деталей (также могут использоваться другие материалы, например, ABS)

  • Станок для лазерной резки

    • МДФ 3мм
    • Оргстекло 4мм
  • Комплект линейных подшипников [ссылка]
  • Линейный подшипник [ссылка]
  • Вал [ссылка]
  • Держатель вала (x2) [Ссылка]

Электронные части:

  • Мотор

    Линейный шаговый двигатель Nema 17 [Ссылка]

  • Аккумулятор

    Аккумулятор 12 В [Ссылка]

  • Датчики

    • 2 Ультразвуковой датчик HC-SR04 [Ссылка]
    • 2 индуктивных датчика LJ30A3-15 [Ссылка]
  • Микроконтроллер

    1 плата arduino UNO

  • Дополнительные компоненты

    • Драйвер DRV8825
    • 3 светодиода: красный, зеленый и оранжевый
    • 1 кнопка
    • Некоторые прыгающие провода, провода и паяльные пластины
    • Макетная плата
    • USB-кабель (соединение Arduino-PC)
    • Конденсатор: 100 мкФ

Шаг 3: Механический дизайн

Image
Image
Механический дизайн
Механический дизайн
Механический дизайн
Механический дизайн

На предыдущих картинках показаны все части сборки.

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

Детали, вырезанные лазером:

  • МДФ 3мм

    • Столбы
    • Верхняя пластина
    • Поддержка ультразвуковых датчиков
    • Поддержка индуктивных датчиков
    • Ящик для мусора
    • Поддержка батареи
    • Макетная плата и поддержка Arduino
  • Оргстекло 4мм

    Платформа

Детали, напечатанные на 3D-принтере:

  • Основание столбов
  • Элемент передачи линейного движения от шагового двигателя
  • Шаговый двигатель и подшипниковые опоры
  • Детали крепления стен для мусорного ящика

Для изготовления каждой из этих частей файлы. STEP должны быть импортированы в правильный формат, в зависимости от машины, которая будет использоваться для этой цели. В данном случае файлы.dxf использовались для станка для лазерной резки, а файлы.gcode - для 3D-принтера (Ultimaker 2).

Механическую сборку этого проекта можно найти в файле. STEP, прилагаемом к этому разделу.

Шаг 4: Электроника (выбор компонентов)

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

Плата Arduino UNO (как микроконтроллер):

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

Двигатель (линейный шаговый двигатель Nema 17):

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

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

Драйвер DRV8825:

Эта плата используется для управления биполярным шаговым двигателем. Он имеет регулируемый регулятор тока, который позволяет вам установить максимальный выходной ток с помощью потенциометра, а также шесть различных шагов разрешения: полный шаг, полушаг, 1/4 шага, 1/8 шага, 1/16 шага. шаг и 1/32 шага (мы, наконец, использовали полный шаг, поскольку мы не обнаружили необходимости переходить к микрошагу, но его все еще можно использовать для улучшения качества движения).

Ультразвуковые датчики:

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

Хотя выходной сигнал этого датчика представляет собой значение (расстояние), устанавливая порог, чтобы определить, присутствует ли объект или нет, мы преобразуем

Индуктивные датчики:

По закону Фарадея он относится к категории бесконтактных электронных датчиков приближения. Мы разместили их в нижней части движущегося ящика, под платформой из оргстекла, которая поддерживает объект. Их цель - различать металлические и неметаллические предметы, давая цифровой выход (0/1).

Светодиоды (зеленый, желтый, красный):

Их миссия - общаться с пользователем:

-Зеленый светодиод горит: робот ждет объект.

-Красный светодиод горит: машина работает, вы не можете бросить какой-либо предмет.

-Желтый светодиод горит: обнаружен объект.

Аккумулятор 12 В или источник питания 12 В + 5 В Питание от USB:

Источник напряжения необходим для питания датчиков и шагового двигателя. Для питания Arduino необходим источник питания 5 В. Это можно сделать через аккумулятор 12 В, но лучше всего иметь отдельный источник питания 5 В для Arduino (например, с помощью кабеля USB и телефонного адаптера, подключенного к источнику питания или к компьютеру).

Проблемы, которые мы обнаружили:

  • Индуктивное обнаружение датчика, мы не достигли желаемой точности, так как иногда металлический объект, расположенный неправильно, не воспринимается. Это связано с двумя ограничениями:

    • Площадь, покрываемая датчиками на квадратной платформе, составляет менее 50% от нее (поэтому небольшой объект не может быть обнаружен). Чтобы решить эту проблему, мы рекомендуем использовать 3 или 4 индуктивных датчика, чтобы обеспечить покрытие более 70% площади.
    • Расстояние обнаружения датчиков ограничено 15 мм, поэтому мы оказались вынуждены использовать прекрасную платформу из оргстекла. Это также может быть еще одним ограничением при обнаружении объектов странной формы.
  • Ультразвуковое обнаружение: опять же, объекты сложной формы создают проблемы, поскольку сигнал, излучаемый датчиками, плохо отражается и возвращается к датчику позже, чем должен.
  • Аккумулятор: у нас есть некоторые проблемы с контролем тока, подаваемого аккумулятором, и для их решения мы наконец использовали источник питания. Однако могут быть реализованы и другие решения, такие как использование диода.

Шаг 5: Электроника (подключения)

Электроника (соединения)
Электроника (соединения)
Электроника (соединения)
Электроника (соединения)

В этом разделе показано подключение различных компонентов вместе. Он также показывает, к какому выводу на Arduino подключен каждый компонент.

Шаг 6: программирование

Программирование
Программирование

В этом разделе объясняется логика программирования, лежащая в основе машины для сортировки корзин.

Программа разделена на 4 шага, а именно:

  1. Инициализировать систему
  2. Проверить наличие предметов
  3. Проверить тип присутствующего объекта
  4. Переместить коробку

Подробное описание каждого шага см. Ниже:

Шаг 1: инициализация системы

Светодиодная панель (3) - установите светодиод калибровки (красный) ВЫСОКИЙ, светодиод готовности (зеленый) НИЗКИЙ, объект присутствует (желтый) НИЗКИЙ

Убедитесь, что шаговый двигатель находится в исходном положении.

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

    • Исходное положение == 0 >> Обновите значения светодиода готовности ВЫСОКИЙ и светодиода калибровки НИЗКИЙ -> шаг 2
    • Исходное положение! = 0 >> цифровое считываемое значение ультразвуковых датчиков и основано на значениях датчика:

      • Обновите значение светодиода движения двигателя ВЫСОКОЕ.
      • Запустите поле перемещения, пока значение обоих ультразвуковых датчиков не станет <порогового значения.

Обновить значение исходного положения = 1 >> Обновить значение светодиода Ready HIGH и двигателя, перемещающегося в LOW и калибрующего LOW >> шаг 2

Шаг 2

Проверить наличие предметов

Запустить ультразвуковое обнаружение объектов

  • Объект присутствует == 1 >> Обновить значение светодиода "Объект присутствует" ВЫСОКИЙ >> Шаг 3
  • Объект присутствует == 0 >> Ничего не делать

Шаг 3

Проверить тип присутствующего объекта

Запуск обнаружения индуктивного датчика

  • индуктивное состояние = 1 >> Шаг 4
  • индуктивное состояние = 0 >> Шаг 4

Шаг 4

Переместить коробку

Запуск двигателя

  • индуктивное состояние == 1

    Обновить светодиодный индикатор движения двигателя ВЫСОКИЙ >> Заставить двигатель двигаться влево (обновить исходное положение = 0) задержать и вернуться вправо >> Шаг 1

  • индуктивное состояние == 0

    Обновить светодиодный индикатор движения двигателя ВЫСОКИЙ >> Заставить двигатель двигаться вправо (обновить исходное положение = 0), задержать и вернуться влево >> Шаг 1

Функции

Как видно из логики программирования, программа работает, выполняя функции с определенной целью. Например, первым шагом является инициализация системы, которая содержит функцию «Проверить, находится ли шаговый двигатель в исходном положении». На втором этапе проверяется наличие объекта, который сам по себе является другой функцией (функция «Ультразвуковое обнаружение объекта»). И так далее.

После шага 4 программа полностью выполнится и вернется к шагу 1 перед повторным запуском.

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

Это соответственно:

  • индуктивный тест ()
  • moveBox (индуктивное состояние)
  • ultrasonicObjectDetection ()

// Проверяем, металлический объект или нет

bool InductionTest () {если (digitalRead (индуктивныйSwitchRight) == 1 || digitalRead (индуктивныйSwitchLeft == 0)) {return true; else {return false; }} void moveBox (bool InductiveState) {// Поле перемещается влево, когда обнаруживается металл, и InductionState = true if (InductiveState == 0) {stepper.moveTo (steps); // случайное конечное положение для тестирования stepper.runToPosition (); задержка (1000); stepper.moveTo (0); stepper.runToPosition (); задержка (1000); } иначе, если (индуктивное состояние == 1) {stepper.moveTo (-steps); // случайное конечное положение для тестирования stepper.runToPosition (); задержка (1000); stepper.moveTo (0); // случайное конечное положение для тестирования stepper.runToPosition (); задержка (1000); }} логическое значение ultrasonicObjectDetection () {long duration1, distance1, durationTemp, distanceTemp, averageDistance1, averageDistanceTemp, averageDistanceOlympian1; // Определяем количество измерений для большого расстоянияMax = 0; long distanceMin = 4000; long distanceTotal = 0; для (int i = 0; i distanceMax) {distanceMax = distanceTemp; } если (distanceTemp <distanceMin) {distanceMin = distanceTemp; } distanceTotal + = distanceTemp; } Serial.print ("Sensor1 maxDistance"); Serial.print (distanceMax); Serial.println («мм»); Serial.print («Sensor1 minDistance»); Serial.print (distanceMin); Serial.println («мм»); // Взять среднее расстояние по показаниям averageDistance1 = distanceTotal / 10; Serial.print ("Sensor1 averageDistance1"); Serial.print (averageDistance1); Serial.println («мм»); // Удаляем самые высокие и самые низкие значения измерений, чтобы избежать ошибочных показаний averageDistanceTemp = distanceTotal - (distanceMax + distanceMin); meanDistanceOlympian1 = averageDistanceTemp / 8; Serial.print ("Sensor1 averageDistanceOlympian1"); Serial.print (averageDistanceOlympian1); Serial.println («мм»);

// Сброс значений температуры

distanceTotal = 0; distanceMax = 0; distanceMin = 4000; long duration2, distance2, averageDistance2, meanDistanceOlympian2; // Определение количества измерений для (int i = 0; i distanceMax) {distanceMax = distanceTemp; } если (distanceTemp <distanceMin) {distanceMin = distanceTemp; } distanceTotal + = distanceTemp; } Serial.print ("Sensor2 maxDistance"); Serial.print (distanceMax); Serial.println («мм»); Serial.print ("Sensor2 minDistance"); Serial.print (distanceMin); Serial.println («мм»); // Взять среднее расстояние по показаниям averageDistance2 = distanceTotal / 10; Serial.print ("Sensor2 averageDistance2"); Serial.print (averageDistance2); Serial.println («мм»); // Удаляем самые высокие и самые низкие значения измерений, чтобы избежать ошибочных показаний averageDistanceTemp = distanceTotal - (distanceMax + distanceMin); meanDistanceOlympian2 = averageDistanceTemp / 8; Serial.print ("Sensor2 averageDistanceOlympian2"); Serial.print (averageDistanceOlympian2); Serial.println («мм»); // Сбрасываем временные значения distanceTotal = 0; distanceMax = 0; distanceMin = 4000; если (averageDistanceOlympian1 + averageDistanceOlympian2 <emptyBoxDistance) {return true; } else {вернуть ложь; }}

Основной корпус

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

Предупреждение

Было проведено множество тестов, чтобы найти константы: emptyBoxDistance, steps и Maximumspeed, а также ускорение в настройке.

Шаг 7: Возможные улучшения

Возможные улучшения
Возможные улучшения

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

-Из-за проблем, которые мы обнаружили с ультразвуковым обнаружением, мы можем поискать некоторые альтернативы для этой функции: лазер и лазерный детектор KY-008 (изображение), емкостные датчики.

Шаг 8: ограничивающие факторы

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

Калибровка ультразвуковых датчиков

Угол, под которым ультразвуковые датчики размещаются по отношению к объекту, который они должны обнаруживать, имеет решающее значение для правильного функционирования прототипа. Для этого проекта для ориентации ультразвуковых датчиков был выбран угол 12,5 ° к нормали, но наилучший угол должен быть определен экспериментально путем записи показаний расстояния с использованием различных объектов.

Источник питания

Требуемая мощность для драйвера шагового двигателя DRV8825 составляет 12 В и от 0,2 до 1 А. Arduino также может питаться максимум от 12 В и 0,2 А, используя вход jack на Arduino. Однако следует проявлять особую осторожность при использовании одного и того же источника питания как для Arduino, так и для драйвера шагового двигателя. При питании от обычной розетки с использованием, например, блока питания адаптера переменного / постоянного тока 12 В / 2 А, перед подачей питания на Arduino и драйвер шагового двигателя в цепи должен быть регулятор напряжения и диоды.

Приведение коробки в исходное положение

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

Драйвер шагового двигателя DRV8825 Tuning

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

Шаг 9: кредиты

Этот проект был выполнен в рамках курса мехатроники в течение 2018-2019 учебного года для магистра Bruface в Université Libre de Bruxelles (ULB) - Vrije Universiteit Brussel (VUB).

Авторы:

Максим Деклер

Лидия Гомес

Маркус Подер

Адриана Пуэнтес

Нарджисс Снусси

Особая благодарность нашему руководителю Альберту де Бейру, который также помогал нам на протяжении всего проекта.

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