Небольшой электронный модуль из печатной платы и электромеханического устройства – джойстика. Позволяет реализовать двухкоординатное управление с элементом управления по третьей координате. Модуль имеет простое техническое решение – оператор поворачивает одновременно движки двух переменных резисторов смещая ручку джойстика одним движением. Это позволяет электронике отслеживать отклонение ручки в любом направлении на любую величину.
Для пульта дистанционного управления подвижной колесной или гусеничной платформой двухкоординатный джойстик будет удобным органом управления. Интересно реализовать с помощью джойстика управление перемещением камеры видеонаблюдения, телескопа, направленным микрофоном или направленной Wi-Fi антенной. Двухкоординатный джойстик входит в пульт управления видеоигр класса ранних Нинтендо.
Если удалить колпачок ручки и пружины возврата, то можно использовать двухкоординатный джойстик в петле обратной связи систем автоматического управления как датчик угла поворота механических частей исполнительных механизмов для контроля истинного угла поворота после выполнения команды.
Как устроен джойстик
Ручка закреплена на шарнире и связана с пружинами, возвращающими ручку в центральное положение после отклонения. Внутри два переменных резистора по 10 кОм. В джойстике размещена кнопка. Ее толкатель механически связан с ручкой. При нажатии на ручку контакты кнопки замыкаются. Этот элемент используют для управления перемещением по третьей координате или для других функций. Механическая часть размещена на плате имеющей отверстия. С помощью отверстий двухкоординатный джойстик монтируется в корпусе пульта управления. Электрические лини подключаются к контактам с помощью разъемного соединения.
Обработка данных
Электрическая схема двухкоординатного джойстика.
К контакту +5V подключается напряжение питания. Для разных систем требования к питанию различны. Например. Если реализуется ручное управление светоустановкой с изменением оператором параметров света, то не требуется высокая точность данных снимаемых с джойстика. Требования к точности поддержания напряжения питания снижаются. В случае управления точно ориентируемым объектом требования возрастают. Не обязательно подавать именно 5 В. Величина питания зависит от параметров обрабатывающей электроники. В случае аналоговой схемы без применения микроконтроллеров и АЦП напряжение питания лучше увеличить, принимая во внимание мощность рассеивания резисторов джойстика.
Если электроника строится на основе МК, то питание должно быть очищено от шумов, всплесков и провалов и поддерживаться как можно точнее. Для определения величины напряжения питания следует руководствоваться величиной опорного напряжения АЦП, обрабатывающего сигналы с выходов X и Y. Повышая параметры питания двухкоординатный джойстик можно сделать более чувствительным. В крайних положениях ручки на выходах X и Y потенциалы соответствуют напряжению питания и нулю. Когда ручка отпущена потенциалы выходов соответствуют половине напряжения питания. Зависимость между перемещением и изменением потенциала выхода линейная.
Чаще всего электроника определяющая положение ручки содержит микроконтроллер. Потенциалы на выходах координат подаются на входы АЦП. В случае Arduino их принято называть аналоговыми входами основного модуля Arduino. Дальнейшая обработка данных происходит программным путем. Если АЦП МК обладает разрешающей способностью 10 бит, то это значит, что диапазон значений, выдаваемых АЦП, составляет 0–1023. Перемещение ручки по любой из координат делится на 1024 дискретных элемента. Отпущенное состояние ручки соответствует числу 512.
Подводные камни
При реальном использовании неизбежно столкнемся с множеством подводных камней. Дело в том, что пружины не возвращают ручку точно в центральное положение из-за трения в механических деталях. Это учитывается программно. Для решения этой проблемы в программе следует указать два крайних значения, установив “ворота” и считать, что любое значение, полученное от АЦП в пределах этого диапазона соответсвует положению покоя. Пороговыми константами могут быть числа 504 и 518.
С помощью вольтметра следует проверить, а действительно ли Ваш экземпляр джойстика при крайних отклонениях выдает 0 В и напряжение питания? Возможно наличие мертвых зон. Что это? Дело в том, что механический диапазон перемещения не использует весь электрический диапазон изменения сопротивления. Крайние положения могут соответствовать сопротивлениям 1 кОм и 9 кОм. Следует проверить, какому потенциалу, какому сопротивлению соответствует центральное положение. Наш двухкоординатный джойстик по существу содержит два датчика угла поворота и как всякий датчик требует повышения точности программным путем с помощью алгоритмов вырабатываемых программистом. Здесь нет готовых решений. Это зона творческого поиска, находок и изобретений.
Вариант схемы соединения джойстика и Arduino.
Подключение кнопки джойстика
Контакт кнопки на замыкание подключается к цифровому входу. В цепь контактов может вводиться резистор для обеспечения высокого логического уровня на цифровой линии Arduino когда нажатия нет. Резистор из схемы можно исключить, так как МК содержит собственные внутренние резисторы, выполняющие туже функцию. Их активирование производится программно.
Проверка работы
После компиляции и записи программы в Arduino есть возможность проверить как работает двухкоординатный джойстик до установки его в пульт управления. Откройте программу Serial Monitor и посмотрите, какие числовые данные поступают при манипуляции джойстиком. Какие значение соответствуют различным положениям. Программная часть, принимающая эти данные, преобразует их в команды управления или учитывает как данные обратной связи в зависимости от функции устройства в системе.