| Ваш IP: 3.231.229.89 | Online(27) - гости: 10, боты: 17 | Загрузка сервера: 0.62 ::::::::::::

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:

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

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

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

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

  • Экономичный усилитель для наушников (3В)

    Экономичный усилитель для наушников (3В)

    Усилитель для наушников может быть напрямую подключен к CD-проигрывателю, тюнеру и магнитофону. Подходит к разным моделям наушников различный — импеданс: 32, 100, 245, 300, 600 & 2000 Ом. R3 рассчитан для импеданса наушников до 300 ом. Свыше 600 ом нагрузки или выше необходимо изменить R3 на 100K. Технические данные: Потребляемый …Подробнее...
  • ЭЛЕКТРИЧЕСКИЕ ПАРАМЕТРЫ ТРИОДНЫХ ТИРИСТОРОВ ТИПОВ КУ104А — КУ104Г

    Тип Наибольшее прямое напряжение, В КУ104А 15 КУ104Б 30 КУ104В 60 КУ104Г 100 Для тиристоров этого типа Ток в закрытом состоянии 1 не более…… 0,12 мА Обратное постоянное напряжение не более …. 6 В Импульсный отпирающий ток управления 1 не более . . 15 мА Импульсное отпирающее напряжение управления 1 …Подробнее...
  • Регулятор для паяльника

    Регулятор позволяет плавно регулировать температуру от 50 до 100% от номинальной. Открыванием тиристора управляет мультивибратор с регулируемой R3 скважностью. Транзисторы любые германиевые НЧ — МП39-42, диоды Д226 Д237 и др., тиристор КУ201 КУ202 И-Н. Общее сопротивление гасящих резисторов R6-R8 — 12…14кОм, суммарная мощность рассеивания не менее 5 Вт. Внимание!!! Схема …Подробнее...
  • Приставка — стереодетектор

    Монофонический приемник можно легко переделать в стереофонический с помощью простой приставки.  Подробнее...
  • Регулируемый импульсный стабилизатор напряжения LM2576HV-ADJ

    Регулируемый импульсный стабилизатор напряжения LM2576HV-ADJ

    Регулируемый импульсный стабилизатор напряжения LM2576HV-ADJ (микросхема понижающего широтно-импульсного (ШИМ) регулируемого стабилизатора напряжения) имеет широкий диапазон регулируемого выходного напряжения от 1,2 до 50В с выходным максимальным током 3А. Так как стабилизатор работает в импульсном режиме, он имеет высокий КПД и как правило оснащается небольшим радиатором площадью не более 100 см2. Устройство …Подробнее...