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

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

Добавлено: Вт май 19, 2015 10:11:59
Gudd-Head
Ну конечно при достаточной длине кабеля он превращается в длинную линию со всеми вытекающими.

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

Добавлено: Вт май 19, 2015 12:49:29
BOB51
Для UnКайF
Датчик или жив или мертв. При правильно изготовленном адаптере линии и проработанным программным обеспечением проблем с длиной кабеля не имеется. Насчет ситуаций КЗ/обрыв и отсутствие ответа/ошибка CRC - должно полностью контролироваться самим программным обеспечением оборудования, использующего датчик (ежли не ...л то ПО разрабатывал), туда же относятся и дополнительные функции "закрепления" за конкретным объектом своего (и только своего!) датчика.
Наиболее типичные отказы - отклонение показаний у нескольких экземпляров от ртутника-эталона и/или "зависание" на какой-нибудь фиксированной температуре (исключение - считывание данных "по умолчанию" при неверной конфигурации и/или "чехарде" с командами). Также следует учитывать термоинерционность конкретной "упаковки".
Единственно полезное при проверке - чтение индивидуального номера датчика. Ну еще данные ЕЕПРОМки из блокнота (можно чегось своего туда впихнуть, ежли контроль в режиме термосигнализатора не используется).
8)

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

Добавлено: Вт май 19, 2015 12:51:54
Gudd-Head
BOB51 писал(а):Датчик или жив или мертв.
Не-не-не. Бывает так, что его пробивает "по питанию". Т.е. в двухпроводном режиме он норм работает, а в трёхпроводном начинает дико разогреваться :facepalm:

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

Добавлено: Вт май 19, 2015 13:19:41
BOB51
Так "саморазогрев" при входном тесте проверяется, а в аппаратуре - аварийное отключение при продолжении наростания температуры по отключении нагревателя (он же пробой управляющего ключа).
В принципе отсеивется при наличии датчика тока в цепи нагревателя - регулятор отключен, тока нет, а температура "ползет". Да и датчик наверняка не один стоит ежли уж весьма ответственная система.
Хотя с таким вариантом встречаться не приходилось (в отличии от специально изготовленных исключительно для "паразитки" датчиков). :dont_know:

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

Добавлено: Вт май 19, 2015 16:49:51
UnКайF
BOB51
Датчики у нас стоят на ЖД транспорте и контролируют нагрев буксовых узлов. Каждый датчик опрашивается примерно раз в минуту. При отказе, естественно, система мониторинга это видит и пишет. Отказ сам по себе не страшен - сменил датчик, и все дела. Заколебало последнее время то, что называют неполадками. Может раз в день "глюкануть" и пропасть. Ищи его потом... Между монитором и датчиком стоят некие коробочки (по одной на 4 датчика), до которых другая шина и протокол. Они же обеспечивают правильную адресацию по месту установки... Что из них вызывает неполадки - коробочка или датчик на локомотиве быстро не определишь - опрос раз минуту.
Во время планового ремонта локомотива тоже датчики нужно проверять чем то.
(ежли не ...л то ПО разрабатывал)
Китайцы ПО разрабатывали :)) Я серьёзно.

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

Добавлено: Вт май 19, 2015 20:10:04
-=Vovka=-
Один раз глюканул - скорее всего была помеха, а повторного опроса нет, только через минуту.
Как вариант сделать логгер и подключиться параллельно каждому датчику. Сразу будет понятно чего и как

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

Добавлено: Вт май 19, 2015 20:19:27
-=Vovka=-
UnКайF писал(а):Во время планового ремонта локомотива тоже датчики нужно проверять чем то.
МК с дисплеем и разъемами для 4-х датчиков: подключился, считал температуру несколько раз - это если не снимать датчики, а так желательно их нагревать/охлаждать и ловить сбои

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

Добавлено: Вт май 19, 2015 21:27:03
UnКайF
Ну, дык, лог ведётся, только о причине неполадки из него не дознаешься. Прибор сделал - см. мой пост на предыдущей странице. Там же вопрос.

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

Добавлено: Вт май 19, 2015 21:41:27
-=Vovka=-
По логу можно увидеть: нет ответа, не совпала CRC, температура не та.
Если проблемы, то в отбраковку. ИМХО
Не знаю насколько бредовая идея, а если мерить напряжение логических уровней?

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

Добавлено: Вт май 19, 2015 21:58:43
UnКайF
В смысле стресс-тест с определением Rds(on) внутреннего ключа датчика ? Ой, не знаю ... Не могу для себя логически обосновать полезность такого занятия.

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

Добавлено: Ср май 20, 2015 08:26:47
BOB51
Вполне вероятно и ента "коробушка" с бабы-ягиной "лягушонкой"
8)
Глянь в личку.
:beer:

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

Добавлено: Ср май 20, 2015 20:23:01
UnКайF
BOB51
Это просто ... праздник какой-то ! (с) :)
Я свой "тестер" сморозил на попавшейся под руку PIC16F630 и СИДах. Позже может выложу.

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

Добавлено: Пн июн 22, 2015 13:23:15
Bkmz
Здравствуйте! Написал прогу на Си в протеусе все отлично работает. Собрал. Включил. На первый взгляд все нормально. Но потом заметил такой косяк, который не могу понять откуда берется. Смысл такой, если медленно нагревать, то температуру показывает так: 5.5, 5.0, 6.5, 6.0, 7.5, 7.0 и т.д. В чем подвох, ведь в протеусе нормально все? Почему младший бит на деле инвертируется или я что то не так делаю? Кто сталкивался с подобным?

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

Добавлено: Пн июн 22, 2015 13:27:30
Gudd-Head
Инвертируйте бит полуградусов. Делов-то.
А без кода вам никто ничего не скажет, экстрасенсы в отпуске.

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

Добавлено: Пн июн 22, 2015 13:35:24
Bkmz
Gudd-Head писал(а):Инвертируйте бит полуградусов.
Тоже об этом подумал, но тогда проблема возникает ниже 1.5 градуса сразу 0. В общем совсем запутался, да код сейчас выложу, извиняюсь.

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

Добавлено: Пн июн 22, 2015 13:42:20
Аlex
Чёто Вы намудрили. Какие то сдвиги на 1, вычитания из 127-ми, ... Откуда это всё ? :facepalm:
Там же всё просто. старший бит отвечает за знак, остальное - данные.
Можно делать вообще просто. Перекидывайте оба принятых байта в знаковую int и в ней будет лежать готовая знаковая температура.

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

Добавлено: Пн июн 22, 2015 13:47:32
Bkmz
Аlex писал(а):Чёто Вы намудрили.
Простых путей не ищем )) Вначале не нужна была точность в 0.5 потому делал сдвиг, тем самым отбрасывая младший разряд и получалось цело число. Затем добавил проверку младшего разряда. Если там 1, то в показаниях добавляется еще полградуса, если 0 то остается как есть. С вычитанием из 127 это для отрицательных температур. Пока не до них. Не трогаем )

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

Добавлено: Пн июн 22, 2015 13:51:38
Аlex

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

signed int temper;
.....
.....
byte0 = DS_RX();
byte1 = DS_RX();
temper = ((int)byte0<<8) | byte1;
Всё, теперь в temper лежит температура, умноженная на 2 (при разрешении датчика в 0.5). Делайте с этими данными что душе угодно.

ЗЫ: И ещё. Выучите таймеры и сделайте нормально динамическую индикацию, освободив основной цикл от этого безумного кода.

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

Добавлено: Пн июн 22, 2015 14:07:51
Bkmz
Аlex писал(а):Всё, теперь в temper лежит температура, умноженная на 2
Ну это все понятно. Это значительно упрощает, но сути не меняет. Я же говорю, что в Протеусе отображает как задано на датчике. Но в реале после запятой инвертируется значение почему то. Может быть первый бит (самый младший) при чтении коряво читается, но тогда почему именно с точностью до наоборот?
Аlex писал(а):ЗЫ: И ещё. Выучите таймеры и сделайте нормально динамическую индикацию, освободив основной цикл от этого безумного кода.
Ну да, с таймерами есть некоторые сложности, но тут они в принципе и не нужны.

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

Добавлено: Пн июн 22, 2015 14:14:41
Аlex
Bkmz писал(а):но сути не меняет
Это ещё не известно. Сделайте нормально, а там будет видно.
Сейчас же у Вас какие-то ужасные манипуляции с этим битом, по этому тяжело что-либо посоветовать.
Bkmz писал(а):но тут они в принципе и не нужны
Как раз таки, они тут и нужны.