4.5.3. Управление с помощью джойстика¶
4.5.3.1. Основная информация¶
4.5.3.1.1. Мёртвая зона¶
Контроллер позволяет работать с джойстиком, который выдает аналоговое напряжение в диапазоне 0-3.3 В. При этом напряжение в равновесном (центральном) положении, а также напряжения максимального и минимального отклонений могут быть заданы любыми в рабочем диапазоне напряжений, соблюдая условие: минимальное отклонение < центральной позиции < максимальное отклонение. Контроллер использует числовое представление напряжения на выходе джойстика: 0 В контроллер сопоставляет значению 0, а напряжению 3.3 В - 10000.
Установка значений DeadZone описано в разделе Настройка внешних управляющих устройств.
Для того, чтобы движение могло остановиться в центральном положении, предусмотрена мертвая зона DeadZone, отсчитываемая от центрального положения и измеряемая в процентах. Внутри DeadZone контроллер вызывает остановку движения. При отклонении джойстика от центрального положения, выводящем его из DeadZone начинается движение со скоростью, определяемой отклонением джойстика от границы DeadZone до максимального отклонения. Диапазоны DeadZone показаны на следующем рисунке.
4.5.3.1.2. Чувствительность джойстика¶
Связью направления движения джойстика и его отклонения можно управлять с помощью флага реверса, что может быть удобно для соответствия: «отклонение вправо» - «движение вправо», - независимо от физической ориентации джойстика и подвижной части.
Скорость движения экспоненциально зависит от отклонения джойстика. Это позволяет небольшими отклонениями достигать высокой точности подводки позиции, а сильными отклонениями джойстика вызывать быстрые перемещения. Параметр нелинейности (Exp factor) можно менять. При установке параметра нелинейности в 0 скорость движения двигателя начинает линейно зависеть от отклонения джойстика.
На графике приведён пример зависимости скорости движения от отклонения джойстика для следующих настроек:
Центральное отклонение | 4500 |
Минимальное отклонение | 500 |
Максимальное отклонение | 9500 |
Мёртвая зона | \(10\%\) |
Максимальная скорость движения | 100 |
4.5.3.1.3. Управление скоростью с помощью кнопок¶
Экспоненциального отклика джойстика, сочетающего высокую точность и скорость, может быть недостаточно. Поэтому контроллер поддерживает таблицу максимальных скоростей, между которыми можно переключаться кнопками управления «влево»/ «вправо» (см. главу Управление кнопками «вправо» и «влево»).
В режиме джойстика кнопки управляют скоростью движения. То есть, с помощью кнопок можно увеличить или уменьшить скорость, соответствующую определённому отклонению джойстика.
В памяти контроллера записана таблица скоростей MaxSpeed[i], соответствующих 100% отклонению джойстика. При нажатии на кнопку «вправо» скорость, соответствующая 100% отклонения, меняется с MaxSpeed[i] на MaxSpeed[i+1]. При нажатии кнопки «влево», максимум скорости меняется с MaxSpeed[i] на MaxSpeed[i-1]. При старте контроллера i=0. Количество скоростей в таблице - 10. Если MaxSpeed[x] равна нулю (целая и дробная части), то перейти на эту скорость с MaxSpeed[x-1] нельзя. Это сделано для возможности ограничить таблицу меньшим количеством скоростей. Попытка выйти за границы индекса таблицы скоростей (0-9) также ни к чему не приводит.
Установка значений MaxSpeed[i] описано в разделе Настройка внешних управляющих устройств.
Кнопки настраивают не абсолютную скорость, а коэффициент, связывающий отклонение джойстика со скоростью движения. Поэтому при нулевом отклонении джойстика (а точнее при нахождении джойстика в пределах DeadZone) привести в движение привод только лишь с помощью кнопок не получится.
Контроллер подавляет дребезг контактов на кнопках управления. Для срабатывания кнопок длительность нажатия должна превышать 3 мс.
Если джойстик находится внутри мёртвой зоны более 5 секунд, то он не будет считаться вышедшим из неё, пока он не пробудет вне DeadZone более 100 мс. Это позволяет отпустить джойстик и быть уверенным, что даже случайный шум на выходе джойстика не приведет к ненужным сдвигам мотора. Пока джойстик находится внутри DeadZone контроллер способен принимать любые команды с компьютера, в том числе и команды движения, калибровки домашней позиции и т.п. Если при выполнении команды джойстик выводится из DeadZone, то команда движения отменяется и двигатель начинает подчиняться управляющему воздействию джойстика. Это позволяет включить режим управления двигателем с помощью джойстика, но не пользоваться им без надобности. А при касании джойстика он перехватит управление.
К режиму джойстика применимо все, что относится и к движению под воздействием управляющих команд: подчинение ускорению, ограничение максимальной скорости, режимы отключения обмоток при простое, работа с магнитным тормозом, компенсация люфта и т. д. Например, если резко бросить ручку джойстика внутрь DeadZone, то, при включении соответствующих режимов, контроллер плавно замедлит двигатель, отъедет в сторону для компенсации люфта, остановит двигатель, зафиксирует вал двигателя магнитным тормозом, плавно снизит ток и отключит питание обмоток.
Важно
В режиме управления джойстиком физические и виртуальные кнопки остаются в рабочем состоянии
Предупреждение
Не отсоединяйте и не подсоединяйте джойстик к включенному контроллеру!
При отключении/подключении джойстика к включенному контроллеру джойстик или контроллер не сгорят, но подвижки, подключенные к контроллеру, начнут движение к концевым выключателям.
4.5.3.2. Схема подключения¶
Важно
Аналоговые входы для подключения джойстика расчитаны на диапазон 0-3.3 В. Будьте внимательны и не подавайте на контакты джойстика напряжение больше 3.3 В.
4.5.3.2.1. Плата контроллера¶
Контакты джойстика на плате контроллера расположены на разъеме BPC. Обратите внимание, что джойстику необходимо питание +3В.
4.5.3.2.2. Одноосная и двухосная система¶
Разъём для подключения джойстика есть только в двухосной системе. Схема подключения к нему представлена ниже.