Оглавление:

5-проводный резистивный датчик касания: 10 шагов
5-проводный резистивный датчик касания: 10 шагов

Видео: 5-проводный резистивный датчик касания: 10 шагов

Видео: 5-проводный резистивный датчик касания: 10 шагов
Видео: Как работает тензорезисторный датчик? Как проверить тензорезисторный датчик? Мастерская Service ZIP. 2024, Ноябрь
Anonim
5-проводной резистивный датчик касания
5-проводной резистивный датчик касания

Привет привет!

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

Некоторое время я имел в виду проект, основанный на Plate and Ball 271828, но мне нужно многое узнать о датчиках и теории управления, прежде чем он будет завершен. Я подумал, что раз уж я кое-что узнаю, я могу взять вас с собой, ребята!

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

Я очень взволнован этим новым проектом и очень рад видеть, насколько хорошо он работает!

Сегодня мы собираемся получить простую 5-проводную сенсорную панель, работающую с DP-32.

Давайте начнем!

Шаг 1. Что вам понадобится

Что вам понадобится
Что вам понадобится

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

  • Микроконтроллер.

    Я использую свой DP32 со встроенным макетом, потому что он делает создание прототипов невероятно простым

  • Ассорти из проводов и кабелей.

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

  • Титульная 5-проводная резистивная сенсорная панель!

    У меня была 4-проводная резистивная сенсорная панель, но ленточный кабель для нее оборвался

Вот и все!

Шаг 2. Что такое 5-проводная резистивная сенсорная панель?

Что такое 5-проводная резистивная сенсорная панель?
Что такое 5-проводная резистивная сенсорная панель?
Что такое 5-проводная резистивная сенсорная панель?
Что такое 5-проводная резистивная сенсорная панель?
Что такое 5-проводная резистивная сенсорная панель?
Что такое 5-проводная резистивная сенсорная панель?

Если вы прочитали мое руководство по 4-проводной сенсорной панели, вы будете знакомы с общей идеей резистивного сенсорного датчика, но 5-проводные и 4-проводные панели работают немного по-другому.

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

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

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

На третьем изображении вы можете увидеть, как изменяется конфигурация, чтобы мы могли чувствовать по оси Y. Таким образом, мы можем сказать, где в двумерном пространстве касается наш палец!

Шаг 3: Подключение

Проводка
Проводка
Проводка
Проводка

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

Ваша схема подключения, конечно, может отличаться, но моя схема подключения следующая:

Аналоговый 0 (контакт 6) подключается к датчику (средний контакт)

Digital 3 подключается к верхнему правому краю (самый верхний контакт)

Цифровой 2 подключается к верхнему левому углу (второй самый верхний контакт)

Цифровой 1 подключается к нижнему левому краю (второй нижний контакт)

Цифровой 0 подключается к нижнему правому краю (самый нижний контакт)

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

Шаг 4: Разработка программного обеспечения

Разработка программного обеспечения
Разработка программного обеспечения

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

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

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

Шаг 5: Мигание конечного автомата

Мигание конечного автомата
Мигание конечного автомата

Мой первый шаг - изменить функцию мигания с функции, основанной на «delay ()», на конечный автомат.

Для тех, кто не привык к операторам переключения, он работает аналогично оператору if. Этот (в оранжевом поле) проверяет нашу переменную «состояния» (которая начинается с 0). Затем он переходит к нашему текущему состоянию. Вы увидите, что варианты 0 и 2 отвечают за включение и выключение светодиода (соответственно), а варианты 1 и 3 отвечают за ожидание между переключателями.

Шаг 6: кнопка мигает

Кнопка мигает
Кнопка мигает
Кнопка мигает
Кнопка мигает
Кнопка мигает
Кнопка мигает

Затем я хотел, чтобы кнопка использовалась для мигания светом. Вместо того, чтобы чрезмерно усложнять это, я просто переместил все состояния на одно вниз (состояние 0 становится состоянием 1 и т. Д.). При этом будьте осторожны, чтобы увеличивать состояния выхода, а также само состояние (см. Рисунок 3).

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

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

Шаг 7: Последовательная связь

Последовательная связь
Последовательная связь
Последовательная связь
Последовательная связь

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

Шаг 8: чтение координат

Чтение координат
Чтение координат
Чтение координат
Чтение координат
Чтение координат
Чтение координат
Чтение координат
Чтение координат

Хорошо, что последний шаг был легким, потому что этот был дурацким.

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

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

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

Примечание. Константа DEBOUNCE_TIME может быть немного заниженной. Не стесняйтесь увеличивать его.

Шаг 9: Очистка

Убираться
Убираться
Убираться
Убираться
Убираться
Убираться

Мы подошли к окончательной версии кода для этого проекта!

Для начала я добавил функцию loop_diff () для вычисления прошедшего времени. Внутренние часы DP32 имеют длину без знака, и, хотя это крайне маловероятно, существует вероятность того, что часы могут зацикливаться когда-нибудь во время выполнения этого кода *. В этом случае простое вычитание текущего времени из времени, сохраненного в btn_time или panel_time, даст нам нечто странное, поэтому я написал loop_diff (), чтобы определять, когда возникают циклы, и вести себя соответствующим образом.

Я также сделал небольшую уборку. Я удалил теперь неиспользуемую переменную state_time. Я переключился с тега LED_BUILTIN (который является стандартом Arduino) на тег PIN_LED1 (который является стандартным для chipKit и DP32). Я также удалил все сообщения через Serial о запуске и завершении процесса, что делает наши данные через Serial намного чище.

* Я провел математические вычисления много лет назад и думаю, что для функции millis () потребуется примерно неделя постоянного времени выполнения, прежде чем переменная зациклится.

Шаг 10: Заключительные мысли

Последние мысли
Последние мысли

Вот и все!

Если вы следовали инструкциям, теперь у вас должна быть работающая сенсорная панель, подключенная к вашему микроконтроллеру! Это был небольшой проект, но это часть более крупного проекта. Я работаю над чем-то вроде Plate and Ball 271828, и мне нужно пройти долгий путь, прежде чем это произойдет. Я попытаюсь взять вас с собой на протяжении всего процесса, и каждая часть должна быть отдельным небольшим проектом.

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

Спасибо, увидимся в следующий раз!

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