Сколько DS18b20 можно повесить на одну шину?

avgaz
Offline
Зарегистрирован: 23.09.2014

Puhlyaviy пишет:

спорим если взять витую пару как советовали выше и пропаять все датчики. то легко можно и пару сотен повесить?

Я не спорю, что можно 100 повесить, я пытаюсь решить свою проблему и не думаю, что она заключается в скрутке, так как с ардуиной nano всё работало на той же скрутке да же на звездной развязке без шины, то есть к каждому датчику шол отдельные провода разной длинны, и думаю если бы проблема была именно вскрутке то глюкали бы все датчики а не последний

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

avgaz пишет:

Я не спорю, что можно 100 повесить, я пытаюсь решить свою проблему и не думаю, что она заключается в скрутке, так как с ардуиной nano всё работало на той же скрутке да же на звездной развязке без шины, то есть к каждому датчику шол отдельные провода разной длинны, и думаю если бы проблема была именно вскрутке то глюкали бы все датчики а не последний

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

avgaz
Offline
Зарегистрирован: 23.09.2014

Puhlyaviy пишет:

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

гыыы что считать, если все то же самое, то есть эту же звезду я подключил к меге и она перестала нормально работать, далее я уже начал ставить внешнее питание, уменьшил резистор, заменил датчик, а уж переделка на шину была последним моментом и она не помогла ошибка все одна была сымый дальний датчик что при звезде что при шине, 99% если я пропояю скрутку и уберу повтор опроса датчика, не изменится не чего.

 

ПС  что то сейчас мысль посетила, а может быть ошибка из за того что у меня в коде первым опрашивается именно дальний датчик

sensors.requestTemperatures();
  temp1 = sensors.getTempC(Thermometer1);
  if (temp1 <= -127){
    temp1 = sensors.getTempC(Thermometer1);
  }
  temp2 = sensors.getTempC(Thermometer2);
  temp3 = sensors.getTempC(Thermometer3);
  temp4 = sensors.getTempC(Thermometer4);
  temp5 = sensors.getTempC(Thermometer5);
  temp6 = sensors.getTempC(Thermometer6);

То есть temp1 = sensors.getTempC(Thermometer1); это последний датчик, может быть из за этого?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

avgaz пишет:

гыыы что считать, если все то же самое, то есть эту же звезду я подключил к меге и она перестала нормально работать, далее я уже начал ставить внешнее питание, уменьшил резистор, заменил датчик, а уж переделка на шину была последним моментом и она не помогла ошибка все одна была сымый дальний датчик что при звезде что при шине, 99% если я пропояю скрутку и уберу повтор опроса датчика, не изменится не чего.

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

avgaz
Offline
Зарегистрирован: 23.09.2014

Puhlyaviy пишет:

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

Вы опять преувеличиваете, нормальная скрутка нормально работает, не как вы написали типа рядом ложите, скрутка будет лучше соединителя папа-мама и не чего на них как то работает. у меня сетевая витуха на ПК скрученная работает уже 5 лет, не было на тот момент обжимника и коннектора скрутил, а по сейдень так и пашет.

Я пост выше изменил ПС может из за этого? 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

avgaz пишет:

Вы опять преувеличиваете, нормальная скрутка нормально работает, не как вы написали типа рядом ложите, скрутка будет лучше соединителя папа-мама и не чего на них как то работает. у меня сетевая витуха на ПК скрученная работает уже 5 лет, не было на тот момент обжимника и коннектора скрутил, а по сейдень так и пашет.

И последний ваш датчик тоже работает...  через раз.. так же как и витуха скрученая...

типа 10Мбит держит с кучей ошибок, а на 100 уже начинает затыкаться и снижает скорость, ибо количество ошибок становиться не адекватным..

с 1wire ровно та же фигня.. оно работает.. но через раз..

avgaz
Offline
Зарегистрирован: 23.09.2014

Puhlyaviy пишет:

И последний ваш датчик тоже работает...  через раз.. так же как и витуха скрученая...

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

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

avgaz пишет:

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

покупай мешок кофе, приходи, будем варить кофе и гадать на кофейной гуще.. ведь тебе так лень взять в руки паяльник..

inspiritus
Offline
Зарегистрирован: 17.12.2012

Судя по 53 посту, Вы так и не поставили задержку между запросом преобразования и получением данных. Это неправильно.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Добавьте ещё штук 5 датчиков и посмотрите  результат......

KVadik
KVadik аватар
Offline
Зарегистрирован: 15.06.2014

Свежие скрутки на качество работы 1-wire не влияют, со временем они могут окисляться и тогда могут возникнуть проблемы. Но народ на пром объектах умудряется дешевые RJ11 розетки использовать и ничего, работает годами. 

А сбой раз в несколько часов для 1-wire "это норма" ;). Может вызываться внешними помехами. 

А кабель экранированный? Экран заземлен как положено? Но даже если кабель экранирован, то у дешевых китайских датчиков в гильзе на проводе все-равно родной метр провода без экрана.

А то, что с одним контроллером работало на 100%, а с другим иногда сбоит, может быть вызвано большей чувствительностью к помехам другого контроллера или где-то мене удачной его схемотехникой. Вероятность сбоя при двух считываниях подряд в Вашем случае мизирна, а при, например, 5 вообще стремится к 0.

Если уж очень хотите избавится от сбоев, берите рекомендуемый спецификациями кабель IEEE 1394, хардварный мастер 1-wire рекомендуемый для сети ващего радиуса и веса.

Можете ещё с осцилографом поиграться, проанализировать работу Вашей сети.

 

KVadik
KVadik аватар
Offline
Зарегистрирован: 15.06.2014

avgaz пишет:

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

Дык, наверное потому что последний, сигналу от него дольше идти, соответственно вероятность исказиться у него больше. А может сам датчик похуже попался.

avgaz
Offline
Зарегистрирован: 23.09.2014

inspiritus пишет:

Судя по 53 посту, Вы так и не поставили задержку между запросом преобразования и получением данных. Это неправильно.

я ставил delay(1000);  после  sensors.requestTemperatures(); результата не какого.

То есть функция sensors.getTempC(Thermometer1); это просто преобразование, уже полученых данных? тогда я не пойму почему при повторном преобразовании всё нормально то есть

temp1 = sensors.getTempC(Thermometer1);
  if (temp1 <= -127){
    temp1 = sensors.getTempC(Thermometer1);
  }

если опроса датчика при этом не происходит

 

avgaz
Offline
Зарегистрирован: 23.09.2014

KVadik пишет:

А сбой раз в несколько часов для 1-wire "это норма" ;). Может вызываться внешними помехами. 

А кабель экранированный? Экран заземлен как положено? Но даже если кабель экранирован, то у дешевых китайских датчиков в гильзе на проводе все-равно родной метр провода без экрана.

А то, что с одним контроллером работало на 100%, а с другим иногда сбоит, может быть вызвано большей чувствительностью к помехам другого контроллера или где-то мене удачной его схемотехникой. Вероятность сбоя при двух считываниях подряд в Вашем случае мизирна, а при, например, 5 вообще стремится к 0.

Если уж очень хотите избавится от сбоев, берите рекомендуемый спецификациями кабель IEEE 1394, хардварный мастер 1-wire рекомендуемый для сети ващего радиуса и веса.

Ну для меня сбой именно на этом датчике критичныей так как он влияет на работу другого устройства, ну да ладно это я решил програмно.

Кабель нет не экранированый, в моем захолустье то что есть то и бери ((

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

кабель не экранированый на скрутках и по твоему должно все идеально работать, а все дураки что фигню советуют)) витая пара не космических денег стоит. как и термоусадка например

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

KVadik      >>Можете ещё с осцилографом поиграться, проанализировать работу Вашей сети.<<

Осциллографом там лучше не смотреть- я видел эту прекрасно работающую " грязь".......

Разве что USBee или  SaleAе  попробовать.....

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

jeka_tm пишет:

кабель не экранированый на скрутках и по твоему должно все идеально работать, а все дураки что фигню советуют)) витая пара не космических денег стоит. как и термоусадка например

ага. как в том анекдоте

Три мужика идут по полю. Видят на земле лежит нераспечатанная бутылка водки. Подниамают...

- Мужики, водка!!!! - говорит первый открывая бутылку

Делает большой глоток и падает замертво. 

- Эй, ты чего??? Не ну понюхай, это же водка, - говорит второй и дает понюхать третьему.

- Да, водка, - подтверждает третий. - Может он чего то до этого съел...

Второй делает бо-ольшущий глоток и тоже падает замертво...

Третий:

Мужики!!! Ну вы чего, ну это же водка, - нюхая бутылку говорит третий. 

- Ну это же водка... ВОДКА!!! Мужики... ПОМОГИТЕ!!!!

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ага)

почитай кстати. у человека витая пара была, и та глючила))

http://arduino.ru/forum/apparatnye-voprosy/chudny-dela-arduinovskie-pir-...

KVadik
KVadik аватар
Offline
Зарегистрирован: 15.06.2014

jeka_tm пишет:

ага)

почитай кстати. у человека витая пара была, и та глючила))

http://arduino.ru/forum/apparatnye-voprosy/chudny-dela-arduinovskie-pir-...

гм, и где там 1-wire?

KVadik
KVadik аватар
Offline
Зарегистрирован: 15.06.2014

trembo пишет:

KVadik      >>Можете ещё с осцилографом поиграться, проанализировать работу Вашей сети.<<

Осциллографом там лучше не смотреть- я видел эту прекрасно работающую " грязь".......

Разве что USBee или  SaleAе  попробовать.....

это я уже прикалывался :)

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да не в 1 wire смысл. а в том что даже на таком просто варианте сработал или нет (1 или 0) помех ловилось достаточно

griin
Offline
Зарегистрирован: 19.04.2015

Хочу поблагодарить за активную подтяжку.

Давно хотел что-то типа этого, тяму не хватило.

На производстве пока не пробовал, а дома - вешаю 10Н кондер на датчик - вытягивает

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

griin пишет:

 а дома - вешаю 10Н кондер на датчик - вытягивает

Ну тут все зависит от толщины веревки и веса кондиционера.. надеюсь вешаете не над любимым креслом любимой тещи?

SergCh
Offline
Зарегистрирован: 18.12.2014
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
#define ONE_WIRE_BUS 12  // Data wire is plugged into port 12 on the Arduino
OneWire oneWire(ONE_WIRE_BUS); // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
DallasTemperature sensors(&oneWire);
DeviceAddress A, B, C, D, E, F;
void setup(void)
{
  lcd.begin(16, 2);
  sensors.begin();
  if (!sensors.getAddress(A, 0))   lcd.print("no find 0");
  if (!sensors.getAddress(B, 1)) lcd.print("no find 1");
  if (!sensors.getAddress(C, 2))   lcd.print("no find 2");
  if (!sensors.getAddress(D, 3)) lcd.print("no find 3");
  if (!sensors.getAddress(E, 4))   lcd.print("no find 4");
  if (!sensors.getAddress(F, 5)) lcd.print("no find 5");
  sensors.setResolution(A, 12);
  sensors.setResolution(B, 12); 
  sensors.setResolution(C, 12);
  sensors.setResolution(D, 12);
  sensors.setResolution(E, 12);
  sensors.setResolution(F, 12);
}
void printTemperature(DeviceAddress t)
{
  float tempA = sensors.getTempC(A);
  lcd.setCursor(0,0);
  lcd.print(tempA);
  float tempB = 0.05 + sensors.getTempC(B);
  lcd.setCursor(5,0);
  lcd.print(" ");
  lcd.print(tempB);
  float tempC = sensors.getTempC(C);
  lcd.setCursor(10,0);
  lcd.print(" ");
  lcd.print(tempC);
  
  float tempD = sensors.getTempC(D);
  lcd.setCursor(0,1);
  lcd.print(tempD);
  float tempE = 0.15 + sensors.getTempC(E);
  lcd.setCursor(5,1);
  lcd.print(" ");
  lcd.print(tempE);
  float tempF = sensors.getTempC(F);
  lcd.setCursor(10,1);
  lcd.print(" ");
  lcd.print(tempF);

}
void loop(void)
{ 
  sensors.requestTemperatures(); 
  printTemperature(A);
}

Примерно та же ситуация была шлейф около 15 метров, 7 датчиков, распределённых по шлейфу. Пока не укоротил отростки от шлейфа до датчиков до минимума, и не поставил керамику 10 uF на конце шлейфа, так всё и глючило без конца. Пара не витая, просто сигнальный 4 жильный провод. Но всё пропаяно, да )))) Ну и до кучи мой скетч на термометр из ардуины, ЛСД и 6 датчиков.

Только в 31 и 43 строке надо коррекцию уберать (+0.05 и +0,15), поскольку это под конкретные датчики делалось.