Проблема с двумя датчиками DS18B20

Тема в разделе "Arduino & Shields", создана пользователем Classic383, 14 янв 2018 в 08:23.

  1. 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

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

    Slaiterx Гик

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

    SergeiL Гик

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