1-Wire, притовится дачиком.

Нет ответов
drump
Offline
Зарегистрирован: 08.05.2014

Добрый день! Не могу заставить Arduino стать датчиком DS18B20. Имеется система, в ней несколько температурных датчиков( ds18b20, по 1-wire, схема питания - внешняя, т.е. по питание идет по отдельному проводу), необходимо регулировать температуру, а поскольку нагревать датчики руками долго и хлопотно, было принято решение подменить их arduino. Используя библиотеку OneWire и примеры  смог считать адреса дачиков(ну и какую температуру они выводят). Далее использую библиотеку OneWireSlave, чтобы моя ардуина притворилась датчком( сами датчики отключаю). И вот здесь я встал намертво. 1 - библиотека с http://robocraft.ru/blog/arduino/302.html, скетч : 

#include "OneWireSlave.h"
unsigned char rom[8] = {0x28, 0x63, 0x06, 0x78, 0x03, 0x00, 0x00, 0x48 };
//char T[9] = {80, 1, 2, 2, 127, 255, 16, 16, 92};
char T[9] = {0x51, 0x01, 0x02, 0x02, 0x7F, 0xFF, 0x0F, 0x10, 0xEB};
char date[255];
OneWireSlave ds(6);
 
void setup(void) 
{
  ds.setRom(rom);
  Serial.begin(9600);  
}
 
void loop(void) 
  bool a = ds.waitReset();
  bool b = ds.presence();
  
  if ((a == 1) & (b == 1))
  {
    delayMicroseconds(250);
    int c = ds.recvData(date,250);
    Serial.print("c = ");
    Serial.println( c);
    for (int i = 0 ;i < c ; i++)
    {
      Serial.print(" ");
      Serial.print(date[i],HEX);
    }
    Serial.println("");
    if (c == 19)
    {
      Serial.println("SEND's");
//
    }
  }
}

я получаю команды :

1) 0x55 (имя устройства) 0xBE (и еще 9 непонятных байт , которые каждый раз меняются)

2) 0xFFFFFFCC 0x44

Как я понимаю команда 2 - предназначена, чтобы датчик начал преобразовывать температуру, а 1 - чтобы отправил данные. К сожалению эти данные не отражаются в системе(пишет что нет связи). Могу только предположить что дело в таймингах, но идеи кончились уже. Буду очень благодарен, если сможете помочь!