Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Организация микроконтроллерных систем управления



Организация микроконтроллерных систем управления

 

В нашем курсе мы будем рассматривать основные вопросы реализации СУ на основе микроконтроллерных вычислителей. Рассмотрим общую структуру системы управления:

 

 

То же самое в «академическом» виде, принятом в теории управления:

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

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

 

Информационно-измерительные устройства, датчики

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

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

 

Усилительно-преобразующие устройства

Устройства, выполняющие функцию усиления мощности сигнала с преобразованием его природы (усилитель-преобразователь) или без него.

Исполнительные устройства

Исполнительное устройство — подсистема, передающая воздействие с управляющего устройства на объект управления.

 



Интерфейс связи

 

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

 

Характеризуется совокупностью (стеком) протоколов передачи данных — набор соглашений, который определяет обмен данными между элементами системы от физического до прикладного уровней (модель OSI). Протоколы задают способы передачи сообщений и обработки ошибок по каналам связи, а также позволяют разрабатывать стандарты, не привязанные к конкретной аппаратной платформе.

 

Данный состав является типовым, поэтому микроконтроллеры, предназначенные для этих целей (СУ) уже имеют в своем составе законченные решения этих типовых задач.

 



Схемотехника АЦП

 

Рассмотрим две схемы применения встроенного АЦП на примере известного нам уже датчика давления и МК ATmega128 фирмы Atmel. Первая очевидная, но неправильная, вторая приемлемая.

 

У АЦП этого МК есть следующие выводы – выводы т.н. аналогового питания – питание, которое подается непосредственно на АЦП. Вывод внешнего опорного напряжения – сюда подается напряжение в масштабе, которого будет производиться преобразование. Как правило, у МК существует внутренний источник опорного напряжения.

 

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

 

Крайне нежелательно, а вообще говоря, противопоказано использовать в качестве ИП АЦП тот же источник, что и для питания цифровой части МК.

 

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

 

Мы помним, что у датчика давления выход пропорционален напряжению питания. Следовательно, все дрейфы и шумы ИП будут переданы на выход датчика и попадут на вход АЦП. С другой стороны, поскольку в качестве опорного напряжения у нас используется напряжение питания, соответственно все шумы и дрейфы этого источника попадут, также в АЦП и в итоге помимо полезного сигнала мы получим полезный сигнал + суперпозиция шумов источников. Избежать этого можно очень просто – использовать для всей аналоговой части схемы общий источник ИП, тогда указанные дрейфы будут скомпенсированы.

 

Для того, чтобы заглушить ВЧ наводки по цепям питания, следует около каждого компонента около его выводов питания ставить т.н. развязывающие конденсаторы – керамические ВЧ конденсаторы малой емкости 0.01-0.1 мкФ.

 

Заканчивая разговор об ИП, отметим последнюю вещь. Как правило, при изготовлении ПП свободное от проводников площадь заливается земляным полигоном. Крайне важно, чтобы земляной полигон аналоговой земли и цифровой были соединены только в одной точке на общем источнике питания и желательно через небольшое (единицы Ом) сопротивление. В общем, топология должна быть такой, как будто вы присоединяете аналоговую схему двумя проводами к ИП – это должно быть ясно видно.

 

Последнее. Выше мы указали на то, что когда нарушается теорема Котельникова можно получить очень неприятные эффекты и результаты.

Для того, не нарушать теорему, на входе АЦП ставят простой RC-фильтр, который давит частоты, выше частоты Котельникова. Расчет параметров этого фильтра производится следующим образом:

 

В нашем случае мы имеем самую простую схему использования АЦП. Современные производители стремятся делать продукцию, сводимую к ней, но в реальности из-за необходимости согласования сигналов схемотехника будет гораздо более сложной – необходимы масштабирующие стабильные усилители-фильтры и прочая мутота, которая выходит за рамки курса. Как правило, все параметры, типовые схемы и номиналы элементов указываются в документации на компоненты (datasheet) и в т.н. указаниях к применению (application notes). Эти документы всегда доступны у производителя.

 

АЦП последовательного счета

 

Этот преобразователь является типичным примером последовательных АЦП с единичными приближениями и состоит из компаратора, счетчика и ЦАП (рис. 8). На один вход компаратора поступает входной сигнал, а на другой - сигнал обратной связи с ЦАП.

 

 

 

 

Работа преобразователя начинается с прихода импульса запуска, который включает счетчик, суммирующий число импульсов, поступающих от генератора тактовых импульсов ГТИ. Выходной код счетчика подается на ЦАП, осуществляющий его преобразование в напряжение обратной связи Uос. Процесс преобразования продолжается до тех пор, пока напряжение обратной связи сравняется с входным напряжением и переключится компаратор, который своим выходным сигналом прекратит поступление тактовых импульсов на счетчик. Переход выхода компаратора из 1 в 0 означает завершение процесса преобразования. Выходной код, пропорциональный входному напряжению в момент окончания преобразования, считывается с выхода счетчика.

 

Время преобразования АЦП этого типа является переменным и определяется входным напряжением. Его максимальное значение соответствует максимальному входному напряжению и при разрядности двоичного счетчика N и частоте тактовых импульсов fтакт равно

 

tпр.макс=(2N-1)/ fтакт

 

Например, при N=10 и fтакт=1 МГц tпр.макс=1024 мкс, что обеспечивает максимальную частоту выборок порядка 1 кГц.

 

Статическая погрешность преобразования определяется суммарной статической погрешностью используемых ЦАП и компаратора. Частоту счетных импульсов необходимо выбирать с учетом завершения переходных процессов в них.

 

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

 

Таким образом, особенностью АЦП последовательного счета является небольшая частота дискретизации, достигающая нескольких килогерц. Достоинством АЦП данного класса является сравнительная простота построения, определяемая последовательным характером выполнения процесса преобразования.

 

АЦП последовательного приближения

 

Преобразователь этого типа, называемый в литературе также АЦП с поразрядным уравновешиванием, является наиболее распространенным вариантом последовательных АЦП.

 

В основе работы этого класса преобразователей лежит принцип дихотомии, т.е последовательного сравнения измеряемой величины с 1/2, 1/4, 1/8 и т.д. от возможного максимального значения ее. Это позволяет для N-разрядного АЦП последовательного приближения выполнить весь процесс преобразования за N последовательных шагов (итераций) вместо 2N-1 при использовании последовательного счета и получить существенный выигрыш в быстродействии. Так, уже при N=10 этот выигрыш достигает 100 раз и позволяет получить с помощью таких АЦП до 105...106 преобразований в секунду. В то же время статическая погрешность этого типа преобразователей, определяемая в основном используемым в нем ЦАП, может быть очень малой, что позволяет реализовать разрешающую способность до 18 двоичных разрядов при частоте выборок до 200 кГц (например, DSP101 фирмы Burr-Brown).

 

 

Рассмотрим принципы построения и работы АЦП последовательного приближения на примере классической структуры (рис. 9а) 4-разрядного преобразователя, состоящего из трех основных узлов: компаратора, регистра последовательного приближения (РПП) и ЦАП.

 

После подачи команды "Пуск" с приходом первого тактового импульса РПП принудительно задает на вход ЦАП код, равный половине его шкалы (для 4-разрядного ЦАП это 10002=810). Благодаря этому напряжение Uос на выходе ЦАП (рис. 9б)

 

Uос=23h.

 

где h - квант выходного напряжения ЦАП, соответствующий единице младшего разряда (ЕМР). Эта величина составляет половину возможного диапазона преобразуемых сигналов. Если входное напряжение больше, чем эта величина, то на выходе компаратора устанавливается 1, если меньше, то 0. В этом последнем случае схема управления должна переключить старший разряд d3 обратно в состояние нуля. Непосредственно вслед за этим остаток

 

Uвх - d3 23 h

 

таким же образом сравнивается с ближайшим младшим разрядом и т.д. После четырех подобных выравнивающих шагов в регистре последовательного приближения оказывается двоичное число, из которого после цифро-аналогового преобразования получается напряжение, соответствующее Uвх с точностью до 1 ЕМР. Выходное число может быть считано с РПП в виде параллельного двоичного кода по N линиям. Кроме того, в процессе преобразования на выходе компаратора, как это видно из рис. 9б, формируется выходное число в виде последовательного кода старшими разрядами вперед.

 

Быстродействие АЦП данного типа определяется суммой времени установления tуст ЦАП до установившегося значения с погрешностью, не превышающей 0,5 ЕМР, времени переключения компаратора tк и задержки распространения сигнала в регистре последовательного приближения tз. Сумма tк + tз является величиной постоянной, а tуст уменьшается с уменьшением веса разряда. Следовательно для определения младших разрядов может быть использована более высокая тактовая частота. При поразрядной вариации fтакт возможно уменьшение времени преобразования tпр на 40%. Для этого в состав АЦП может быть включен контроллер.

 

При работе без устройства выборки-хранения апертурное время равно времени между началом и фактическим окончанием преобразования, которое так же, как и у АЦП последовательного счета, по сути зависит от входного сигнала, т.е. является переменным. Возникающие при этом апертурные погрешности носят также нелинейный характер. Поэтому для эффективного использования АЦП последовательного приближения, между его входом и источником преобразуемого сигнала следует включать УВХ. Большинство выпускаемых в настоящее время ИМС АЦП последовательного приближения (например, 12-разрядный МАХ191, 16-разрядный AD7882 и др.), имеет встроенные устройства выборки-хранения или, чаще, устройства слежения-хранения (track-hold), управляемые сигналом запуска АЦП. Устройство слежения-хранения отличается тем, что постоянно находится в режиме выборки, переходя в режим хранения только на время преобразования сигнала.

 

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

Расширение разрядности. Метод передискретизации

 

Суть метода – разменять скорость на разрешение.

 

Допустим, мы хотим увеличить разрядность АЦП на n-бит.

 

Чтобы метод сработал, сигнал должен изменяться незначительно в процессе преобразования и содержать некоторый шум амплитудой 1-2 LSB.

 

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

 

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

 

Накопленную сумму надо сдвинуть на n вправо (разделить на 2^n)

 

При этом частота дискретизации должна удовлетворять условию:

Использование цап (сдвигаемое окно)

 



Состояние СТАРТ и СТОП

 

Процедура обмена начинается с того, что ведущий формирует состояние СТАРТ: генерирует переход сигнала линии SDA из ВЫСОКОГО состояния в НИЗКОЕ при ВЫСОКОМ уровне на линии SCL. Этот переход воспринимается всеми устройствами, подключенными к шине, как признак начала процедуры обмена. Генерация синхросигнала — это всегда обязанность ведущего; каждый ведущий генерирует свой собственный сигнал синхронизации при пересылке данных по шине. Процедура обмена завершается тем, что ведущий формирует состояние СТОП — переход состояния линии SDA из низкого состояния в ВЫСОКОЕ при ВЫСОКОМ состоянии линии SCL. Состояния СТАРТ и СТОП всегда вырабатываются ведущим. Считается, что шина занята после фиксации состояния СТАРТ. Шина считается освободившейся через некоторое время после фиксации состояния СТОП. При передаче посылок по шине I2C каждый ведущий генерирует свой синхросигнал на линии SCL. После формирования состояния СТАРТ, ведущий опускает состояние линии SCL в НИЗКОЕ состояние и выставляет на линию SDA старший бит первого байта сообщения. Количество байт в сообщении не ограничено. Спецификация шины I2C разрешает изменения на линии SDA только при НИЗКОМ уровне сигнала на линии SCL. Данные действительны и должны оставаться стабильными только во время ВЫСОКОГО состояния синхроимпульса. Для подтверждения приема байта от ведущего-передатчика ведомым-приемником в спецификации протокола обмена по шине I2C вводится специальный бит подтверждения, выставляемый на шину SDA после приема 8 бита данных.

 

Подтверждение

 

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

 

Подтверждение при передаче данных обязательно, кроме случаев окончания передачи, ведомой стороной. Соответствующий импульс синхронизации генерируется ведущим. Передатчик отпускает (ВЫСОКОЕ) линию SDA на время синхроимпульса подтверждения. Приёмник должен удерживать линию SDA в течение ВЫСОКОГО состояния синхроимпульса подтверждения в стабильном НИЗКОМ состоянии.

 

В том случае, когда ведомый-приёмник не может подтвердить свой адрес (например, когда он выполняет в данный момент какие-либо функции реального времени), линия данных должна быть оставлена в ВЫСОКОМ состоянии. После этого ведущий может выдать сигнал СТОП для прерывания пересылки данных. Если в пересылке участвует ведущий-приёмник, то он должен сообщить об окончании передачи ведомому-передатчику путем не подтверждения последнего байта. Ведомый-передатчик должен освободить линию данных для того, чтобы позволить ведущему выдать сигнал СТОП или повторить сигнал СТАРТ.

 

Синхронизация выполняется с использованием подключения к линии SCL по правилу монтажного И. Это означает, что ведущий не имеет монопольного права на управление переходом линии SCL из НИЗКОГО состояния в ВЫСОКОЕ. В том случае, когда ведомому необходимо дополнительное время на обработку принятого бита, он имеет возможность удерживать линию SCL в низком состоянии до момента готовности к приему следующего бита. Таким образом, линия SCL будет находиться в НИЗКОМ состоянии на протяжении самого длинного НИЗКОГО периода синхросигналов.

 

Устройства с более коротким НИЗКИМ периодом будут входить в состояние ожидания на время, пока не кончится длинный период. Когда у всех задействованных устройств кончится НИЗКИЙ период синхросигнала, линия SCL перейдет в ВЫСОКОЕ состояние. Все устройства начнут проходить ВЫСОКИЙ период своих синхросигналов. Первое устройство, у которого кончится этот период, снова установит линию SCL в НИЗКОЕ состояние. Таким образом, НИЗКИЙ период синхролинии SCL определяется наидлиннейшим периодом синхронизации из всех задействованных устройств, а ВЫСОКИЙ период определяется самым коротким периодом синхронизации устройств.

 

Механизм синхронизации может быть использован приемниками как средство управления пересылкой данных на байтовом и битовом уровнях.

 

На уровне байта, если устройство может принимать байты данных с большой скоростью, но требует определенное время для сохранения принятого байта или подготовки к приему следующего, то оно может удерживать линию SCL в НИЗКОМ состоянии после приема и подтверждения байта, переводя, таким образом, передатчик в состояние ожидания.

 

На уровне битов, устройство, такое как микроконтроллер, без встроенных аппаратных цепей I2C или с ограниченными цепями, может замедлить частоту синхроимпульсов путем продления их НИЗКОГО периода. Таким образом, скорость передачи любого ведущего адаптируется к скорости медленного устройства.

 

Адресация в шине I2C

 

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

 

В обычном режиме используется 7-битная адресация.

 

Процедура адресации на шине I2C заключается в том, что первый байт после сигнала СТАРТ определяет, какой ведомый адресуется ведущим для проведения цикла обмена. Исключение составляет адрес «Общего вызова», который адресует все устройства на шине. Когда используется этот адрес, все устройства в теории должны послать сигнал подтверждения. Однако, устройства, которые могут обрабатывать «общий вызов», на практике встречаются редко.

 

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

 

После того, как адрес послан, каждое устройство в системе сравнивает первые семь бит после сигнала СТАРТ со своим адресом. При совпадении устройство полагает себя выбранным как ведомый-приёмник или как ведомый-передатчик, в зависимости от бита направления.

 

Адрес ведомого может состоять из фиксированной и программируемой части. Часто случается, что в системе будет несколько однотипных устройств (к примеру, ИМС памяти, или драйверов светодиодных индикаторов), поэтому при помощи программируемой части адреса становится возможным подключить к шине максимально возможное количество таких устройств. Количество программируемых бит в адресе зависит от количества свободных выводов микросхемы. Иногда используется один вывод с аналоговой установкой программируемого диапазона адресов[1]. При этом в зависимости от потенциала на этом адресном выводе ИМС, возможно смещение адресного пространства драйвера так, чтобы однотипные ИМС не конфликтовали между собой на общей шине.

 

Все специализированные ИМС, поддерживающие работу в стандарте шины I2C, имеют набор фиксированных адресов, перечень которых указан производителем в описаниях контроллеров.

 

Комбинация бит 11110ХХ адреса зарезервирована для 10-битной адресации.

 

Как следует из спецификации шины, допускаются как простые форматы обмена, так и комбинированные, когда в промежутке от состояния СТАРТ до состояния СТОП ведущий и ведомый могут выступать и как приемник, и как передатчик данных. Комбинированные форматы могут быть использованы, например, для управления последовательной памятью.

 

Во время первого байта данных можно передавать адрес в памяти, который записывается во внутренний регистр-защелку. После повторения сигнала СТАРТа и адреса ведомого выдаются данные из памяти. Все решения об авто-инкременте или декременте адреса, к которому произошел предыдущий доступ, принимаются конструктором конкретного устройства. Поэтому, в любом случае лучший способ избежать неконтролируемой ситуации на шине перед использованием новой (или ранее не используемой) ИМС следует тщательно изучить ее описание (datasheet или reference manual), получив его с сайта производителя. Более того, производители часто размещают рядом более подробные инструкции по применению.

 

В любом случае, по спецификации шины все разрабатываемые устройства должны сбрасывать логику шины при получении сигнала СТАРТ или повторный СТАРТ и подготавливаться к приему адреса.

 

Тем не менее основные проблемы с использованием I2C шины возникают именно из-за того, что разработчики, «начинающие» работать с I2C шиной не учитывают того факта, что ведущий (часто — микропроцессор) не имеет монопольного права ни на одну из линий шины.

 

Преимущества

 

· необходим всего один микроконтроллер для управления набором устройств;

· используется всего две линии ввода-вывода общего назначения;

· стандарт предусматривает «горячее» подключение и отключение устройств в процессе работы системы

· встроенный в микросхемы фильтр подавляет всплески, обеспечивая целостность данных.

 

Преимущества для конструкторов

 

· поскольку такие микросхемы подключаются непосредственно к шине без каких-либо дополнительных цепей, появляется возможность модификации и модернизации системы прототипа путем подключения и отключения устройств от шины.

· блоки на функциональной схеме соответствуют микросхемам, переход от функциональной схемы к принципиальной происходит быстро.

· нет нужды разрабатывать шинные интерфейсы, так как шина уже интегрирована в микросхемы.

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

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

· время разработки снижается, так как конструкторы быстро знакомятся с часто используемыми функциональными блоками и соответствующими микросхемами.

· микросхемы могут быть добавлены или убраны из системы без оказания влияния на другие микросхемы, подключенные к шине (если их работа независима).

· простая диагностика сбоев и отладка; нарушения в работе могут быть немедленно отслежены.

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

 

Последовательный интерфейс SPI

 

Введение

 

SPI - популярный интерфейс для последовательного обмена данными между микросхемами. Интерфейс SPI, наряду с I2C, относится к самым широко-используемым интерфейсам для соединения микросхем. Изначально он был придуман компанией Motorola, а в настоящее время используется в продукции многих производителей. Его наименование является аббревиатурой от 'Serial Peripheral Bus', что отражает его предназначение - шина для подключения внешних устройств. Шина SPI организована по принципу 'ведущий-подчиненный'. В качестве ведущего шины обычно выступает микроконтроллер, но им также может быть программируемая логика, DSP-контроллер или специализированная ИС. Подключенные к ведущему шины внешние устройства образуют подчиненных шины. В их роли выступают различного рода микросхемы, в т.ч. запоминающие устройства (EEPROM, Flash-память, SRAM), часы реального времени (RTC), АЦП/ЦАП, цифровые потенциометры, специализированные контроллеры и др.

 

Главным составным блоком интерфейса SPI является обычный сдвиговый регистр, сигналы синхронизации и ввода/вывода битового потока которого и образуют интерфейсные сигналы. Таким образом, протокол SPI правильнее назвать не протоколом передачи данных, а протоколом обмена данными между двумя сдвиговыми регистрами, каждый из которых одновременно выполняет и функцию приемника, и функцию передатчика. Непременным условием передачи данных по шине SPI является генерация сигнала синхронизации шины. Этот сигнал имеет право генерировать только ведущий шины и от этого сигнала полностью зависит работа подчиненного шины.

 

Электрическое подключение

 

Существует три типа подключения к шине SPI, в каждом из которых участвуют четыре сигнала (их основное и альтернативные обозначения см. в табл. 1). Самое простое подключение, в котором участвуют только две микросхемы, показано на рисунке 1. Здесь, ведущий шины передает данные по линии MOSI синхронно со сгенерированным им же сигналом SCLK, а подчиненный захватывает переданные биты данных по определенным фронтам принятого сигнала синхронизации. Одновременно с этим подчиненный отправляет свою посылку данных. Представленную схему можно упростить исключением линии MISO, если используемая подчиненная ИС не предусматривает ответную передачу данных или в ней нет потребности. Одностороннюю передачу данных можно встретить у таких микросхем как ЦАП, цифровые потенциометры, программируемые усилители и драйверы. Таким образом, рассматриваемый вариант подключения подчиненной ИС требует 3 или 4 линии связи. Чтобы подчиненная ИС принимала и передавала данные, помимо наличия сигнала синхронизации, необходимо также, чтобы линия SS была переведена в низкое состояние. В противном случае, подчиненная ИС будет неактивна. Когда используется только одна внешняя ИС, может возникнуть соблазн исключения и линии SS за счет жесткой установки низкого уровня на входе выбора подчиненной микросхемы. Такое решение крайне нежелательно и может привести к сбоям или вообще невозможности передачи данных, т.к. вход выбора микросхемы служит для перевода ИС в её исходное состояние и иногда инициирует вывод первого бита данных.

 

Рис. 1. Простейшее подключение к шине SPI

 

При необходимости подключения к шине SPI нескольких микросхем используется либо независимое (параллельное) подключение (рис. 2), либо каскадное (последовательное) (рис. 3). Независимое подключение более распространенное, т.к. достигается при использовании любых SPI-совместимых микросхем. Здесь, все сигналы, кроме выбора микросхем, соединены параллельно, а ведущий шины, переводом того или иного сигнала SS в низкое состояние, задает, с какой подчиненной ИС он будет обмениваться данными. Главным недостатком такого подключения является необходимость в дополнительных линиях для адресации подчиненных микросхем (общее число линий связи равно 3+n, где n-количество подчиненных микросхем). Каскадное включение избавлено от этого недостатка, т.к. здесь из нескольких микросхем образуется один большой сдвиговый регистр. Для этого выход передачи данных одной ИС соединяется со входом приема данных другой, как показано на рисунке 3. Входы выбора микросхем здесь соединены параллельно и, таким образом, общее число линий связи сохранено равным 4. Однако использование каскадного подключения возможно только в том случае, если его поддержка указана в документации на используемые микросхемы. Чтобы выяснить это, важно знать, что такое подключение по-английски называется 'daisy-chaining'.

 

 

Рис. 2. Независимое подключение к шине SPI

 

Рис. 3. Каскадное подключение к шине SPI

 

Протокол передачи

 

Протокол передачи по интерфейсу SPI предельно прост и, по сути, идентичен логике работы сдвигового регистра, которая заключается в выполнении операции сдвига и, соответственно, побитного ввода и вывода данных по определенным фронтам сигнала синхронизации. Установка данных при передаче и выборка при приеме всегда выполняются по противоположным фронтам синхронизации. Это необходимо для гарантирования выборки данных после надежного их установления. Если к этому учесть, что в качестве первого фронта в цикле передачи может выступать нарастающий или падающий фронт, то всего возможно четыре варианта логики работы интерфейса SPI. Эти варианты получили название режимов SPI и описываются двумя параметрами:

CPOL - исходный уровень сигнала синхронизации (если CPOL=0, то линия синхронизации до начала цикла передачи и после его окончания имеет низкий уровень (т.е. первый фронт нарастающий, а последний - падающий), иначе, если CPOL=1, - высокий (т.е. первый фронт падающий, а последний - нарастающий));

CPHA - фаза синхронизации; от этого параметра зависит, в какой последовательности выполняется установка и выборка данных (если CPHA=0, то по переднему фронту в цикле синхронизации будет выполняться выборка данных, а затем, по заднему фронту, - установка данных; если же CPHA=1, то установка данных будет выполняться по переднему фронту в цикле синхронизации, а выборка - по заднему). Информация по режимам SPI обобщена в таблице 2.

 

Ведущая и подчиненная микросхемы, работающие в различных режимах SPI, являются несовместимыми, поэтому, перед выбором подчиненных микросхем важно уточнить, какие режимы поддерживаются ведущим шины. Аппаратные модули SPI, интегрированные в микроконтроллеры, в большинстве случаев поддерживают возможность выбора любого режима SPI и, поэтому, к ним возможно подключение любых подчиненных SPI-микросхем (относится только к независимому варианту подключения). Кроме того, протокол SPI в любом из режимов легко реализуется программно.

 

Cравнение с шиной I2C

 

Как уже упоминалось, для стыковки микросхем не меньшей популярностью пользуется 2-проводная последовательная шина I2C. Ниже можно ознакомиться с преимуществами, которая дает та или иная последовательная шина.

 

Преимущества шины SPI Преимущества шины I2C
Предельная простота протокола передачи на физическом уровне обуславливает высокую надежность и быстродействие передачи. Предельное быстродействие шины SPI измеряется десятками мегагерц и, поэтому, она идеальна для потоковой передачи больших объемов данных и широко используется в высокоскоростных ЦАП/АЦП, драйверах светодиодных дисплеев и микросхемах памяти Шина I2C остается двухпроводной, независимо от количества подключенной к ней микросхем.
Все линии шины SPI являются однонаправленными, что существенно упрощает решение задачи преобразования уровней и гальванической изоляции микросхем Возможность мультимастерной работы, когда к шине подключено несколько ведущих микросхем.
Простота программной реализации протокола SPI. Протокол I2C является более стандартизованным, поэтому, пользователь I2C-микросхем более защищен от проблем несовместимости выбранных компонентов.

Производные и совместимые протоколы

· MICROWIRE.

Протокол MICROWIRE компании National Semiconductor полностью идентичен протоколу SPI в режиме 0 (CPOL = 0, CPHA = 0).

· 3-проводной интерфейс компании Maxim

Отличие этого интерфейса состоит в том, что вместо полнодуплексной передачи по двум однонаправленным линиям здесь выполняется полудуплексная передача по одной двунаправленной линии DQ.

· QSPI

Более высокоуровневый протокол, чем SPI, позволяющий автоматизировать передачу данных без участия ЦПУ.

Кроме того, интерфейс SPI является основой для построения ряда специализированных интерфейсов, в т.ч. отладочный интерфейс JTAG и интерфейсы карт Flash-памяти, в т.ч. SD и MMC.


Табл. 1. Электрические сигналы шины SPI

Ведущий шины

Подчиненный шины

Основное обозначение Альтернативное обозначение Описание Основное обозначение Альтернативное обозначение Описание
MOSI DO, SDO, DOUT Выход последовательной передачи данных MOSI DI, SDI, DIN Вход последовательного приема данных
MISO DI, SDI, DIN Вход последовательного приема данных MISO DO, SDO, DOUT Выход последовательной передачи данных
SCLK DCLOCK, CLK, SCK Выход синхронизации передачи данных SCLK DCLOCK, CLK, SCK Вход синхронизации приема данных
SS CS Выход выбора подчиненного (выбор микросхемы) SS CS Вход выбора подчиненного (выбор микросхемы)

Табл. 2. Режимы SPI

Режим SPI 0 1 2 3
CPOL 0 1 0 1
CPHA 0 0 1 1
Временная диаграмма первого цикла синхронизации

 

Последовательный интерфейс RS-232

 

Широко используемый последовательный интерфейс синхронной и асинхронной передачи данных, определяемый стандартом EIA RS-232-C и рекомендациями V.24 CCITT. Изначально создавался для связи компьютера с терминалом. В настоящее время используется в самых различных применениях.

 

Интерфейс RS-232-C соединяет два устройства. Линия передачи первого устройства соединяется с линией приема второго и наоборот (полный дуплекс) Для управления соединенными устройствами используется программное подтверждение (введение в поток передаваемых данных соответствующих управляющих символов). Возможна организация аппаратного подтверждения путем организации дополнительных RS-232 линий для обеспечения функций определения статуса и управления.

 

Стандарт EIA RS-232-C, CCITT V.24
Скорость передачи 115 Кбит/с (максимум)
Расстояние передачи 15 м (максимум)
Характер сигнала несимметричный по напряжению
Количество драйверов 1
Количество приемников 1
Схема соединения полный дуплекс, от точки к точке

 

Интерфейс RS-232C предназначен для подключения к компьютеру стандартных внешних устройств (принтера, сканера, модема, мыши и др.), а также для связи компьютеров между собой. Основными преимуществами использования RS-232C по сравнению с Centronics являются возможность передачи на значительно большие расстояния и гораздо более простой соединительный кабель. В то же время работать с ним несколько сложнее. Данные в RS-232C передаются в последовательном коде побайтно. Каждый байт обрамляется стартовым и стоповыми битами. Данные могут передаваться как в одну, так и в другую сторону (дуплексный режим).

 

Компьютер имеет 25-контактный (DB25P) или 9-контактный (DB9P) разъем для подключения RS-232C. Назначение контактов разъема приведено в таблице.

 

Назначение сигналов следующее.

FG - защитное заземление (экран).

-TxD - данные, передаваемые компьютером в последовательном коде (логика отрицательная).

-RxD - данные, принимаемые компьютером в последовательном коде (логика отрицательная).

RTS - сигнал запроса передачи. Активен во все время передачи.

CTS - сигнал сброса (очистки) для передачи. Активен во все время передачи. Говорит о готовности приемника.

DSR - готовность данных. Используется для задания режима модема.

SG - сигнальное заземление, нулевой провод.

DCD - обнаружение несущей данных (детектирование принимаемого сигнала).

DTR - готовность выходных данных.

RI - индикатор вызова. Говорит о приеме модемом сигнала вызова по телефонной сети.

 

Наиболее часто используются трех- или четырехпроводная связь (для двунапрвленной передачи). Схема соединения для четырехпроводной линии связи показана на рисунке 1.1.

 

Для двухпроводной линии связи в случае только передачи из компьютера во внешнее устройство используются сигналы SG и TxD. Все 10 сигналов интерфейса задействуются только при соединении компьютера с модемом.

 

Формат передаваемых данных показан на рисунке 1.2. Собственно данные (5, 6, 7 или 8 бит) сопровождаются стартовым битом, битом четности и одним или двумя стоповыми битами. Получив стартовый бит, приемник выбирает из линии биты данных через определенные интервалы времени. Очень важно, чтобы тактовые частоты приемника и передатчика были одинаковыми, допустимое расхождение - не более 10%. Скорость передачи по RS-232C может выбираться из ряда: 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/с.

 

Рис.1.1 Схема 4-проводной линии связи для RS-232C

Все сигналы RS-232C передаются специально выбранными уровнями, обеспечивающими высокую помехоустойчивость связи (рис.1.3.). Отметим, что данные передаются в инверсном коде (логической единице соответствует низкий уровень, логическому нулю - высокий уровень).

 

Для подключения произвольного УС к компьютеру через RS-232C обычно используют трех- или четырехпроводную линию связи (см. рис. 1.1), но можно задействовать и другие сигналы интерфейса.

 

Рис.1.2 Формат данных RS-232C

Обмен по RS-232C осуществляется с помощью обращений по специально выделенным для этого портам COM1 (адреса 3F8h...3FFh, прерывание IRQ4), COM2 (адреса 2F8h...2FFh, прерывание IRQ3), COM3 (адреса 3F8h...3EFh, прерывание IRQ10), COM4 (адреса 2E8h...2EFh, прерывание IRQ11). Форматы обращений по этим адресам можно найти в многочисленных описаниях микросхем контроллеров последовательного обмена UART (Universal Asynchronous Receiver/Transmitter), например, i8250, КР580ВВ51.

Рис.1.3 Уровни сигналов RS-232C на передающем и принимающем концах линии связи.

CAN интерфейс

CAN (англ. Controller Area Network — сеть контроллеров) — стандарт промышленной сети, ориентированный прежде всего на объединение в единую сеть различных исполнительных устройств и датчиков. Режим передачи — последовательный, широковещательный, пакетный.

 

CAN разработан компанией Robert Bosch GmbH в середине 1980-х и в настоящее время широко распространён в промышленной автоматизации, технологиях «умного дома», автомобильной промышленности и многих других областях. Стандарт для автомобильной автоматики.

 

Описание стандарта

 

Непосредственно стандарт CAN от Bosch определяет передачу в отрыве от физического уровня — он может быть каким угодно, например, радиоканалом или оптоволокном. Но на практике под CAN-сетью обычно подразумевается сеть топологии «шина» с физическим уровнем в виде дифференциальной пары, определённым в стандарте ISO 11898. Передача ведётся кадрами, которые принимаются всеми узлами сети.

 

Общие сведения

 

Синхронная шина, с типом доступа Collision Resolution (CR), который в отличие от Collision Detect (CD) сетей (Ethernet — это CD) детерминировано (приоритетно) обеспечивает доступ на передачу сообщения, что особо ценно для промышленных сетей управления (fieldbus). Передача ведётся кадрами. Полезная информация в кадре состоит из идентификатора длиной 11 бит (стандартный формат) или 29 бит (расширенный формат, надмножество предыдущего) и поля данных длиной от 0 до 8 байт. Идентификатор говорит о содержимом пакета и служит для определения приоритета при попытке одновременной передачи несколькими сетевыми узлами.

 

Рецессивные и доминантные биты

 

Для абстрагирования от среды передачи спецификация CAN избегает описывать двоичные значения как «0» и «1». Вместо этого применяются термины «рецессивный» и «доминантный», при этом подразумевается, что при передаче одним узлом сети рецессивного бита, а другим доминантного, принят будет доминантный бит. Например, при реализации физического уровня на радиоканале отсутствие сигнала означает рецессивный бит, а наличие — доминантный; тогда как в типичной реализации проводной сети рецессив бывает при наличии сигнала, а доминант, соответственно, при отсутствии. Стандарт сети требует от «физического уровня», фактически, единственного условия: чтобы доминантный бит мог подавить рецессивный, но не наоборот. Например, в оптическом волокне доминантному биту должен соответствовать «свет», а рецессивному — «темнота». В электрическом проводе может быть так: рецессивное состояние — высокое напряжение на линии (от источника с большим внутренним сопротивлением), доминантное — низкое напряжение (все узлы сети «подтягивают» линию на землю). Если линия находится в рецессивном состоянии, перевести её в доминантное может любой узел сети (включив свет в оптоволокне или закоротив высокое напряжение). Наоборот — нельзя (включить темноту нельзя).

 

Виды кадров

Кадр данных (data frame) — передаёт данные;

Кадр запроса передачи (remote frame) — служит для запроса на передачу кадра данных с тем же идентификатором;

Кадр перегрузки (overload frame) — обеспечивает промежуток между кадрами данных или запроса;

Кадр ошибки (error frame) — передаётся узлом, обнаружившим в сети ошибку.

 

Кадры данных и запроса отделяются от предыдущих кадров межкадровым промежутком.

 

Формат кадра

Базовый формат кадра данных

 

Начало кадра 1 Сигнализирует начало передачи кадра
Идентификатор 11 Уникальный идентификатор
Запрос на передачу (RTR) 1 Должен быть доминантным
Бит расширения идентификатора (IDE) 1 Должен быть доминантным
Зарезервированный бит (r0) 1 Резерв
Длина данных (DLC) 4 Длина поля данных в байтах (0-8)
Поле данных 0-8 байт Передаваемые данные (длина в поле DLC)
Контрольная сумма (CRC) 15 Контрольная сумма всего кадра
Разграничитель контрольной суммы 1 Должен быть рецессивным
Промежуток подтверждения (ACK) 1 Передатчик шлёт рецессивный, приёмник вставляет доминанту
Разграничитель подтверждения 1 Должен быть рецессивным
Конец кадра (EOF) 7 Должен быть рецессивным

 

Формат кадра запроса

 

Совпадает с кадрами данных стандартного или расширенного формата за двумя исключениями:

В поле RTR рецессив вместо доминанты.

Отсутствует поле данных.

 

Арбитраж доступа

 

При свободной шине любой узел может начинать передачу в любой момент. В случае одновременной передачи кадров двумя и более узлами проходит арбитраж доступа: передавая адрес источника, узел одновременно проверяет состояние шины. Если при передаче "0" бита принимается "1" — считается, что другой узел передаёт сообщение с большим приоритетом и передача откладывается до освобождения шины. Таким образом, в отличие, например, от Ethernet в CAN не происходит непроизводительной потери пропускной способности канала при коллизиях. Цена этого решения — вероятность того, что сообщения с низким приоритетом никогда не будут переданы.

 

Контроль ошибок

 

CAN имеет несколько механизмов контроля и предотвращения ошибок:

Контроль передачи: при передаче битовые уровни в сети сравниваются с передаваемыми битами.

Дополняющие биты (bit stuffing): после передачи пяти одинаковых битов подряд автоматически передаётся бит противоположного значения. Таким образом, кодируются все поля кадров данных или запроса, кроме разграничителя контрольной суммы, промежутка подтверждения и EOF.

Контрольная сумма: передатчик вычисляет её и добавляет в передаваемый кадр, приёмник считает контрольную сумму принимаемого кадра в реальном времени (одновременно с передатчиком), сравнивает с суммой в самом кадре и в случае совпадения передаёт доминантный бит в промежутке подтверждения.

Контроль значений полей при приёме.

 

Разработчики оценивают вероятность невыявления ошибки передачи как 4,7×10-11.

 

Коды обнаружения

Циклический избыточный код (CRC)

 

Алгоритм CRC базируется на свойствах деления с остатком двоичных многочленов. Значение CRC является, по сути, остатком от деления многочлена, соответствующего входным данным, на некий фиксированный порождающий многочлен.

Бит чётности

 

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

Число 10111101 содержит 6 '1' битов. Бит чётности будет 0, получаем кодовое слово 101111010.

Число 01110011 содержит 5 '1' битов. Бит чётности будет 1, получаем кодовое слово 011100111.

Число 00000000 не содержит '1' битов. Бит чётности будет 0, получаем кодовое слово 000000000.

 

Пустой или несуществующий поток битов также имеет ноль единичных битов, поэтому бит чётности будет 0.

 

Корректирующие коды

 

Коды Хемминга

 

Коды Рида — Соломона

 

Каскадное кодирование. Итеративное декодирование

 

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

 

Например, популярной является следующая конструкция: данные кодируются кодом Рида-Соломона, затем перемежаются (при этом символы, расположенные близко, помещаются далеко друг от друга) и кодируются свёрточным кодом. На приёмнике сначала декодируется свёрточный код, затем осуществляется обратное перемежение (при этом пачки ошибок на выходе свёрточного декодера попадают в разные кодовые слова кода Рида — Соломона), и затем осуществляется декодирование кода Рида — Соломона.

 

Выбор кода

Выбор типа кода для обнаружения и коррекции ошибок осуществляется на основе анализа ошибок, возникающих при передаче данных по данной конкретной линии связи, функционирующей в данных условиях.

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

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



Табличные вычисления

 

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

 

Известный пример табличных вычислений – таблицы Брадиса, которые содержат значения тригонометрических функций для конечного количества аргументов.

 

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

 

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

 

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

Пусть для функции f(x) вычислена и записана таблица значений F[i], где i = 0..N-1 соответствует значению аргумента . Тогда значение функции f(x) для x=a, где  вычисляется как

,

т.к. при составлении таблицы обычно используется то условие, что , то

.

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

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

 

Тарировочные таблицы

 

Тарировочные таблицы – это таблично заданные тарировочные функции.

Их  размер задается точностью исходной информации. Так или иначе сигнал с датчика преобразуется в код АЦП с заданной разрядность. Это означает, что иных значений, кроме тех, что выдает АЦП, быть не может в принципе, поэтому таблица не может быть больше, чем максимальное значение кода АЦП (может быть меньше, если используется не весь диапазон сигнала), также очевидно, что интерполяция по аргументы (измеряемой величине) бессмысленна.

 

Если тарировочная таблица выполняет функцию только калибровки, то это одномерный массив.

В общем случае размерность массива определяется количеством компенсируемых факторов.

 

Например. Есть датчик давления, чьи показания зависят от температуры. При этом давление измеряется АЦП с разрешением 10 бит, а температура – 8 бит. Для хранения полной тарировочной таблицы необходим массив 1024х256.

 

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

 

Очевидно, что чем больше измеряемых параметров и чем шире диапазон значений, тем больше измерений необходимо провести. Для нашего примера потребуется более 260 тысяч измерений.

 

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

МНК

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

Рассмотрим пример.

 

Задана выборка — таблица

Задана регрессионная модель — квадратичный полином

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

Тогда матрица  значений подстановок свободной переменной  будет иметь вид

Задан критерий качества модели: функция ошибки

Здесь вектор  . Требуется найти такие параметры , которые бы доставляли минимум этому функционалу,

Требуется найти такие параметры  , которые доставляют минимум  — норме вектора невязок .

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

Это выражение также называется нормальным уравнением. Решение этой задачи должно удовлетворять системе линейных уравнений

то есть,

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

Коррекция нуля, обнуление

 

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

 

Коррекция нуля, обнуление обычно является частью боевой работы системы, например, обнуление показаний высотомера на ЛА перед взлетом, пока он находится на земле.

 

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

 

Теперь надо измерить нулевой сигнал, который соответствует нулевой величине физического параметра и в дальнейшем вычитать его значение из всех показаний датчика.

 

Нулевой сигнал следует определять как математическое ожидание накопленной последовательной выборки показаний датчика. Длительность выборки определяется по частотному спектру сигнала (фактически спектру шума, так как полезный сигнал постоянен) и должна быть в 5-10 раз длиннее периода самой низкочастотной составляющей части спектра шумового сигнала. На практике это от 5 до 40 секунд.

 

Фильтрация

 

Ранее мы рассмотрели способы получения цифрового значения, соответствующего входному сигналу разной природы.

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

Эти сигналы помимо полезной составляющей несут в себе шум, который может мешать корректному функционированию алгоритма, опирающегося на этот измеряемый сигнал.

В лекции про АЦП мы говорили о фильтрации высокочастотного, не удовлетворяющего критерию Найквиста шума. Рассмотренный случай являет собой самый простой пример проявления шумов и способа борьбы с ним – шум лежит вне интересующей нас полосы частот. Гораздо сложнее, если этот шум находится внутри спектра полезного сигнала и не является постоянным.

Рассмотрим такой пример. Есть самолет с бензиновым двигателем.

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

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

В отличие от рассмотренного примера в лекции по АЦП, где у нас параметры фильтра прямо следовали из величины частоты дискретизации, в данном случае из-за изменчивости шума нельзя построить постоянный фильтр.

Для этого используются специальные алгоритмы фильтрации, цифровые фильтры.

 

Цифровые фильтры можно разделить на два основных класса – БИХ-фильтры и КИХ-фильтры.

Устойчивость

 

Об устойчивости фильтра с бесконечной импульсной характеристикой судят по его передаточной функции. Для дискретного фильтра необходимо и достаточно, чтобы все полюса его передаточной функции по модулю были меньше единицы, т.е. лежали внутри единичного круга на z-плоскости. Все критерии устойчивости, применимые в теории линейных стационарных систем, например критерий устойчивости Найквиста или критерий устойчивости Рауса применимы и в случае БИХ-фильтров.

 

В отличие от БИХ-фильтров, КИХ-фильтры всегда являются устойчивыми.

Примерами БИХ-фильтров являются фильтр Чебышева, фильтр Баттерворта, Фильтр Калмана и фильтр Бесселя.

 Зависимости частотных свойств звеньев системы регулирования

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

Главным динамическим объектом является объект управления – его динамические свойства являются определяющими при выборе и создании других частей системы.

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

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

Для описания динамики ЦАП и АЦП – частоту дискретизации.

Для описания динамики регулятора – частоту контура управления.

Частота контура управления – количество полных вычислений ядра регулятора за единицу времени.

Начнем двигаться от объекта.

Пусть ОУ имеет частоту среза . Тогда в спектре сигнала x гармоники с частотами выше  будут иметь амплитуды, которыми начиная с некоторой частоты можно пренебречь совсем.

Поэтому эмпирически частоту среза датчика принимают

.

Если датчик имеет аналоговый выход, то преобразователь (АЦП), на вход которого поступает сигнал , должен иметь частоту дискретизации

.

Тогда частота контура управления должна удовлетворять условию

.

Таким образом, получаем эмпирическую зависимость:

.

Данный расчет является примерным, конкретные значения коэффициентов в реальности зависят не только от частоты среза, но и вообще от вида АЧХ объекта, ее крутизны, наличия резонансов в ВЧ-области и т.д., поэтому для каждой конкретной системы частоты звеньев следует выбирать специально, но пользуясь приведенной зависимостью.

 

Регуляторы

 

Рассмотрим схему системы регулирования.

Данная схема лежит в основе большинства систем регулирования. В реальности такая схема добавляется разными дополнительными системами контроля.

 

Р – регулятор

Д – датчик

ОУ – объект управления

ИУ – исполнительное устройство

X – уставка от программно-задающего устройства

U – сигнал управления

ε – сигнал ошибки,

x – переменная (сигнал) регулирования

 – сигнал регулирования, измеренный датчиком

 

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

 

Реализация регуляторов

 

Для того, чтобы реализовать указанные регуляторы в виде программного кода необходимо перевести их в форму разностных уравнений. Для общности будем рассматривать ПИД-регулятор:

Этому выражению будет соответствовать следующая система разностных уравнений:

где τ – шаг интегрирования.

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

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

Существует два подхода к определению шага, зависящие от реализации программы в вычислителе.

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

Из-за недетерминированности процесса шаг в каждой итерации может иметь большой разброс, что приведет к искажениям (непостоянству) динамических характеристик регулятора (или иными словами дискретного фильтра).

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

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

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

Важным обстоятельством в данном случае является то, что τ= const.

Преобразуем расчетные выражения, внеся постоянные коэффициента К в выражения вычисления интеграла и дифференциала:

Учитывая, что τ= const, сделаем замену  и получим

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

 

Примерная реализация ядра регулятора на языке Си

#define T 100 // шаг расчета в тиках таймера

volatile float K1=10, K2=0.5, K3=100; // объявляем переменные для коэффициентов регулятора

volatile float Ix = 0; // объявляем переменную, в которой будет храниться значение интеграла

volatile float X, x; // объявляем переменные для уставки и текущего значения переменной

//регулирования

volatile float Eo; // объявляем переменную для хранения сигнала ошибки предыдущей итерации

float Get(void); //функция получения уставки, например, вводом с клавиатуры

float Mes(void); //функция измерения текущего значения регулируемой величины

void Act(float); //функция отработки управляющего сигнала (например, генерация ШИМ,

// формирование напряжения ЦАП и т.п.)

void Init(int, float); //инициализация таймера на заданный интервал срабатывания

SIGNAL(…) //описание обработчика прерываний нулевого таймера

{

       float E, D;

       X = Get();

x = Mes();

E = X - x;

       Ix += (E*K1);

       D = (E – Eo) * K2;

       U = Ix + D + E*K3;

       Eo = E;

       Act(U);

}

int main()

{

       …

Init(0, T);

for(;;)

                   {

                   // тело программы, осуществляющий отображение информации, ввод

//коэффициентов и т.п.

                   };

}

Выбор длительности такта

Реальная (устанавливаемая в программе) длительность такта  зависит от:

· Динамики (частоты среза) объекта управления, .

· Вычислительной мощности контроллера – чистого машинного времени, которое занимает расчет алгоритма управления .

· Длительности накладных расходов исполнения программы,

При этом должно выполняться следующее эмпирическое условие:

Время расчета алгоритма в первом приближении производится по действиям, выполняемым в данном алгоритме. Каждое действие занимает определенное машинное время, измеряемое в тактах, специфическое для каждого вычислителя. Это время указывает в документации на контроллер.

Рассмотрим наш пример.

Примем следующие времена исполнения операций:

· Сложение – 2 такт

· Умножение – 4 такта

· Присваивание – 1 такт

· Выполнение функции – 23 такта

Рассчитаем :

X = Get(); - 1+23=24 тактов

x = Mes(); - 1+23=24 тактов

E = X - x; - 1+2=3 тактов

Ix += (E*K1); - 1+2+4=7 тактов

D = (E – Eo) * K2; 1+2+4=7 тактов

U = Ix + D + E*K3; 1+2+2+ 4=9 тактов

Eo = E; 1 такт

Act(U); 23 татка

Итого: тактов.

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

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

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



Диапазоны чисел

  Одинарная (float) Двойная (double) Расширенная (long double)
Размер типа (байт) 4 8 10
Число десятичных знаков 7 15 19
Наименьшее значение нормализованное 1,4E−45          5,0E−324        1,9E−4951            
Наименьшее значение нормализованное 1,2E−38          2,3E−308        3,4E−4932
Наибольшее значение 3,4E+38          1,7E+308        1,1E+4932
Поля S-E-F S-E-F S-E-I-F
Размеры полей 1-8-23 1-11-52 1-15-1-63

S — знак, E — показатель степени, I — целая часть, F — дробная часть

Так же, как и для целых, знаковый бит — старший.



Операторы цикла

 

while (<условие>){

}

 

 

for (<начальное значение fahr = 0>; <условие «пока» fahr <= 300>; <выражение изменения переменной цикла fahr = fahr + 20>)

       {

       }

Инструкция for описывает цикл, который является обобщением цикла while. Если вы сравните его с ранее написанным while, то вам станет ясно, как он работает. Внутри скобок имеются три выражения, разделяемые точкой с запятой. Первое выражение - инициализация

fahr = 0

выполняется один раз перед тем, как войти в цикл. Второе – проверка условия продолжения цикла

fahr <= 300

Условие вычисляется, и если оно истинно, выполняется тело цикла (в нашем случае это одно обращение к printf). Затем осуществляется приращение шага:

fahr = fahr + 20

и условие вычисляется снова. Цикл заканчивается, когда условие становится ложным

 

Условный оператор

if (<условие<) {

       <операторы>;

};

else {

       <операторы>;

}

Оператор выбора

switch (<переменная>) {

case <значение 1>:  <операторы> break;

case <значение 2>:  <операторы> break;

case <значение 3>:  <операторы> break;

default: <> break;}

Организация микроконтроллерных систем управления

 

В нашем курсе мы будем рассматривать основные вопросы реализации СУ на основе микроконтроллерных вычислителей. Рассмотрим общую структуру системы управления:

 

 

То же самое в «академическом» виде, принятом в теории управления:

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

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

 

Информационно-измерительные устройства, датчики

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

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

 

Усилительно-преобразующие устройства

Устройства, выполняющие функцию усиления мощности сигнала с преобразованием его природы (усилитель-преобразователь) или без него.

Исполнительные устройства

Исполнительное устройство — подсистема, передающая воздействие с управляющего устройства на объект управления.

 



Интерфейс связи

 

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

 

Характеризуется совокупностью (стеком) протоколов передачи данных — набор соглашений, который определяет обмен данными между элементами системы от физического до прикладного уровней (модель OSI). Протоколы задают способы передачи сообщений и обработки ошибок по каналам связи, а также позволяют разрабатывать стандарты, не привязанные к конкретной аппаратной платформе.

 

Данный состав является типовым, поэтому микроконтроллеры, предназначенные для этих целей (СУ) уже имеют в своем составе законченные решения этих типовых задач.

 


Поделиться:



Последнее изменение этой страницы: 2019-05-08; Просмотров: 526; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.677 с.)
Главная | Случайная страница | Обратная связь