SDK Motors¶
SDK предлагает несколько методов управления моторами и обмена данными с ними, а также пару скрытых методов, к которым можно легко получить доступ.
Общее Объяснение¶
Драйвер Мотора¶
Все порты моторов управляются с помощью так называемого Н-мостового драйвера (H-bridge) – схемой, которая может использоваться для изменения как выходного напряжения, так и его полярности (отрицательной или положительной). Отрицательное напряжение, подаваемое на DC Motor, заставляет его вращаться в обратном направлении, тогда как положительное напряжение приводит к вращению вперёд. Мощность SDK Motor (от -1 до 1) представляет собой коэффициент входного напряжения, подаваемого на порт мотора. Различные уровни напряжения создаются с помощью ШИМ (PWM), быстрого включения и отключения порта для создания пониженного среднего напряжения.
Кроме того, можно настроить поведение мотора при нулевой мощности, то есть его реакцию при отсутствии питания. В режиме FLOAT драйвер мотора просто отключается, обеспечивая минимальное сопротивление вращению. В режиме BRAKE оба вывода мотора замыкаются внутри драйвера. Благодаря свойству коллекторных моторов генерировать электричество при вращении вала, замыкание выводов создает обратную ЭДС, которая быстро останавливает мотор и повышает его стойкость ко внешним воздействиям.
Примечание
Драйвер мотора использует входное напряжение; это означает, что при использовании аккумулятора напряжением 13 вольт установка мощности на 1 создаст обратное напряжение в 13 вольт. Аналогично, при использовании аккумулятора напряжением 11 вольт установка мощности на 1 создаст выходное напряжение в 11 вольт.
Энкодер Мотора¶
Важно
Единой стандартизованной терминологии для квадратурных энкодеров не существует. Здесь мы используем термины «count» и «tick» (тик) для обозначения одного нарастающего или спадающего перехода в квадратурной волне. В некоторых технических документациях (datasheets) вы также можете встретить термин «пульс» («pulses»), который может обозначать от 1 «count» до 4 «counts». Будьте внимательны при изучении технических документаций!
Энкодеры в FTC® используют двухпроводной квадратурный формат для передачи относительных данных о позициях. В квадратурной схеме задействуются два сигнальных провода: A и B. При движении оба провода генерируют квадратные волны, сдвинутые друг относительно друга на 90 градусов по фазе. Это означает, что одна квадратная волна начинается и заканчивается ровно на середине другой. При движении в одном направлении квадратная волна с провода A опережает волну с провода B, а при обратном движении волна с провода B опережает волну с провода A. Оба сигнала объединяются с помощью логической операции исключающее ИЛИ (XOR), так что каждое нарастание и спад результирующего сигнала соответствует одному «tick» - чем выше частота сигнала, тем быстрее вращается энкодер.
REV контроллер считает импульсы и вычисляет скорость используя «кольцевой буфер» из 5 значений, куда каждые 10 мс добавляется новое значение. На основе этих 5 значений рассчитывается текущая скорость.
Предупреждение
Рекомендуется подключать квадратурные энкодеры к портам с механическим декодированием для их корректного считывания. Expansion hub содержит специальное аппаратное обеспечение для считывания квадратурных энкодеров, но поскольку таких портов всего два, два порта подключены «программно», а не аппаратно. Фактически, это означает, что порты 0 и 3, подключенные к специальным аппаратным квадратурным портам, всегда будут считывать данные точно. **Порты 1 и 2 подключены к менее точным «программным» портам, что означает: с энкодерами с высоким CPR (энкодеры, которые выдают более 4000 тиков на оборот (CPR), такие как REV Through Bore Encoder или Talon SRX Encoder), могут пропускать значения и накапливать ошибку.
Пример квадратурной волны, в которой канал A опережает канал B. Каждое деление — это «count» или «tick»¶