8 совместимых с Arduino датчиков температуры для ваших электронных проектов. Датчик температуры на ардуино.

Датчики
Датчик температуры на ардуино - Обзор аппаратного обеспечения К размышлению BME280 Код Arduino. Использование DHT11 и DHT22/AM2302 с LCD дисплеем TMP36

В setup() мы должны запустить порт последовательной связи, потому что мы будем использовать монитор последовательного порта для вывода результатов.

8 совместимых с Arduino датчиков температуры для ваших электронных проектов

Считывание значений температуры с помощью Arduino — очень полезная задача. Существует широкий спектр температурных датчиков с различными функциями, которые вы можете использовать в своих проектах.

В этой статье мы собрали 8 доступных температурных датчиков, совместимых с Arduino и другими платами разработки (например, ESP32 или ESP8266).

DHT11

Датчик температуры и влажности DHT11

DHT11 — это цифровой датчик температуры, который измеряет температуру и относительную влажность.

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

Ниже приведены основные технические характеристики датчика температуры DHT11:

  • Протокол связи: 1-Wire
  • Диапазон питания: от 3 до 5,5 В
  • Диапазон температур: от 0 до 50 ºC (+/- 2ºC)
  • Диапазон влажности: от 20 до 90% (+/- 5%)
  • Период выборки: 1 секунда
  • Библиотеки Arduino: Adafruit DHT Library, Adafruit Unified Sensor Library

DHT22

Датчик температуры и влажности DHT22

Датчик температуры DHT22 очень похож на DHT11. DHT11 очень похож на DHT11; он также измеряет температуру и влажность и имеет ту же распиновку. Он немного дороже, но более точен и имеет более широкий диапазон измерения температуры и влажности.

Ниже перечислены основные характеристики датчика температуры DHT22:

  • Протокол связи: 1-Wire
  • Диапазон питания : от 3 до 6 В
  • Диапазон температур: от -40 до 80 ºC (+/- 0,5ºC)
  • Диапазон влажности: от 0 до 100% (+/- 2%)
  • Период выборки: 2 секунды
  • Библиотеки Arduino: Adafruit DHT Library, Adafruit Unified Sensor Library

Подключение

Датчик TMP35 имеет три контакта (три нити). Посмотрите на датчик со стороны этих проводов и отрежьте их вверх, как показано на рисунке,

Левая сторона — положительный контакт питания (от +2,7 В до 5,5 В), средняя — выход на блок управления, правая — отрицательный контакт питания (земля).

tmp_1

Датчик является аналоговым, т.е. на его выходе не 0 или 1, а напряжение в диапазоне от 0 до 5 вольт. Поэтому нам нужно вспомнить раздел об аналого-цифровом преобразовании (АЦП) сигналов на Arduino. Поскольку Arduino Uno имеет шесть аналоговых входов (A0-A5), мы подключаем наш датчик в соответствии со следующей схемой:

Внешний вид макета

tmpx1_bb

Принципиальная схема

tmpx1_схема

Вот как должна выглядеть собранная схема.

Ардуино: датчик температуры LM35

Программа

Подключив датчик температуры к Arduino, начните писать программу. Сначала мы извлекаем необработанный сигнал с аналогового входа на последовательный порт, чтобы понять, как изменяется значение на входе A0. Нам нужна простая программа:

int raw = 0; float temp = 0; void setup()void loop()

Внимание, математика! В программе мы видим выражение

temp = ( raw/1023.0 )*5.0*1000/10,

Он необходим для преобразования аналогового сигнала датчика в градусы Цельсия. Вот в чем проблема. Все аналоговые датчики имеют одно важное свойство — отношение количества вольт к единице измерения. Например, в техническом описании датчика tmp35 указано, что каждый градус измеренной температуры соответствует 10 милливольтам напряжения на выходе. Исходя из этого соображения, мы сначала преобразуем значение, считанное с помощью analogRead, в число вольт:

Напряжения = (значение АЦП / 1023) * 5.

Этот процесс называется нормализацией. Здесь 1023 — максимальное значение, которое может выдать 10-битный АЦП, встроенный в Arduino Uno; 5 — рабочее напряжение АЦП.

Затем мы преобразуем эти вольты в градусы Цельсия:

Градусы = (Вольты * 1000) / 10

Переведите вольты в милливольты (*1000) и разделите на 10 (то же число из таблицы данных!).

В общем, даже если ничего не ясно, загрузите программу в Arduino и наблюдайте за температурой окружающей среды. В нашей лаборатории, например, датчик оценивал температуру следующим образом:

ph_temp_1

Это очень хорошая цена. Теперь поднесите устройство к открытому окну (на улице зима с температуро й-10°C):

ph_temp_2

Это работает! Датчик немедленно регистрирует падение температуры.

Делаем термостат

Теперь добавим в программу действие, которое активируется, когда температура опускается ниже установленного порога. Предположим, что этот порог составляет 15°C. Самое простое, что мы можем сделать, это включить светодиод №13 на Arduino. Вот программа:

int raw = 0; float temp = 0; void setup()void loop()

Кто-то забывает закрыть окно - температура опускается ниже 15 градусов - загорается светодиод. Закройте окно, активно дышите - светодиод гаснет. Представьте, что вы не включаете светодиод, а подаете сигнал на реле, которое включает обогреватель в комнате. У вас полный термостат!

Если вы немного измените программу, вы можете контролировать не уменьшение, а превышение установленного значения. Например, было бы практично контролировать температуру в серверной комнате и включать капот, когда температура поднимается до 40 градусов!

Библиотеки

Существует несколько библиотек для этого датчика:

  • “Официальная” библиотека DallasTemperature.h, для работы которой также понадобится библиотека OneWire.h.
  • Наша библиотека microDS18B20

В примерах на этом сайте используется модель microDS18B20, поскольку она во много раз легче и проще в использовании, чем официальная модель. Библиотека включена в файл комплекта GyverKIT, и последняя версия может быть установлена/обновлена в любое время через менеджер библиотек microDS18B20, встроенный в Arduino. Краткую документацию можно найти по ссылке выше, а основные примеры - в самой библиотеке.

Работа с microDS18B20

Без адресации

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

MicroDS18B20 датчик1? MicroDS18B20 sensor2; // .

С адресацией

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

uint8_t addr1 = ; uint8_t addr2 = ; MicroDS18B20 sensor1; ; MicroDS18B20 sensor2; // .

Адрес также можно изменить во время работы программы, см. документацию.

Чтение температуры

Измерение температуры делится на два этапа - запрос и получение данных. Запрос выполняется с помощью функции requestTemp(). После получения запроса датчик начинает измерение температуры, которое занимает от 90 до 750 мс в зависимости от настроенной точности (по умолчанию точность максимальная, а преобразование занимает 750 мс). Если вы считываете температуру до завершения преобразования, датчик возвращает результат предыдущего измерения, поэтому в примерах используется задержка в 1 секунду или таймер опроса. Температуру можно получить с помощью getTemp() float или getTempInt() int. Если полученные данные повреждены или на линии отсутствует датчик, функция возвращает предыдущее значение температуры, которое было успешно считано.

Примечание: При повторных вызовах функция getTemp() не запрашивает новую температуру от датчика (длительное выполнение функции), а просто возвращает предыдущий результат, пока не произойдет новый запрос requestTemp().

В версии 3.5 библиотеки появилась возможность отдельно запрашивать температуру и определять корректность полученных данных, а только потом считывать их и передавать в программу - функция readTemp(). Таким образом, вы также можете определить состояние соединения и определить, все ли в порядке с датчиком. Для считывания температуры рекомендуется построить форму:

if (sensor.readTemp()) value = sensor.getTemp() // в противном случае генерируется ошибка

где readTemp() запрашивает данные от датчика и возвращает true, если они были считаны правильно. После этого вы можете получить текущую температуру с помощью getTemp(), которая больше не запрашивает температуру датчика, а выводит результат readTemp().

Примеры

Библиотека позволяет работать по схеме "один датчик - один терминал", где не нужно получать адрес датчика. Достаточно подключить его и использовать:

// датчик лучше читать без адресации, экономится много памяти #include MicroDS18B20 sensor; void setup()void loop()
#include MicroDS18B20 sensor; // Датчик на D2 void setup()void loop()= 800)>

Каждый датчик имеет свой уникальный адрес. Его можно прочитать следующим образом: Этот код выводит в порт адрес подключенного датчика.

#include MicroDS18B20 sensor; // Создаем безадресный термометр на выводе D2 uint8_t address8; // Создаем таблицу адресов void setup()void loop()Serial.println('>');>else Serial.println("Not connected"); delay(1000);>

Если вы знаете адреса датчиков, вы можете подключить несколько модулей к одному контакту и адресовать их в коде следующим образом

#include #define DS_PIN 2 // Вывод для термометра // Уникальные адреса датчиков - можно прочитать в примере address_read uint8_t s1_addr = ; uint8_t s2_addr = ; MicroDS18B20 sensor1; // Создаем термометр с адресацией MicroDS18B20 sensor2; // Создаем термометр с адресацией void setup()void loop()
// Количество датчиков для упрощения #define DS_SENSOR_AMOUNT 5 // Создаем двумерную таблицу с адресами uint8_t addr8 = ;<,, ,, ,>; #include // укажите DS_ADDR_MODE для подключения блока адресации // и массива датчиков на выводе D2 MicroDS18B20 sensorDS_SENSOR_AMOUNT; void setup().>void loop()= 1000)Serial.println(); // запрос нового for (int i = 0; i>>

Модуль датчика температуры KY-013

Датчики температуры и влажности для Arduino. KY-013

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

В общем, проблематично использовать датчик температуры KY-013 в качестве термометра. Он лучше подходит для включения устройства при определенной температуре и выключения при другой температуре. Сначала нужно выяснить, какое напряжение присутствует на аналоговом входе при нужной температуре, а затем написать код на основе этих значений.

Принципиальная схема

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

Датчики температуры и влажности для Arduino. Схема подключения KY-013

Схема для работы

void setup()void loop()

Вы можете найти KY-013 в магазине

Модуль датчика температуры KY-028

Датчики температуры и влажности для Arduino. KY-028

Датчик используется для контроля температуры в помещении, например, в системах отопления или вентиляции.

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

Датчик имеет как аналоговые, так и цифровые выходы. Аналоговый выход показывает температуру, а цифровой выход показывает, превышен ли установленный порог.

Технические данные

  • Напряжение питания: 3,3 – 5,5 В
  • Рабочая температура: 0 – 70°C

Основные настройки устройства

Пороговое значение компаратора устанавливается с помощью подстроечного резистора.

Если температура превышает установленный порог, на цифровой выход D0 подается высокое напряжение. Если температура низкая, то на выходе D0 низкий уровень.

Датчик содержит два светодиодных индикатора. Светодиод L1 указывает на наличие источника питания. Светодиод L2 загорается, когда температура окружающей среды превышает установленный предел. Это удобный способ настройки устройства.

Когда он активирован, на выходе A0 присутствует напряжение, соответствующее комнатной температуре. Эта температура известна лишь приблизительно. Для повышения точности можно использовать температуру тела (например, прижимая термистор пальцами). В этом случае вы знаете напряжение аналогового выхода при температуре 36,6 °C. Затем эти данные можно использовать в качестве эталона. Другой возможностью является использование температуры таяния льда 0°C. Используйте пакет растаявшего льда или снега из холодильника, чтобы получить новое, надежное значение напряжения.

Принципиальная схема

Датчики температуры и влажности для Arduino. Схема подключения KY-028

Схема для работы

Оцените статью