Подключаем датчик температуры DS18S20/DS18B20 к Arduino

Интернет-магазин

Новости Arduino

16 декабря 2013г.
Flutter - платформа разработки, основанная на Arduino
01 марта 2013г.
TV-выход на Arduino
08 февраля 2013г.
Raspberry Pi медиацентр своими руками
08 ноября 2012г.
Пополнение в библиотеке - Bionic Arduino на русском языке
04 июля 2012г.
Сонар для слепых на базе Arduino Mini Pro
30 мая 2012г.
Новости Raspberry Pi или шесть мучительных недель
16 мая 2012г.
Подключение датчика движения к Ардуино
14 февраля 2012г.
Arduino Pong - игровая платформа

Контактные данные

Телефон:
(093) 503-26-13
Электронная почта:

 

Главная Библиотека Arduino Arduino проекты Подключаем датчик температуры DS18S20/DS18B20 к Arduino

Подключаем датчик температуры DS18S20/DS18B20 к Arduino

Библиотека Arduino Arduino проекты

Для подключения датчика достаточно двух проводов – линии данных и заземления; питание элемента в этом случае называется «паразитным»/фантомным (Parasite power mode) и осуществляется по линии данных за счёт накопления энергии во встроенном конденсаторе во время высокого уровня напряжения (данная схема подключения не рекомендуется при температуре свыше +100 С из-за быстрого разряда конденсатора).

Схема соединения очень простая и состоит собственно из самого датчика и сопротивления на 4.7 кОм:

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

Пример  скетча:

#include <OneWire.h>

OneWire ds  (10); // on pin 10

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

void loop  (void) {
 byte i;
 byte present = 0;
 byte type_s;
 byte data[12];
 byte addr[8];
 float celsius, fahrenheit;
 
 if  (! ds.search  (addr)) {
 ds.reset_search  ();
 delay  (250);
 return;
 }
 
 
 ds.reset  ();
 ds.select  (addr);
 ds.write  (0x44,1); // start conversion, with parasite power on at the end
 
 delay  (1000); // maybe 750ms is enough, maybe not
 // we might do a ds.depower  () here, but the reset will take care of it.
 
 present = ds.reset  ();
 ds.select  (addr); 
 ds.write  (0xBE); // Read Scratchpad

 
 for  (i = 0; i < 9; i++) { // we need 9 bytes
 data[i] = ds.read  ();
 }
 

 // convert the data to actual temperature

 unsigned int raw =  (data[1] << 8) | data[0];
 if  (type_s) {
 raw = raw << 3; // 9 bit resolution default
 if  (data[7] == 0x10) {
 // count remain gives full 12 bit resolution
 raw =  (raw & 0xFFF0) + 12 — data[6];
 }
 } else {
 byte cfg =  (data[4] & 0x60);
 if  (cfg == 0x00) raw = raw << 3; // 9 bit resolution, 93.75 ms
 else if  (cfg == 0x20) raw = raw << 2; // 10 bit res, 187.5 ms
 else if  (cfg == 0x40) raw = raw << 1; // 11 bit res, 375 ms
 // default is 12 bit resolution, 750 ms conversion time
 }
 celsius =  (float)raw / 16.0;
 fahrenheit = celsius * 1.8 + 32.0;
 Serial.print  (» Temperature =»);
 Serial.print  (celsius);
 Serial.print  (“ C,»);
 Serial.print  (fahrenheit);
 Serial.println  (“ F»);
} 

Для работы понадобятся библиотеки OneWireTempSensor.h и OneWire.h, которые  можно без труда найти в интернете (или скачать ниже). В этом примере значение температуры выводится в последовательный порт и просмотреть его можно используя Serial Monitor, встроенный в Arduino IDE.

OneWireTempSensor.rar
OneWire.zip

 

Оценка:

Arduino и DS18S20/DS18B20, arduino проекты, arduino +своими руками

26.03.2011, 32084 просмотра.

Комментарии

Подключаем датчик температуры DS18S20/DS18B20 к Arduino
Спасибо!Всё работает!
Оценка:
Олег · 18.04.2012 11:14:13 · ответить · #
Имя

E-mail

Телефон

Тема

Комментарий

Оценка


Контрольные цифры *

Введите число, которое указано выше.

Датчик температуры
-1.25 по Цельсию? Холодно у Вас, однако.: )
ИvN · 04.09.2011 18:23:05 · ответить · #
Имя

E-mail

Телефон

Тема

Комментарий

Оценка


Контрольные цифры *

Введите число, которое указано выше.

Трабл
Ни один из скетчей ни компилируется.Эти скетчи проверялись на компиляцию? Использовались Arduino IDE v 0022 и Arduino IDE v 0021
Оценка:
Эдуард · 24.08.2011 20:32:49 · ответить · #
Имя

E-mail

Телефон

Тема

Комментарий

Оценка


Контрольные цифры *

Введите число, которое указано выше.

Ошибка
-1.25 показывает тогда, когда адрес датчика в строке: byte sensor[8] = {0x10, 0x1D, 0x30, 0xF9, 0x01, 0x08, 0x00, 0x51}; указан неправильно!
Оценка:
sirik · 10.08.2011 11:17:59 · ответить · #
Имя

E-mail

Телефон

Тема

Комментарий

Оценка


Контрольные цифры *

Введите число, которое указано выше.

Корзина пуста

Перейдите в каталог, выберите требуемый товар и добавьте его в корзину.

Метки