DS18B20

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

  1. DIYMan

    DIYMan Guest

    Смотрите, какая шляпа: 0xCC - это не адрес, это команда на пропуск адреса. Т.е. надо не select, а просто write:

    Код (Text):

    // запускаем конвертацию у всех датчиков на шине
    oneWire.reset();
    oneWire.write(0xCC);
    oneWire.write(0x44);
     
     
    arkadyf и Sadesign нравится это.
  2. Sadesign

    Sadesign Нерд

    Блин. (( Ну как так-то?!
    Спасибо! )
     
  3. Classic383

    Classic383 Нуб

    Добрый день. Прошу помощи, сделал метеостанцию. Возникла проблема при подключении датчиков Dallas DS18B20. При падении температуры ниже -15 градусов показывает значение этого датчика -127, у комнатного в этот момент температура корректная:
    Sensor2 21.75
    Sensor1 -127.00

    Код (C++):
    #include <OneWire.h>
    #include <DallasTemperature.h>
    #define ONE_WIRE_BUS 7
    OneWire oneWire(ONE_WIRE_BUS);
    DallasTemperature sensors(&oneWire);
    DeviceAddress Thermometer1 = {
      0x28, 0xC0, 0x77, 0xE3, 0x05, 0x00, 0x00, 0x49 };  
    DeviceAddress Thermometer2 = {
      0x28, 0xFA, 0x1C, 0xE3, 0x05, 0x00, 0x00, 0x0A };
    void setup() {
      sensors.begin();
      sensors.setResolution(Thermometer1, 10);
      sensors.setResolution(Thermometer2, 10);
      Serial.begin(9600);
    }
    void printTemperature(DeviceAddress deviceAddress) {
      float tempC = sensors.getTempC(deviceAddress);
      Serial.println(tempC);
    }
    void loop() {
      sensors.requestTemperatures();
      Serial.print("Sensor1  ");
      printTemperature(Thermometer1);
      Serial.print("Sensor2  ");
      printTemperature(Thermometer2);
    }
    Если попробовать загрузить скетч-пример из библиотеки OneWire, то тут температура выводится корректно:

    ROM = 28 C0 77 E3 5 0 0 49
    Chip = DS18B20
    Data = 1 AC FE 4B 46 3F FF 4 10 60 CRC=60
    Temperature = -21.25 Celsius, -6.25 Fahrenheit
    ROM = 28 FA 1C E3 5 0 0 A
    Chip = DS18B20
    Data = 1 60 1 4B 46 3F FF 10 10 55 CRC=55
    Temperature = 22.00 Celsius, 71.60 Fahrenheit

    Но проблема в том, что мне нужно использовать две переменные, как в первом коде, чтобы выводить в разных местах дисплея значения. А опыта переделать код не хватает. Встречал еще другие варианты кода в интернете, с ними такая же проблема.
     
  4. Slaiterx

    Slaiterx Гик

    Меняйте библиотеку
     
  5. SergeiL

    SergeiL Оракул Модератор

    Как подключены датчики? с питанием или без? Какой резистор подтяжки OneWire на питание?
    А если в loop delay на секунду поставить, поле запроса температуры и каждого опроса датчика? По крайней мере, для теста.
     
    Последнее редактирование: 14 янв 2018
  6. posehn

    posehn Нуб

    Пытаюсь включить интерфейс 1-wire в моей плате BB-Black для подключения термодатчика DS18B20.
    Делал в основном по инструкциям
    1.http://www.bonebrews.com/temperature-monitoring-with-the-ds18b20-on-a-beaglebone-black/
    2.http://mkaczanowski.com/one-wire-ds1820-thermometer-with-beaglebone-black-libmicrohttpd/

    По первой инструкции у меня синтаксическая ошибка при выполнении команды
    dtc -O dtb -o w1-00A0.dtbo -b 0 -@ w1.dts

    По второй - не найден путь при выполнении команд
    echo BB-W1:00A0 > /sys/devices/bone_capemgr.9/slots
    cat /sys/bus/w1/devices/DEVICE_ID/w1_slave

    Кто подключал по 1-wire, подскажите, что я делаю не так и как правильно ?
     
  7. Именно как он получает данные о температуре, а не как с ним взаимодействовать.
     
  8. в даташите же есть структурная схема и описание работы.
     
    Последнее редактирование: 29 янв 2018
  9. a1000

    a1000 Гуру

  10. b707

    b707 Гуру

    Даташит это прекрасно, но, к слову... ни в оригинальном даташите, ни в русском переводе нет прямого ответа на вопрос ТС - на каком собственно принципе работает датчик температуры
     
  11. b707

    b707 Гуру

    Вообще оригинальный даташит, даром что от производителя - вместо обьяснения принципов работы датчика кормит пользователя рекламной мурой. Секция "Измерение температуры" начинается с гордой фразы "Ключевой элемент DS18B20 - датчик прямого преобразование температуры в цифру" (англ: The core functionality of the DS18B20 is its direct-to-digital temperature sensor."). А буквально через пару строк начинается обьяснение режимов работы банального АЦП...
    Ребята. вы уж там договорились бы - это "analog-to-digital" или "direct" ? :)
     
  12. DetSimen

    DetSimen Guest

    их почитать, дак там целый БЭСМ-6 в один кристалл утоптан.
     
  13. parovoZZ

    parovoZZ Гуру

    Судя по тому, что где-то было написано о лазерной коррекции сопротивления, то там банальный терморезистор на полупроводнике (так же, как обычный). За эти деньги никто не будет напылять медь или еще что-то там. Температурная стабилизация на резисторе с низким ТКС. Здесь тоже ничего нового. А автору для чего знать потроха? У датчика точность 2 градуса. Это вообще ни о чем. Но для дома и побаловаться хватает.
     
  14. b707

    b707 Гуру

    откуда эти данные? В даташите погрешность не более 0.5 гр в диапазоне 10-85 С. Да и за пределаит этого диапазона не сильно хуже, судя по линиям на графике
    [​IMG]
     
  15. parovoZZ

    parovoZZ Гуру

    Ага, одна вторая. Это я что-то попутал.
     
  16. ORLENOK

    ORLENOK Гик

    Добрый день!

    Имеется такой датчик: https://ru.aliexpress.com/item/50CM...32736684107.html?spm=a2g0s.9042311.0.0.q9ZqPE
    Вроде бы DS18B20, но всего два контакта. Можно ли его подключить к arduino? Как понять какой контакт где? Я так понимаю, если и можно, то будет идти не значение температуры, а какие-то аналоговые данные (0-1023). Можно ли будет их преобразовать в значения температуры?
     
  17. b707

    b707 Гуру

    Какой же это DS18B20 - там же в заголовке ясно сказано - NTC термистор. Это совсем другой тип датчика, с библиотеками DS18B20 он работать не будет, но подключить к ардуине можно, ищите в гугле.
     
    ORLENOK нравится это.
  18. DIYMan

    DIYMan Guest

    Это не DS18B20, это термистор.
     
    ORLENOK нравится это.
  19. ZAZ-965

    ZAZ-965 Гуру

    Это NTC термистор.
     
    ORLENOK нравится это.