Оглавление:

Инфракрасный датчик кости: 5 шагов
Инфракрасный датчик кости: 5 шагов

Видео: Инфракрасный датчик кости: 5 шагов

Видео: Инфракрасный датчик кости: 5 шагов
Видео: Датчик движения HC SR501 - полный обзор и тест 2024, Ноябрь
Anonim
Инфракрасный датчик кости
Инфракрасный датчик кости
Инфракрасный датчик кости
Инфракрасный датчик кости

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

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

makezine.com/2009/09/19/dice-reader-versio…

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

Запасы

Теперь о припасах:

Тебе понадобится:

1 х Arduino Uno

5 x ИК-приемников

5 x ИК-излучатели

www.sparkfun.com/products/241

5 резисторов по 270 Ом

Резисторы 5 x 10 кОм

1 х 74HC595N чип

различные мужские заголовки

1 x макетная доска (если вы не получаете фрезерованную доску на заказ)

Шаг 1: понимание того, как это работает

Понимание того, как это работает
Понимание того, как это работает
Понимание того, как это работает
Понимание того, как это работает

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

Вы можете спросить, почему тогда только 5 пунктов? Разве вам не понадобятся все 9, чтобы эффективно читать кости?

Что ж, из-за симметрии кубиков использования 5 определенных мест на кубиках может быть достаточно, чтобы определить разницу между разными числами на кубиках независимо от ориентации (рисунок 1). Это делает датчик игральных костей более эффективным, потому что он ищет только то, что ему нужно, и ничего лишнего.

Излучатель проходит точно под приемником на датчике в каждом из этих 5 точек, датчик затем излучает ИК-свет, а затем приемник считывает количество ИК-света, которое отражается от лицевой стороны игральной кости. (рисунок 3) Если полученное значение больше указанных значений калибровки, то датчик будет видеть это пятно как точку, если нет, то это пустое пространство. (рисунок 2)

Шаг 2: проектирование и планирование

Проектирование и планирование
Проектирование и планирование
Проектирование и планирование
Проектирование и планирование
Проектирование и планирование
Проектирование и планирование
Проектирование и планирование
Проектирование и планирование

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

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

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

Чтобы начать проектирование платы, у вас есть 5 ИК-приемников и 5 ИК-излучателей, приемникам требуется резистор 10 кОм, а эмиттерам требуется резистор 270 Ом, поэтому для каждого из этих элементов вы выбираете из:

VCC (5 В) -> Резистор -> Вывод аналогового считывания -> ИК-приемник -> GND

VCC (5V) -> резистор -> ИК-излучатель -> GND

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

В моей пользовательской плате я использую сдвиговый регистр для подачи питания на каждую из пар эмиттера и приемника по очереди, чтобы избежать утечки инфракрасного света от других излучателей. Это дает мне еще более точные показания для каждого из местоположений точки, если вы решили не использовать регистр сдвига, он все равно будет работать для вас, просто он может быть немного менее точным. В регистре сдвига вы можете соединить контакты 3-4 и 7-8 вместе, поскольку нет необходимости использовать их в качестве заголовков. Я оставил их как заголовки и поставил перемычки на заголовки на случай, если я захочу заняться разработкой в будущем.

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

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

Как только у вас будет дизайн доски, вы можете переходить к следующему шагу!

Шаг 3: создание доски

Создание совета
Создание совета
Создание совета
Создание совета
Создание совета
Создание совета

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

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

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

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

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

Шаг 4: Программирование платы

Программирование доски
Программирование доски
Программирование доски
Программирование доски

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

Для начала у вас должна быть Arduino для взаимодействия с этим датчиком. Он использует 5 аналоговых контактов и 3 цифровых контакта.

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

На датчике контакты 1-5 Красный идут к A0-A4, поэтому Красный 1 идет к A0 и так далее. Значки 1-8 белого цвета требуют дополнительных пояснений.

Белый 1 - вывод данных, сюда Arduino отправляет данные в регистр сдвига. Я установил этот вывод на цифровой вывод 3 на Arduino.

Белый 2 - Q0, в данном случае устаревший, я включил его на случай, если я вообще решу расширить

Белые 3 и 4 - будут соединены, вы можете спаять эти два вместе или использовать перемычку, как я.

Белый 5 - фиксирующий штифт, очень важный штифт, который является последним шагом в процессе включения и выключения шипов. Я установил этот вывод на вывод 12 на Arduino.

Белый 6 - тактовый вывод, он обеспечивает синхронизацию от Arduino до сдвигового регистра. Я установил это на цифровой вывод 13.

Белые 7 и 8 - будут спарены, вы можете спаять эти два вместе или использовать перемычку, как я.

Рядом с белым полем у вас есть контакты заземления и VCC. Вы должны обеспечить 5 В от Arduino или другого источника для питания этого датчика.

Номера PIP Location можно найти в коде.

Теперь, когда вам нужно подключить его, мы должны его откалибровать. Моей целью было создать сценарий, который мог бы откалибровать его для вас, но у меня не хватило времени для этого. При калибровке вы должны убедиться, что датчик находится в контролируемой среде освещения, почувствуйте его чувствительность к внешнему предполагаемому свету. Вы должны получить значение из каждой точки с черной и белой точкой и усреднить разницу. Я использовал только две стороны кубика для калибровки, я использовал сторону 1, сторону 6 и сторону 6, повернутую на 90 градусов. Когда у вас есть число для белого и черного для каждого местоположения точки, вам нужно усреднить их и найти середину из двух чисел. Так, например, если я получил 200 для белого цвета из первого местоположения точки и 300 для темного значения в первом местоположении точки, тогда номер калибровки будет 250. Как только вы сделаете это для всех 5 точек, ваш датчик будет исправен. откалиброван, то можно использовать dice. ReadFace (); чтобы получить текущую грань кубика.

Шаг 5: Заявление

заявка
заявка
заявка
заявка
заявка
заявка

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

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

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

Бог благословил!

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