Надпис ХОБИ ЕЛЕКТРОНЧИК electronic-hobbyist

 

 

 

Измерение температуры и относительной влажности с помощью сенсора HSM-20G.

 

 

 Часть 1 - Теория и схема


Во всемирной сети Интернет возможно найти конструкции устройств на микроконтроллерах, позволяющих измерять температуру окружающей среды и относительную влажность с помощью датчиков SHT75 и SHT11. Это цифровые датчики, откалиброванные в заводских условиях. В данной статье мы рассмотрим конструкцию на базе аналогового сенсора и микроконтроллера Atmel AVR.

Аналоговый датчик температуры и относительной влажности HSM-20G представляет собой отдельный миниатюрный модуль, который преобразует значение указанных параметров окружающей среды в напряжение на выходе.
Для проведения экспериментов нам понадобиться микроконтроллер ATmega8, модуль HSM-20G  и 4-строчный ЖК индикатор. Автор для экспериментов использовал отладочную плату собственной разработки. Для разработки программного обеспечения использовался компилятор mikroC для AVR от компании mikroElektronika.
В техническом описании датчика производитель дает значения выходного напряжения для некоторых значений относительной влажности и график зависимости. Эти данные были использованы автором для построения графика зависимости для проверки точности. График изображен ниже.

Как видно, зависимость нелинейная, поэтому автор использовал программную среду MATLAB, чтобы получить выражение для вычисления значений выходного напряжения в зависимости от окружающей относительной влажности, при этом используя значения из технического описания на модуль HSM-20G (стандартные характеристики). Использовалась при этом функция аппроксимирующего полинома третьей степени (Polyfit). Первая причина использования полинома третьей степени заключается в том, что микроконтроллер AVR имеет встроенный аппаратный умножитель, который работает быстро, и вторая причина – такая точность достаточна для измерений.
Такую же задачу нужно решить и для получения данных о температуре окружающего воздуха, однако она несколько сложнее. Если вы посмотрите в техническое описание сенсора, то увидите схему подключения его к другой периферии (в нашем случае это микроконтроллер) или к измерительному прибору. Автор использовал данную типовую схему включения. Однако, поскольку производитель сенсора не знает, какое значение сопротивления пользователь будет использовать при измерении температуры, и в связи с тем, что внутри сенсора HSM-20G находится термистор, а не полупроводниковый датчик температуры, производитель предоставил зависимость значения сопротивления при различных температурах. Таким образом, автор вычислил значение выходного напряжения температурной части датчика HSM-20G по методике описанной выше.

Схема подключения датчика и ЖК индикатора к микроконтроллеру несложна, и изображена на рисунке ниже.

Два канала АЦП (ADC0 и ADC1) используются для подключения сенсора, АЦП измеряет выходное напряжение сенсора, которое соответствует температуре и относительной влажности. Резисторы и конденсатор, подключенные к выходу датчика, рекомендованы по теническому описанию на HSM-20G.


В следующей части мы рассмотрим основные моменты в ПО микроконтроллера.


 

 

Часть 2 - Программное обеспечение


В первой части статьи мы рассмотрели принципиальную схему подключения аналогового сенсора HSM-20G к микроконтроллеру ATmega8 и принципы его работы.
Программное обеспечение для микроконтроллера разработано с использованием компилятора mikroC для AVR версии 5.00. Программа проста для понимания, снабжена комментариями.
Основное – это 6 функций, описание которых ниже.
1. void setup_MCU() – функция настраивает периферию и порты ввода/вывода микроконтроллера для оптимальной работы, устанавливая определенные биты в регистрах периферии с помощью встроенных функций компилятора. В нашем случае используется библиотека функций для работы с АЦП и ЖК индикатором.

2. void display_common() – функция вызывается лишь один раз. Ее задача – вывод на дисплей текстовой информации “Temperature” (температура) и “Relative Humidity” (относительная влажность) вместе с единицами измерения.

3. float read_voltage(unsigned short channel) – функция выполняет чтение данных АЦП (напряжение) по заданному номера канала АЦП и получает среднее значение за 64 выборки, что позволяет исключить шумы и наводки и повысить точность измерения. Результат после выполнения всех математических операцийя возвращается в вызывающую функцию.

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

5. void display_data(unsigned char x, unsigned char y, float value) – в этой функции определяются знакоместа для вывода данных и сами данные, которые будут отображаться в них.


Загрузки
Исходный код и HEX файл для прошивки микроконтроллера - скачать

 


embedded-lab.com      rlocman.ru

 

 

Материалите подготви за сайта:
Иван Парашкевов

e-mail:

 

 

Copyright2024  Design by