DS18B20

Тема в разделе "Arduino & Shields", создана пользователем Perun61, 15 ноя 2012.

  1. Perun61

    Perun61 Нерд

    Друзья , растолкуйте бестолковому ..
    Имеется температурный датчик 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();

    Может кто нибудь разжевать ? Насколько я понимаю, сдвигая старший байт на восемь бит , мы же обнуляем его , теряя три бита информации о температуре ? ? ?
     
  2. Unixon

    Unixon Оракул

    Не мучайтесь, все уже сделано. Just google it: "DS18B20 Arduino" ;)
     
    Кирилл Смолин и nailxx нравится это.
  3. idShura

    idShura Нерд

    Подскажите пожалуйста, можно ли так подсоединить датчик температуры DS18B20+ ?


    [​IMG]
     
    Кирилл Смолин нравится это.
  4. Unixon

    Unixon Оракул

    Все верно. Там 1-wire интерфейс, его трудно включить неправильно...
     
  5. idShura

    idShura Нерд

    Спасибо.
     
  6. idShura

    idShura Нерд

    Наконец то пришел датчик DS18B20, собрал схему. При включении датчик начинает сильно греться. Поначалу думал что перепутал контакты, но после все сверил с data sheet и убедился что все подключено верно. Подскажите в чем может быть дело?
     
  7. Megakoteyka

    Megakoteyka Оракул

    Ножки датчика в нужную сторону посчитали?
     
  8. idShura

    idShura Нерд

    В datasheet я посмотрел на картинку (BOTTOM VIEW) но почему то я подумал что это вид сверху. Вот я лошара :)
     
  9. zsm

    zsm Гик

    Помогите разобраться нубу:)
    Купил пару
    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 может мне китайцы
    не тот датчик положили:)
     
  10. Unixon

    Unixon Оракул

    Гляньте библиотеки на github.com (поиск по "DS18B20"), возможно это проблема конкретной реализации.
    Кстати, схема включения какая?
     
  11. zsm

    zsm Гик

    спасибо, заработало только что с родной библиотекой , проблема в подключении как раз была :)
     
  12. marconi205

    marconi205 Нуб

    Доброго Всем дня!

    У меня просьба к "Корифеям" и "Аксакалам"
    Пытался изменить байт конфигурации (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".
    Подскажите пожалуйста ,что не так?
     
  13. marconi205

    marconi205 Нуб

    Ну , слава богу , сам разобрался . Просто упустил что перед записью в скрэчпад нужно пробежать процедуру сброса , выбора адреса , а потом уже давать команду на запись алармов и конфигурации . Экскюз за трабл!
     
  14. stalker_kz

    stalker_kz Нерд

    Здравствуйте!

    Помогите разобраться, пытаюсь настроить получение температуры с двух датчиков 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));
    }
     
  15. acos

    acos Официальный гик Команда форума

    А все питается от ардуины через usb?
     
  16. stalker_kz

    stalker_kz Нерд

    Ну да ардуино к usb подключен, в этом может быть проблема?
     
  17. acos

    acos Официальный гик Команда форума

    Нет. Просто первое, что приходит в голову — проблема с питанием.
     
  18. -Mark-

    -Mark- Гик

    Вы на какой диете?
     
  19. stalker_kz

    stalker_kz Нерд

    Думаете нужно ардуино от батареек или сети запитать?
     
  20. stalker_kz

    stalker_kz Нерд

    Ну что никто не знает? А что за светодиод L на плате, я заметил, что температура с датчика пляшет тогда когда загорается светодиод L, это как то связано.