Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SVT.doc
Скачиваний:
40
Добавлен:
25.09.2019
Размер:
1.65 Mб
Скачать

Прием импульсно-дискретных сигналов

Для приема и обработки импульсных сигналов в контроллерах используются устройства на основе счетчиков и таймеров.

Сигналы подаются на т.н. вход захвата (Input Capture, ICP).

Опорным сигналом для работы таймеров и счетчиков может являться деленная тактовая частота или внешний сигнал, поданный на внешний тактовый вход. Вот, например у ATmega128.

Демодуляция квадратурно-модулированного сигнала

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

Вторые – переключают состояние своего выхода при перемещении вала на заданный дискрет. Для того, чтобы можно было определить направление поворота энкодер имеет два выходных сигнала, смещенные на половину величины дискрета (или в терминах гармонических сигналов - по фазе на 90 градусов).

Такой сигнал носит название квадратурно-модулированный. Для того, чтобы его демодулировать (дешифрировать) в современный МК встраивают специальный блок.

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

Следовательно, нужно хранить в энергонезависимой памяти текущее значение угла, иметь алгоритмы выставки нуля (калибровки), и самое сложное – уметь обрабатывать квадратурный сигнал.

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

Поскольку частота вращения может быть высокой, а разрядность энкодера тоже высокой, вход в прерывание и выход из него – долгая операция

Поскольку для демодулирования нужна высокая скорость работы и прерываний, в микроконтроллеры, предназначенные для управления двигателями, квадратурные демодуляторы встраиваются как специальные устройства.

Если же все же необходимо демодулировать сигнал энкодера программными способами, то необходимо сделать следующее.

Определить время обработки (демодуляции) одного события (реакция на фронт любого канала). Для этого необходимо взять максимальную скорость вращения вала энкодера n (допустим, в оборотах в минуту), разрешение энкодера R (отсчетов на оборот), коэффициент умножения исходя из режима точности определения координат k (1х 2х 4х), рассчитать время T между двумя событиями.

Для k=1 T[с] = 1/(n * R * 60)

Для k=2 T[с] = 1/(n * R * 60 * 2)

Для k=4 T[с] = 1/(n * R * 60 * 4)

Рассмотрим пример. Дан инкрементальный энкодер с разрядностью 10 бит. Требуется осуществить прием координат с него с помощью МК ATmega128, работающей на частоте f_osc = 16МГц. Максимальная частота вращения вала энкодера n = 2000 об/мин.

Рассчитаем требуемое время обработки сигнала для разных k.

Для k=1 T[с] = 60/(n * R) = 1 / (2000 * 1024 * 60) = 29.29 мкс

Для k=2 T[с] = 60/(n * R * 2) = 14.64 мкс

Для k=4 T[с] = 60/(n * R * 4) = 7.32 мкс

Один такт МК t = 1/f_osc = 62.5 нс = 0.0625 мкс

Т.о. на обработку события можно потратить до 468, 234 и 117 тактов МК соответственно.

Посчитаем количество инструкций, необходимых для обработки события энкодера, если обработчик написать на ассемблере, что дает оптимальное (и видимо максимальное) быстродействие.

Вход в обработчик прерывания – 7 тактов,

Чтение регистра порта ввода-вывода, куда подключен энкодер – 2 такт,

Проверка состояния линии, куда подключен смежный канал – 3 такта,

Приращение счетчика угла в зависимости от направления вращения – 3 такта,

Выход из прерывания – 4.

Т.о. получается 19 тактов МК занимает обработка каждого фронта сигнала энкодера.

Много это или мало? Зависит от задачи, ведь в оставшееся время до следующего события необходимо выполнить основную программу, которой остается 449, 215, 98 тактов соответственно. Надо иметь в виду, что процессор периодически и постоянно будет отвлекаться от выполнения основной программы для декодирования сигнала энкодера, а это может привести к затягиванию основного алгоритма во времени и, следовательно, потери режима работы в реальном времени.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]