
- •Содержание
- •Понятие вычислительной системы
- •Организация микроконтроллерных систем управления
- •Микроконтроллеры. Основные сведения
- •Интерфейсы связи с датчиками Сигнальные интерфейсы и цифровые интерфейсы
- •Прием импульсно-дискретных сигналов
- •Демодуляция квадратурно-модулированного сигнала
- •Прием аналоговых сигналов
- •Схемотехника ацп
- •Ацп последовательного счета
- •Ацп последовательного приближения
- •Расширение разрядности. Метод передискретизации
- •Стандартные интерфейсы связи Интерфейсы связи
- •Топологии сетей
- •Последовательный интерфейс i2с
- •Состояние старт и стоп
- •Подтверждение
- •Адресация в шине i2c
- •Преимущества
- •Последовательный интерфейс spi Введение
- •Электрическое подключение
- •Протокол передачи
- •Cравнение с шиной i2c
- •Последовательный интерфейс rs-232
- •Can интерфейс
- •Описание стандарта
- •Контроль ошибок
- •Скорость передачи и длина сети
- •Методы выявления и устранения ошибок данных при передаче
- •Блоковые коды
- •Свёрточные коды
- •Коды обнаружения Циклический избыточный код (crc)
- •Бит чётности
- •Формализованный алгоритм расчёта crc16
- •Корректирующие коды
- •Каскадное кодирование. Итеративное декодирование
- •Выбор кода
- •Некоторые методы (алгоритмы) обработки сигналов
- •Калибровка сигнала
- •Компенсация сигнала
- •Табличные вычисления и тарировочные таблицы Табличные вычисления
- •Тарировочные таблицы
- •Коррекция нуля, обнуление
- •Фильтрация
- •Разностное уравнение дискретного фильтра
- •Рекурсивные (бих) и нерекурсивные (ких) фильтры
- •Устойчивость
- •Зависимости частотных свойств звеньев системы регулирования
- •Регуляторы
- •Регулятор типа п – пропорциональный
- •Регулятор типа пи – пропорционально-интегральный
- •Регулятор типа пид – пропорционально-интегрально-дифференциальный
- •Реализация регуляторов
- •Примерная реализация ядра регулятора на языке Си
- •Выбор длительности такта
- •Вычисления с плавающей и фиксированной точкой
- •Основы технологии разработки программного обеспечения Структура программы на языке Си
- •Компиляция программы
- •Директивы препроцессора
- •Присоединение файла
- •Макросы
- •Условная компиляция
- •Типы переменных
- •Математические операторы
- •Операторы цикла
- •Условный оператор
- •Оператор выбора
Прием импульсно-дискретных сигналов
Для приема и обработки импульсных сигналов в контроллерах используются устройства на основе счетчиков и таймеров.
Сигналы подаются на т.н. вход захвата (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 тактов соответственно. Надо иметь в виду, что процессор периодически и постоянно будет отвлекаться от выполнения основной программы для декодирования сигнала энкодера, а это может привести к затягиванию основного алгоритма во времени и, следовательно, потери режима работы в реальном времени.