Адрес DS18B20

MuravyovSF
Offline
Зарегистрирован: 18.04.2020

Всем привет.

Вопрос простой. Можно ли извлечь один датчик DS18B20 и установить другой, такой же без смены адреса?

Есть ли код, который бы определял любой подключённый датчик?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

у меня - есть. 

MuravyovSF
Offline
Зарегистрирован: 18.04.2020

И как сделать?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

запрограммировать. 

MuravyovSF
Offline
Зарегистрирован: 18.04.2020

Это понятно, что запрограммировать.

Только как ни пробую не выходит.

-NMi-
Offline
Зарегистрирован: 20.08.2018

MuravyovSF пишет:

Вопрос простой.

Да нихрена он не простой. Лично я ничо_нипонял. Темнишь ты что-то или недоговариваешь. Здесь видиццо несколько вариантов: код`у фпринципе без разницы на адрес датчика, если он инициализируется при старте. Другое дело - если он жестко привязан и не может менятся. Этт так обычно "комерсы" в кедах делают, типо привязко и тд. Но такие "босяццкие" защиты обходяцца раздэзом и банкой пифффка :)))   Так_шо колись, чо там у тебя?

MuravyovSF
Offline
Зарегистрирован: 18.04.2020

Обычный термометр на работе для измерения температуры воздуха снаружи. Иногда выходит из строя, где-то раз в три-пять месяцев. Ставлю новый, определяю адрес, лезу в код, подключаю и опять работает. Просто надоело. Хочу один выкинул, а другой вставил и чтобы работало.

-NMi-
Offline
Зарегистрирован: 20.08.2018

Йоптэ_гавновапрос. Перепейши код, дилоф_то...

MuravyovSF
Offline
Зарегистрирован: 18.04.2020

Так вот и не пойму как отвязаться от адреса.

-NMi-
Offline
Зарегистрирован: 20.08.2018

Литр коня ***** или VSOP нам с Дедом и мы те прям на_пальцах обЪясним, чо_куда_и_каг. ДагаварилисЪ?

MuravyovSF
Offline
Зарегистрирован: 18.04.2020

Да без базара)))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

MuravyovSF пишет:

И как сделать?

Взять пример из библиотеки. Там спокойно спрашивают у устройства его адрес, а потом с ним работают. И вот также спрашивать, а потом работать с тем, что ответили.

-NMi-
Offline
Зарегистрирован: 20.08.2018

Отлично. Ждём схему и прочие "интимности"   :))

MuravyovSF
Offline
Зарегистрирован: 18.04.2020

Нашёл вот:

OneWire  ds(10);  // on pin 10 (a 4.7K resistor is necessary)

byte deviceType;
void setup(void) {
  Serial.begin(9600);
}

void loop(void) {
  byte i;

  byte type_s;
  byte data[12];
  byte addr[8];
  float celsius; 
  
  if ( !ds.search(addr)) {
    ds.reset_search();
    delay(250);
    return;
  }

  if (OneWire::crc8(addr, 7) != addr[7]) {     
      return;
  }
  switch (addr[0]) {
    case 0x10:
      type_s = 1;
      deviceType=1; //Chip = DS18S20 or old DS1820
      break;
    case 0x28:
      type_s = 0;
      deviceType=2;//Chip = DS18B20
      break;
    case 0x22:
      type_s = 0;
      deviceType=3;// Chip = DS1822
      break;
    default:
      deviceType=0;
      return;
  } 
  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);        
  delay(1000);   
  ds.reset();
  ds.select(addr);    
  ds.write(0xBE);     
 for ( i = 0; i < 9; i++) {data[i] = ds.read();}
 int16_t raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; 
    if (data[7] == 0x10) {
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } else {
    byte cfg = (data[4] & 0x60);
    if (cfg == 0x00) raw = raw & ~7;  
    else if (cfg == 0x20) raw = raw & ~3; 
    else if (cfg == 0x40) raw = raw & ~1; 
   
  }
  celsius = (float)raw / 16.0;  
  Serial.write (1);
  Serial.write (2);
  Serial.print (deviceType); 
  Serial.write (3);
     for( i = 0; i < 8; i++) {   
     Serial.write (2);
     Serial.print(addr[i], HEX);
     Serial.write (3);
    }
  Serial.write (2);
  Serial.print(celsius);
  Serial.write (3); 
  Serial.write (4); 
  
}
Вроде этот код считывает адрес.
А вот адрес моего нового датчика.
Что прописать вместо него?
byte _d18x2x1Addr[8]={0x28, 0x7B, 0x19, 0x2, 0x8, 0x0, 0x0, 0xD3};
sadman41
Offline
Зарегистрирован: 19.10.2016
trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Я где-то слышал что есть такие люди
которые умеют получать температуру с любого датчика
просто подключенного к какому-то пину.....
И слышал что им пофигу какой адрес у этого датчика..

Bruzzer
Offline
Зарегистрирован: 17.03.2020

MuravyovSF

А сколько у вас всего подключенных датчиков?

MuravyovSF
Offline
Зарегистрирован: 18.04.2020

Всего один. Его меняю на другой и начинаются танцы с бубном.

Bruzzer
Offline
Зарегистрирован: 17.03.2020

Для одного датчика обычно адрес знать не надо. Даются команды без указания адреса и на измерение и потом на чтение.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Гугли ds18b20 команда SkipROM

sadman41
Offline
Зарегистрирован: 19.10.2016

А можно просто гуглить Dallas Termometer library

-NMi-
Offline
Зарегистрирован: 20.08.2018

DetSimen пишет:

Гугли ds18b20 команда SkipROM

Дет, ну какой из_тя бизЪнесЪмэн???   Весь "конь" профукал ))))

А я блин так старалсо...

sadman41
Offline
Зарегистрирован: 19.10.2016

А я, кстати, малину не портил, держался.

-NMi-
Offline
Зарегистрирован: 20.08.2018

41 - да, так держать!!!

oleg_kazakof
Offline
Зарегистрирован: 24.04.2015

MuravyovSF пишет:

Обычный термометр на работе для измерения температуры воздуха снаружи. Иногда выходит из строя, где-то раз в три-пять месяцев.

Вы где их берёте, (чтобы не напороться), та-кто они вроде трудно убиваемые.

  

lean_74
Offline
Зарегистрирован: 22.12.2015
mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Контроллер нормальный вроде...