Датчик температуры и влажности воздуха на базе сенсора AHT10.

TinyOneWireNet

В статье представляю новое сетевое устройство – датчик температуры и влажности воздуха с использованием сенсора AHT10.

Предыдущая статья     Навигация по рубрике     Следующая статья

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

Общее описание и характеристики устройства.

AHT10 – это датчик температуры и влажности воздуха, конструктивно выполненный в виде миниатюрного SMD модуля.

Датчик AHT10

Кроме высоких технических характеристик у него крайне низкая стоимость. На данный момент его розничная цена на Али Экспресс составляет всего 50-70 руб.

В результате получился сетевой датчик со следующими характеристиками.

Параметр Значение
Диапазон измерения температуры -40 … 85 °C
Разрешающая способность измерения температуры 0,01 °C
Погрешность измерения температуры ± 0,3 °C
Диапазон измерения влажности 0 … 100 %
Разрешающая способность измерения влажности 0,024 %
Погрешность измерения влажности ± 2 %
Время измерения, не более 500 мс

 

Принципиальная схема и конструкция.

AHT10 работает через интерфейс I2C с уровнями логических сигналов 3,3 В. Поэтому используется та же схема подключения к PIC-контроллеру, как и в предыдущем устройстве - люксметре.

Схема датчика AHT10

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

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

Датчик AHT10

Датчик AHT10

Датчик AHT10

Работа сдатчиком на базе AHT10 в системе Ардуино.

Подключил датчик к выводу 2 платы Arduino Nano, задал адрес.

Экран типа

В библиотеке TinyOneWireNet.h есть 3 функции, для работы с датчиком.

uint8_t startMeasurement_AHT10(uint8_t adr); // запуск измерения

uint8_t readCode_AHT10(uint8_t adr, uint8_t * code); // чтение результата измерений (код, 6 байтов)

uint8_t readTempHum_AHT10(uint8_t adr, float * temp, float * hum); // чтение результата измерений(C и %)

  • adr – адрес устройства;
  • code – указатель на массив для считанного кода (6 байтов);
  • temp – указатель на полученное значение температуры;
  • hum - указатель на полученное значение влажности.

Последовательность операций обычная.

  • Запустить измерение.
  • Выдержать паузу не менее 500 мс.
  • Считать результат.

Вот скетч, который выводит результаты измерений в последовательный порт.

// измерение температуры и влажности воздуха
#include <TinyOneWireNet.h>

#define NET_PIN 2 // вывод данных сети
#define BETWEEN_COM_TIME 2 // пауза между командами (мс)

TinyOneWireNet sens(NET_PIN);
float temp, hum;

void setup() {
  Serial.begin(9600);
  sens.onLine(10);
}

void loop() {
  if( sens.startMeasurement_AHT10(52) == 0 ) {
    delay(1000);
    if( sens.readTempHum_AHT10(52, & temp, & hum) == 0 ) {
      Serial.print("Temp= ");
      Serial.print(temp);
      Serial.print(" C Hum= ");
      Serial.print(hum);
      Serial.println(" %");
    }
    else Serial.println("Error");
  }
  else {
    Serial.println("Error");
    delay(1000);
  }
  delay(BETWEEN_COM_TIME);
}

Результаты измерений

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

В следующей статье представлю конвертеры UART TinyOneWireNet и USB TinyOneWireNet.

Предыдущая статья     Навигация по рубрике     Следующая статья

0

Автор публикации

не в сети 4 недели

Эдуард

281
Комментарии: 1938Публикации: 197Регистрация: 13-12-2015

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных".