- •Встраиваемые микроконтроллеры avr-8
- •Санкт-Петербург 2013 Содержание
- •Часть 1. Архитектура мк (л2, л3)
- •Понятия мк для встраиваемых приложений и семейства мк. Семейство avr-8
- •Структура и архитектура мк
- •Тактирование, процессор и арифметико-логическая группа команд
- •Структура и адресация памяти программ. Ветвления, циклы, подпрограммы, и группа команд передачи управления
- •Структура и адресация памяти данных. Группа команд передачи данных
- •Порты ввода/вывода. Типовая схема включения мк. Структура управляющей программы, поллинг.
- •Часть 2. Процесс проектирования устройств на мк (л4, л5)
- •2.1. Этапы процесса проектирования устройств на мк
- •2.2.Техническое задание и разработка алгоритма (блок-схемы)
- •2.3. Языки программирования и синтаксическая проверка проекта
- •2.4. Средства загрузки кодов программ и данных (программаторы)
- •2.5. Средства отладки для выявления логических и схемотехнических ошибок
- •2.6. Подключение индикаторов и клавиатуры
- •Часть 3. Ввод/вывод в мпу
- •3.1. Понятие и характеристики интерфейса
- •3.2. Внутрисистемные интерфейсы в мпу
- •3.3 Параллельный порт avr
- •3.4. Внешняя магистраль памяти данных avr мк
- •3.5. Принцип и средства ввода/вывода по прерываниям.
- •3.6. Принцип прямого доступа к памяти
- •Часть 4. Прерывания (л8)
- •4.1. Механизм прерываний в avr и его программирование
- •4.2. Входы прерываний inTx и pcinTx.
- •Часть 5. Таймеры/счетчики
- •5.1. Задачи формирования и измерения временных интервалов
- •5.2. Принципы программного формирования/измерения временного интервала
- •5.3. Таймер/счетчик с прерыванием по переполнению
- •5.4. Таймер/счетчик с дополнительными узлами захвата и сравнения
- •Часть 6. Задачи и устройства аналогового ввода/вывода (л12, л13)
- •6.1. Задачи аналогового ввода и вывода
- •6.2. Встроенный аналоговый компаратор
- •6.3. Встроенный многоканальный ацп
- •6.4. Встроенный цап
- •Часть 7. Задачи и устройства последовательного интерфейса (л14, л15)
- •7.1. Принципы и преимущества последовательного интерфейса
- •7.2. Функции встроенного контроллера последовательного интерфейса
- •7.3. Протокол и контроллер трехпроводного синхронного пи (spi)
- •7.4. Устройство контроллера i2c и его применение
- •7.5 Цап с последовательным интерфейсом
- •7.6. Устройство контроллера u(s)art и его применение
- •7.7. Сетевые протоколы и их стандартизация
- •7.8. Открытый протокол Modbus
- •История
- •Введение
- •Категории кодов функций
- •Модель данных
- •Стандартные функции протокола Modbus
- •Запись одного значения
- •Запись нескольких значений
- •Контроль ошибок в протоколе Modbus rtu
- •Rtu фрейм
- •Логические ошибки
- •Стандартные коды ошибок
6.3. Встроенный многоканальный ацп
Общие свойства и характеристики
Аналого-цифровое преобразование заключается в определении цифрового эквивалента n измеряемого сигнала u(t) по формуле n = u(t) / Uref *2N, где Uref - опорное напряжение, задающее диапазон оцифровки (0...Uref или -Uref ... +Uref), N - разрядность двоичного кодирования. Разрядность определяет количество дискрет 2N в заданном диапазоне измерения, вместе с выбором опоры определяет разрешение. Например, при N = 10 и Uref = 5.0 В получим разрешение Uref / 2N = 5 / 1024 ≈ 5 мВ. Стабильность и точность АЦ преобразования в значительной степени определяются параметрами источника опорного напряжения. С ростом разрядности растут требования по точности к опоре и всем элементам аналогового тракта измерения.
Точность нормируется двумя параметрами:
- разбросом значений, обусловленным несовершенством полупроводниковой технологии (чистота основных материалов и дозирование примесей),
- влиянием температуры кристалла и напряжения питания.
Существует большое разнообразие типов аналого-цифровых преобразователей (АЦП). Они различаются как потребительскими свойствами – диапазоном измеряемого напряжения, параметрами точности, разрядностью, быстродействием и пр., так и типом преобразования: параллельное, последовательного приближения, сигма-дельта и пр. []. АЦП последовательного приближения (или поразрядного уравновешивания) имеет небольшое количество аналоговых компонентов (компаратор и ЦАП), сравнительно простую цифровую часть, поэтому получил наибольшее распространение в МК. Цикл преобразования требует тактирования, число тактов равно и несколько больше разрядности, что обуславливает средние характеристики быстродействия.
Типовые характеристики встраиваемых АЦП:
- разрядность 8…12 бит,
- время преобразования от долей до сотен микросекунд,
- точностные параметры, как правило, соответствуют разрядности, то есть не хуже одного-двух младших разрядов.
В качестве источника опорного напряжения (AVref) используются:
- питание цифровой части МК (VCC), что удобно в мобильных приложениях при использовании резистивных датчиков, питающихся от этого же источника;
- встроенный источник (1.23 или 2.56 В) с точностью не хуже ±10%;
- вход для внешнего опорного напряжения позволяет гибко выбирать источник с требуемыми параметрами уровня напряжения и точности.
В большинстве случаев встроенный АЦП может преобразовывать сигнал напряжения с нескольких аналоговых входов (с разделением времени). Для выбора требуемого входа используется набор управляемых аналоговых ключей, объединенных по выходам - так называемый аналоговый мультиплексор.
Принцип работы АЦП последовательного приближения заключается в следующем. На первом такте преобразования аналоговый сигнал сравнивается с половиной опорного напряжения, если входное больше, то в старший разряд результата записывается единица, иначе - ноль. На следующем шаге преобразования входное напряжение сравнивается с суммой предыдущего шага (0.5*Uref или 0) и четвертинки опоры (0.25*Uref), в следующий разряд регистра результата записывается "1" или "0", ... Таким образом, преобразование длится число тактов, не меньшее числа двоичных разрядов результата N.
Важно, чтобы в течение этого времени уровень на входе АЦП не изменялся, иначе растет вероятность неправильного кодирования. Поэтому между аналоговым мультиплексором и собственно входом АЦП располагается устройство выборки/хранения. На этапе выборки через входной ключ заряжается конденсатор хранения заряда, на этапе хранения входной ключ размыкается и идет этап АЦ-преобразования. Для выборки и перехода к хранению требуются дополнительные такты, что увеличивает время преобразования.
АЦП в AVR
Основные характеристики АЦП встроенные в МК серии AVR: разрядность 10 бит, опорное напряжение от 2 до 5 В, число синфазных каналов от 4 до 16, время преобразования 70…280 мкс на канал.
На одно преобразование тратится 13-14 тактов при разрядности N = 10, то есть 10 тактов на собственно АЦ-преобразование и 3-4 такта на выборку. Частота тактирования должна находиться в диапазоне 50...200 кГц, тогда время одного преобразования составляет 65...280 мкс. Нижнее ограничение частоты связано с постоянной времени разряда конденсатора устройства выборки/хранения – растет погрешность, связанная с утечкой заряда, верхнее – с влиянием цифрового шума. Допустимо увеличение частоты до 1 МГц (время преобразования 13/14 мкс) при снижении эффективной разрядности до 8 бит. Поэтому в ряде современных моделей AVR МК существует возможность выбора 8-разрядного режима преобразования, что упрощает процедуру чтения (один 8-битный регистр результата вместо двух).
На рис. 6.3 приведена структура АЦП встроенного в МК ATmega16. Слева расположены выводы: восемь измерительных входов ADC0…ADC7, вход питания АЦП AVCC, вход/выход источника опорного напряжения AREF. Сверху расположены 8-битная шина данных и программно доступные регистры – состояния и управления (ADMUX, ADCSR) и 16-битный регистр результата ADC.
Собственно АЦП состоит из 10-битного ЦАП (10-bit DAC), компаратора с устройством выборки (Sample and Hold Comparator) и регистра последовательного приближения (Conversion Logic). Prescaller позволяет выбрать коэффициент деления частоты тактирования fclk для получения требуемой fadc. Дешифратор выбора канала (Mux Decoder) управляет аналоговым мультиплексором синфазных входов (Pos. Input Mux.), мультиплексором инвертирующих входов (Neg. Input Mux.), выбором предварительного усиления (Gain Amplifier) и мультиплексором выбора синфазного или дифференциального режимов (Single Ended / Differential Selection). Trigger Select используется для выбора одного из аппаратных способов запуска очередного преобразования.
Рис. 6.3. Структура АЦП (ATmega16)
Цикл АЦ-преобразования состоит из выбора канала, запуска (программный и/или аппаратный), ожидания готовности (флаг завершения преобразования ADIF) и чтения регистра результата. Значительное время преобразования (по отношению к длительности машинного цикла) делает актуальным использование прерывания по готовности АЦП, т.е. по завершению предыдущего преобразования.
Аппаратный запуск очередного преобразования бывает двух типов. Наиболее распространен циклический запуск, когда сразу по окончании предыдущего преобразования начинается следующее. В современных моделях МК появился аппаратный запуск по выбранному прерыванию (аналоговый компаратор, вход прерывания, таймер).
Наличие нескольких входов АЦП не всегда поддерживается соответствующим количеством регистров результата. Так в МК серии AVR единственный регистр результата должен быть прочитан программой до завершения следующего преобразования. Это требование особенно актуально при циклической работе АЦП и поочередном чтении разных аналоговых входов.
Для удобства согласования диапазона измерения АЦП с малосигнальными источниками (датчиками) современные встроенные АЦП имеют между аналоговым мультиплексором и устройством выборки/хранения предварительный усилитель с программируемым коэффициентом усиления (kу = 1, 10, 200 или другой набор). Предварительное усиление создает опасность усиления ошибки, связанной с протеканием различных токов по «общему» проводу синфазного входа, поэтому при предусилении используются так называемые дифференциальные входы. То есть измеряемое напряжение подается не между «синфазным» входом и «общим» проводом, а между двумя входами (входной дифференциальный усилитель усиливает разностный сигнал, ослабляя тем самым, синфазную ошибку).
Реальная разрешающая способность АЦП с использованием встроенного предусиления снижается, например, для ATmega16 дифференциальный вход с усилением 1 и 10 имеет разрешение 8 бит, с усилением 200 – 7 бит.
Питание аналоговой части требует повышенной стабильности, поэтому в МК с достаточным количеством выводов выделены специальные – AVCC и AGND. Питание может быть как от независимого источника, так и от цифрового через фильтр (LC или RC), соединение аналоговой и цифровой «земель» должно выполняться в одной точке.
Для снижения влияния шума цифровых узлов МК на результат АЦ-преобразования в МК AVR предусмотрен специальный режим АЦ-преобразования, во время которого приостанавливается тактирование всех узлов МК, кроме АЦП.
Табл. 6.1. Разновидности АЦП в МК AVR
МК, корпус |
Число каналов |
Ku |
Внутр. опора, В |
tпр, мкс/ тысяч пр/с |
Запуск |
Прочее |
tiny15 pdip8, soic8 |
4 синф 1 дифф |
1 20 |
2.56 |
|
Прогр. |
|
tiny25/45/85 pdip8, soic8 |
4 синф 2 дифф |
1 1, 20 |
1.1/ 2.56 |
65/ 15 |
Прогр., автотриг. |
ДТ1 |
tiny24/44/84 soic14 |
8 синф 12 дифф |
1 1, 20 |
1.1 |
13/ 76 |
Прогр., автотриг. |
ДТ1 |
mega16, tqfp44/ mega128, tqfp64 |
8 синф 7 дифф 2 дифф |
1 1 10, 200 |
2.56 |
13/ 76.9 |
Прогр.+ автотриг./ Прогр. |
– |
mega640/1280/2560 tqfp100 mega1281/2561 tqfp64 |
16 синф 14 дифф 4 дифф |
1 1 10, 200 |
1.1/ 2.56 |
13/ 76.9 |
Прогр. |
– |
mega164/324/644p, tqfp44 |
8 синф 2 дифф |
1 1, 10, 200 |
1.1/ 2.56 |
65/ 15 |
Прогр., автотриг. |
– |
mega164/324/644/1284a/pa, pdip40, tqfp44 |
8 синф 2 дифф |
1 1, 10, 200 |
1.1/ 2.56 |
13/ 15 |
Прогр., автотриг. |
– |
mega16/32u4 tqfp44 |
12 синф 1 дифф |
1 1, 10, 40,200 |
2.56 |
65/ 15 |
Прогр., автотриг. |
ДТ1 USB |
mega16/32/64M1 tqfp32 |
11 синф 3 дифф |
1 5, 10, 20, 40 |
2.56 |
8/ 120 |
Прогр., автотриг |
ДТ1 CAN |
90pwm2-B so24 90pwm3-B so32 |
8с + 1д 11с + 2д |
1, 5, 10, 20, 40 |
2.56 |
8/ 125 |
Прогр., автотриг |
DAC10, pwm64MHz |
90pwm216 so24 90pwm316 so32 |
8с + 1д 11с + 2д |
1, 5, 10, 20, 40 |
2.56 |
8/ 125 |
Прогр., автотриг |
DAC10, pwm64MHz |
1) ДТ – встроенный датчик температуры
Набор регистров АЦП
Состав регистров и битов управления и состояния зависит от модели МК.
ADCSR (ADCSRА) - регистр состояния и управления:
7 |
ADEN |
ADC Enable |
Разрешение работы АЦП (1) |
R/W |
0 |
||||||||
6 |
ADSC |
ADC Start Conversion |
Запуск преобразования записью 1 |
R/W |
0 |
||||||||
5 |
ADFR (ADATE) |
ADC Free Run Select (ADC Auto Trigger En.) |
Выбор режима: 0 – однократный, 1 – циклический (Выбор запуска: 0 – прогр, 1 – триггерный (SFIOR)) |
R/W |
0 |
||||||||
4 |
ADIF |
ADC Interrupt Flag |
Уст-ся по завершению преобразования, сбрасывается: - аппаратно при входе в ISR(ADC_vect), - программно записью 1 |
R/W |
0 |
||||||||
3 |
ADIE |
ADC Interrupt Enable |
Разрешение прерывания ADC_vect |
R/W |
0 |
||||||||
2 |
ADPS2 |
ADC Prescaler Sel 2 |
|
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
R/W |
0 |
1 |
ADPS1 |
ADC Prescaler Sel 1 |
|
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
R/W |
0 |
0 |
ADPS0 |
ADC Prescaler Sel 0 |
|
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
R/W |
0 |
|
|
|
fadc = fclk / … |
2 |
2 |
4 |
8 |
16 |
32 |
64 |
128 |
|
|
Имена скобках – для более современных моделей, например, ATmega16.
ADMUX - регистр выбора канала и настройки источника опоры, в ранних моделях АЦП (AT90S8535) использовались только биты MUX2…0:
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
REFS1 |
REFS0 |
ADLAR |
MUX4 |
MUX3 |
MUX3 |
MUX1 |
MUX0 |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Биты выбора источника опорного напряжения (ATmega16):
REFS1 |
REFS0 |
Выбор источника |
0 |
0 |
Внешний через вход AREF, внутренний выключен |
0 |
1 |
Аналоговое питание AVCC, внешний конденсатор к AREF |
1 |
0 |
Резерв |
1 |
1 |
Внутренний источник 2.56 В с внешним конденсатором к AREF |
ADLAR [ADC Left Adjust Result] – бит сдвига результата влево (1), 0 - вправо.
MUX4…0 – выбор канала и предварительного усиления:
0…7 – синфазный канал 0…7 с ku = 1 (достаточно MUX2…0),
8…29 – дифференциальные каналы с предварительным усилением 1, 10, 200,
30 – внутренний источник 1.22 В,
31 – потенциал 0 В.
ADC(H/L) – двухбайтный регистр результата. По умолчанию старший бит результата в ADC.9, младший – в ADC0; при ADLAR=1 старший бит – в ADC15, младший – в ADC6.
SFIOR [Special Function IO Register] – три старших бита (ADTS2…0) выбирают сигнал триггерного запуска преобразования, в качестве которого используется фронт флага прерывания (только в современных моделях):
ADTS2 |
ADTS1 |
ADTS0 |
Выбор триггерного сигнала |
0 |
0 |
0 |
Циклический режим |
0 |
0 |
1 |
Аналоговый компаратор |
0 |
1 |
0 |
Внешнее прерывание INT0 |
0 |
1 |
1 |
Совпадение блока сравнения таймера/счетчика 0 |
1 |
0 |
0 |
Переполнение таймера/счетчика 0 |
1 |
0 |
1 |
Совпадение блока сравнения В таймера/счетчика 1 |
1 |
1 |
0 |
Переполнение таймера/счетчика 1 |
1 |
1 |
1 |
Захват таймера/счетчика 1 |
Примеры использования
Простейшая функция выполнения преобразования в режиме программного (то есть однократного) запуска read_adc() рассмотрена ниже. Для настройки АЦП на этапе инициализации необходимо выбрать источник опоры, тактирование и включить модуль:
ADMUX=(1<<REFS0);//Выбор опорного напряжения на входе AVCC+c(AREF)
ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1);//ВклАЦП, fadc=fclk/Kps=8M/64=125кГц
unsigned int read_adc(unsigned char channel) {
ADMUX = channel | (1<<REFS0);//sel ref & ch
ADCSRA |= (1<<ADSC); //Start convesion
while ((ADCSRA & (1<<ADIF))==0);//wait ready
ADCSRA |= (1<<ADIF); //reset ready
return ADC;//read result
} // ***************************************
Входной параметр функции представляет собой номер канала, он объединяется с выбором опоры для загрузки в ADMUX. Далее выполняется запуск преобразования (установкой бита ADSC), ожидание завершения преобразования (флаг ADIF) и сброс флага готовности, завершается чтением регистра результата.
Данная функция позволяет использовать все имеющиеся на борту каналы в любой последовательности.
При частоте тактирования МК 8 МГц, выборе тактирования АЦП ближе к максимальной частоте (200 кГц) время выполнения функции составляет 114 мкс. Большая часть этого времени тратится на ожидание готовности.
Для экономии времени процессора можно использовать прерывание по готовности для копирования результатов. При необходимости, можно организовать поочередное чтение нескольких каналов. Настройки инициализации и программа прерывания для обслуживания каналов с первого (ADC0) по восьмой (ADC7) приведены ниже.
ADMUX=(1<<REFS0);//AVCC+c(AREF), channel=0
//Вкл.АЦП, Запуск, РазрешПрерыв, fadc=125кГц
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1);
sei();
ISR(ADC_vect) {
static unsigned char channel=0;
value[channel] = ADC;//read result
if(channel < LAST_CHANNEL) channel++; else channel = FIRST_CHANNEL;
ADMUX = channel | (1<<REFS0);//sel ref & ch
ADCSRA |= (1 << ADSC);
} // ***************************************
Циклический режим удобнее всего использовать для непрерывных преобразований в одном канале, получаем максимальную частоту преобразования. Пример с этим режимом будет рассмотрен ниже, в разделе ЦАП.
Пример с аппаратным запуском
Терморегулятор
В этом примере мы рассмотрим не только алгоритм управления преобразованиями, но и схемотехнику согласования датчика сигнала со входом АЦП.
Напомним, что терморегулятором называется устройство, выполняющее измерение и индикацию температуры, сравнение с заданным уровнем (уставкой) и управляющее выходом по определенному закону регулирования. При использовании дискретного выхода доступны только ключевые законы регулирования (нагреватель, холодильник, в диапазоне, вне диапазона), при наличии аналогового выхода возникает возможность использовать пропорциональный (П), либо пропорционально-интегральный (ПИ) либо пропорционально-интегрально-дифференциальный (ПИД) законы регулирования. Нередко в одном корпусе объединяют несколько независимых каналов измерения/регулирования (до 8).
Датчиком температуры называется устройство, обеспечивающее преобразование температуры в пропорциональный сигнал напряжения или тока. В общем случае делятся на контактные и бесконтактные.
Как правило, в задачах промышленной автоматики нагреваемые объекты имеют значительную тепловую инерцию, то есть значительную постоянную времени изменения температуры (от единиц секунд до часов). В случае малых значений (менее секунды) приходится учитывать постоянную времени датчика температуры. Контактные датчики имеют значительную постоянную времени - от десятков секунд до 0.2 с (термопара без чехла). Бесконтактные датчики (пирометры) имеют наименьшие значения постоянной времени порядка 0.01 с.
Контактные датчики представлены тремя группами:
1) термосопротивления (ТС) или терморезисторы из металлической проволоки (медь для температур С или платина – С), сопротивление линейно растет с ростом температуры R(T) = R0 (1 + ТКС*Т), Т – значение температуры, R0 – значение сопротивления при определенной температуре, обычно при 25 С, ТКС – температурный коэффициент изменения сопротивления, для металлов положительный;
2) полупроводниковые, сопротивление зависит от температуры, чаще всего нелинейно: термисторы (ТКС < 0) и позисторы (ТКС < 0), диапазон измерения от -40 до +120(150) С,
3) термоэлектрический преобразователь (ТЭП) состоят из спая металлических проволок двух разных металлов, для краткости называется «термопара» [thermocouple], является источником ЭДС пропорциональной температуре (десятки мВ).
Полупроводниковые датчики самые дешевые и широко применяются в бытовых устройствах. Термосопротивления имеют самый высокий класс точности, платиновые имеет значительную цену. Термопары наиболее распространены в технологиях нагрева металлов. Быстродействие контактных датчиков невелико и определяется конструкцией. Самая малая постоянная времени у бескорпусной термопары – порядка 0.2 с, но постоянная времени нагреваемых объектов обычно гораздо больше..
Бесконтактные датчики используют излучение нагретых тел в оптическом или инфракрасном диапазоне, называются пирометрами. Диапазон температур от до . Являются самыми дорогими устройствами с пропорциональным токовым (4-20 мА) или цифровым (последовательные интерфейсы в стандартах RS-232 или RS-485) выходом. Постоянная времени варьируется от 10 до 200 мс.
Для согласования выхода датчика со входом АЦП надо выбрать схему подключения, определить диапазон напряжений, соответствующий заданному диапазону температур, выбрать источник опорного напряжения. Также следует не забыть о подавлении шумов (помех) хотя бы с помощью емкостного или резистивно-емкостного фильтра нижних частот, постоянная времени может приближаться к постоянной времени самого датчика.
Как привило, сигнал на входе АЦП близок к постоянному, но может содержать колебания и шумы различных частот. Аппаратный НЧ-фильтр на входе АЦП в простейшем случае состоит из интегрирующей RC-цепи (постоянная времени τ = RC, полоса пропускания ограничена частотой f = 2π / τ) и выполняет следующие функции:
1) подавление не информативной части спектра входного сигнала, прежде всего – высокочастотные шумы (1…10 МГц), связанные с коммутационными процессами в силовых полупроводниковых вентилях (тиристорах, транзисторах) и низкочастотные шумы (50…300 Гц), связанные с промышленной сетью электропитания;
2) так называемый «антиалайзинговый» фильтр для предупреждения появления псевдочастот в спектре восстанавливаемого сигнала.
Выбор типа и конструкции датчика определяет не только диапазон измерения, но и точность измерения (вместе с АЦП и другими элементами тракта измерения). При расчете бюджета погрешностей по методу наихудшего случая общая погрешность есть сумма погрешностей всех элементов тракта измерения.
При подключении полупроводниковых датчиков для преобразования изменения сопротивления в изменение напряжения используют простой делитель напряжения, вторым плечом выступает обычный резистор соответствующей точности. Питание такого делителя удобно выполнять от цифрового питания VCC, это же напряжение используется для опоры АЦП. При расположении датчика RT(T) «сверху» (то есть между VCC и средней точкой) напряжение на входе АЦП U(T) = VCC * R / (R + RT(T)), при расположении RT(T) между нулем питания и средней точкой U(T) = VCC * RT(T) / (R + RT(T)). В параллель нижнему плечу делителя обычно ставят конденсаторы фильтра. Точность измерения в этом случае составит 5…10 %, разрешение зависит от разрядности АЦП и использования диапазона опорного напряжения, реальная разрядность вряд ли превысит 8-9 разрядов.
Использование подобной схемы при подключении высокоточного термосопротивления сталкивается с проблемой влияния падения напряжения от тока, питающего датчик. Для компенсации этого влияния используют трех и четырехпроводные схемы на базе резистивных мостов из высокоточных резисторов. Естественно, в этом случае стоит использовать хороший внешний источник опорного напряжения. Но все эти меры оправданы при разрядности АЦП 12 и выше.
При подключении термопары требуется предварительное усиление. Как уже упоминалось, можно использовать встроенные в МК предусилитель, но эффективная разрядность 8 или 7 бит означает в лучшем случае относительную точность измерения 0.4 – 0.8 % (при 100 % использовании диапазона АЦП и отсутствии погрешности источника опоры).
Проще и надежнее использовать специализированные инструментальные усилители. Например, для термопары ХА (К) типа предназначены усилители AD595 / AD597 с коэффициентом усиления 245.5, что позволяет получить общий коэффициент передачи 10 мВ/ºС, диапазону температур от 0 до 1000 ºС соответствует напряжение от 0 до 10.0 В. Если диапазон сигнала на выходе усилителя больше диапазона АЦП удобно использовать резистивный делитель (из высокоточных резисторов) общим сопротивлением несколько килоОм, нижнее плечо шунтируется конденсаторами помехоподавляющего фильтра нижних частот. Такое решение позволяет получать точность измерения порядка 2.5…5 % при разрядности 10 (то есть дискретности в одну-две тысячные диапазона АЦП).
Собственно АЦ- преобразование занимает небольшую долю времени в цикле измерения, поэтому достаточно использовать программный запуск преобразования с ожиданием готовности. Для снижения влияния шумов следует выбрать частоту тактирования АЦП примерно в середине разрешенного диапазона, кроме того, использовать остановку работы процессора на время преобразования.
Масштабирование
Для индикации значения температуры в цифровом виде в заданном формате (целое число градусов или целое число с единицей, равной 0.1 градуса по шкале Цельсия, а также по шкалам Кельвина или Фаренгейта) в общем случае значение, полученное с АЦП необходимо умножить на дробный коэффициент и прибавить величину смещения (вспомните Пример 1.3).
Программная фильтрация последовательности значений АЦ преобразования позволяет решить следующие задачи:
1) подавление отдельных «ложных» значений (резко выделяющихся из ряда последовательных чтений), вызванных шумом и сбоями в работе цифровых узлов,
2) дополнительное подавление шумов и НЧ-колебаний, пропущенных аппаратным НЧ фильтром на входе АЦП; это, прежде всего, фильтры с полосой пропускания ниже 50 Гц и фильтры с гибко настраиваемой полосой пропускания..
При этом нельзя забывать, что любой фильтр вносит задержку. Это актуально при использовании АЦП в контуре отрицательной обратной связи, так как существует вероятность создания условий для самовозбуждения из-за сдвига фазы на пол периода.
Принципы программного измерения средних и эффективных значений сигналов со значительной переменной составляющей рассмотрены в [БДН МУ к ПЗ по МПСУ, 2007, с.8-10].
