RadioRadar - Радиоэлектроника, даташиты, схемы

https://www.radioradar.net/radiofan/measuring_technics/air_parameter_meter_pic16f873a_microcontroller.html

Измеритель параметров воздуха на микроконтроллере PIC16F873A

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

Схема измерителя параметров воздуха приведена на рис. 1. Прибор собран на микроконтроллере (МК) PIC16F873A. Информация выводится на двухстрочный шестнадцатисимвольный ЖКИ.

Схема измерителя параметров воздуха

Рис. 1. Схема измерителя параметров воздуха

 

Основные технические характеристики

Интервал измерения температуры аналоговым датчиком, оС ...............-20...+120

Погрешность измерения температуры аналоговым датчиком, % ...............1

Интервал измерения температуры цифровым датчиком B4, оС ...............0...+65

Погрешность измерения температуры цифровым датчиком B4, % ...............1

Интервал измерения давления цифровым датчиком, гПа ...............300...1100

Погрешность измерения давления цифровым датчиком, гПа ...............1

Интервал измерения температуры цифровым датчиком B5, оС ...............-40...+80

Погрешность измерения температуры цифровым датчиком B5, % ...............0,5

Интервал измерения влажности цифровым датчиком, % ...............0...100

Погрешность измерения влажности цифровым датчиком, % ...............2...5

Интервал измерения содержания углекислого газа в воздухе, ppm ............... 0...5000

Погрешность измерения содержания углекислого газа в воздухе, ppm ...............50

Время подготовки измерения содержания углекислого газа в воздухе, мин ............... 3

Постоянное напряжение питания прибора, В ...............9...16

Потребляемый ток, мА ...............200...250

MKDD1 (PIC16F873A) тактируется импульсами с периодом 1 мкс, вырабатываемыми кварцевым генератором с частотозадающими элементами ZQ1, C4 и C7. Описание семейства МК PIC16F873A и средств их программирования приведены в [1]. Стабилизатор напряжения питания +5 В собран на микросхеме DA1 (LM7805). Описание стабилизатора LM7805 приведено в [2]. Конденсаторы С3, C5, C6 - блокировочные по цепи питания. На ЖКИ HG1 (WH1602B-YYH-CTK) собрано устройство индикации. Описание ЖКИ WH1602B-YYH-CTK приведено в [3]. Резисторы R10 и R14 используются для регулировки яркости подсветки ЖКИ, резисторы R11-R13 - для регулировки контрастности ЖКИ. Резисторы R1-R4 и конденсаторы C1, С2 - интегрирующие цепи, которые образуют фильтры для датчиков температуры B1 и B2. Описание датчиков температуры TMP36 приведено в [4]. Резисторы R5 и R6 поддерживает высокий уровень на линиях SCLи SDA датчика давления B4. Описание датчика давления BMP180 приведено в [5]. Резистор R9 поддерживает высокий уровень на линии SDA датчика влажности B5. Описание датчика влажности DHT22 приведено в [6]. К линии порта RA4 (вывод 6) МК DD1 подключён выход PWM датчика углекислого газа B3 [7].

При включении прибор начинает поочерёдно измерять параметры воздуха, выводя результаты на ЖКИ. После включения сначала индицируется наименование прибора (рис. 2).

Информация на ЖКИ устройства

Рис. 2. Информация на ЖКИ устройства

 

Измерение температуры аналоговыми датчиками

Некоторые датчики серии TMP36 имеют функцию отключения, которая снижает потребляемый ток менее чем до 0,5 мкА. Эта функция доступна только у датчиков в корпусах SOIC и SOT-23. Управление осуществляется уровнями TTL/CMOS при условии, что напряжение питания датчика температуры равно напряжению питания логики. Внутри датчика TMP36 вывод SHUTDOWN подключён через резистор к плюсовой линии питания. Это позволяет управлять выводом SHUTDOWN от драйвера с открытым коллектором или стоком. Когда на вывод SHUTDOWN подан низкий уровень, происходит выключение выходного каскада датчика. Во время отключения выход датчика температуры становится высокоимпедансным, при этом потенциал выхода определяется внешним подключением. Если функция выключения не используется, рекомендуется подключить вывод SHUTDOWN к плюсовой линии питания (вывод 8 датчика в корпусе SOIC, вывод 2 датчика в корпусе SOT-23).

Аналоговые датчики температуры B1, B2 преобразуют температуру окружающей среды в напряжение, которое через интегрирующие цепи (фильтры) поступает на выводы порта МК ВА2 и ВА3 соответственно, которые запрограммированы как входы АЦП. МК преобразует напряжение на выходе датчиков в двоичный код. После чего двоичный код МК преобразует в символьный кодЖКИ (рис. 3).

Информация на ЖКИ устройства

Рис. 3. Информация на ЖКИ устройства

 

Если датчик температуры TMP36 термически защищён, его можно использовать в любых устройствах для измерения температуры с максимальным интервалом от -40 оС до +125 оС. Следует быть внимательным, особенно с корпусами ТО-92, поскольку выводы и любые провода, соединяющие датчик и устройство, могут действовать как тепловые проводники, внося погрешность в измерения. Поскольку датчик имеет пластиковый корпус, следует избегать чрезмерных механических нагрузок, закрепляя его с помощью зажима или винта. При типичных условиях монтажа рекомендуется использовать теплопроводящую пасту или клей, которые должны быть неэлектропроводными. Эти датчики температуры, а также любые связанные с ними электронные узлы должны быть изолированными и сухими во избежание утечек и коррозии. Во влажных или коррозионных средах для защиты датчиков температуры можно использовать любую металлическую или керамическую гильзу с электрической изоляцией. Конденсация влаги при очень низких температурах может привести к погрешности, и её следует избегать, герметизируя устройство, используя непроводящие эпоксидные краски или любое из многих покрытий и лаков для печатных плат.

 

Измерение температуры и давления цифровым датчиком

Датчики атмосферного давления BMP180 - частые гости в инженерных проектах. С их помощью можно предсказать погоду или измерить высоту над уровнем моря. Сегодня датчики именно этой линейки можно назвать самыми популярными и недорогими.
Барометр - устройство, измеряющее атмосферное давление. Электронные барометры используются в робототехнике и различных электронных устройствах. Наиболее распространённые и доступные для применения в барометрах - датчики давления фирмы Bosch BMP085, BMP180, ВМР280и другие. Первые два очень похожи между собой, BMP280 - более новый и усовершенствованный датчик.

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

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

Датчик BMP180 - это дешёвый и простой в применении сенсорный датчик, который измеряет атмосферное давление и температуру. Используется чаще всего в метеостанциях и устройствах определения высоты. ВМР180 содержит тензодатчик, термодатчик, АЦП, энергонезависимую память, ОЗУ и МК. Передача данных может быть организована по шинам I2C или SPI, в нашем случае используется I2C.

В датчике имеется герметичная камера, одна из стенок которой - гибкая мембрана с установленными на ней тензодатчиками. Мембрана прогибается пропорционально разности давлений внутри камеры и снаружи, что влияет на изменение сопротивления тензодатчиков электрическому току. Кроме того, имеется термодатчик, сопротивление которого изменяется пропорционально температуре.

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

Для компенсации начального смещения мембраны, температурной погрешности, погрешностей при изготовлении, неоднородностей материалов и т. д. каждый датчик калибруют на заводе и в энергонезависимую память записывают индивидуальные для каждого датчика 11 калибровочных коэффициентов (176 битов), которые доступны для чтения из регистров датчика AC1, AC2, AC3, AC4, AC5, AC6, B1, B2, MB, MC, MD.

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

Последовательность записи данных в регистры: отправляем первый байт (адрес датчика 0x77 и бит R/W=0); отправляем второй байт (адрес нужного регистра); отправляем третий байт (данные для записи); после каждого отправленного байта получаем ответ от датчика в виде одного бита ACK.

Чтение данных из регистров: отправляем первый байт (адрес датчика 0x77 и бит R/W=0); отправляем второй байт (адрес нужного регистра); отправляем сигнал RESTART; отправляем третий байт (адрес датчика 0x77 и бит R/W=1); датчик ответит одним байтом данных из указанного регистра, если подать сигнал ACK, датчик передаст байт данных следующего регистра и т. д., пока не будет передан сигнал NACK.

Если к шине подключено только одно ведущее устройство, после передачи двух первых байтов (адреса датчика с битом R/W=0 и адреса регистра) допустимо завершить пакет подачей сигнала STOP и начать новый пакет сигналом START, передать адрес датчика с битом R/W, после чего начать принимать или передавать данные. Такой вариант передачи данных позволяет использовать библиотеки, в которых нет сигнала RESTART

Используются следующие команды:

START - начинает пакет переход из лог. 1 в лог. 0 на линии SDA при наличии лог. 1 на линии SCL.

STOP - завершает пакет переход из лог. 0 в лог. 1 на линии SDA при наличии лог. 1 на линии SCL.

1/0 - биты данных; передаваемый бит равен логическому состоянию линии SDAпри наличии лог 1 на линии SCL.

ACK - байт принят; передача бита 0.

NACK - байт не принят; передача бита 1.

R/W - приём/чтение; последний бит первого байта. Если 0, - инициализирована запись, если 1, - инициализировано чтение, первые семь битов первого байта - это id-адрес устройства на шине I2C, которому направлена инициализация.

RESTART - повторный старт-сигнал, нужен при наличии на шине двух ведущих и невозможности передачи инициативы второму.

Изменения уровней на линии SDA происходят только при наличии лог. 0 на линии SCL за исключением сигналов START, STOP, RESTART.

OSS - седьмой и шестой биты регистра Measurement Control, режим точности. Может принимать значения от 0 до 3 (00, 01, 10, 11), на основании этого значения датчик устанавливает соотношение передискретизации при измерении давления (00 - 1, 01 - 2, 10 - 4, 11 - 8).

CSO - пятый бит регистра Measurement Control, флаг состояния.

Если CSO равен 1, датчик начнёт измерения и после всех преобразований установит его в 0, указывая на доступность регистров Out....

Первые пять битов регистра Measurement Control определяют вид измерения. Они принимают два значения - 01110 или 10100. В первом случае датчик будет измерять температуру, во втором - давление.

Результаты измерений доступны для чтения из регистров Out MSB, Out LSB, Out xLSB как для давления, так и для температуры.

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

Рис. 4. Осциллограммы данных давления и температуры

 

Осциллограммы данных давления и температуры представлены на рис. 4. Красный цвет - синхроимпульсы на линии порта RC1 (вывод 12), синий цвет - данные на линии порта RC2 (вывод 13).

Измеренные цифровым датчиком B4 температура и давление отображаются в двух форматах - в миллиметрах ртутного столба (рис. 5) и в паскалях (рис. 6).

Информация на ЖКИ устройства

Рис. 5. Информация на ЖКИ устройства

 

Информация на ЖКИ устройства

Рис. 6. Информация на ЖКИ устройства

 

Измерение температуры и влажности цифровым датчиком

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

Этот цифровой датчик использует протокол, который для связи использует один провод - линию с открытым коллектором, поэтому обязательно её соединение через резистор сопротивлением 5...10 кОм с плюсовой линией питания. Протокол, используемый датчиками DHTxx, отличается от протокола однопроводной шины Dallas Semiconductor (1 -Wire/OneWire).

Считывание данных с датчика DHT22 происходит так. МК выступает в роли ведущего устройства шины и, следовательно, отвечает за инициирование связи (т. е. чтение). Датчик влажности и температуры DHT22 всегда остаётся в качестве подчинённого устройства и отвечает данными после поступления запроса.

МК подаёт стартовый сигнал - выставляет на линии данных низкий уровень в течение 18...20 мс. После этого МК освобождает линию и следит за уровнем на ней примерно 20...40 мкс.

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

Затем датчик отправляет 40 битов данных. Перед отправкой каждого бита датчик выставляет низкий уровень на линии в течение 50 мкс, за которым следует временной отрезок 26...28 мкс для лог. 0 или 70 мкс для лог. 1. По завершении связи линия переходит в состояние ожидания.

Когда датчик влажности и температуры отправляет данные, он сначала отправляет MSb (Most Significant Bit) - старший значащий бит. Данные от датчика передаются в виде посылки, состоящей из 40 битов данных - это пять байтов, из которых первые два - влажность, следующие два - температура и байт чётности. Байт чётности равен сумме предыдущих байтов. Первый и второй байты содержат соответственно целую и дробную часть информации о влажности в процентах, третий и четвёртый байты содержат целую и дробную часть информации о температуре в градусах Цельсия. Для датчика из этой серии DHT11 второй и четвёртый байты всегда равны нулю.

Осциллограммы пяти байтов данных влажности и температуры представлены на рис. 7.
Информация о влажности выводится на экран ЖКИ (рис. 8).

Осциллограммы пяти байтов данных влажности и температуры

Рис. 7. Осциллограммы пяти байтов данных влажности и температуры

 

Информация на ЖКИ устройства

Рис. 8. Информация на ЖКИ устройства

 

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

Датчик углекислого газа MH-Z19B - датчик, который измеряет концентрацию углекислого газа по принципу недисперсионного инфракрасного излучения. Датчик имеет внутреннюю температурную компенсацию, может подключаться по трём интерфейсам (аналоговый, ШИМ, UART), имеет малые размеры и большой срок службы. Для простоты в устройстве использован интерфейс шИм. Информация об измеренной концентрации углекислого газа в воздухе выводится на экран ЖКИ (рис. 9).

Информация на ЖКИ устройства

Рис. 9. Информация на ЖКИ устройства

 

Приблизительные нормы концентрации углекислого газа в помещениях приведены в табл. 1.

Таблица 1

Уровень углекислого газа, ppm

Качество воздуха

300...400

Эталонное

400...600

Нормальное

600...800

Среднее

800...1000

Предельно допустимое

Свыше 1000

Низкое

Свыше 2000

Критически низкое

В случае подключения датчика по шине UART на вывод Vcc подают напряжение +5 В, вывод GND подключают к общему проводу, вывод RX подключают к любому порту МК, указанному в программе, вывод ТХ - также к любому порту МК, указанному в программе.

Обычно напряжение на выводах МК TX и RX равно 5 В. Напряжение на входах TX и RX датчика не должно превышать 3,3 В. В связи с этим подключение необходимо организовать через делители напряжения или преобразователи логического уровня.
Датчик имеет несколько режимов работы, которые зависят от управляющего байта. Если этот байт равен 0х86 - прочитать данные с датчика, считываются значения с датчика, где в третьем, старшем и четвёртом, младшем байтах указаны значения содержания углекислого газа. Пример отправки запроса от МК на датчик показан в табл. 2, а приём информации от датчика - в табл. 3.

Таблица 2

Байт 0

Байт 1

Байт 2

Байт 3

Байт 4

Байт 5

Байт 6

Байт 7

Байт 8

OxFF

0x01

0x86

0x00

0x00

0x00

0x00

0x00

0x79

 

Таблица 3

Байт 0

Байт 1

Байт 2

Байт 3

Байт 4

Байт 5

Байт 6

Байт 7

Байт 8

OxFF

0x86

HIGH

LOW

-

-

-

-

0x79

Управляющий байт 0х87 - калибровка нуля - используют для калибровки в бытовых условиях (400 ppm). Пример отправки байтов от МК на датчик показан в табл. 4.

Таблица 4

Байт 0

Байт 1

Байт 2

Байт 3

Байт 4

Байт 5

Байт 6

Байт 7

Байт 8

OxFF

0x01

0x87

0x00

0x00

0x00

0x00

0x00

CRC

Управляющий байт 0х88 - калибровка в заданном интервале измерений - используют для калибровки, указав значение интервала в третьем, старшем и четвёртом, младшем байтах. Пример отправки байтов от МК на датчик показан в табл. 5, где значения HIGH и LOW для 2000 ppm рассчитывают по формуле

HIGH = 2000 / 256,
LOW = 2000 / % 256.

Таблица 5

Байт 0

Байт 1

Байт 2

Байт 3

Байт 4

Байт 5

Байт 6

Байт 7

Байт 8

OxFF

0x01

0x88

HIGH

LOW

0x00

0x00

0x00

CRC

Управляющий байт 0х79 - включение/выключение автоматической калибровки датчика. В случае отсутствия необходимости режим автокалибровки можно отключить, указав в третьем байте значение 0хА0/0х00 (включить/ выключить). Пример отправки байтов от МК на датчик в этом случае показан в табл. 6.

Таблица 6

Байт о

Байт 1

Байт 2

Байт 3

Байт 4

Байт 5

Байт 6

Байт 7

Байт 8

OxFF

0x01

0x79

ОхАО/ОхОО

0x00

0x00

0x00

0x00

CRC

Управляющий байт 0x99 - установка интервала измерений (2000 ppm, 5000 ppm). Интервал указывают в третьем и четвёртом байтах, в шестнадцатеричной кодировке 2000 = 07D0, 5000 = 1388. Пример отправки байтов от МК на датчик для интервала 2000 ppm показан в табл. 7, а для интервала 5000 ppm - в табл. 8.

Таблица 7

Байт 0

Байт 1

Байт 2

Байт 3

Байт 4

Байт 5

Байт 6

Байт 7

Байт 8

OxFF

0x01

0x99

0x07

0xD0

0x00

0x00

0x00

CRC

Таблица 8

Байт 0

Байт 1

Байт 2

Байт 3

Байт 4

Байт 5

Байт 6

Байт 7

Байт 8

OxFF

0x01

0x99

0x13

0x88

0x00

0x00

0x00

CRC

Устройство собрано на плате из фольгированного с двух сторон стеклотекстолита толщиной 1 мм. Чертёж платы приведён на рис. 10, а расположение элементов - на рис. 11. В приборе применены постоянные резисторы и неполярные конденсаторы для поверхностного монтажа типоразмера 0805. Оксидные конденсаторы С3, С6 - К50-35 или аналогичные импортные. Подстроечные резисторы R12, R14 - SH-655MCL. Кварцевый резонатор - HC49S. Обратите внимание, что на одной стороне платы установлены подстроечные резисторы R12, R14, оксидные конденсаторы С3, С6, кварцевый резонатор ZQ1, МК DD1 и стабилизатор DA1. Остальные детали расположены на противоположной стороне платы.

Чертёж платы устройства

Рис. 10. Чертёж платы устройства

 

Расположение элементов на плате устройства

Рис. 11. Расположение элементов на плате устройства

 

Гнездо питания и выключатель соединены с платой проводом МГТФ 0,5. МК устанавливают в переходную панель.

Подстроечным резистором R12 устанавливают необходимую контрастность изображения на экране ЖКИ, а подстроечным резистором R14 - необходимую яркость подсветки.

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

Литература

1.PIC16F87XA. Data Sheet. 28/40/44-Pin Enhanced Flash Microcontrollers. - URL: http://akizukidenshi.com/download/ PIC16F87XA.pdf (29.04.22).

2.LM78XX/LM78XXA 3-Terminal 1A Positive Voltage Regulator. - URL: http://hades.mech.northwestern.edU/images/6/6c/LM7805.pdf (29.04.22).

3.WH1602B-YYH-CTK. - URL: https://www.compel.ru/pdf-items/winstar/pn/wh160 2b-yyh-ctk/4bb3649ba61d9005 44d212b46af5b91e (29.04.22).

4.Датчики температуры TMP35, TMP36, TMP37. Характеристики, применение, описание на русском языке. - URL: http://mypractic. ru/datchiki-temperatury-tmp35-tmp36-tmp37-xarakteristiki-primenenie-opisanie-na-russkom-yazyke.html? (29.04.22).

5.Датчик давления и температуры BMP180 (Digital Pressure Sensor). - URL: https://iarduino.ru/lib/datasheet%20bmp180.pdf (29.04.22).

6.Датчик влажности и температуры DHT22 (Digital Humidity Temperature). - URL: https://iarduino.ru/lib/DHT22.pdf (29.04.22).

7.Intelligent Infrared CO2 Module (Model: MH-Z19B). - URL: https://www.winsen-sensor.com/d/files/infrared-gas-sensor/ mh-z19b-co2-ver1_0.pdf (29.04.22).

Автор: В. Турчанинов, г. Севастополь