Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Переносимый детектор дальности

Компоненты и расходные материалы

Arduino Nano R3
× 1
Ультразвуковой датчик - HC-SR04 (общий)
× 1
18650 Cell
× 1
Литий-ионное зарядное устройство TP4056
× 1
Повышающий преобразователь постоянного тока 5 В
× 1
Зуммер
× 1
Поворотный потенциометр (общий)
× 1
Ползунковый переключатель
× 1
LED (общий)
Красный (2), Зеленый (1), Синий (1)
× 4
Резистор 330 Ом
× 2
Винты OpenBuilds M3 с головкой под ключ
Болты M3 10 мм (4)
× 1
Провода
18 AWG
× 1
Детали, напечатанные на 3D-принтере
3 части корпуса
× 1
Адаптер потока
× 1

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

3D-принтер (общий)
Я использовал Anet A8
Паяльник (общий)
Пистолет для горячего клея (общий)
Dremel
Или любой вращающийся инструмент

Приложения и онлайн-сервисы

IDE Arduino
Потребуется загрузить библиотеку NewPing
Simplify3D
Или любой слайсер по выбору

Об этом проекте

Введение

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

Устройство должно соответствовать следующим условиям :

  • Регулируемое расстояние
  • Не фиксируется на машинах постоянно.
  • Совместимость со штативом
  • Никаких проводов

Видео

Детали

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

Код

Библиотека NewPing необходима для компиляции кода (приведенного внизу).

Частота зуммера и верхняя / нижняя границы - это глобальные переменные, которые можно изменять. Верхняя / нижняя границы относятся к минимальному и максимальному расстоянию, которое считывает датчик, которое отображается на аналоговое значение [0,5] В от потенциометра.

  int frequency =700; // Частота в Гц 
int lower_bound =60; // Расстояние в мм
int upper_bound =200; // Расстояние в мм

При включении раздаются 3 звуковых сигнала, указывающие на успешную загрузку (см. setup () петля). Затем loop () непрерывно запрашивает данные от ультразвукового датчика и сравнивает их с порогом, установленным потенциометром.

3D-печать

Все файлы были загружены в thingiverse, или один сжатый файл можно найти внизу страницы. Как использовать САПР здесь не рассматривается. Модель сделана с учетом ограничений 3D-печати. Вылеты были сведены к минимуму за счет использования фаски под 45 градусов, что уменьшает опорный материал. Зазоры были щедрыми, поэтому детали должны подходить, несмотря на то, что они были напечатаны на принтерах с другой калибровкой.

Время печати будет отличаться, но мое время печати были следующие:

  • Верхняя часть:2 часа 40 минут.
  • Нижняя часть:2 часа 20 минут
  • Ручка:20 минут.

Сборка

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

Утилизированные кабели IDE обеспечили все провода. Группы проводов можно снимать, оставаясь прикрепленными друг к другу, что обеспечивает определенный порядок.

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

Светодиодные индикаторы SMD на плате TP4056 были распаяны. На их место впаяны удлинители и 3мм светодиоды THT. Токоограничивающие резисторы по-прежнему встроены в плату. Есть видео, на котором кто-то выполняет это перемещение.

У Arduino nano было только 2 доступные заземляющие контактные площадки, поэтому для увеличения количества заземляющих площадок использовался стрипборд. То же самое было сделано с линией 5V, которую можно увидеть на картинке ниже.

Разрыв соединения на полосе необходимо, чтобы 5В не было замкнуто на массу. Красный значок «X» обозначает место разрыва. Нужно разрушить только верхнюю медь, а не всю стеклопластиковую плату.

Компоненты были подключены за пределами корпуса. Иногда их устанавливали в корпусе для измерения длины провода и проверки наличия помех.

Потенциометр был обрезан на 6 мм, чтобы он не выступал слишком сильно.

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

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

Резюме

Оглядываясь назад, я бы предпочел использовать ИК-датчик, а не Ультразвуковой, но я никак не мог знать об этом, пока не начал экспериментировать с Ультразвуковым датчиком. ИК-датчики имеют более узкое поле зрения и гораздо меньшее максимальное расстояние (~ 3 фута).

Если бы появилась вторая версия, LiPo заменил бы 18650. Большая гайка с рифленой накаткой тяжелая и занимает много места. Стандартная резьба для крепления штатива - 1/4 дюйма, поэтому достаточно простой гайки 1/4 дюйма из хозяйственного магазина. Изготовленные на заказ печатные платы уменьшили бы объем вдвое.

Я доволен прототипом, который был разработан от концепции до передачи в течение 2 недель.

Будущее проекта

Когда я экспериментировал с ультразвуковым датчиком, я узнал больше о его ограничениях. Во-первых, угол обзора составляет ~ ± 15 ° (всего 30 °). Это означало, что объект может вызвать зуммер до того, как он окажется прямо над датчиком. Это приводит к неточностям и нежелательным показаниям. Кроме того, если плоскость объекта не перпендикулярна (или не находится в пределах допуска) к передаваемой звуковой волне, датчик не получит отраженную волну и не сможет обработать значение расстояния.

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

Это предложение было не только отличным решением данных вопросов, но и очень простым в реализации. В заказ на переходник для гайки штатива 1/4 "входили переходник 1/4" -> 3/8 "И переходник 3/8" -> 1/4 ". Второй переходник действительно пригодится!

Поскольку у меня не было доступа к дремелю, когда я впервые начал создавать 3D-модели, это вынудило меня учитывать весь адаптер штатива. Это в сочетании с аккумулятором 18650 значительно увеличило вес. Я не хочу добавлять больше веса, чем мне нужно, поэтому я урежу второй адаптер штатива перед моделированием крепления. Я вернусь к проекту через неделю, чтобы завершить это альтернативное решение для монтажа. А до тех пор он все еще работает!

Код

  • RangeDetectionDevice.ino
RangeDetectionDevice.ino Arduino
 / ** Виктор Силиванов 22.03.2018 Портативный датчик расстояния с использованием ультразвукового датчика HC-SR04 с регулировкой расстояния для срабатывания зуммера. ** /// ************* ******* Библиотеки ***************************************** ************************************************* ************************************************* ************************************************* **************** # include  // ******************** Пины **** ************************************************* ************************************************* ************************************************* ************************************************* ******** // Аналоговые выводы # определить Wiper A5 // Цифровые выводы # определить эхо 2 # определить триггер 3 # определить ON_LED 7 # определить зуммер 8 # определить buzzer_LED 9 // ******** ************ Глобальные переменные ************************************ ************************************************* ************************************************* *************************************** ************************* // Допускается изменение пользователем int frequency =700; // Частота в Гцint lower_bound =60; // Расстояние в миллиметрах upper_bound =200; // Расстояние в мм // Не изменятьint buzz_time =250; // Время в миллисекундах для зуммера сразу при запуске int buzz_delay =280; // Время задержки зуммера сразу после запуска в миллисекундах int max_distance =400; // Аргумент объекта в библиотеке NewPing int i =0; int distance; int threshold; Эхолот NewPing (триггер, эхо, max_distance); // Создание объекта "сонар" // ******************** Настройка ******************* ************************************************* ************************************************* ************************************************* ****************************************** // Эта функция запускается только один раз setup () {Serial.begin (9600); // Разрешает использование последовательного монитора со скоростью 9600 бод. // Объявление типа ввода-вывода вывода pinMode (trig, OUTPUT); pinMode (эхо, ВХОД); pinMode (зуммер, ВЫХОД); pinMode (buzzer_LED, ВЫХОД); pinMode (ON_LED, ВЫХОД); digitalWrite (ON_LED, HIGH); // Включает зеленый светодиод; Остается включенным, пока устройство включено // Зуммер издает 3 звуковых сигнала при включении устройства while (i <3) {digitalWrite (buzzer_LED, HIGH); тон (зуммер, частота, время гудка); задержка (buzz_delay); я ++; } digitalWrite (buzzer_LED, LOW);} // ******************** Работает бесконечно **************** ************************************************* ************************************************* ************************************************* *********************************** void loop () {distance =sonar.ping_cm (); // Объект «сонар» использует функцию ping_cm () из библиотеки, которая возвращает значение в см. Затем расстояние принимает это значение threshold =analogRead (wiper); // Получить аналоговое значение от очистителя потенциометра threshold =map (threshold, 0, 1023, lower_bound, upper_bound); // Переводим аналоговые показания в диапазон триггера. Обновить значения порога if (distance! =0 &&distance  

Изготовленные на заказ детали и корпуса

Все 3 части сохраняются в один файл

Схема


Производственный процесс

  1. Детектор языка TinyML на основе Edge Impulse и Arduino
  2. Игра с гироскопом Arduino с MPU-6050
  3. Цифровые игральные кости Arduino
  4. Рулетка DIY 37 LED
  5. Мини-аркада ATtiny85:Змейка
  6. Реактивный настольный светильник для звука Arduino
  7. Умный автомобиль-робот с отслеживанием лиц
  8. Гальваника медью
  9. NeoMatrix Arduino Pong
  10. Портативная температурная станция