GyverLibs / microDS18B20

Легкая и удобная в обращении библиотека для работы с 1-Wire термометрами DS18B20
MIT License
45 stars 11 forks source link

Не читается адрес датчика #14

Closed thedemoncat closed 2 years ago

thedemoncat commented 2 years ago

Использую такой программный код, собранный из кусков примера либы

#include <microDS18B20.h>
#define DC 5
MicroDS18B20<DC> sensor;
uint8_t address[8];

void setup() {
  Serial.begin(9600);
  sensor.setResolution(12);
}
void loop() {
  // запрос температуры  
  sensor.requestTemp();

  // вместо delay используй таймер на millis(), пример async_read
  delay(1000);

  // проверяем успешность чтения и выводим
  if (sensor.readTemp()) 
    Serial.println(sensor.getTemp());
  else Serial.println("error");

  // Запрос адреса датчика
  if (sensor.readAddress(address)) {  // если успешно, выводим
    Serial.print('{');
    for (uint8_t i = 0; i < 8; i++) {
      Serial.print("0x");
      Serial.print(address[i], HEX);  // Выводим адрес
      if (i < 7) Serial.print(", ");
    }
    Serial.println('}');
  } else Serial.println("Not connected");

  // прпочитали сырое значение
  uint16_t rawVal = sensor.getRaw();  
  Serial.print("Сырые данные: ");
  Serial.println(rawVal);

  // преобразовали
  Serial.println(DS_rawToFloat(rawVal));

}

датчик отвечает температурой, но адрес не возвращает.

...
Not connected
Сырые данные: 621
38.81
38.81
Not connected
Сырые данные: 621
38.81
38.81
Not connected
Сырые данные: 621
38.81
38.75
Not connected
Сырые данные: 620
38.75
38.75
Not connected
Сырые данные: 620
38.75
38.75
Not connected
Сырые данные: 620
38.75
38.75
...
GyverLibs commented 2 years ago

Встроенные примеры работают корректно?

thedemoncat commented 2 years ago

Только получение данных о температуре. Причем это единственная либа, с помощью которой я смог получить данные температуры. Остальные просто не видят датчик. Адрес вообще не могу считать ни одним из найденных способов(

Еще интересно, что по умолчанию разрешение стояло не 12 бит, а меньше, так как чувствительность датчика была в пол градуса. Пришлось принудительно поставить sensor.setResolution(12);

GyverLibs commented 2 years ago
thedemoncat commented 2 years ago

1, 2. Датчик покупал этот - https://aliexpress.ru/item/4000550061662.html?gatewayAdapt=glo2rus&sku_id=10000002852197596&spm=a2g0s.12269583.0.0.6f254262JSG9FQ

  1. Пробовал подключать проводами с резюком и вот таким вот терминалом
  2. Пробовал на 60-ти разных esp, D1mini - результат одинаковый 5,6. PlatformIO Core, version 6.0.2. Но пробовал заливать и в штатной от ардуинки - результат одинковый
GyverLibs commented 2 years ago

На этом терминале уже стоит резюк. Нужно либо резюк по схеме, либо терминал этот

thedemoncat commented 2 years ago

Да. я так и делал либо резюк по схеме либо терминал. Пробовал 2 варианта

GyverLibs commented 2 years ago

Не исключен брак датчика. Температура 38.5 это правильная? Или погода на Марсе

thedemoncat commented 2 years ago

температура реальная. кинул в стакан с водой я пробовал 4 датчика эз этой партии. все ведут себя одинаково. попробую другой купить

GyverLibs commented 2 years ago

Попробуй предыдущие версии библиотеки, например 3.7 и 3.5. у меня пока нет возможности проверить работоспособность на есп, но последний раз когда тестировал - все работало

thedemoncat commented 2 years ago

Ок. Но через пару недель. Уехал в отпуск

thedemoncat commented 2 years ago

Проверил работу с датчиками от другого вендора. все норм. Походу пришли чипы с непрошитым адресом( Ишуз закрываю. Проблема решена