Содержание
Часть 1. Мат. часть. В ней рассматривается датчик, не привязанный к какому-то конкретному измеряемому параметру. Рассматриваются статические и динамические характеристики датчика.
Часть 2. Датчики климат-контроля. В ней рассматриваются особенности работы с датчиками температуры, влажности, давления и газового состава
Часть 3. Датчики электрических величин. В ней я коснусь измерения тока и напряжения
5. датчики температуры
Ни один проект по автоматике системы климат-контроля не обходится без датчика температуры, главная задача которого — с необходимой точностью выдавать температуру требуемого объекта, будь то воздух в помещении, охлаждающая жидкость, прожаренный стейк или расплавленный металл(В климат-контроле, ага).
5.1 Термопары
Генераторные датчики температуры, представляющие собой два проводника различных материалов, спаянные с одного конца друг с другом.
Главное преимущество термопар — их широкий диапазон температур. Ограниченный, по сути, абсолютным нулем и температурой плавления металлов — т. е. способен измерять там. Где другие датчики просто бессильны — от -270 до +1800 градусов цельсия и выше.
Термопары бывают разные и в зависимости от типа используемых материалов имеют различный диапазон рабочих температур.
Их конструкция также зависит от применения. Например, в одной из лабораторий моей родной кафедры валялись вот такие 200-300мм дрыны:
Рисунок 1 Термопара типа К для печей сопротивления
А вот так выглядят всеми известные термопары типа К, которые идут в комплекте с мультиметрами(фото из моей коллекции):
Рисунок 2: Термопары типа К для мультиметров.
В ГОСТ Р 8.585-2001 перечисляются следующие типы термопар с их составом, буквенным обозначением и рабочим диапазоном (в скобках указан коэффициент термоЭДС для 25 градусов):
- платинородий-платиновые — ТПП13 — Тип R, диапазон -50 +1600 С (9мкВ/С).
- платинородий-платиновые — ТПП10 — Тип S, диапазон -50 +1600 С(6мкВ/С).
- платинородий-платинородиевые — ТПР — Тип B, диапазон 0 +1800 С
- железо-константановые (железо-медьникелевые) ТЖК — Тип J, диапазон -210 +1200 С(52мкВ/С)
- медь-константановые (медь-медьникелевые) ТМКн — Тип Т, диапазон -270 +400 С(41мкВ/С)
- нихросил-нисиловые (никельхромникель-никелькремниевые) ТНН — Тип N, диапазон +270 +1300 С(27мкВ/С)
- хромель-алюмелевые — ТХА — Тип K, диапазон -270 +1372 С(41мкВ/С).
- хромель-константановые ТХКн — Тип E, диапазон -270 +1000 С(61мкВ/С).
- хромель-копелевые — ТХК — Тип L, диапазон -200 +800 С
- медь-копелевые — ТМК — Тип М, диапазон -200 +100 С
- сильх-силиновые — ТСС — Тип I (не представлена в ГОСТ, есть в википедии)
- вольфрам и рений — вольфрамрениевые — ТВР — Тип А-1, А-2, А-3, диапазон 0 +1800, (+2500 для А-1) С.
Сами по себе являются высокоточными датчиками (точность вплоть до ±0,01 градусов), но такую точность весьма непросто получить.
В основе работы датчиков термоэлектрический эффект, открытый в 1821 году немецким физиком Томасом Зеебеком. Его суть заключается в том, что если спаи двух разнородных материалов, образующих замкнутую электрическую цепь имеют разную температуру T1 и T2, то в цепи появляется электрический ток, направление которого зависит от знака разности температур.
Рисунок 3: Термопара.
Но здесь появляется первая проблема — ЭДС зависит от разности температур между горячим и холодным спаями, поэтому температуру холодного спая следует знать с необходимой точностью, чтобы определить температуру горячего конца.
Проблему добавляет и то, что фактически, точки подключения термопары к измерительной системе также являются точками спая двух разных металлов, что вносит свою погрешность. Поэтому поместим оба холодных конца рядом, дабы выровнять их температуру и будем контролировать ее еще одним датчиком:
Рисунок 4: Программная компенсация холодного спая
В этом случае, измерив с конечной точностью абсолютным датчиком температуры температуру холодного спая мы программно сможем ее скомпенсировать. Почему нельзя сразу воспользоваться одним абсолютным датчиком? Покажите мне еще один датчик, способный измерить температуру расплавленного металла.
Если абсолютного датчика под рукой нет, а измерять надо, возьмем еще одну термопару, подключим ее последовательно в противофазе и поместим в среду, температура которой нам известна — например вода со льдом:
Рисунок 5: Аппаратная компенсация холодного спая
Но на мой взгляд при наличии широкодоступных точных датчиков температуры использовать бачок с тающей водой, требующей постоянного контроля, немного не технологично. Поэтому в документации встречаются варианты термостатированных холодных спаев, в которых с помощью точного термостата поддерживается заданная температура.
С проблемой относительности разобрались, теперь попробуем снять показания с термопары. И тут нас поджидают еще две проблемы:
Проблема номер раз — термоЭДС измеряется в микровольтах. Например, для термопары типа K температурный коэффициент составляет 41мкВ/градус. Это означает, что милливольтами запахнет только градусов через 25 разницы температур.
Напомню из прошлой части, что 12-разрядный АЦП при опорном напряжении 3,3В имеет чувствительность 800мкВ. т. е. В нашем случае 20 градусов/деление. Неплохая однако погрешность. Конечно нужно учитывать малый рабочий диапазон выходного напряжения термопары и ставить усилители на базе ОУ, или включать усиление в самом АЦП.
Там возникнут другие сложности вроде точности оцифровки АЦП, собственных шумов аналоговых трактов ОУ и АЦП и т. п. В последующих главах мы подробно рассмотрим вопрос отношения сигнал/шум, а пока можете почитать книгу Data Conversation Handbook, глава 2
Будем следовать одной истине — использовать прецизионные и малошумящие ОУ и АЦП. В списке дополнительной литературы есть множество различных вариантов схем подключения. Однако одна из наиболее распространенных схем в большинстве массовых измерительных приборов — с использованием терморезистора:
Рисунок 6: Использование терморезистора для компенсации температуры холодного спая
Проблема номер два — термопара нелинейна. Нелинейность выглядит следующим образом:
Рисунок 7: Нелинейность термопары
Но благо все в курсе этой нелинейности, каждые поверенные измерения аккуратно занесли в табличку и высчитали точные коэффициенты полиномов вида:
(1)
Для расчета температуры исходя из значения ЭДС и наоборот:
(2)
Для каждого типа термопары в ГОСТ 8.585-2001 заботливо приведены все необходимые коэффициенты аппроксимирующих полиномов для температур относительно 0 градусов цельсия. Вот список коэффициентов полинома для распространенной термопары типа К:
Рисунок 8: Список полиномов для термопары типа К в диапазоне температур от 0 до 500 градусов цельсия
В принципе, особой проблемы посчитать итоговое значение труда не составит, однако если ваш холодный спай болтается в воздухе при неизвестной температуре — кому это надо?
Как итог — термопара — один из лучших датчиков для точного измерения очень горячих, либо очень холодных вещей.
А в моей любимой книге детства — «Радиоэлектронные игрушки» Войцеховского, можно найти описание конструкции термогенератора, от которого предлагается запитать, например, транзисторный радиоприемник. А на марсе от термогенератора аналогичной конструкции, только самую малость потехнологичнее, питается марсоход Curiosity – На Geektimes есть обзорный пост про РИТЭГи.
Рисунок 9: Темроэлектрическая батарея 0,6В 8мА
Минутка бессмысленной и беспощадной практики.
У нас есть отладочная плата на микроконтроллере ATmega1280, пара термопар и желание измерить температуру с хорошей точностью. И у нас это не получится.
АЦП контроллера — 10-разрядный, минимальное опорное напряжение может быть выставлено в 1,1В.
Тогда чувствительностью АЦП составит:
(3)
Аналоговые входы АЦП позволяют работать в дифференциальном режиме с максимальным усилением в 200 раз. Правда с таким усилением опорное напряжение может быть только 2,56В, да и эффективных остается лишь 7 разрядов. Тогда чувствительность АЦП составит:
(4)
Что примерно в 2,5 раза меньше чем чувствительность термопары типа К(41мкВ). т. е. Теоретически, точность измерительного тракта составит не лучше ± 2,5 градусов. Практически, нам помешают шумы. А их согласно таблице 31-8 датащита целых +-10 знаков — т. е. итоговая точность составит не лучше +-25 градусов. Хе-хе. Это мы еще не учли два полуметровых провода до термопар, отсутствие должной фильтрации аналогового питания и питание всей системы от неплохо шумящего USB. Дай скотче хотя бы в ± 50 градусов уложиться.
Напишем программу, которая будет работать на прерываниях (я набросал ее для одного из комментариев). Средой Arduino воспользуемся как загрузчиком:
Рисунок 10: Натурный эксперимент с двумя термопарами, стаканами и скрепками
void setup()
{
autoadcsetup();
}
void loop()
{
}
float coeff[] = {0,
2.508388e1,
7.860106e-2,
-2.503131e-1,
8.315270e-2,
-1.228034e-2,
9.804036e-4,
-4.413030e-5,
1.057734e-6,
-1.052755e-8
};
void autoadcsetup(){
//set up TIMER0 to 61Hz
//TIMER0_OVF will be the trigger for ADC
/*normal mode, no prescaler
16MHz / 256 /1024 = 61 Hz*/
TCCR0B = (1 << CS02) | (1 << CS00);//timer frequency = clk/1024
//set ADC.
ADMUX = (1 << MUX3) | (1 << MUX1)| (1 << MUX0) | (1 << REFS1)| (1 << REFS0);//10-bit mode, ADC9-ADC8 channel, Gain 200, 2.56V ref
ADCSRA = (1 << ADEN) | (1 << ADATE) | (1 << ADIE) | (1 << ADPS2)| (1 << ADPS1)| (1 << ADPS0);//TUrn ADC On, trigger enable, Interrupt enable, sysclk/128=125kHz_ADC_clk=9.6kHz conv freq(13ticks per conversion)
ADCSRB = (1<< ADTS2) | (1 << MUX5);//Auto trigger source
//set UART to 8-n-1 1Mbod:
UBRR0H = 0;//9600(use Examples of Baud Rate Setting table from datasheet)
UBRR0L = 103;//9600
UCSR0B = (1<<TXEN0);//enable Transmitter
UCSR0C = (3<<UCSZ00);//8-bit mode
}
int32_t result=0;
float t=0;
ISR(ADC_vect){
if( ( UCSR0A & (1<<UDRE0)) ){
//calc:
t=0;
result = (ADCH >>1)*2560/512;//calc voltage in mV
float edc = static_cast<float>(result);//convert to float
for (uint8_t i = 0; i < 10; i++){
t += coeff[i] * pow (edc, i);
}
UDR0 = static_cast<uint8_t>(t);
}
}
Для кипятка вокруг одной термопары и стакана с тающим льдом вокруг другой на выходе сплошная каша со средним значением первых двух строк 124 градуса, что очень даже хороший результат — будем считать что в точность +-25 градусов мы уложились.
Рисунок 11: Сырой вывод данных
Разумеется, практической значимости данная халтурка не представляет и для измерения температуры с помощью термопары нужно использовать более точные АЦП. Хорошим встроенным АЦП обладает к примеру микроконтроллер ADuCM360, причем он рассчитан именно на столь малые входные сигналы. Существуют специализированные внешние АЦП для термопар — например компания Maxim Integrated выпускает несколько микросхем для термопар — MAX31850, MAX31851, MAX31855, MAX31856. Есть драйверы и у компании Analog Devices Бюджетным будет вариант использования предварительных усилителей на малошумящих ОУ для нашего АЦП. У меня хорошие результаты показывал LMP2011.
5.2 Термометры сопротивления и терморезисторы
Как известно, сопротивление металла изменяется от температуры окружающей среды. Этот эффект используется для проведения высокоточных (до тысячных долей градуса) измерений температуры с помощью термометров сопротивления. Будучи сделанным не из металла, а из полупроводника, мы получим терморезистор.
Рисунок 12: Платиновые RTD от Honeywell
Термометры сопротивления позволяют работать в достаточно широком диапазоне температур — от -200 до 850 градусов.
У термометра сопротивления имеется две основные характеристики:
- Базовое сопротивление при определенной температуре. Рекомендуемое — 10, 50, 100, 500, 1000 Ом…
- Температурный коэффициент сопротивления в тысячных в пропромилле на градус кельвина (ppm/K).
Температурный коэффициент сопротивления — это отношение относительного изменения сопротивления к изменению температуры:
(5)
Таким образом, зная текущее сопротивление терморезистора и зная его ТКС и номинальную температуру, можно вычислить текущую температуру:
(6)
На термометры сопротивления имеется ГОСТ Р 8.625-2006, в котором нормируются термометры из платины (ТКС = 0,00385 и 0,00391), а также из меди(ТКС 0,00428) и никеля (ТКС 0,00617). Номинальным сопротивлением для термометров является сопротивление при температуре 0 градусов. Также как и термопары термометры сопротивления имеют некоторую нелинейность, но в ГОСте заботливо приведены коэффициенты полинома. К слову — гораздо более простые, чем для термопар.
Например, для платинового термометра с ТКС = 0,00385 и диапазона измерений от -200 до 0 градусов будет уравнение вида:
(7)
А для диапазона 0-850 градусов вида:
(8)
Со следующими значениями коэффициентов:
(9)
Одни из популярных — эталонные платиновые термометры серии 700 от Honeywell. Хотя по стоимости платиновые термометры не из дешевых — от 5$ и выше в зависимости от диапазона температур и точности прибора.
Измерить сопротивление можно различными методами. Наиболее простой и рекомендуемый ГОСТ-ом — измерительный мост с источником напряжения. С другой стороны, подключение к источнику тока и использование дифференциального входа АЦП даст линейность измерений.
Рисунок 13: Различные способы подключениях двухпроводных RTD
Процитирую тов Stross из комментариев к предыдущей части:
Мост можно рассмотреть как два резистивных делителя, включенных параллельно. Один из них задает «опорное напряжение» для второго. И таким образом, при использовании моста вы будете своим дифференциальным АЦП измерять напряжение на делителе не относительно нуля, а относительно некой опоры. Это хорошо скажется на чувствительности — вы сможете задать АЦП больший коэффициент предусиления и добиться того, что рабочий диапазон АЦП будет соответствовать узкому диапазону сопротивлений.
С другой стороны Ваш АЦП в режимах усиления входного сигнала не должен шуметь как одинокий ручей текущий с горы фудзи трактор
В приложении к разделу есть множество полезных ссылок по подключению RTD и способам повышения точности.
Одна из проблем металлических термометров сопротивления — низкий ТКС, за счет чего необходим измерительный тракт с высокой чувствительностью. Но это лишь конструктивная проблема — измерить сопротивление с высокой точностью в отличие от очень малых токов и напряжений не представляет особого труда.
Если нам не нужна высокая точность и достаточно ±1-2 градусов, то можно воспользоваться полупроводниковыми терморезисторами, имеющими на порядки более высокий ТКС. Например терморезисторы серии KTY84 от NXP имеют ТКС=0,61. С другой стороны термисторы имеют меньший диапазон рабочей температуры порядка -40=300 градусов.
А еще терморезисторы гораздо более нелинейны. Но в датащитах опять таки заботливо приводятся значения ТКС и номинального сопротивления для различных значений температуры:
Рисунок 14: Таблица соответствия ТКС, номинального сопротивления и температуры
По этой таблице не составит особого труда построить кусочно-линейную функцию и использовать ее для определения сопротивления.
5.3 Линейные аналоговые преобразователи
Рисунок 15: линейный аналоговый датчик LM35DZ
Перейдем к более интегрированным решениям. Рассмотрим микросхему аналогового линейного датчика температуры. Эта микросхема подключается к источнику напряжения и дает на выходе аналоговый сигнал, линейно зависящий от температуры с наклоном 10-20мВ/К. Диапазон измеряемых температур намного уже чем у ранее представленных датчиков и составляет в среднем -40+125 градусов. Так как наш простенький 10-разрядный АЦП имеет чувствительность 1мВ, его с лихвой хватит, чтобы считать показания с данного датчика.
Еще одно полезное свойство данных датчиков — их выходное напряжение не зависит от питающего напряжения, которые может изменяться в широких пределах — например, для датчика LM35 от National Semi диапазон питающих напряжений — 4-30В. Точность датчиков — 1-2 градуса. Так выглядит график точности датчика в зависимости от температуры:
Рисунок 16: Точность датчика в зависимости от температуры
Больше про этот датчик особо сказать нечего, так что расходимся.
5.4 Цифровые датчики температуры
Цифровые датчики температуры за своим огромным ассортиментом скрывают удобные интегрированные решения, предоставляющие возможность получать показания температуры в готовом виде посредством цифровых интерфейсов.
Как правило, цифровые датчики температуры подключаются по интерфейсам SPI и I2C. Что касается меня — датчики температуры — это низкоскоростные устройства и тратить на них SPI расточительство.
В качестве примера рассмотрим комбинированный датчик температуры и влажности SHT10:
Рисунок 17: Датчик SHT10 общий вид
Рисунок 18: Погрешность датчика
Но и этот датчик не без косяка — его интерфейс «оптимизирован». Типа для того, чтобы его было удобнее считать. А еще к нему нельзя адресоваться как к I2C устройству.
Благо датчик позволяет подключать себя совместно с другими устройствами и нужно лишь программное переключение протокола общения. На нем остановимся чуть подробнее:
Для старта передачи команды необходимо передать стартовую последовательность:
Рисунок 19: Стартовая последовательность
После стартовой последовательности передается байт команды, состоящий из 0 бит адреса (поддерживается только адрес 000) и 5 бит команды.
Рисунок 20: Список команд
После отправки команды на измерение температуры или влажности, в зависимости от разрядности измерений 8, 12 или 14 бит, процедура измерения займет 20, 80 или 320мс. По завершению процесса измерений датчик притянет линию DATA в ноль и уйдет спать. Как только контроллер получает данный сигнал, путем тактирования линии SCK можно получить два байта данных и байт контрольной суммы(если она активирована), причем по окончанию приема каждого байта необходимо притягивать контроллером притягивать землю в ноль. Дапнные передаются с правым вырваниванием, т. е. Для 14-разрядного значения старший бит данных появится только на 5 тик линии SCK. За подробностями отправляю к датащиту.
Датчик температуры имеет линейную характеристику и полученное значение датчика пересчитывается с учетом напряжения питания и наклона характеристики:
Рисунок 21: Расчет температуры
Разумеется, есть датчики температуры с нормальным I2C интерфейсом. Например, LM75A от NXP.
Его диаграмма считывания данных подчиняется базовым принципам I2C:
Рисунок 22: Считывание данных температуры с датчика LM75
Это 11-разрядный датчик, с разрешением 0,125 градуса цельсия, выходные данные хранятся в двух регистрах данных, имеющих определенный адрес. С помощью команд прогтокола I2C для нашего устройства, имеющего адрес 1001XXX (три младших бита выставляются пользователем и позволяют подключать к одной шине до 8 таких датчиков) выставляем указатель адреса регистра с которого начнем производить считывание и с помощью команды чтения считываем два регистра. Полученное знаковое значение умножаем на 0,125 и получаем итоговое значение температуры в градусах цельсия. Удобно.
5.5 DS18B20
Рисунок 23: Цифровой датчик DS18B20
Данному датчику стоит уделить особое внимание. Это 12-разрядный датчик температуры с рабочим диапазоном -55 + 125 градусов цельсия, подключаемый по протоколу 1-wire. Его главное преимущество — этих датчиков можно на одну линию навешать многие десятки штук и все они будут работать. Датчик весьма точный ± 0,5 градуса, однако медлительный — время измерения составляет 750мс.
Внутри датчика 9 регистров, в регистрах 0 и 1 хранится значение измеренной температуры, в регистрах 2 и 3 могут быть использованы как память общего назначения, 4 регистр хранит конфигурацию согласно следующей таблице:
Рисунок 24: Назначение бит конфигурационного регистра
Девятым байтом регистровой памяти идет CRC. Рассчитываемый по следующей формуле на основании первых 8 регистров:
(10)
Для того, чтобы запустить команду вычисления температуры необходимо отправить команду 0x44. По завершению процесса измерения данные будут лежать в первых двух байтах регистровой памяти вплоть до следующего измерения. Считывание 9 байт данных регистровой памяти осуществляется путем подачи команды 0xBE
В целом данный датчик, имея весьма демократичную цену, позволяет, используя длинные линии связи, организовать сеть датчиков, покрывающую ту или иную площадь. Например, можно сеткой разместить датчики в теплице и контролировать температурный градиент внутри нее.
5.6 ИК-датчик температуры
Данный обзор был бы неполным без бесконтактных ИК датчиков температуры. Я вскользь упомянул о нем когда рассказывал о плате CC3200-launchxl - там установлен именно такой датчик.
Рисунок 25: ИК-термодатчик
Эти датчики состоят из тонкой пластинки. Поглощающей ИК излучение, вследствие чего происходит ее нагрев, который детектируется описанными выше термодатчиками. Например в датчике TMP006 от Texas Instruments судя по изображению внутри набор последовательно-включенных термопар, сигнал с которых снимается и преобразуется в цифровой с доступом по I2C. Хозяйке на заметку — этот датчик измеряет температуру от -40 до +125 градусов с точностью ± 1,5 градуса. Я, как обладатель этого датчика на отладочной плате, понемногу с ним играюсь.
Есть и аналоговые решения. Например датчики TPS333 от Excelitas имеют внутри себя встроенный термистор.
Рисунок 26: датчики TPS333 от Excelitas
Наиболее интересны конечно же бесконтактные ИК матрицы, на основе которых делаются тепловизоры. Например датчик D6T-44L-06 от Omron за 35 долларов представляет собой матрицу 4х4 бит, с помощью которой можно измерить температуру от 5 до 50 градусов на расстоянии до 3метров.
Рисунок 27: Область детектирования
Вот тут есть классная видеопрезентация от производителя:
Разрешение датчика конечно так себе, да и диапазон температур не шибко большой, но свою нишу такая матрица имеет, да и цена лично меня порадовала. Можно взять на заметку.
5.7 Дополнительная литература
- ww1.microchip.com/downloads/en/AppNotes/00844a.pdf
- cds.linear.com/docs/en/application-note/an28f.pdf
- www.analog.com/library/analogDialogue/archives/44-10/thermocouple.html
- www.ti.com/lit/an/snoa663b/snoa663b.pdf
- www.ti.com/lit/an/sbaa134/sbaa134.pdf
- www.ni.com/tutorial/7115/en
- www.acromag.com/sites/default/files/RTD_Temperature_Measurement_917A.pdf
- newton.ex.ac.uk/teaching/CDHW/Sensors/an046.pdf
- www.analog.com/library/analogdialogue/archives/47-09/3_wire_rtd.pdf
- www.ti.com/lit/ug/slau520a/slau520a.pdf
6 Датчики влажности
Ни одна система климат-контроля не будет полноценной без измерения относительной влажности воздуха, так как от нее зависит комфорт человека, находящегося в контролируемом помещении. Думаю многим знаком график зоны комфорта:
Рисунок 28: Зона комфорта в помещении
В России допустимые значения температуры и влажности в жилых помещениях регламентируются СанПиН 2.1.2.2645-10 «Санитарно-эпидемиологические требования к условиям проживания в жилых зданиях и помещениях»(Приложение 2).
Задача датчиков влажности — определить относительную влажность воздуха. Относительная влажность воздуха — это отношение парциального давления водяного пара в воздухе к равновесному давлению насыщенных паров при данной температуры:
(11)
Где — парциальное давление паров воды в воздухе, — равновесное давление насыщенного пара.
Есть несколько способов измерить влажность воздуха.
Конечно же стоит упомянуть классические психрометры — сборка сухого и влажного термометра, по разности показаний которых довольно точно определяется текущая влажность воздуха. Никто не запрещает взять два датчика температуры, один из них снабдить сырой ваткой и на основе их показания вычислять влажность.
Рисунок 29: Психрометр
Далее следуют механические гигрометры, где в качестве чувствительного элементы выступает обезжиренный волос либо полимерная пленка, изменяющие свою длину в зависимости от влажности.
Но нам больше интересны решения с электрическим сигналом на выходе.
Такие сенсоры реагируют на влажность изменением емкости или сопротивления гигроскопичного материала, насыщаемого влагой в количестве, пропорциональном парциальному давлению пара измеряемого воздуха. Широкое распространение получили именно емкостные датчики. Поэтому только их мы и рассмотрим.
Рисунок 30: Структура датчика влажности.
6.1 Датчики влажности с емкостным выходом
Самый простой по своей сути датчик. Представляет собой конденсатор с изменяемой емкостью. Емкость такого конденсатора в первую очередь зависит от влажности. Но не последним показателем является температура воздуха. Например, для датчика серии HCH-1000 от Honeywell чувствительность датчика составляет в среднем 0,6 пФ/%RH. При этом температурный коэффициент составляет 0,16пФ/градус. Наглядно, график изменения емкости выглядит следующим образом:
Рисунок 31: Изменение емкости датчика HCH-1000
В отличие от сопротивления. Емкость измерить гораздо сложнее. Точные профессиональные приборы — измерители иммитанса (RLC-метры) — не самое дешевое оборудование.
Простой способ измерения емкости — определение скорости заряда и разряда RC цепочки. Определяя с необходимой точностью постоянную времени заряда и зная точное сопротивление резистора, мы можем определить емкость конденсатора.
Рисунок 32: заряд конденсатора
Так как наша емкость изменяется в пределах 300-360пФ, для получения постоянной времени в 1-2мс (что будет легко поймать большинством таймеров и АЦП) потребуется сопротивление . При таком методе измерений нам требуется с необходимой точностью измерять текущий уровень заряда конденсатора, а также отмечать время, за которое конденсатор достигнет значения 63,2%. Процедуру для надежности можно повторить несколько раз.
Есть еще один способ, правда менее стабильный: раз мы измеряем период, то пусть у нас будет импульсный сигнал. Пусть емкостной датчик отвечает за частоту генерации сигнала. Изменяется влажность — изменяется выходная частота. На выходе буферного элемента D1.3 будет сигнал, частота которого зависит от емкости нашего датчика. Единственный вопрос к точности пороговых напряжений логических элементов. К слову, точность самого датчика HCH-1000 ±2%.
Рисунок 32: Простой генератор на логике
Не забудем, что для повышения точности показаний необходимо учитывать текущие показатели температуры.
6.2 Датчики влажности с выходом по напряжению
Электронная промышленность уже поработала за нас и создала приборы, выдающие готовый аналоговый сигнал. Примером таких датчиков являются датчики HIH-4010 от Honeywell, с точностью ± 8%.
Рисунок 33: Датчики влажности с выходом по напряжению. Общий вид
Для таких датчиков в датащите указываются графики зависимости выходного напряжения от влажности:
Рисунок 34: Зависимость выходного напряжения датчика от влажности
С подобными датчиками часто поставляется уникальный для каждого экземпляра калибровочный паспорт, в котором указаны значения выходного напряжения для двух различных значений влажности при определенной температуре. Достаточность указать эти данные в программе и мы получаем готовые калиброванные значения датчика.
6.3 Датчики влажности с цифровым выходом
Последним нашим датчиком в этой категории будет цифровой датчик влажности.
Один из них мы уже рассмотрели в секции датчиков температуры — это SHT1x. Однако, существует множество комбинированных датчиков влажности и температуры и честно говоря мне не попадались цифровые чисто датчики влажности, что впрочем неудивительно — одно без другого никуда.
Продолжим наш дискус касаемо расчета влажности с датчика SHT1x. Получаемые с этого датчика необходимо преобразовать. В датащите указаны необходимые формулы:
(12)
И коэффициенты полинома:
Рисунок 35: Коэффициенты полинома для версии V4
Следует отметить, что относительная влажность зависит от температуры и требует корректировки по следующей формуле:
Рисунок 36: Корректировка относительной влажности в зависимости от температуры
7 Датчики давления
Датчик давления — это датчик, регистрирующий давление измеряемой среды, которой может быть воздух, газ или жидкость.
В зависимости от задачи, может потребоваться измерять как абсолютное давление, давление относительно атмосферного давления, и дифференциальное давление — т. е. разницу давлений между двумя точками измерения.
Рисунок 37: Давление.
В технических характеристиках датчиков могут быть указаны разные единицы измерения:
- миллиметры ртутного столба — mm Hg;
- Паскаль — Па, Pa;
- Фунт-сила на кв. дюйм — Psi
- Бар — bar
- Физическая атмосфера — атм
Для оценки рабочего диапазона датчика следует помнить, что 1 атм — это примерно 1 бар или 100 кПа; аналогична 760 мм ртутного столба и 15psi. Вторым после kPa в датчиках встречается psi, так что просто запомним, что 100psi – это примерно 7 атм.
В википедии присутствует замечательная таблица с точными коэффициентами перевода из одной единицы измерения в другую: https://ru.wikipedia.org/wiki/Единицы_измерения_давления
Датчик давления представляет собой чувствительный элемент, помещенный между двумя камерами — в одной присутствует измеряемое давление, в другой — опорное. В абсолютных датчиках воздействие на кристалл идет только с одной стороны. Рассмотрим схему датчика MPX2100 от Freescale в разрезе:
Рисунок 38: Конструкция относительного и абсолютного датчика давления
На рисунке показан чувствительный элемент, который под разницей давлений изменяет свои свойства. Есть несколько видов чувствительных элементов. Один из самых распространенных — тензорезистивный — изменение сопротивления материала под воздействием деформации. Часто в качестве материала такого датчика берется монокристалл кремния. Одной из проблем является зависимость сопротивления датчика от температуры, но, как правило, во всех датчиках присутствует термокомпенсация.
Другой чувствительный элемент под воздействием давление изменяет свою емкость. В секции датчиков влажности мы уже обсудили, что данный метод проблематичен для последующих измерений, да и датчики давления с емкостным выходом мне ни разу не попались.
Также есть пьезоэлектрический эффект, где чувствительный элемент генерирует напряжение под воздействием определенного давления. У меня кстати есть один такой — он установлен в зарядной станции ЗД-6 комплекта индивидуальных дозиметров ИД-1. Зарядное устройство содержит 4 параллельно соединенных пьезоэлемента и механический усилитель, давящий на пьезоэлементы; давление создается вращающейся ручкой. Он используется для генерации напряжения в 180-250В для заряда дозиметра
Рисунок 39: Измеритель дозы ИД-1
Есть датчики и других типов — индуктивные, резонансные и прочие, но они встречаются в очень промышленных объектах и мы их рассматривать в рамках данной статьи не будем.
7.1 Аналоговые датчики давления
На выходе аналоговых датчиков давления присутствует уровень тока или напряжения, которое необходимо подать на измерительный тракт нашего прибора.
Сделаем небольшое лирическое отступление и упомянем датчики с промышленными уровнями аналогового сигнала 0-10В и 4-20мА, предназначенные для подключения к промышленной автоматике. Суровые промышленные датчики видно сразу:
Рисунок 40: Суровые промышленные датчики давления
Однако схема их включения аналогична всему тому, что было описано в разделе 3:
Рисунок 41: Подключение промышленного датчика
Установив делитель напряжения, либо подобрав шунтирующее сопротивление так, чтобы уровень выходного сигнала соответствовал входному диапазону АЦП, эти датчики можно подключать и к обычным микроконтроллерам.
С датчиками давления построенными по мостовой балансной схеме часто имеется та же проблема, что и с термопарами — многие датчики выдают всего порядка 40мВ на весь свой диапазон. Например вот так выглядит зависимость выходного напряжения от давления для датчика MPX2100:
Рисунок 42: Зависимость выходного напряжения датчика от давления
Так что вооружаемся дифференциальным малошумящим АЦП и вперед.
С другой стороны существуют более удобные, но и более дорогие датчики, имеющие на выходе сигнал 0-5В, или 0-3.3В и подобные в зависимости от напряжения питания.
К таким датчикам относится 40PC от Honeywell:
Рисунок 43: датчик серии 40PC от Honeywell
Оцифровать выходной сигнал такого датчика может любой микроконтроллерный АЦП. Вот только при своей точности в 0,2% его стоимость на рынке — порядка $40-50.
7.2 Цифровые датчики давления
Цифровой датчик давления позволяет получать все данные более технологичным способом. Суть его та же — пьезорезистивный мост, дифференциальный АЦП и интерфейс.
Вот так выглядит внутри MEMS-датчик LPS331 от ST в корпусе 3х3х1мм:
Рисунок 44: Структурная схема датчика давления LPS331
Все цифровые датчики давления имеют встроенный датчик температуры и, соответственно, термокомпенсацию. Чувствительность конкретно этого датчика давления — ± 200Па. Разумеется температуры с этого датчика также доступна, с точностью ± 2 градуса.
Одно из применений датчика давления — это барометрическая альтиметрия — т. е. определение относительной высоты. Как известно, с изменением высоты уменьшается давление воздуха. Так что выставим на земле нулевую высоту и поднявшись ввысь, или опустившись внизь можно определить пройденный путь.
Зависимость давления воздуха от высоты выглядит следующим образом:
Рисунок 45: зависимость давления воздуха от высоты
Для поиграться могу порекомендовать часы-отладочный комплект EZ430?Chronos от Texas instruments на базе контроллера CC430F6137. На хабре есть описание этих часов
В них встроен цифровой датчик давления Bosh BMP085 стоимостью $4. Он имеет рабочий диапазон 30-110кПа и размеры 5х5х1.2мм.
Рисунок 46: Через несколько минут они покажут 4500. Метров.
8 Датчики присутствия газов
Ранее описанные датчики позволяют измерить то, что мы можем ощутить самостоятельно. Но в воздухе может оказаться еще кое-что, что способно убить нас совершенно незаметно.
Рисунок 47: датчик присутствия газа
Это газ. CO2, CO, метан, пропан, аммиак, водород, этанол, хладагенты и прочие газы., большинство из которых проблематично учуять, но которые приведут к серьезным последствиям.
Датчик определенного типа рассчитан, как правило, только на один конкретный газ, так что если вы хотите контролировать различные газы, то нужно использовать несколько датчиков.
Наибольшее распространение имеют различные датчики FIGARO, так что именно их и рассмотрим на примере датчика угарного газа TGS2442. Чувствительным элементом таких датчиков является оксид олова (SnO2). Датчик имеет многослойную структуру.
Рисунок 48: Структура датчика газа
Сначала идет селективный фильтр, пропускающий целевой газ и уменьшающий влияние других газов. После имеется камера с чувствительным элементом о четырех контактах. Два контакта предназначаются для нагревателя и еще два — для резистора, сопротивление которого зависит от концентрации газа.
Подключение датчика производится следующим образом:
Рисунок 49: Подключение датчика газа
Точность определения концентрации напрямую зависит от точности времени подогрева и времени снятия сигнала. Обе цепи подключаются к питанию на короткое время чтобы предотвратить перегрев чувствительного материала.
На нагреватель подается напряжение в 4.8В каждую секунду, длительностью 14мс. Средний ток нагревателя 200мА. За 5мс до включения нагревателя на 5мс включается схема измерителя и производится замер сопротивления.
Рисунок 50: Цикл работы датчика газов
Итоговая концентрация газа определяется в зависимости от отношения измеренного сопротивления к сопротивлению при концентрации газа 100 пропромилле. Зависимость хорошо видно на следующем графике:
Рисунок 51: Чувствительность к газам. Ro = Rs при 100 ppm CO
PS
Данная часть получилась больше справочной чем практической, но я надеюсь что этот материал поможет в выборе типа датчиков для вашей будущей системы климат-контроля.
В заключительной части цикла про датчики я расскажу о датчиках тока и напряжения, знания о которых мы применим при создании самодельного прибора учета электроэнергии и расчете энергетических параметров. Вопросы анализа частоты, реактивной и активной мощности, коэффициента мощности и гармонических искажений я решил разбить и вынести в отдельный цикл.
Комментарии (22)
Winnie_The_Pooh
07.06.2015 07:46+2Полупроводниковые датчики газов во-первых неселективны (т.е. практически одинаково реагируют на весь спектр веществ), во-вторых недолговечны (год-другой и пора менять), в третьих показания их обладают низкой повторяемостью, в четвертых очень сильно зависят от влажности и т.д.
В общем — это скорее пороговые элементы для систем предупреждения о переходе концентрации вредных примесей выше безопасного порога.
jaiprakash
07.06.2015 09:17+2Разумеется, практической значимости данная халтурка не представляет и для измерения температуры с помощью термопары нужно использовать более точные АЦП. Хорошим встроенным АЦП обладает к примеру микроконтроллер ADuCM360, причем он рассчитан именно на столь малые входные сигналы.
Крайне странный вывод.
Обычно для усиления сигнала и температурной компенсации используют специальный драйвер. Если хотят бюджетного и доступного решения — усиливают сигнал с помощью операционного усилителя. Но переходить на другую архитектуру микроконтроллера только из-за 24-битного АЦП…Meklon
07.06.2015 11:05А можно про специальный драйвер? Мне актуально.
jaiprakash
07.06.2015 11:33+1С аналоговым выходом 10 мВ/К и термокомпенсацией: AD594/595/596/597. AD8495 — 5 мВ/К.
Есть с АЦП, например, ADS1118.
Maxim выпускает в ассортименте всякие драйверы.
radiolok Автор
07.06.2015 11:35Про такую хорошую вещь запамятовал. Сейчас исправлю.
В одном очень старом девайсе я использовал ОУ LMP2011 — с очень малыми шумами. Стабильность была хорошая, но нет термокомпенсации холодного спая.
В контроллере печи сопротивления использовал драйвер MAX6675 — 12-разрядный внешний АЦП с SPI и термокомпенсацией — но там она внезапно под руку попалась, а сейчас эта микросхема и вовсе Not Recomended for New Design
Keroro
08.06.2015 07:36Для домашней ардуино-поделке собирал усилитель для термопары на OPA333 (zero drift, low offset). Точность получилась в пару градусов на 300С (сравнивал с мультиметром, который умеет в температуру) без каких-либо калибровок. Кстати в его даташите есть и рекомендованная схема включения для такого применения.
jaiprakash
08.06.2015 08:48В схеме из даташита для термокопенсации холодного спая указан некий диод D1 без обозначений. Видимо, измерительный термочувствительный диод, но какой именно?
radiolok Автор
08.06.2015 11:04+1Маломощный кремниевый диод. У него есть свой температурный коэффициент — падение напряжения на p-n переходе у него зависит от абсолютной температуры. Порядка 2мВ/градус. Соответственно спай R1-R2 будет представлять собой некий уровень напряжения, равный падению напряжения на переходе, пусть будет 0,8В. R1 ограничивает ток диода до 530мкА, выводя его в рабочий участок характеристики. т.е. нам нужен маломощный диод.
R2-R3 образуют делитель на ~50. Соответственно плюсовой вывод термопары будет находиться на уровне 16мВ и перемещаться вверх-вниз на 40,7 мкВ/ на градус, что соответствует ТК термопары, а значит скомпенсирует изменение температуры холодного спая.
0tt0max
07.06.2015 09:57Спасибо за статью, хотелось бы услышать о датчиках вибрации, измерение виброскорости и виброускорения!
ignat99
07.06.2015 11:28Такие датчики делают на основе оптоволокна и измеряют прохождение и отражение луча света?
jaiprakash
07.06.2015 11:37Обычно это или тензодатчики с обвесом или MEMSы
ignat99
07.06.2015 12:41Видимо технология с оптоволокном, которую разрабатывали в Грузии лет 10 назад, себя не оправдала. Она была предложена для изучения вибрации зданий. То есть более крупный масштаб.
Rumlin
07.06.2015 10:50Рисунок 46: Через несколько минут они покажут 4500. Метров.
В прошивке часов формула учитывает температуру для расчета высоты. А температуру часы вычисляют с поправкой на то что их греет рука.
Для корректных результатов надо в начале выставить хотя бы правильно начальную высоту перед началом измерений (я ставлю по GPS).radiolok Автор
07.06.2015 11:36Разумеется нуль был выставлен, и с остальными альтиметрами данные часов согласовывались
ignat99
Спасибо за лекцию. Вот примерный список современных датчиков и вот. Хотелось бы по подробнее про то как применять датчики магнитного поля. И перспективы этих датчиков для AR в сравнении с радаром-на-чипе.