Всё по DS18(B/S)20.

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

free_V_V писал(а):паразитного питания не хватит в любом случае.
Хватит. А вы проверяли что не хватает?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Реклама
Открыл глаза
Сообщения: 65
Зарегистрирован: Пт май 28, 2010 14:40:30

Сообщение free_V_V »

Страница 5 из 22, предпоследний абзац:
"The use of parasite power is not recommended for temperatures above +100° C since the DS18B20 may
not be able to sustain communica tions due to the higher leakage currents that can exist at these
temperatures. For applications in which such temperat ures are likely, it is strongly recommended that the
DS18B20 be powered by an external power supply."

Краткий перевод - Паразитное питание не рекомендуется если измеряемая температура выше 100 градусов.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Ну в вы-таки грели датчик с паразитным питанием? Нет? ДШ все умеют читать.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Открыл глаза
Сообщения: 65
Зарегистрирован: Пт май 28, 2010 14:40:30

Сообщение free_V_V »

Gudd-Head писал(а):Ну в вы-таки грели датчик с паразитным питанием? Нет? ДШ все умеют читать.
Ну если даташиты для вас не указ, тогда о чем разговор? :)

ПС: применяю датчики лет 6, меряю температуру на радиаторах силовых ключей (100-300А, температура 85-100 градусов). Особые трудности в моторном отсеке автомобилей (дома развлекаюсь). Там огромные помехи от системы зажигания и температура легко может уйти за 100 градусов. Все эти проблемы мне приходилось решать самому и успешно. Уверяю вас, многие датчики после 100 градусов показывают 85 именно из-за паразитного питания.

ППС: для меня остается загадкой, почему разработчики после перезагрузки датчика оставляют температуру 85 градусов. Причем без измерений. Ну поставили бы -300 или +500 градусов и не было бы вопросов. Такую температуру полупроводниковые датчики не в состоянии измерять.
Последний раз редактировалось free_V_V Пн июл 02, 2012 13:10:14, всего редактировалось 1 раз.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

free_V_V писал(а):многие датчики
Сидящие на одной шине?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Реклама
Открыл глаза
Сообщения: 65
Зарегистрирован: Пт май 28, 2010 14:40:30

Сообщение free_V_V »

Gudd-Head писал(а):
free_V_V писал(а):многие датчики
Сидящие на одной шине?
И на одной шине 4, и по одному. Думаете только вам лень тянуть кучу проводов на каждый датчик? :))
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7360
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

free_V_V писал(а):Уверяю вас, многие датчики после 100 градусов показывают 85 именно из-за паразитного питания.
В одной аппноте далласовской, было написано, что при высоких температурах паразитное питание применять не рекомендуется из-за повышенных утечек при нагреве кристалла.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Открыл глаза
Сообщения: 65
Зарегистрирован: Пт май 28, 2010 14:40:30

Сообщение free_V_V »

uldemir писал(а):
free_V_V писал(а):Уверяю вас, многие датчики после 100 градусов показывают 85 именно из-за паразитного питания.
В одной аппноте далласовской, было написано, что при высоких температурах паразитное питание применять не рекомендуется из-за повышенных утечек при нагреве кристалла.
Уф. Что вы пытаетесь выяснить? Паразитное питание основано на заряде конденсатора. Он заряжается от шины данных. Его заряда хватает чтобы питать схему. Но при повышенной температуре у полупроводников увеличивается ток утечки и уменьшить его нельзя. Заряда на конденсаторе уже не хватает и датчик перезагружается до завершения команды. После перезагрузки на нем начальное значение 85 градусов. Прочитайте температуру без команды преобразования температуры. У вас будет 85 градусов. Вот точно также он ведет себя при нагреве, что бы вы ему не посылали, результат всегда будет 85 градусов, даже если пожар и надо тушить :))

ПС: или вы сомневаетесь что я вообще работаю с DS18B20 ? Фрагмент кода устроит?
Друг Кота
Аватара пользователя
Сообщения: 7360
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Я уже ничего не выясняю. Просто подтверждаю, что такой эффект описан.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Я вот только нигде не вижу, что Padavan собирался их греть до 100°.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Открыл глаза
Сообщения: 65
Зарегистрирован: Пт май 28, 2010 14:40:30

Сообщение free_V_V »

uldemir писал(а):Я уже ничего не выясняю. Просто подтверждаю, что такой эффект описан.
А мне показалось что не верите и я уже начал выходить из себя :) Я конечно могу ошибаться и код может быть с ошибками, но пока все мои программы подтверждают такой эффект.
Открыл глаза
Сообщения: 65
Зарегистрирован: Пт май 28, 2010 14:40:30

Сообщение free_V_V »

Gudd-Head писал(а):Я вот только нигде не вижу, что Padavan собирался их греть до 100°.
Там все очень тонко. Задержки при подаче напряжений очень критичны. Легко можно 1 проспать в коде без таймера. Шаг влево, шаг вправо ...
Держит паяльник хвостом
Сообщения: 927
Зарегистрирован: Вт сен 07, 2010 19:27:48
Откуда: Ташкент

Сообщение borys »

Также не первый день работаю с этими датчиками и подтверждаю то, что говирит free_V_V -
в режиме паразитного питания они работают ЗНАЧИТЕЛЬНО хуже.
Друг Кота
Аватара пользователя
Сообщения: 15589
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

паразитка хорошо работает только с подключением питания через транзистор (или вывод мк на коротких шлейфах) :tea:
Родился
Сообщения: 11
Зарегистрирован: Вс дек 06, 2009 23:17:40

Сообщение Padavan »

Хочу внести ясность. Температуру я измерял комнатную т.е. от ~27 до ~32. Схему собирал на макетке, на ней же стоял и датчик. Показывал исключительно "85". Задержку (при конвертировании) довел до 3сек., переключал ногу в 1 во время конвертирования, подкидывал даже соседнюю ногу и тоже переключал в"1"на время конвертирования - безрезультатно. Транзистора под рукой к сожалению не оказалось. Запитал датчик по терхпроводной схеме (убрал перемычку с ног питания и Vcc подкинул на "+"), в проге дописал процедуру ожидания конца конвертирования. Схема заработала.
Друг Кота
Аватара пользователя
Сообщения: 15589
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

У микроконтроллеров, даже имеющих "умощненный" вывод, всегда стоит ограничитель выходного тока, а это не совсем то же самое, что и ключ подачи "паразитки" - за счет емкости и собственного сопротивления кабеля могут возникнуть проблемы...
Да и разводка(топология) монтажа не на последнем месте должна быть!
Для линии связи с датчиком удобна телефонная "лапша" или ее современные аналоги
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Сообщение shads »

Как лучше генерировать сигнал сброса устройств 1Wire?
Если обычной задержкой с запретом прерывания, то задержка ок 600 мкс, будет влиять на динамическую индикацию, и будут видны колебания яркости разрядов. Или просто с этим смириться?
Друг Кота
Аватара пользователя
Сообщения: 7360
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

А зачем запрещать прерывания? длительность импульса там плюс-минус две трамвайных остановки. Можно использовать таймер. Можно использовать UART. Даже по тем самым прерываниям динамической индикации можно мерить.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Вымогатель припоя
Аватара пользователя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Сообщение zero648 »

shads писал(а):Как лучше генерировать сигнал сброса устройств 1Wire?
Если обычной задержкой с запретом прерывания, то задержка ок 600 мкс, будет влиять на динамическую индикацию, и будут видны колебания яркости разрядов. Или просто с этим смириться?
генерируй после прерывания, используя режим "sleep"
Друг Кота
Аватара пользователя
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск

Сообщение Леонид Иванович »

Padavan писал(а):подкидывал даже соседнюю ногу и тоже переключал в"1"на время конвертирования
А зачем соседнюю? Можно ту же. Вот мне как-то попались датчики DS18B20P, они вообще имеют только паразитное питание, вывод 3 в datasheet описан как NC. Пришлось добавить в программу перевод ноги, которая является 1-Wire портом, на вывод 1.

Код: Выделить всё

//--------------- Запись/чтение бита по однопроводной шине: ------------------

bool TBit(bool b)
{
  char si;
  si = __save_interrupt();
  __disable_interrupt();       //запрещение прерываний
  Port_OWP_0;
  Port_OWP_OUT;                  //OWP <- 0
  Delay_us(2);                 //delay 2 uS
  if(b) Port_OWP_IN;            //bit = 1, OWP <- 1
  Delay_us(13);                //delay 13 uS
  bool owp = Pin_OWP;          //чтение порта
  Delay_us(45);                //delay 45 uS
  Port_OWP_1;                //force pullup !!!!!!!!!!!!!!!!!!!!!
  Port_OWP_OUT;
  __restore_interrupt(si);     //восстанавление прерываний
  Delay_us(2);                 //delay 2 uS
  return(owp);
}
shads писал(а):Как лучше генерировать сигнал сброса устройств 1Wire?
Если обычной задержкой с запретом прерывания, то задержка ок 600 мкс, будет влиять на динамическую индикацию
А зачем прерывания запрещать на 600 мкс? Длительность импульса сброса сверху ничем не ограничена. От прерываний нужно защищать только интервал, где мы читаем presence, а это порядка 60 мкс.

Код: Выделить всё

//--------------------- Генерация импульса сброса: ---------------------------

bool TReset(void)
{
  char si;
  Port_OWP_0;
  Port_OWP_OUT;                  //OWP <- 0
  Delay_us(500);               //delay 500 uS
  si = __save_interrupt();
  __disable_interrupt();       //запрещение прерываний
  Port_OWP_IN;                  //OWP <- 1
  Delay_us(14);                //delay 14 uS
  if(Pin_OWP)                  //если OWP = 0, то ошибка
  {
    Delay_us(52);              //delay 52 uS
    if(!Pin_OWP)               //если OWP = 1, то ошибка
    {
      __restore_interrupt(si); //восстанавление прерываний
      Delay_us(250);           //delay 250 uS
      if(Pin_OWP)              //если OWP = 0, то ошибка
      {
        return(1);             //если ошибок нет, термометр присутствует
      }
    }
  }
  __restore_interrupt(si);     //восстанавление прерываний в случае ошибки
  return(0);
}
Контактная информация:
Ответить

Вернуться в «Периферия»