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

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

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

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

Ну конечно при достаточной длине кабеля он превращается в длинную линию со всеми вытекающими.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15556
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

Для UnКайF
Датчик или жив или мертв. При правильно изготовленном адаптере линии и проработанным программным обеспечением проблем с длиной кабеля не имеется. Насчет ситуаций КЗ/обрыв и отсутствие ответа/ошибка CRC - должно полностью контролироваться самим программным обеспечением оборудования, использующего датчик (ежли не ...л то ПО разрабатывал), туда же относятся и дополнительные функции "закрепления" за конкретным объектом своего (и только своего!) датчика.
Наиболее типичные отказы - отклонение показаний у нескольких экземпляров от ртутника-эталона и/или "зависание" на какой-нибудь фиксированной температуре (исключение - считывание данных "по умолчанию" при неверной конфигурации и/или "чехарде" с командами). Также следует учитывать термоинерционность конкретной "упаковки".
Единственно полезное при проверке - чтение индивидуального номера датчика. Ну еще данные ЕЕПРОМки из блокнота (можно чегось своего туда впихнуть, ежли контроль в режиме термосигнализатора не используется).
8)
Реклама
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

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

BOB51 писал(а):Датчик или жив или мертв.
Не-не-не. Бывает так, что его пробивает "по питанию". Т.е. в двухпроводном режиме он норм работает, а в трёхпроводном начинает дико разогреваться :facepalm:
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15556
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

Так "саморазогрев" при входном тесте проверяется, а в аппаратуре - аварийное отключение при продолжении наростания температуры по отключении нагревателя (он же пробой управляющего ключа).
В принципе отсеивется при наличии датчика тока в цепи нагревателя - регулятор отключен, тока нет, а температура "ползет". Да и датчик наверняка не один стоит ежли уж весьма ответственная система.
Хотя с таким вариантом встречаться не приходилось (в отличии от специально изготовленных исключительно для "паразитки" датчиков). :dont_know:
Реклама
Эиком - электронные компоненты и радиодетали
UnКайF
Открыл глаза
Сообщения: 46
Зарегистрирован: Пн янв 27, 2014 23:05:22

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

Сообщение UnКайF »

BOB51
Датчики у нас стоят на ЖД транспорте и контролируют нагрев буксовых узлов. Каждый датчик опрашивается примерно раз в минуту. При отказе, естественно, система мониторинга это видит и пишет. Отказ сам по себе не страшен - сменил датчик, и все дела. Заколебало последнее время то, что называют неполадками. Может раз в день "глюкануть" и пропасть. Ищи его потом... Между монитором и датчиком стоят некие коробочки (по одной на 4 датчика), до которых другая шина и протокол. Они же обеспечивают правильную адресацию по месту установки... Что из них вызывает неполадки - коробочка или датчик на локомотиве быстро не определишь - опрос раз минуту.
Во время планового ремонта локомотива тоже датчики нужно проверять чем то.
(ежли не ...л то ПО разрабатывал)
Китайцы ПО разрабатывали :)) Я серьёзно.
Реклама
-=Vovka=-
Опытный кот
Сообщения: 844
Зарегистрирован: Пн апр 11, 2011 10:08:52

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

Сообщение -=Vovka=- »

Один раз глюканул - скорее всего была помеха, а повторного опроса нет, только через минуту.
Как вариант сделать логгер и подключиться параллельно каждому датчику. Сразу будет понятно чего и как
Реклама
-=Vovka=-
Опытный кот
Сообщения: 844
Зарегистрирован: Пн апр 11, 2011 10:08:52

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

Сообщение -=Vovka=- »

UnКайF писал(а):Во время планового ремонта локомотива тоже датчики нужно проверять чем то.
МК с дисплеем и разъемами для 4-х датчиков: подключился, считал температуру несколько раз - это если не снимать датчики, а так желательно их нагревать/охлаждать и ловить сбои
UnКайF
Открыл глаза
Сообщения: 46
Зарегистрирован: Пн янв 27, 2014 23:05:22

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

Сообщение UnКайF »

Ну, дык, лог ведётся, только о причине неполадки из него не дознаешься. Прибор сделал - см. мой пост на предыдущей странице. Там же вопрос.
-=Vovka=-
Опытный кот
Сообщения: 844
Зарегистрирован: Пн апр 11, 2011 10:08:52

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

Сообщение -=Vovka=- »

По логу можно увидеть: нет ответа, не совпала CRC, температура не та.
Если проблемы, то в отбраковку. ИМХО
Не знаю насколько бредовая идея, а если мерить напряжение логических уровней?
UnКайF
Открыл глаза
Сообщения: 46
Зарегистрирован: Пн янв 27, 2014 23:05:22

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

Сообщение UnКайF »

В смысле стресс-тест с определением Rds(on) внутреннего ключа датчика ? Ой, не знаю ... Не могу для себя логически обосновать полезность такого занятия.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15556
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

Вполне вероятно и ента "коробушка" с бабы-ягиной "лягушонкой"
8)
Глянь в личку.
:beer:
UnКайF
Открыл глаза
Сообщения: 46
Зарегистрирован: Пн янв 27, 2014 23:05:22

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

Сообщение UnКайF »

BOB51
Это просто ... праздник какой-то ! (с) :)
Я свой "тестер" сморозил на попавшейся под руку PIC16F630 и СИДах. Позже может выложу.
Аватара пользователя
Bkmz
Нашел транзистор. Понюхал.
Сообщения: 164
Зарегистрирован: Пт сен 02, 2011 09:14:44

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

Сообщение Bkmz »

Здравствуйте! Написал прогу на Си в протеусе все отлично работает. Собрал. Включил. На первый взгляд все нормально. Но потом заметил такой косяк, который не могу понять откуда берется. Смысл такой, если медленно нагревать, то температуру показывает так: 5.5, 5.0, 6.5, 6.0, 7.5, 7.0 и т.д. В чем подвох, ведь в протеусе нормально все? Почему младший бит на деле инвертируется или я что то не так делаю? Кто сталкивался с подобным?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

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

Инвертируйте бит полуградусов. Делов-то.
А без кода вам никто ничего не скажет, экстрасенсы в отпуске.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Bkmz
Нашел транзистор. Понюхал.
Сообщения: 164
Зарегистрирован: Пт сен 02, 2011 09:14:44

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

Сообщение Bkmz »

Gudd-Head писал(а):Инвертируйте бит полуградусов.
Тоже об этом подумал, но тогда проблема возникает ниже 1.5 градуса сразу 0. В общем совсем запутался, да код сейчас выложу, извиняюсь.
Вложения
Termostat.c
(3.46 КБ) 161 скачивание
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

Чёто Вы намудрили. Какие то сдвиги на 1, вычитания из 127-ми, ... Откуда это всё ? :facepalm:
Там же всё просто. старший бит отвечает за знак, остальное - данные.
Можно делать вообще просто. Перекидывайте оба принятых байта в знаковую int и в ней будет лежать готовая знаковая температура.
Аватара пользователя
Bkmz
Нашел транзистор. Понюхал.
Сообщения: 164
Зарегистрирован: Пт сен 02, 2011 09:14:44

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

Сообщение Bkmz »

Аlex писал(а):Чёто Вы намудрили.
Простых путей не ищем )) Вначале не нужна была точность в 0.5 потому делал сдвиг, тем самым отбрасывая младший разряд и получалось цело число. Затем добавил проверку младшего разряда. Если там 1, то в показаниях добавляется еще полградуса, если 0 то остается как есть. С вычитанием из 127 это для отрицательных температур. Пока не до них. Не трогаем )
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

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

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

ЗЫ: И ещё. Выучите таймеры и сделайте нормально динамическую индикацию, освободив основной цикл от этого безумного кода.
Аватара пользователя
Bkmz
Нашел транзистор. Понюхал.
Сообщения: 164
Зарегистрирован: Пт сен 02, 2011 09:14:44

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

Сообщение Bkmz »

Аlex писал(а):Всё, теперь в temper лежит температура, умноженная на 2
Ну это все понятно. Это значительно упрощает, но сути не меняет. Я же говорю, что в Протеусе отображает как задано на датчике. Но в реале после запятой инвертируется значение почему то. Может быть первый бит (самый младший) при чтении коряво читается, но тогда почему именно с точностью до наоборот?
Аlex писал(а):ЗЫ: И ещё. Выучите таймеры и сделайте нормально динамическую индикацию, освободив основной цикл от этого безумного кода.
Ну да, с таймерами есть некоторые сложности, но тут они в принципе и не нужны.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

Bkmz писал(а):но сути не меняет
Это ещё не известно. Сделайте нормально, а там будет видно.
Сейчас же у Вас какие-то ужасные манипуляции с этим битом, по этому тяжело что-либо посоветовать.
Bkmz писал(а):но тут они в принципе и не нужны
Как раз таки, они тут и нужны.
Ответить

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