Друзья , растолкуйте бестолковому .. Имеется температурный датчик DS18B20. Информация о температуре содержится в 2-х байтах. Бит 0-3 это дробная часть, 4-10 целая часть, 11-15 знак отрицательный или положительный. Во всех примерах в инете расшифровка происходит следующим образом: // высчитываем температуру int HighByte, LowByte, TReading, Tc_100; LowByte = data[0]; HighByte = data[1]; TReading = (HighByte << 8) + LowByte; Tc_100 = TReading/2; Serial.print(" T = ");Serial.print(Tc_100); Serial.println(); Может кто нибудь разжевать ? Насколько я понимаю, сдвигая старший байт на восемь бит , мы же обнуляем его , теряя три бита информации о температуре ? ? ?
Наконец то пришел датчик DS18B20, собрал схему. При включении датчик начинает сильно греться. Поначалу думал что перепутал контакты, но после все сверил с data sheet и убедился что все подключено верно. Подскажите в чем может быть дело?
В datasheet я посмотрел на картинку (BOTTOM VIEW) но почему то я подумал что это вид сверху. Вот я лошара
Помогите разобраться нубу Купил пару http://www.ebay.com/itm/180970372664?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649 вот таких сенсоров но, ни как не получается их прикурить к UNO библиотеки и примеры скетчей использовал от сюда в этом случае ошибок не возникает но и температура не измеряется. если использовать стандартную библиотеку и пример скетча возникает ошибка: No more addresses. R=28 38 6C B5 4 0 0 EC Device is not a DS18S20 family device. даже не знаю что и думать , смущает надпись EC Device is not a DS18S20 может мне китайцы не тот датчик положили
Гляньте библиотеки на github.com (поиск по "DS18B20"), возможно это проблема конкретной реализации. Кстати, схема включения какая?
Доброго Всем дня! У меня просьба к "Корифеям" и "Аксакалам" Пытался изменить байт конфигурации (4байт скрэчпада термодатчика DS18B20 ). Использовал библиотечный файл OneWire . так выглядит фрагмент кода для этой процедуры: " ds.write(0x4E,0x1C);//запись "HT" байта термоалармаб ds.write(0x4E,0x15);//запись "LT" байта термоаларма ds.write(0x4E,0xFF);//запист (cfg) байта конфигурации ds.write(0x48);// на всякий пожарный копирую три байта в EEPROM " Но после нового прочтения файл конфигурации остался "3F" т.е. точность 9 бит, А надеялся получить "7F". Подскажите пожалуйста ,что не так?
Ну , слава богу , сам разобрался . Просто упустил что перед записью в скрэчпад нужно пробежать процедуру сброса , выбора адреса , а потом уже давать команду на запись алармов и конфигурации . Экскюз за трабл!
Здравствуйте! Помогите разобраться, пытаюсь настроить получение температуры с двух датчиков DS18B20 и чтобы при превышении определенного порога загорался светодиод... все работает вот только не совсем как нужно, вдруг температура на обоих датчиках прыгает до максимума а потом опять падает не пойму в чем причина... кто подскажет как избавиться от этих скачков... соответственно лед тоже зажигается... что не есть гуд! видео по ссылке Может это из за плохого контакта или я что то не предусмотрел... #include <OneWire.h> #include <DallasTemperature.h> #include <LiquidCrystal.h> float myTemp; float myTemp1; #define ONE_WIRE_BUS 2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7); void setup() { lcd.begin(16, 2); lcd.setCursor(0, 0); lcd.print("UControlIt.TV"); lcd.setCursor ( 5, 1 ); lcd.print("C"); lcd.setCursor ( 13, 1 ); lcd.print("C"); sensors.begin(); pinMode(1, OUTPUT); } void loop() { lcd.setCursor ( 15, 1 ); lcd.print("*"); readtemp(); delay (500); lcd.setCursor ( 15, 1 ); lcd.print(" "); delay (500); if (myTemp < 25) { digitalWrite(1, LOW); delay(1000); } else { digitalWrite(1, HIGH); delay(1000); } } void readtemp() { sensors.requestTemperatures(); myTemp = (sensors.getTempCByIndex(0)); myTemp1 = (sensors.getTempCByIndex(1)); lcd.setCursor ( 0, 1 ); lcd.print(sensors.getTempCByIndex(0)); lcd.setCursor ( 8, 1 ); lcd.print(sensors.getTempCByIndex(1)); }
Ну что никто не знает? А что за светодиод L на плате, я заметил, что температура с датчика пляшет тогда когда загорается светодиод L, это как то связано.