Термометр ардуино. Термометр Arduino: подключение и использование датчика температуры DS18B20

Как подключить датчик DS18B20 к Arduino. Как написать скетч для измерения температуры. Какие преимущества у цифрового датчика DS18B20. Как откалибровать термометр на Arduino.

Содержание

Обзор датчика температуры DS18B20

DS18B20 — это цифровой датчик температуры, который позволяет с высокой точностью измерять температуру в диапазоне от -55°C до +125°C. Он имеет ряд преимуществ по сравнению с аналоговыми термисторами:

  • Цифровой интерфейс 1-Wire для подключения к микроконтроллеру
  • Не требует калибровки или внешних компонентов
  • Разрешение измерения от 9 до 12 бит
  • Точность ±0.5°C в диапазоне от -10°C до +85°C
  • Уникальный 64-битный серийный код, позволяющий подключать несколько датчиков к одной шине

Благодаря этим характеристикам DS18B20 является отличным выбором для создания цифрового термометра на базе Arduino.

Подключение DS18B20 к Arduino

Для подключения DS18B20 к Arduino потребуется всего 3 провода:

  • VCC — питание датчика (3.3-5В)
  • GND — земля
  • DQ — линия данных

Схема подключения выглядит следующим образом:


  • VCC датчика подключается к выводу 5V Arduino
  • GND датчика подключается к выводу GND Arduino
  • DQ датчика подключается к цифровому пину Arduino (например, 2)
  • Между VCC и DQ нужно установить подтягивающий резистор 4.7 кОм

Подтягивающий резистор необходим для корректной работы шины 1-Wire. После подключения можно приступать к написанию скетча.

Программирование Arduino для работы с DS18B20

Для работы с DS18B20 потребуются следующие библиотеки:

  • OneWire — для работы с протоколом 1-Wire
  • DallasTemperature — для упрощения работы с датчиком DS18B20

Базовый скетч для считывания температуры будет выглядеть так:

«`cpp #include
#include #define ONE_WIRE_BUS 2 // Пин подключения датчика OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup(void) { Serial.begin(9600); sensors.begin(); } void loop(void) { sensors.requestTemperatures(); float tempC = sensors.getTempCByIndex(0); Serial.print(«Температура: «); Serial.print(tempC); Serial.println(«°C»); delay(1000); } «`

Этот скетч инициализирует датчик, запрашивает измерение температуры каждую секунду и выводит результат в Serial Monitor. Теперь рассмотрим основные функции для работы с DS18B20.


Основные функции для работы с DS18B20

Библиотека DallasTemperature предоставляет удобный API для работы с датчиком DS18B20. Вот некоторые полезные функции:

  • sensors.begin() — инициализация датчика
  • sensors.requestTemperatures()
    — запрос на измерение температуры
  • sensors.getTempCByIndex(0) — получение температуры в градусах Цельсия
  • sensors.getTempFByIndex(0) — получение температуры в градусах Фаренгейта
  • sensors.getDeviceCount() — получение количества подключенных датчиков
  • sensors.getResolution() — получение текущего разрешения измерения
  • sensors.setResolution(12) — установка разрешения (9-12 бит)

Используя эти функции, можно легко настроить термометр под свои нужды. Например, изменить разрешение измерения или работать с несколькими датчиками одновременно.

Калибровка термометра на Arduino

Хотя DS18B20 не требует калибровки, иногда может потребоваться корректировка показаний. Для этого можно использовать следующий алгоритм:

  1. Измерьте температуру эталонным термометром
  2. Сравните показания DS18B20 с эталонным значением
  3. Вычислите разницу и добавьте ее к показаниям датчика в скетче

Например, если DS18B20 показывает 25.5°C, а эталонный термометр 26.0°C, нужно добавить коррекцию 0.5°C:


«`cpp #include #include #define ONE_WIRE_BUS 2 #define TEMPERATURE_PRECISION 12 #define CALIBRATION_OFFSET 0.5 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup(void) { Serial.begin(9600); sensors.begin(); sensors.setResolution(TEMPERATURE_PRECISION); } void loop(void) { sensors.requestTemperatures(); float rawTemp = sensors.getTempCByIndex(0); float calibratedTemp = rawTemp + CALIBRATION_OFFSET; Serial.print(«Калиброванная температура: «); Serial.print(calibratedTemp); Serial.println(«°C»); delay(1000); } «`

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

Использование нескольких датчиков DS18B20

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

  1. Подключите все датчики параллельно к одному пину Arduino
  2. Используйте функцию sensors.getDeviceCount() для определения количества датчиков
  3. В цикле опрашивайте каждый датчик по его индексу

Вот пример скетча для работы с несколькими датчиками DS18B20:


«`cpp #include #include #define ONE_WIRE_BUS 2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup(void) { Serial.begin(9600); sensors.begin(); int deviceCount = sensors.getDeviceCount(); Serial.print(«Найдено датчиков: «); Serial.println(deviceCount); } void loop(void) { sensors.requestTemperatures(); for (int i = 0; i < sensors.getDeviceCount(); i++) { float tempC = sensors.getTempCByIndex(i); Serial.print("Датчик "); Serial.print(i + 1); Serial.print(": "); Serial.print(tempC); Serial.println("°C"); } Serial.println(); delay(1000); } ```

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

Энергосберегающий режим работы с DS18B20

DS18B20 поддерживает режим пониженного энергопотребления, что делает его идеальным для проектов с питанием от батарей. Как реализовать энергосберегающий режим?


  1. Используйте режим сна Arduino между измерениями
  2. Отключайте питание датчика, когда он не используется
  3. Уменьшите частоту измерений

Вот пример энергосберегающего скетча для DS18B20:

«`cpp #include #include #include #include #define ONE_WIRE_BUS 2 #define SENSOR_POWER 3 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup(void) { Serial.begin(9600); pinMode(SENSOR_POWER, OUTPUT); sensors.begin(); } void loop(void) { // Включаем питание датчика digitalWrite(SENSOR_POWER, HIGH); delay(10); // Даем время на инициализацию sensors.requestTemperatures(); float tempC = sensors.getTempCByIndex(0); Serial.print(«Температура: «); Serial.print(tempC); Serial.println(«°C»); // Выключаем питание датчика digitalWrite(SENSOR_POWER, LOW); // Переводим Arduino в режим сна на 1 минуту for (int i = 0; i < 7; i++) { LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF); } LowPower.powerDown(SLEEP_4S, ADC_OFF, BOD_OFF); } // Функция для перевода Arduino в режим сна void sleepNow() { set_sleep_mode(SLEEP_MODE_PWR_DOWN); sleep_enable(); sleep_mode(); sleep_disable(); power_all_enable(); } ```

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


Отображение данных с DS18B20 на LCD дисплее

Для создания автономного термометра удобно использовать LCD дисплей для отображения температуры. Как это реализовать?

  1. Подключите LCD дисплей к Arduino
  2. Используйте библиотеку LiquidCrystal для работы с дисплеем
  3. Выводите показания температуры на экран

Вот пример скетча для отображения температуры с DS18B20 на LCD дисплее:


Презентация к исследовательскому проекту «Инфракрасный термометр на Arduino своими руками» • Наука и образование ONLINE

Главная Работы на конкурс Предметное образование Технические дисциплины Презентация к исследовательскому проекту «Инфракрасный термометр на Arduino своими руками»

Автор: Ковалев Леонид Ильич

Место работы/учебы (аффилиация):

 МБОУ «СОШ №16», г.Сергиев Пасад, Московская область, 9 класс

Научный руководитель: Блохин Сергей Викторович

Сегодня вопрос измерения температуры стоит наиболее остро, нежели ранее. В связи со вспышкой коронавируса и общего ухудшения здоровья населения желательно измерять температуру тела как можно чаще с целью выявления заболевания на ранней стадии, причем для сторонних людей относительно возможного зараженного это делать лучше бесконтактным способом. Пожалуй, не найдется уже такого человека, который бы не знал как, а главное — чем измерить температуру. Нам стало интересно узнать, что это – бесконтактный термометр, история возникновения, принцип работы, практическое применение, а главное, сможем ли мы сделать такой градусник.

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

Цели исследовательской работы:

  • изучить особенности электронного термометра на базе программно-аппаратной системы Arduino;
  • создать бесконтактный ИК термометр используя Arduino и инфракрасный температурный датчик.

Чтобы достичь поставленных целей, необходимо решить ряд задач:

  • познакомиться с литературой по данной теме;
  • раскрыть историю создания термометра;
  • создать термометр с использованием бесконтактного датчика температуры под названием MLX90614;
  • изучить систему Arduino, создав программу на языке C++;
  • провести ряд опытов и исследовательскую работу, чтобы понять работу термометра.

Объект исследования: приборы для измерения температуры тела человека.

Предмет исследования: электронный термометры.

Проект «Чат-боты.PY»

Доступна к просмотру полнотекстовая версия работы

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

Посмотреть работу

Проект «Робот — не просто игрушка»

По телевизору показывают мультфильмы про роботов, в которых они помогают людям в жизни и даже могут вместо человека делать какую-нибудь сложную работу. В жизни мы часто сталкиваемся с роботами. Например, дома у многих есть игрушки на радиоуправлении,…

Посмотреть работу

Презентация по проекту «Разработка мобильного приложения для оказания первой помощи пострадавшим в мирное и военное время с аудио-подсказчиком алгоритмов действий»

В XXI веке технологии стали неотъемлемой частью жизни, они используются в работе, быту, спорте, во всех сферах современной жизнедеятельности, а мобильный телефон стал постоянным спутником и помощником почти каждого человека на планете, что привело к…

Посмотреть работу

Мероприятие завершено

4″>Конкурс, в котором работа участвует

IV Международный конкурс исследовательских работ школьников «Research start 2021/2022»

Направление

Технические дисциплины

Форма представления работы

Презентация к исследовательской работе

Ключевые слова

Проект по программированию (Pascal, Python, Java, С, С++, C# и др.)

Дата публикации работы

11.10.2021

датчик влажности и температуры на базе Ардуино с DHT11

Сегодня вы узнаете, как собрать электронный термогигрометр на базе Arduino и датчика влажности DHT11.
OLED, который вам понадобится, по диагонали 3,3 см (1,3”) и 128х64 точек, работающий на SPI-шине.

Чтобы обмениваться данными с дисплеем нужно будет установить библиотеку u8glib. С ее помощью будут выводиться числа, буквы, растровые изображения на комнатный термометр-гигрометр.

Шаг 1: Подключение к Arduino

Органический светодиод (OLED) – диод, в котором эмиссивный электролюминесцентный слой сделан из органического полимера, который начинает испускать свет под действием электрического тока. Этот слой органического полупроводника расположен между двумя электродами, обычно как минимум один из электродов светопроницаемый.

Дисплей, который я использую, по диагонали 3,3 см (1,3”), 128х64 точки, работает на четырехпроводном последовательном периферийном интерфейсе (шине SPI). Дисплей монохромный синий, потребляет 0,04 Вт энергии, что в десять раз меньше требуемой мощности обычного ЖК-дисплея 16х2.

OLED можно перенастроить для работы с другими шинами (I2C, например) или с трехпроводной SPI шиной. Для этого нужно перепаять один или два резистора с обратной стороны платы дисплея. Они отмечены нулями (на фото).

Для перенастройки на работу с i2c шиной – перепаять резистор BS1 на 1, а резистор BS0 оставить на 0.
Для перенастройки на работу с трехпроводной SPI шиной – перепаять резистор BS1 на 0, а резистор BS0 на 1.

Шаг 2: Немного о датчике DHT11

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

Характеристики:

  • малый размер, низкая стоимость
  • рабочее напряжения 3-5 В
  • максимальный ампераж в режиме запроса данных – 2,5 мА
  • диапазон измерения влажности воздуха 20-80%, погрешность не превышает 5%
  • диапазон измерения температуры 0-50°С, погрешность не превышает 2°С
  • частота измерений не превышает 1 Гц (одно измерение в секунду)

Шаг 3: Компоненты для сборки термогигрометра

Вам понадобятся следующие компоненты:

  • Микроконтроллер Arduino UNO или аналогичный
  • OLED дисплей 3,3 см (1. 3”) 128х64 точек
  • Датчик температуры и влажности DHT11
  • Печатная плата
  • Соединительные провода, 12 шт.

Шаг 4: Подключение датчика и дисплея

Ознакомьтесь со схемой подключения к макетной плате. Положительный и отрицательный выводы под напряжением и датчика, и дисплея подключите соединительными проводами к земле и к 5В выводу платы контроллера.

Подключите соединительным проводом выходной разъем датчика к разъему A0 микроконтроллера.

Подключите пины OLED дисплея к пинам микроконтроллера в следующем порядке:

  • пин DIN дисплея с пином 13 контроллера
  • пин CLK с пином 11
  • пин CS с пином 10
  • пин D/C с пином 9
  • пин RES с пином 8

Пины 13, 11, 10, 9 и 8 используются для передачи данных через интерфейс SPI платой Arduino Uno, а также являются разъемом ICSP с нижней стороны платы контроллера.
После подключения можно загрузить код в контроллер (загрузить его можно также и до подключения).

Шаг 5: Загружаем код

Этот этап достаточно простой, просто загрузите два файла с расширением «.INO» (они называются Farenheit и Celsius, для измерения в Фаренгейтах и Цельсиях соответственно), откройте их в программе Arduino IDE и загрузите в Arduino Uno.

Если вам не нравится шрифт, его можно поменять редактируя код. Для этого просто загрузите поддерживаемые шрифты в библиотеку u8glib.

Загрузите библиотекидля DHT и u8glib, разархивируйте и загрузите в папку библиотек (/Program Files(x86)/Arduino/Libraries (default)).

Последний файл с кодом для SSD1306 128X32 и 128X64 с SPI шиной, и для двуцветных OLED дисплеев (1/4 желтых, 3/4 синих диодов, SSD1306).

Файлы

  • DHT_OLED_Celsius_v1.3.2016.ino
  • DHT_OLED_Fahrenheit_v1.3.2016.ino
  • DHT_DC_OLED_V1.26.16.ino

Шаг 6: Испытания

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

7. MCP9808​: точный модуль термометра для вашего Arduino

Руководство по периферийным устройствам Arduino серии

MCP9808 – это очень точный датчик температуры для вашего Arduino. Он предлагает выбранные пользователем разрешения, программируемые оповещения, возможность подключения I2C и работает с Arduino 5 В и 3,3 В.

В предыдущей статье я рассказал о трех распространенных термометрах, используемых производителями Arduino. Студент недавно спросил, являются ли датчики термометра более точными, чем обычные DHT11/22, TMP36 и BMP280.

Высокоточный датчик температуры Microchip MCP9808


Конечно, есть! Представляем MCP9808 от Microchip.

Вы можете видеть, что этот модуль сделан для точности, взглянув на первую страницу его технического описания; вот что вы видите:

Информации о точности прибора больше, чем обычно, с типичными и максимальными значениями для разных диапазонов. Также можно выбрать разрешение измерения!

Оценка графиков точности MCP9808


Первая страница также содержит очень интересный график распределения точности температуры:

Этот график говорит нам о том, что 20% показаний из выборки из 854 единиц этого модуля содержат приблизительно a 0,0 ˚С ошибка!

Данные показывают, что это очень точный датчик!

В техническом описании содержится еще несколько интересных графиков, например, на странице 7:

Эти графики иллюстрируют изменение точности в диапазоне температур, которые может измерять датчик. Обратите внимание, что на рис. 2-3, где показано распределение погрешности при 25°C, распределение высокое и узкое, сосредоточенное вокруг отметки 0 на горизонтальной оси; это указывает на то, что производитель откалибровал этот датчик для лучшей работы при обычных комнатных температурах, при которых работает большая часть нашей электроники.

Затем посмотрите на рисунки 2-5 и 2-4, где распределение ошибок при 85°C и -20°C короче и более разбросано, что указывает на больший разброс ошибок измерения.

Наглядное описание того факта, что точность датчика меняется по всей ширине диапазона, в котором он работает.

Подробнее


Используется интерфейс I2C для связи с микроконтроллером. Adafruit опубликовал библиотеку, которая делает ее использование еще проще.

Если вы хотите узнать, как использовать MCP9808 с вашим Arduino, рассмотрите мой курс «Начало работы с Arduino: шаг за шагом», где я рассказываю о датчике в лекции 14 раздела 10.

Arduino Step by Step Getting Started — наш самый популярный курс для начинающих.

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

Узнать больше

Просмотрите эту статью

Высокоточный датчик температуры Microchip MCP9808

Оценка графиков точности MCP9808

Узнать больше

Перейти к другой статье

Изучили основы? Ищете более сложные темы?

Arduino Step by Step Getting Serious — это наш комплексный курс Arduino для тех, кто готов перейти на новый уровень.

Узнайте о Wi-Fi, BLE и радио, двигателях (серводвигателях, двигателях постоянного тока и шаговых двигателях с различными контроллерами), ЖК-дисплеях, OLED- и TFT-экранах с кнопками и сенсорными интерфейсами, управлении большими нагрузками, такими как реле и источники света, и о многом, НАМНОГО больше.

Узнать больше

Включите JavaScript, чтобы просматривать комментарии с помощью Disqus. Модуль датчика цифрового термометра/гигрометра

(DHT11) для Arduino

  • {{выделение}}

6,95 $

Деталь №: VUPN5921

Купить 1+ 6,95 $  
Купить 10+ 6,60 $ Сохранить задачу%
prices.length > 1″ border=»0″ cellpadding=»0″ cellspacing=»0″>
Купить {{ price.low }}+ ${{ parseFloat(price.price).toFixed(2) }} Сохранить {{ Math.floor(((product_selected().prices[0].price — price.price) / product_selected().prices[0].price) * 100) }}%  

Посмотреть корзину »

{{ product_selected().in_stock }} в наличии для немедленной отправки.

Этого товара в данный момент нет в наличии.

Посмотреть корзину »

Рекомендуемые продукты

{{ rp[‘product_title’] }}

${{ rp[‘product_price’] }}

Описание продукта


Модуль датчика цифрового термометра/гигрометра (DHT11) для Arduino

Хотите добавить мониторинг окружающей среды в свой Arduino? Этот модуль цифрового термометра/датчика влажности дает вам огромное количество информации в крошечном корпусе!

Измерение температуры в диапазоне от 0°C до 50°C (от 32°F до 122°F) с точностью до 1°C! Измеряйте относительную влажность от 20 до 90% относительной влажности с точностью до 4% относительной влажности!

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

Этот элемент состоит из датчика DHT11, установленного на небольшой коммутационной плате, которая включает в себя подтягивающий резистор 10 кОм на линии передачи данных и размыкает соединения GROUND, POSITIVE_POWER и SERIAL_DATA на три прочных, удобных для макета разъема с шагом 0,1 дюйма. контакты (контакт 1 заголовка — заземление, контакт 2 заголовка — положительное питание, а контакт 3 заголовка — последовательные данные).

Распиновка
  • Контакт 1: VDD (3–5,5 В пост. тока)
  • Контакт 2: последовательные данные
  • Контакт 3: не подключен
  • Контакт 4: Земля

КОЛ-ВО: 1 цифровой датчик термометра/гигрометра (DHT11) для Arduino

Состояние продукта: Новый

ПРЕДУПРЕЖДЕНИЕ : Рак и репродуктивный вред — www.

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

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