| Ваш IP: 34.204.191.145 | Online(32) - гости: 21, боты: 11 | Загрузка сервера: 3.79 ::::::::::::


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:

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

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

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

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

  • Предусилитель на TL072

    Предусилитель на TL072

    На рисунке показана схема высококачественного предварительного усилителя выполненного на ОУ TL072 который представляет собой  2х канальный, малошумящий операционный усилитель с входным каскадом на полевых транзисторах. Предварительный усилитель имеет минимальный набор элементов, после сборки не нуждается в настройке. Напряжение питания ОУ TL072 ±15 В (±18 В макс.), КНИ не превышает 0,01 …Подробнее...
  • Эффективный источник питания с батареей резервного электропитания

    Эффективный источник питания с батареей резервного электропитания

    Принципиальная схема показанная на рисунке автоматически подключает резервную батарею питания к нагрузке и отключает ее при подачи напряжения питания с сетевого источника питания. Схема основана на микросхеме LTC4412 от Linear Technology, которая управляет внешним MOSFET транзистором. Транзистор в схеме используется как идеальный диод, падение напряжение на котором не более 20 мВ. Падение напряжения на …Подробнее...
  • Преобразователь напряжения для газоразрядных индикаторов

    Преобразователь напряжения для газоразрядных индикаторов

    Для питания газоразрядных индикаторов необходимо постоянное или пульсирующее напряжение 100… 200 В. На рисунке показана схема достаточно простого преобразователя напряжения. Основой схемы является таймер на ИМС 555. Принцип работы схемы основан на ЭДС самоиндукции дросселя. При подаче питающего напряжения запускается таймер, который начинает вырабатывать прямоугольные импульсы, эти импульсы периодически открывают …Подробнее...
  • Регулятор громкости, баланса и тембра на ИМС TDA1524

    Эта простая схема предусилителя  позволяет производить регулировку громкости, стереобаланса и тембров. При этом звуковой сигнал не проходит через регуляторы, что упрощает компоновку усилителя. К недостаткам схемы следует отнести ее невысокое входное сопротивление. Характеристики регулятора: Напряжение питания 9…12 В Полоса частот 20…25000 Гц Регулировка тембра на частоте 40 Гц -19/+17 дБ …Подробнее...
  • Усилитель для постоянного уровня сигнала

    Усилитель для постоянного уровня сигнала

    2N3819 Отечественный аналог ОУ 741 К140УД7, 2N3819 аналог КП307Б Данный усилитель обеспечивает постоянный уровень выходного сигнала при значительном изменении входного. ОУ используется как усилитель постоянного тока усиление которого зависит от соотношения R2/R1 и делителя напряжения на R4 и сопротивления полевого транзистора. Транзистор играет роль резистора в данной схеме, его сопротивление …Подробнее...