Странности с DS18S20

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
cahek80
Держит паяльник хвостом
Сообщения: 903
Зарегистрирован: Сб сен 11, 2010 17:32:42

Странности с DS18S20

Сообщение cahek80 »

Доброго времени суток всем.
Использую в своем проекте сабж для измерения температуры воды аквариума. Так вот. пока датчик стоял на макетке всё было нормально. Как только я его припаял через экранированный провод (метра-2-3) датчик стал показывать температуру 0 градусов. Если вернуть датчик назад - всё работает нормально.
Почему такое происходит - не могу понять. Вешал конденсатор на питание на самом датчике - ноль реакции. Ставил задержку около секунды перед измерением и выборкой данных, тоже ноль реакции.
Вот код, который использую.

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

int GetTemperature()
{
  int temp;
  setGIEoff();
  // сначала считаем температуру - потом сделаем замер
  // так будет быстрее, чем ждать 750 мс
  Ow_Reset(&PORTC, 0);
  Ow_Write(&PORTC, 0, 0xCC);                   // Issue command SKIP_ROM
  Ow_Write(&PORTC, 0, 0xBE);                   // Issue command READ_SCRATCHPAD
  temp =  Ow_Read(&PORTC, 0);
  temp = (Ow_Read(&PORTC, 0) << 8) + temp;
  // считали, теперь запустим новый замер температуры
  Ow_Reset(&PORTC, 0);                         // Onewire reset signal
  Ow_Write(&PORTC, 0, 0xCC);                   // Issue command SKIP_ROM
  Ow_Write(&PORTC, 0, 0x44);                   // Issue command CONVERT_T
  setGIEon();
  temp = temp * 5;
  return temp;
}
Код вызываю где-то раз в две секунды не чаще.
Не нужно дергать спящего тигра за усы! Не высыпается 3-ий день!
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15581
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Странности с DS18S20

Сообщение BOB51 »

скорее всего некорректная схемотехника и топология монтажа...
Реклама
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Странности с DS18S20

Сообщение Мастер Ломастер »

скорее всего убогая реализация функции чтения температуры не замечает КЗ в соединительных проводах: если DQ замкнуть на GND, то считаются все нули - нулевая температура
битва с дураками проиграна, победители торжествуют. слава победителям!
cahek80
Держит паяльник хвостом
Сообщения: 903
Зарегистрирован: Сб сен 11, 2010 17:32:42

Re: Странности с DS18S20

Сообщение cahek80 »

я извиняюсь, я конечно понимаю, поязвить можно иногда, но на КЗ и обрывы проверено сразу же.
Не нужно дергать спящего тигра за усы! Не высыпается 3-ий день!
Реклама
Эиком - электронные компоненты и радиодетали
cahek80
Держит паяльник хвостом
Сообщения: 903
Зарегистрирован: Сб сен 11, 2010 17:32:42

Re: Странности с DS18S20

Сообщение cahek80 »

Спасибо, попробую.
Сегодня тоже думал про это. у меня стоит 5.1 кОм подтяжка. При отключении датчика нет никакой реакции (при отключении провода из разъема температура вместо "0.0" стает "0.+")
Не нужно дергать спящего тигра за усы! Не высыпается 3-ий день!
Реклама
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Странности с DS18S20

Сообщение МитяРа »

cahek80 писал(а):припаял через экранированный провод
Применение именно экранированного кабеля чем-то обусловлено?
Экран даст ещё большую погонную ёмкость линии.. Замени на два скрученных проводника, по типу "витой пары".. :tea:
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Реклама
cahek80
Держит паяльник хвостом
Сообщения: 903
Зарегистрирован: Сб сен 11, 2010 17:32:42

Re: Странности с DS18S20

Сообщение cahek80 »

МитяРа писал(а):
cahek80 писал(а):припаял через экранированный провод
Применение именно экранированного кабеля чем-то обусловлено?
Экран даст ещё большую погонную ёмкость линии.. Замени на два скрученных проводника, по типу "витой пары".. :tea:
просто провод подходил эстетически для протягивания его в аквариум :) Попробую поискать другой.
Не нужно дергать спящего тигра за усы! Не высыпается 3-ий день!
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Странности с DS18S20

Сообщение Мастер Ломастер »

cahek80 писал(а):я извиняюсь, я конечно понимаю, поязвить можно иногда, но на КЗ и обрывы проверено сразу же.
вместо глупых обид на правду, вы бы поглядели хоть немного на то, как ПРАВИЛЬНО делать считывание температуры с датчика... тогда вы знали бы о причинах такого нехорошего поведения своего датчика гораздо больше и не заставляли бы множество людей тратить время на поиск ваших ошибок.
битва с дураками проиграна, победители торжествуют. слава победителям!
borys
Держит паяльник хвостом
Сообщения: 927
Зарегистрирован: Вт сен 07, 2010 19:27:48
Откуда: Ташкент

Re: Странности с DS18S20

Сообщение borys »

При длине кабеля 2-3 метра его емкость несущественна. Проблемы с емкостью кабеля начина-
ются прмерно с 20-25 метров.
cahek80
Держит паяльник хвостом
Сообщения: 903
Зарегистрирован: Сб сен 11, 2010 17:32:42

Re: Странности с DS18S20

Сообщение cahek80 »

Мастер Ломастер писал(а):
cahek80 писал(а):я извиняюсь, я конечно понимаю, поязвить можно иногда, но на КЗ и обрывы проверено сразу же.
вместо глупых обид на правду, вы бы поглядели хоть немного на то, как ПРАВИЛЬНО делать считывание температуры с датчика... тогда вы знали бы о причинах такого нехорошего поведения своего датчика гораздо больше и не заставляли бы множество людей тратить время на поиск ваших ошибок.
тогда прошу подсказать глупому выскочке как ПРАВИЛЬНО нужно брать температуру с датчика. Потому как я искренне полагаю, что сначала мы шлем сброс, затем команду 0xCC, потом 0x44 на замер температуры, потом ждем не менее 750 мс и далее снова сброс, затем 0xCC, затем 0xBE для считывания температуры. Полученные 2 байта умножаю на 5. Где я ошибаюсь?
Не нужно дергать спящего тигра за усы! Не высыпается 3-ий день!
cahek80
Держит паяльник хвостом
Сообщения: 903
Зарегистрирован: Сб сен 11, 2010 17:32:42

Re: Странности с DS18S20

Сообщение cahek80 »

МитяРа писал(а):
cahek80 писал(а):припаял через экранированный провод
Применение именно экранированного кабеля чем-то обусловлено?
Экран даст ещё большую погонную ёмкость линии.. Замени на два скрученных проводника, по типу "витой пары".. :tea:
МитяРа огромное спасибо за подсказку, я как-то подумывал тоже на экранировку, но даже не мог предположить, что она НАСТОЛЬКО повлияет. Попробовал подключить 5 метров витой пары - всё работает отлично!

borys как ни странно, сказалось ((( самый обычный двухжильный провод с экраном, купленый на радиорынке несколько дней парил мне мозги (((
Не нужно дергать спящего тигра за усы! Не высыпается 3-ий день!
Аватара пользователя
mial
Друг Кота
Сообщения: 3254
Зарегистрирован: Ср янв 06, 2010 23:31:56
Откуда: Боровичи, Новг. обл.

Re: Странности с DS18S20

Сообщение mial »

Экран тут явно не причем. Видимо что то с кабелем все же было. У меня работает с 30 метрами кабеля в экране, причем в условиях довольно мощных эл. помех.
Прототипы печатных плат на заказ https://radiokot.ru/forum/viewtopic.php?f=54&t=122701
cahek80
Держит паяльник хвостом
Сообщения: 903
Зарегистрирован: Сб сен 11, 2010 17:32:42

Re: Странности с DS18S20

Сообщение cahek80 »

mial писал(а):Экран тут явно не причем. Видимо что то с кабелем все же было. У меня работает с 30 метрами кабеля в экране, причем в условиях довольно мощных эл. помех.
Провод промерил омметром на 2Мома, всё нормально. Если подключать к земле и шине 1-wire внутренние жилы - реакции - 0, если же подключить экран и одну из жил - на экране температура стает по нулям )))
При замере тестером между экраном и внутренней жилой емкость порядка 1 нанофарады.
Не нужно дергать спящего тигра за усы! Не высыпается 3-ий день!
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Странности с DS18S20

Сообщение Мастер Ломастер »

cahek80 писал(а):Потому как я искренне полагаю, что сначала мы шлем сброс, затем команду 0xCC, потом 0x44 на замер температуры, потом ждем не менее 750 мс и далее снова сброс, затем 0xCC, затем 0xBE для считывания температуры. Полученные 2 байта умножаю на 5. Где я ошибаюсь?
вместо самонадеянного "полагаю" следовало бы довериться документации и делать строго так, как там указано. а указано там буквально следующее: считывать 8 байт scratchpad и подсчитывать контрольную сумму. считанным данным доверять только в том случае, если контрольная сумма правильная. а вовсе не 2 байта.
битва с дураками проиграна, победители торжествуют. слава победителям!
cahek80
Держит паяльник хвостом
Сообщения: 903
Зарегистрирован: Сб сен 11, 2010 17:32:42

Re: Странности с DS18S20

Сообщение cahek80 »

если читать даташит, то можно встретить вот такой абзац.
The DS18S20 output data is calibrated in degrees centigrade; for Fahrenheit applications, a lookup table or conversion routine must be used. The temperature data is stored as a 16-bit sign-extended two’s complement number in the temperature register (see Figure 2). The sign bits (S) indicate if the temperature is positive or negative: for positive numbers S = 0 and for negative numbers S = 1. Table 1 gives examples of digital output data and the corresponding temperature reading.
Так что я не вижу противоречий.
Не нужно дергать спящего тигра за усы! Не высыпается 3-ий день!
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Странности с DS18S20

Сообщение Мастер Ломастер »

cahek80 писал(а):если читать даташит, то можно встретить вот такой абзац.
The DS18S20 output data is calibrated in degrees centigrade; for Fahrenheit applications, a lookup table or conversion routine must be used. The temperature data is stored as a 16-bit sign-extended two’s complement number in the temperature register (see Figure 2). The sign bits (S) indicate if the temperature is positive or negative: for positive numbers S = 0 and for negative numbers S = 1. Table 1 gives examples of digital output data and the corresponding temperature reading.
Так что я не вижу противоречий.
а с чем этот абзац может вступать в противоречие? разумеется, ни счем, ибо о том, как принимать данные из датчика в нем не сказано даже слова.
битва с дураками проиграна, победители торжествуют. слава победителям!
cahek80
Держит паяльник хвостом
Сообщения: 903
Зарегистрирован: Сб сен 11, 2010 17:32:42

Re: Странности с DS18S20

Сообщение cahek80 »

тогда прошу мне пальцем в даташите указать где пишется, что надо принимать ровно 8 байт. (пардон, очепятался)
Не нужно дергать спящего тигра за усы! Не высыпается 3-ий день!
Аватара пользователя
md5sum
Вымогатель припоя
Сообщения: 672
Зарегистрирован: Вт окт 27, 2009 22:39:19
Откуда: Москва

Re: Странности с DS18S20

Сообщение md5sum »

cahek80 писал(а):тогда прошу мне пальцем в даташите указать где пишется, что надо принимать ровно 8 байт. (пардон, очепятался)
Глава CRC GENERATION - специально написано для чего надо считать CRC, а посчитать его можно только приняв ВСЕ байты - 8 и сравнивать с 9-м принятым.
Для шины 1-wire которая защищена от помех менее чем на 0% это очень важно.
— Не говорите мне что делать и я не скажу куда Вам идти...
cahek80
Держит паяльник хвостом
Сообщения: 903
Зарегистрирован: Сб сен 11, 2010 17:32:42

Re: Странности с DS18S20

Сообщение cahek80 »

md5sum писал(а):
cahek80 писал(а):тогда прошу мне пальцем в даташите указать где пишется, что надо принимать ровно 8 байт. (пардон, очепятался)
Глава CRC GENERATION - специально написано для чего надо считать CRC, а посчитать его можно только приняв ВСЕ байты - 8 и сравнивать с 9-м принятым.
Для шины 1-wire которая защищена от помех менее чем на 0% это очень важно.
Да, с этим я не спорю, просто мне с головой хватает значения температуры, считанной в двух первых байтах. Тем более в даташите сказано, что я могу прервать считывание данных в любой момент, не читая все 8 байт.
Я прекрасно понимаю, что в ответственных моментах нужно читать это всё и проверять, я просто не согласен с тем, что мне нужно это делать обязательно. :)
Не нужно дергать спящего тигра за усы! Не высыпается 3-ий день!
Аватара пользователя
md5sum
Вымогатель припоя
Сообщения: 672
Зарегистрирован: Вт окт 27, 2009 22:39:19
Откуда: Москва

Re: Странности с DS18S20

Сообщение md5sum »

cahek80 писал(а):Да, с этим я не спорю, просто мне с головой хватает значения температуры, считанной в двух первых байтах. Тем более в даташите сказано, что я могу прервать считывание данных в любой момент, не читая все 8 байт.
Я прекрасно понимаю, что в ответственных моментах нужно читать это всё и проверять, я просто не согласен с тем, что мне нужно это делать обязательно. :)
Прервать можно при необходимости. Но если доверять "любым" данным, то не проще генератор случайных чисел поставить?
Даташит не просто так написан, и не просто так CRC присутствует во всех ответах устроств 1-wire. Про 2 байта Вам правильно написали. Но Вы вольны наступать на те-же грабли сколь угодно много раз. Поищите по форуму - тем о том, что ds1820 врет много, но мне почему-то из почти сотни датчиков ни один не врал...
Простой пример: датчик на проводочке не более метра в одной комнате, на кухне врубается холодильник и если в этот момент происходит считывание, то получаем не температуру, а полный бред. (если не считать CRC). Самое прикольное, что почти месяц неспешной сборки и отладки все работало нормально - небыло НИ ОДНОГО сбоя, но как только устройство было включено "на постоянку" - холодильник влиял на его работу при каждом своем включении. Если Вам просто посмотреть температуру, то пофиг на ошибки, а если по результатам измерений врубается или отключается какое-то оборудование? Оно так и будет "щелкать"...
— Не говорите мне что делать и я не скажу куда Вам идти...
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»