Датчики угла поворота (энкодеры), их
применение и обработка
1. Что такое энкодер
•
•
•
•
Энкодеры (encoders) – специальные датчики для определения
углового положения вращающегося вала.
Энкодер представляет из себя устройство, устанавливающееся
на вращающийся вал, положение и скорость которого и нужно
измерять
Устанавливается либо соосно этому валу, или через
плоскоременную передачу
Энкодеры часто встраивают в двигатель
2. Области применения
•
•
•
•
•
•
•
•
компьютерные мышки
вентиляторы в системах охлаждения
принтеры
бумажная промышленность
упаковочные агрегаты
резательные машины
приводы лифтов и подъёмных кранов
роботы
3. Внутреннее устройство
•
•
Энкодеры бывают линейными и вращательными, абсолютными и
инкрементными
Сигналы на выводах формируются с помощью светодиодов и фотодиодов.
Также есть магнитные энкодеры.
Абсолютные вращательные энкодеры
Число
Двоичный
код
0
000
1
001
2
010
3
011
4
100
5
101
6
110
7
111
Инкрементные вращательные энкодеры
•
•
•
В отличие от абсолютных, не дают
информации о положении вала в
любой момент времени
Устроены эти энкодеры так же, как
и абсолютные, но по-другому
выполнен кодовый диск
На выходе у этих энкодеров
имеется 2 сигнала: канал A и
канал B
4. Обработка сигналов с датчика
Схема соединения двигателя с энкодером и микроконтроллера
Алгоритмы расчета скоростей
Расчет скорости с помощью
подсчёта импульсов
энкодера между
обработками следящей
системы
Расчет скорости с
помощью подсчёта
импульсов таймера между
импульсами энкодера
Схема работы программы с прерываниями
5. Пример программы
int ENC_Pos = 0;
void main()
{
// Инициализация прерываний:
// Установка функции ENC_InterruptHandler()
// как обработчик прерываний
...
// Алгоритм программы
...
int pos = ENC_GetPos();
...
}
void ENC_InterruptHandler()
{
if(ENC_Is_Channel_A_Changed() == TRUE)
{
if(ENC_Channel_A_Value() == ENC_Channel_B_Value())
ENC_Pos++;
else
ENC_Pos--;
}
}
int ENC_GetPos()
{
return ENC_Pos;
}