WAVGAT и DS18B20 – подключение датчика температуры

Напоминаем, что перед началом работы с WAVGAT UNO R3 (или WAVCAT UNO R3), необходимо осуществить правильную настройку Arduino IDE. Подробнее об этом в СТАТЬЕ. Здесь же мы рассмотрим сопряжение Wavgat и DS18B20 – подключение датчика температуры.

DS18B20 – это калиброванный цифровой термометр с 1-Wire-интерфейсом и диапазоном измеряемых температур от -55 °C до +125 °C.

Ранее мы описывали принципы подключения данного датчика температуры к оригинальной плате Arduino UNO R3. Подробнее об этом читайте в СТАТЬЕ. Датчик DS18B20 имеет три основных контакты:

(минус) – земля (минус питания). Подключается к порту GND на WAVGAT;
out (или S) – информационный выход. Подключается к программируемому цифрового порта на WAVGAT (в некоторых модулей этот контакт центральный, в других крайний);
+ (плюс) – плюс питание. Подключается к питанию 3.3V (5V) на WAVGAT.


ds18b20-scheme

Для работы датчика с Arduino (для Wavgat и DS18B20 аналогично) нужно подключить с помощью директивы #include библиотеку OneWire. После загрузки данного архива, его содержимое нужно распаковать и поместить по адресу C:\Program Files (x86)\Arduino\libraries

#include <OneWire.h>

int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2

//Temperature chip i/o
OneWire ds(DS18S20_Pin); // on digital pin 2

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

void loop(void) {
float temperature = getTemp();
Serial.println(temperature);

delay(100); //just here to slow down the output so it is easier to read

}

float getTemp(){
//returns the temperature from one DS18S20 in DEG Celsius

byte data[12];
byte addr[8];

if ( !ds.search(addr)) {
//no more sensors on chain, reset search
ds.reset_search();
return -1000;
}

if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.println("CRC is not valid!");
return -1000;
}

if ( addr[0] != 0x10 && addr[0] != 0x28) {
Serial.print("Device is not recognized");
return -1000;
}

ds.reset();
ds.select(addr);
ds.write(0x44,1); // start conversion, with parasite power on at the end

byte present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad

for (int i = 0; i < 9; i++) { // we need 9 bytes 
ata[i] = ds.read(); 
} 
ds.reset_search(); 
byte MSB = data[1]; 
byte LSB = data[0]; 
float tempRead = ((MSB << 8) | LSB); //using two's compliment 
float TemperatureSum = tempRead / 16; 
return TemperatureSum; 
}

Результат работы датчика можно отобразить в Arduino IDE, открыв Tools/Serial Monitor

temp

Также рекомендуем установить библиотеку Dallas Temperature, в которой собраны функции для упрощения работы с датчиком.

// подключим необходимые библиотеки
#include <OneWire.h>
#include <DallasTemperature.h>
 
// сигнальный провод подключен к 2 пину на Arduino
#define ONE_WIRE_BUS 4
 
// настроим библиотеку 1-Wire для связи с датчиком
OneWire oneWire(ONE_WIRE_BUS);
 
// создадим объект для работы с библиотекой DallasTemperature
DallasTemperature sensors(&oneWire);
 
void setup(){
  // инициализируем работу Serial порта
  Serial.begin(9600);
  sensors.begin();
}
 
void loop(){
  // отправляем запрос на измерение температуры
  sensors.requestTemperatures();
  // покажем температуру в мониторе Serial порта
  Serial.print("Temp C: ");
  Serial.print(sensors.getTempCByIndex(0));
  Serial.println();
}

Wavgat и DS18B20Некоторые материалы по работе WAVGAT и DS18B20 частично позаимствованны с wiki.amperka.ru

Успехов в Ваших проектах!

Оставьте комментарий

Your email address will not be published. Required fields are marked *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.