| Ваш IP: 3.230.1.126 | Online(17) - гости: 11, боты: 6 | Загрузка сервера: 2.71 ::::::::::::


DS18B20 без библиотеки (Arduino)

DS18B20 это датчик температуры с цифровым последовательным интерфейсом 1-Wire.

Основные характеристики датчика:

  • Погрешность измерения не больше 0,5 °С (для температур от -10 °С до +85 °С)
  • Температурный диапазон измерений от -55 С до +125 °С
  • Датчик питается напряжением от 3,3 В до 5 В.
  • Разрешающая способность от 9 до 12 бит
  • Каждый датчик обладает своим уникальным серийным кодом (адрес)
  • Не требуются дополнительные внешние элементы.
  • Можно подключить сразу до 127 датчиков к одной линии связи.
  • Информация передается по протоколу 1-Wire.

Схема подключения

При использовании модуля устанавливать подтягивающий резистор не нужно, он уже установлен на плате модуля.

Использование стандартной библиотеки DallasTemperature позволяет достаточно просто взаимодействовать с датчиками температуры DS18B20, но время измерения при использовании этой библиотеки достаточно большое. Ниже представлен скетч в котором используется только библиотека OneWire для управления шиной 1-Wire, при этом время измерения датчика заметно меньше при разрешении датчика 12 бит.

#include <OneWire.h>  // https://rcl-radio.ru/wp-content/uploads/2018/07/OneWire.zip
#include <LiquidCrystal_I2C.h> // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1
LiquidCrystal_I2C lcd(0x27, 16, 2);
OneWire  ds(A0); // Вход датчика
 
void setup() {
  lcd.init();
  lcd.backlight();
}
 
void loop() {
  lcd.setCursor(0, 0); lcd.print(dsRead(0), 2); // Опрос датчика 1
  //  lcd.setCursor(0,1);lcd.print(dsRead(1),2);// Опрос датчика 2
}
 
float dsRead(byte x) {
  byte data[2], addr[8][8], kol = 0;
  while (ds.search(addr[kol])) {  // поиск датчиков, определение адреса и кол-ва датчиков
    kol++;
  } 
  ds.reset_search();  // Сброс поиска датчика
  ds.reset();         // Инициализация, выполняется сброс шины
  ds.select(addr[x]); // Обращение к датчику по адресу
  ds.write(0x44, 0);  // Измерение температуры с переносом данных в память
  ds.reset();         // Инициализация, выполняется сброс шины
  ds.select(addr[x]); // Обращение к датчику по адресу
  ds.write(0xBE);     // Обращение памяти
  data[0] = ds.read();// Чтение памяти byte low
  data[1] = ds.read();// Чтение памяти byte high
  float value = ((data[1] << 8) | data[0]) / 16.0; return (float)value; // Расчет температуры и вывод
}

Скетч может поддерживать до 8 датчиков подключенных к одному входу. Для вывода температуры используется функция dsRead(0) в которой необходимо указать номер датчика. Для примера показания датчика выводятся на LCD1602 (I2C).

Вывод серийного номера датчика (адреса) и температуры в монитор порта:

#include <OneWire.h>
OneWire  ds(A0);
 
void setup() {
  Serial.begin(9600);
}
 
void loop() {
  Serial.println(dsRead(0), 2); // Опрос датчика 1
  delay(1000); 
}
 
float dsRead(byte x) {
  byte data[2], addr[8][8], kol = 0;
  while (ds.search(addr[kol])) {  // поиск датчиков, определение адреса и кол-ва датчиков
 
  for( int i = 0; i < 8; i++) {
 Serial.print(' ');
 Serial.print(addr[kol][i], HEX);
 }
   Serial.print(" "); kol++;
  } 
 
 
 
  ds.reset_search();  // Сброс поиска датчика
  ds.reset();         // Инициализация, выполняется сброс шины
  ds.select(addr[x]); // Обращение к датчику по адресу
  ds.write(0x44, 0);  // Измерение температуры с переносом данных в память
  ds.reset();         // Инициализация, выполняется сброс шины
  ds.select(addr[x]); // Обращение к датчику по адресу
  ds.write(0xBE);     // Обращение памяти
  data[0] = ds.read();// Чтение памяти byte low
  data[1] = ds.read();// Чтение памяти byte high
  float value = ((data[1] << 8) | data[0]) / 16.0; return (float)value; // Расчет температуры и вывод
}

Для удобства использования я упаковал выше показанный код в библиотеку — http://forum.rcl-radio.ru/misc.php?action=pan_download&item=735&download=1

Пример использования №1:

#include <DS18B20_RCL.h>

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.println(dsRead(A0,0), 2); // вход датчика, номер датчика
  delay(5000);
}

Пример использования №2 (вывод температуры на TM1637):

#include <DS18B20_RCL.h>
#include <STM32_TM1637.h>                // https://rcl-radio.ru/wp-content/uploads/2020/02/STM32_TM1637_V1_3.zip
   STM32_TM1637 tm(2,3);// CLK, DIO

void setup() {
  tm.brig(7); // ЯРКОСТЬ 0...7
}

void loop() {
   tm.print_float(dsRead(A0,0),1,  0,0,0,0); 
   delay(1000);
}

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

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

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

  • Радиомикрофон

    Схема радиомикрофона показана на рисунке. Радиомикрофон работает на частоте 87,9 МГц и представляет собой автогенератор с емкостной обратной связью и дополнительной емкостью С4 в индуктивной ветви (схема Клаппа). Дополнительная емкость необходима, во-первых, для развязки по постоянному току цепей питания и смещения. Во2вторых, она обеспечивает дополнительную степень свободы для получения оптимального …Подробнее...
  • HEF4051B — увеличение количества аналоговых входов Arduino

    HEF4051B — увеличение количества аналоговых входов Arduino

    ИМС HEF4051B (4051) представляет собой 8 канальный аналоговый CMOS мультиплексор/демультиплексор. HEF4051B можно применить для увеличения числа аналоговых входов Arduino, для этого будет задействован одни аналоговый вход и три цифровых входа Arduino. #include <HEF4051.h> // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=748&download=1 HEF4051 hef(A0,2,3,4);// analog_input A0, D2,D3,D4 void setup() {  Serial.begin(9600); } void loop() {  for(byte i=0;i<8;i++){ …Подробнее...
  • Два простых УМЗЧ

    Два простых УМЗЧ

    Характеристики Номинальная чувствительность 0,35В Номинальная выходная мощность при нагрузке 4 Ом — 10Вт Диапазон воспроизводимых частот от 40 до 20000 Гц Скорость нарастания выходного напряжения 25В\мкс Коэф. нелинейных искажений по всем диапазоне 0,35% Напряжение питания 11…16В Первый каскад на VT1 работает в усилителе напряжения, а остальные VT2-VT5 образуют эмиттерный повторитель …Подробнее...
  • Однофазная мостовая схема выпрямления

    Однофазная мостовая схема выпрямления

    Схема мостового выпрямителя показана на рисунке а), которая состоит из двухобмоточного трансформатора, четырех диодов включенных по схеме моста и нагрузки выпрямителей Rн. К одной диагонали моста подключена вторичная обмотка трансформатора, к другой нагрузка. В схеме четыре диода соединены так, что напряжение вторичной обмотки трансформатора подается на нагрузку в течении одного …Подробнее...
  • Регулятор температуры воды

    Регулятор предназначен для регулировки температуры воды в аквариуме или в другой емкости в диапазоне 10-40°С. В основе уст-ва интегральный компаратор напряжения К553СА3. Эта микросхема имеет мощный выход, достаточный для подключения реле. Принцип действия схемы: На прямом входе (вывод3) компаратора создается образцовое напряжение при помощи делителя R1\R2. Это напряжение можно менять …Подробнее...