| Ваш IP: 3.238.232.88 | Online(33) - гости: 6, боты: 27 | Загрузка сервера: 0.48 ::::::::::::

DS18B20 (Arduino)

DS18B20 цифровой термометр с программируемым разрешением, от 9 до 12–bit, которое может
сохраняться в EEPROM памяти прибора. DS18B20 обменивается данными по 1-Wire шине и при этом может
быть как единственным устройством на линии так и работать в группе. Все процессы на шине управляются
центральным микропроцессором.
Диапазон измерений от –55°C до +125°C и точностью 0.5°C в диапазоне от –10°C до +85°C. В дополнение,
DS18B20 может питаться напряжением линии данных (“parasite power”), при отсутствии внешнего источника
напряжения.
Каждый DS18B20 имеет уникальный 64-битный последовательный код, который позволяет, общаться с
множеством датчиков DS18B20 установленных на одной шине. Такой принцип позволяет использовать один
микропроцессор, чтобы контролировать множество датчиков DS18B20, распределенных по большому
участку. Приложения, которые могут извлечь выгоду из этой особенности, включают системы контроля
температуры в зданиях, и оборудовании или машинах, а так же контроль и управление температурными
процессами.

При подключении датчика DS18B20 к Arduino будем использовать библиотеку  Dallas Temperature, которая значительно упрощает процесс подключения.

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

#include <OneWire.h>
#include <DallasTemperature.h>
 
OneWire oneWire(A0);// вход для датчиков 18b20
DallasTemperature t(&oneWire);
 
void setup() {
  Serial.begin(9600);
  t.begin();
}
 
void loop() {
  t.requestTemperatures();
 
  for (int i = 0; i < t.getDeviceCount(); i++){ 
    Serial.print("Sensor ");
    Serial.print(i);
    Serial.print(": ");
    Serial.print(t.getTempCByIndex(i)); 
    Serial.println("C"); 
  } 
  Serial.println();
  delay(1000);
}

Для вывода на индикатор LCD 1602 можно использовать следующий скетч:

#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h> 
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);// RS,E,D4,D5,D6,D7
OneWire oneWire(A0);// вход для датчиков 18b20
DallasTemperature t(&oneWire);
 
void setup() {
  lcd.begin(16,2);
  t.begin();
}
 
void loop() {
  t.requestTemperatures();
    lcd.setCursor(1,0);lcd.print("t1 = "); 
    lcd.print(t.getTempCByIndex(0)); // датчик № 1
    lcd.print(char(223)); lcd.print("C"); 
 
    lcd.setCursor(1,1);lcd.print("t2 = ");
    lcd.print(t.getTempCByIndex(1)); // датчик № 2
    lcd.print(char(223)); lcd.print("C"); 
 
  delay(1000);
}

DallasTemperature.h

OneWire.h

Комментарии

  • Aleksandr:

    Здравствуйте. Собрал подобный термометр. Использовал один датчик 18в20. С дисплеем 1602. Вторую часть скетча просто не прописывал Работает, но с погрешностью. Контролировал по двум ртутным термометрам. Температура тела 36,7 градусов. На дисплее 36, 04. Датчик ничем не закрыт, контакт с телом прямой. Как програмно устранить погрешность в показаниях? С ув. Александр.

    • liman28:

      Здравствуйте! Укажите максимальную битность датчика добавив строку в раздел void setup():
      t.setResolution(12);//12 бит

      если не поможет, то это погрешность самого датчика, можно только ввести поправку:
      t.getTempCByIndex(0)+0.64; или некий коэффициент t.getTempCByIndex(0)*1,0001

  • Aleksandr:

    Спасибо. Попробую обязательно.

  • Aleksandr:

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

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

Войти с помощью: 

Случайные статьи

  • Arduino HC-06 + DS18B20 (Терморегулятор)

    Arduino HC-06 + DS18B20 (Терморегулятор)

    При помощи Bluetooth модуля HC-06 и платы Arduino можно осуществить управление различными исполнительными механизмами c помощью смартфона. В данном случае речь пойдет от терморегуляторе. В качестве датчика температуры используется цифровой датчик DS18B20, температура регулируется при помощи реле (модуля реле) которое управляет нагревательным элементом. На плате Arduino осуществляется измерение температуры и …Подробнее...
  • Двухобъектный цифровой термометр

    Двухобъектный цифровой термометр

    Для измерения температуры воздуха в помещении и вне его необходимо 2  термометра, данное устройство позволяет измерять температуру двумя датчиками и одним цифровым термометром, причем как в ручном режиме так и автоматическом. Основа прибора АЦП двойного интегрирования на КР572ПВ5 и интегральных датчиков К1019ЕМ1. Питание АЦП осуществляется от биполярного источника. Положительное напряжение …Подробнее...
  • Универсальный усилитель

    Универсальный усилитель

    На рис.1 показана схема усилителя, имеющего хорошую линейность и динамичность усиления, малый начальный ток и выходную мощность 1 Вт. Базовое смещение транзисторов пропорционально амплитуде звукового сигнала благодаря германиевому диоду VD1 — его устанавливают при отсутствии сигнала подбором резистора R1, чтобы ток покоя усилителя составлял 8…10 мА. Кремниевые диоды VD2 и …Подробнее...
  • R2A15908SP — стерео аудиопроцессор (Arduino)

    R2A15908SP — стерео аудиопроцессор (Arduino)

    R2A15908SP — простой но высококачественный аудиопроцессор с микроконтроллерным управлением (I2C). Основные характеристики аудиопроцессора R2A15908SP: Регулировка громкости от -87 до 0 дБ (шаг 1 дБ) 5-и канальный коммутатор входов Режим MUTE Независимый для каждого входа предусилитель с диапазоном регулировки от 0 до 20 дБ (шаг 2 дБ) Регуляторы тембра ВЧ и …Подробнее...
  • Простой измеритель емкости(от 100пФ до 1мкФ)

    На рисунке представлена схема простого стрелочного измерителя емкости, который позволяет относительно точно измерить емкость конденсаторов от 100пФ до 1 мкФ. В измерителе емкости 4-е предела: 100…1000пФ, 1000пФ…0,01мкФ(10000пФ), 0,01…0,1мкФ, 0,1…1,0мкФ. Главное достоинство измерителя — простота конструкции, низкая себестоимость, относительно низкая погрешность измерения. На DD1.1 — DD1.3 собран опорный генератор на 100кГц. …Подробнее...