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

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

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

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

Сообщение BOB51 »

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

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

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

Сообщение BOB51 »

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

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

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

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

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

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

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

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

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

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

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

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

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

Сообщение BOB51 »

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

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

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

Сообщение Bkmz »

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

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

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

Сообщение Bkmz »

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

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

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

Сообщение Bkmz »

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

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

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

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

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

Сообщение Bkmz »

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

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

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

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