Страница 10 из 59

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

Добавлено: Пн июл 02, 2012 12:07:05
Gudd-Head
free_V_V писал(а):паразитного питания не хватит в любом случае.
Хватит. А вы проверяли что не хватает?

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

Добавлено: Пн июл 02, 2012 12:43:14
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 градусов.

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

Добавлено: Пн июл 02, 2012 12:47:49
Gudd-Head
Ну в вы-таки грели датчик с паразитным питанием? Нет? ДШ все умеют читать.

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

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

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

ППС: для меня остается загадкой, почему разработчики после перезагрузки датчика оставляют температуру 85 градусов. Причем без измерений. Ну поставили бы -300 или +500 градусов и не было бы вопросов. Такую температуру полупроводниковые датчики не в состоянии измерять.

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

Добавлено: Пн июл 02, 2012 13:10:09
Gudd-Head
free_V_V писал(а):многие датчики
Сидящие на одной шине?

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

Добавлено: Пн июл 02, 2012 13:12:03
free_V_V
Gudd-Head писал(а):
free_V_V писал(а):многие датчики
Сидящие на одной шине?
И на одной шине 4, и по одному. Думаете только вам лень тянуть кучу проводов на каждый датчик? :))

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

Добавлено: Пн июл 02, 2012 13:16:36
uldemir
free_V_V писал(а):Уверяю вас, многие датчики после 100 градусов показывают 85 именно из-за паразитного питания.
В одной аппноте далласовской, было написано, что при высоких температурах паразитное питание применять не рекомендуется из-за повышенных утечек при нагреве кристалла.

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

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

ПС: или вы сомневаетесь что я вообще работаю с DS18B20 ? Фрагмент кода устроит?

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

Добавлено: Пн июл 02, 2012 13:40:33
uldemir
Я уже ничего не выясняю. Просто подтверждаю, что такой эффект описан.

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

Добавлено: Пн июл 02, 2012 13:45:40
Gudd-Head
Я вот только нигде не вижу, что Padavan собирался их греть до 100°.

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

Добавлено: Пн июл 02, 2012 13:48:17
free_V_V
uldemir писал(а):Я уже ничего не выясняю. Просто подтверждаю, что такой эффект описан.
А мне показалось что не верите и я уже начал выходить из себя :) Я конечно могу ошибаться и код может быть с ошибками, но пока все мои программы подтверждают такой эффект.

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

Добавлено: Пн июл 02, 2012 13:53:19
free_V_V
Gudd-Head писал(а):Я вот только нигде не вижу, что Padavan собирался их греть до 100°.
Там все очень тонко. Задержки при подаче напряжений очень критичны. Легко можно 1 проспать в коде без таймера. Шаг влево, шаг вправо ...

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

Добавлено: Пн июл 02, 2012 19:48:13
borys
Также не первый день работаю с этими датчиками и подтверждаю то, что говирит free_V_V -
в режиме паразитного питания они работают ЗНАЧИТЕЛЬНО хуже.

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

Добавлено: Пн июл 02, 2012 19:58:33
BOB51
паразитка хорошо работает только с подключением питания через транзистор (или вывод мк на коротких шлейфах) :tea:

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

Добавлено: Вт июл 03, 2012 20:14:12
Padavan
Хочу внести ясность. Температуру я измерял комнатную т.е. от ~27 до ~32. Схему собирал на макетке, на ней же стоял и датчик. Показывал исключительно "85". Задержку (при конвертировании) довел до 3сек., переключал ногу в 1 во время конвертирования, подкидывал даже соседнюю ногу и тоже переключал в"1"на время конвертирования - безрезультатно. Транзистора под рукой к сожалению не оказалось. Запитал датчик по терхпроводной схеме (убрал перемычку с ног питания и Vcc подкинул на "+"), в проге дописал процедуру ожидания конца конвертирования. Схема заработала.

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

Добавлено: Сб июл 07, 2012 06:45:12
BOB51
У микроконтроллеров, даже имеющих "умощненный" вывод, всегда стоит ограничитель выходного тока, а это не совсем то же самое, что и ключ подачи "паразитки" - за счет емкости и собственного сопротивления кабеля могут возникнуть проблемы...
Да и разводка(топология) монтажа не на последнем месте должна быть!
Для линии связи с датчиком удобна телефонная "лапша" или ее современные аналоги

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

Добавлено: Ср июл 18, 2012 15:35:22
shads
Как лучше генерировать сигнал сброса устройств 1Wire?
Если обычной задержкой с запретом прерывания, то задержка ок 600 мкс, будет влиять на динамическую индикацию, и будут видны колебания яркости разрядов. Или просто с этим смириться?

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

Добавлено: Ср июл 18, 2012 17:32:42
uldemir
А зачем запрещать прерывания? длительность импульса там плюс-минус две трамвайных остановки. Можно использовать таймер. Можно использовать UART. Даже по тем самым прерываниям динамической индикации можно мерить.

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

Добавлено: Ср июл 18, 2012 21:59:28
zero648
shads писал(а):Как лучше генерировать сигнал сброса устройств 1Wire?
Если обычной задержкой с запретом прерывания, то задержка ок 600 мкс, будет влиять на динамическую индикацию, и будут видны колебания яркости разрядов. Или просто с этим смириться?
генерируй после прерывания, используя режим "sleep"

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

Добавлено: Ср июл 18, 2012 22:09:37
Леонид Иванович
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);
}