| Ваш IP: 34.204.173.45 | Online(22) - гости: 17, боты: 5 | Загрузка сервера: 0.4 ::::::::::::

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:

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

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

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

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

  • Цифровой регулятор громкости

    Цифровой регулятор громкости

    Роль виртуального резистора в регуляторе громкости выполняют 2-а мультиплексора D4 D5 и набор резисторов R6-R20. Мультиплексоры выполняют роль переключателя на 16 положений. При этом закон регулировки можно выбрать самим изменив номиналы R6-R20. если нужен сдвоенный резистор то тогда берем еще 2-а мультиплексора с резисторами и подключаем их управляющие входы (выводы …Подробнее...
  • Высококачественный усилитель для наушников на LM4880

    Высококачественный усилитель для наушников на LM4880

    Микросхема LM4880 специально разработана для высококачественного усиления звука для наушников. Схема содержит минимальное кол-во внешних элементов, в настройке не нуждается. Выходная мощность усилителя 0,25Вт на нагрузке 8 Ом и 0,085Вт на нагрузке 32 Ом. КНИ не более 0,1%. Напряжение питания микросхемы может быть в пределах от 2,7В до 5В.Подробнее...
  • Слуховой аппарат

    На рисунке представлен простой и достаточно дешевый слуховой аппарат, который состоит из блока с микрофоном и регулятором громкости, к которому подключены обычные наушники. Схема слухового аппарата снабжена систему АРУ. В схеме используется конденсаторный микрофон, напряжение питания на который подается с R1 (10К). Звуковой сигнал от микрофона через разделительный конденсатор С1 …Подробнее...
  • Инвертор напряжения на ICL7660

    Инвертор напряжения на ICL7660

    ICL7660 — слаботочный (20мА) инвертор напряжения, преобразует положительное напряжение в отрицательное (+Uпит=-Uвых). Схема очень простая, содержит минимальное кол-во внешних элементов, в настройке не нуждается. ИМС ICL7660 может работать в диапазоне от 1.5 В до 10.0 В, а ИМС ICL7660A от 1.5 В до 12.0 В. Ток потребления микросхемы не более 80-170 мкА. …Подробнее...
  • Автомат-выключатель освещения

    Автомат-выключатель освещения предназначен для отключения света в дневное время суток, его светочувствительным прибором служит фоторезистор R1 который включен на входе порогового уст-ва собранного на элементах DD1.1 DD1.3. При нормальной освещенности сопротивление фоторезистора  мало, поэтому на выходе DD1.3 будет напряжение высокого уровня и генератор импульсов собранный на элементах DD1.2 DD1.4 не …Подробнее...