Инструменты пользователя

Инструменты сайта


ehlektronika:datchiki:datchik_ugla_povorota_vala_ehnkoder

Датчик угла поворота вала (энкодер)

Датчик угла поворота вала (энкодер)

ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ

  • 1) Напряжение питания: 5В
  • 2) Количество каналов: 2
  • 3) Тип прерывателя: оптический щелевой
  • 4) Дипазон поворота вала: не ограничен
  • 5) Минимальный измеряемый угол поворота: 5 градусов

Датчик угла поворота вала (новая версия)

Датчик угла поворота вала (новая версия)

ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ

  • 1) Напряжение питания: 5В
  • 2) Количество каналов: 2
  • 3) Тип прерывателя: оптический щелевой
  • 4) Дипазон поворота вала: не ограничен
  • 5) Минимальный измеряемый угол поворота: 2,5 градуса
  • 6) Облегченный пластиковый корпус

Описание

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

Работа энкодера основана на следующем принципе: внутри корпуса располагается непрозрачный диск с прорезями и 2 щелевых оптических датчика. Каждый датчик имеет собственный вывод (поэтому у модуля 2 шины). В процессе вращения диск с помощью своих прорезей поочередно заставляет срабатывать тот или иной канал датчика. По взаимному состоянию каждого из каналов можно судить о направлении вращения. Подробнее об энкодерах - здесь.

Использование

Подключение

Датчик использует два стандартных 3-пиновых разъема и подключается в порты IN контроллера "Трекдуино". Для подключения одного датчика требуется 2 свободных порта (по одному на каждый канал). Всего можно подключить и использовать до 4 энкодеров.

При подключении датчика следует выбрать, какой из проводов будет «каналом А», а какой - «каналом B». Соответствие каналов и проводов не фиксированное, пользователь сам должен выбрать в зависимости от ситуации, руководствуясь при это правилом: при чтении показаний датчика программа будет принимать за положительное направление вращение от «А» в сторону «В», например:

Программирование

Блоки, необходимые для работы с энкодером, расположены в группе блоков «Датчики».

При использовании энкодеров первым делом необходимо выполнить установку всех подключенных энкодеров в секции «Уставнока» (Setup()) с помощью блока «Установка энкодера» в графическом режиме или функции setupEnc(int encoder, int chA, int chB) в текстовом режиме.

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

Точность энкодера (минимальный шаг)- 5 градусов.

Значения, возвращаемые блоком , всегда кратны 5 градусам (-20, -15, -10, -5, 0, 5, 10…)

Счетчик (переменная), в которой храниться угол поворота, переполняется при ± 2,147,483,645 градусах (около 6 миллионов оборотов). Впрочем, ресурс самого датчика гораздо меньше :-)

Блок и генерируемая им функция Описание


void setupEnc(int encoder, int chA, int chB)
Выполняет установку энкодера, сообщает программе, к каким портам он подключен. Необходимо вызывать в секции «Установка» для каждого подключенного энкодера.

Аргументы:
№ (int encoder) - условный номер энкодера, по которому в дальнейшем к нему будет обращаться функция опроса.
канал А (int chA) - порт IN, к которому подключен провод канала А
канал B (int chB) - порт IN, к которому подключен провод канала B


long getEncDegrees(int encoder)
Возвращает угол поворота определенного энкодера в градусах.

Аргументы:
№ (int encoder) - условный номер энкодера, угол поворота которого необходимо сообщить


void setEncToZero(int encoder)
Обнуляет текущие показания по определенному энкодеру, «сбрасывает» счетчик.

Аргументы:
№ (int encoder) - условный номер энкодера, показания которого необходимо обнулить

Примеры использования в проектах

Вывод показаний двух энкодеров в последовательный порт

Генерируемый код:

void setup()
{
  setupEnc(1, IN1, IN2);
  setupEnc(2, IN3, IN4);
  Serial.begin(115200);
 
 
}
 
void loop()
{
  Serial.print("Encoder #1:");
  Serial.print(getEncDegrees(1));
  Serial.println();
  Serial.print("Encoder #2:");
  Serial.print(getEncDegrees(2));
  Serial.println();
  delay( 1000 );
}
ehlektronika/datchiki/datchik_ugla_povorota_vala_ehnkoder.txt · Последние изменения: 2017/06/29 15:42 — dustinskiy