Диагностика отказа DS18B20
|
|
rvstar |
Дата: Пт, 25.04.2014, 22:42 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
69
Замечания:
±
На сайте с 09.10.2007
Статус:
Offline
|
Столкнулся с такой проблемой: если выдернуть из разъема DS18B20, показания температуры читаются как 0.0. как отличить отсутствие датчика от реальной температуры 0`C ? У кого-нибудь есть простое решение? Заранее благодарен.
|
|
|
|
ivan_fd |
Дата: Сб, 26.04.2014, 00:44 | Сообщение # 2 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Не знаю ка Вы преобразовываете температуру.
Я делал так. Если датчик отсутствует, то показания преобразованной температуры сильно завышены. Я брал, если они больше 2000, то значит датчика не видно. И соответственно вывожу "NOT".
|
|
|
|
anatol |
Дата: Сб, 26.04.2014, 09:49 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
rvstar, есть в датчике подсчитываемая контрольная сумма. В норме необходимо ее считывать и произвести определенные операции со своими данными (подсчитать контрольную сумму) и сравнить их. Для простоты можно обойтись проверкой на "0" КС. Не равно нулю - датчик на месте.
|
|
|
|
brown |
Дата: Сб, 26.04.2014, 11:55 | Сообщение # 4 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
333
Замечания:
±
На сайте с 18.09.2007
Статус:
Offline
|
Недавно делал термометр и у кого-то "списал" кусок кода на простое определение датчика.
Start_Convert: '------------- Presence sensor --------------------------- Low DQ_1 DelayUS 500 Input DQ_1 DelayUS 70 If DQ_1=0 Then Sensor = 0 DelayUS 250 OWrite DQ_1, 1, [$CC, $44]' Skip ROM search & do temp conversion Else Sensor = 1 ' no sensor Return EndIf
|
|
|
|
ivan_fd |
Дата: Сб, 26.04.2014, 12:14 | Сообщение # 5 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Я делал так. Но это, если только один датчик на линии.
|
|
|
|
brown |
Дата: Сб, 26.04.2014, 12:46 | Сообщение # 6 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
333
Замечания:
±
На сайте с 18.09.2007
Статус:
Offline
|
Конечно правильное замечание, но ТС- rvstar не дал условия работы датчика.
|
|
|
|
rvstar |
Дата: Пт, 23.05.2014, 12:55 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
69
Замечания:
±
На сайте с 09.10.2007
Статус:
Offline
|
anatol, спасибо за совет. Получилось так:OWIN Comm_Pin1, 2, [R_Temp.Lowbyte, R_Temp.Highbyte, crc1]IF crc1 = 255 THEN sensor_fault1 = 1 ENDIF
|
|
|
|
MiXaS |
Дата: Ср, 28.05.2014, 10:32 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
rvstar, не так! Не равно нулю - датчик на месте.
скорее IF crc1 <> 0 THEN
если подождете, то ко вторнику,если не забуду скину процедуру расчета CRC8
Как и обещал. В массив Buffer_DS записываются все биты прочитанные с датчика. ORead DQ, 2, NO_PRES, [ Str Buffer_DS \9 ]
Gosub CRC8
If CRC_DS <> Buffer_DS[8] Then Print At 1,1, "fuck"
CRC8:' CRC_DS = 0 For i_ds = 0 To Length_DS_Frame - 1 DS_temp = Buffer_DS[i_ds]
For f_ds = 1 To 8 FDback = (CRC_DS ^ DS_temp) & $01 If FDback = $01 Then CRC_DS = CRC_DS ^ Polynomial EndIf CRC_DS = (CRC_DS >> 1) & $7F If FDback = $01 Then CRC_DS = CRC_DS | $80 EndIf DS_temp = DS_temp >> 1 Next Next Return
Сообщение отредактировал
MiXaS - Ср, 28.05.2014, 10:34
|
|
|
|
xvovanx |
Дата: Ср, 28.05.2014, 15:28 | Сообщение # 9 |
Группа:
Модераторы
Ранг:
Помогаю всем
Сообщений:
328
Замечания:
±
На сайте с 02.05.2013
Статус:
Offline
|
Добрый день! Специфический вопрос: какой код займет меньше места? При подключении двух DS18B20 на одну шину и опрос их поочереди, либо при подключении каждого датчика на отдельный порт. Хотелось бы определиться до разводки платы, а то как обычно потом места памяти не хватает.
Сообщение отредактировал
xvovanx - Ср, 28.05.2014, 15:29
|
|
|
|
ivan_fd |
Дата: Ср, 28.05.2014, 17:45 | Сообщение # 10 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Если включите на 2 линии, то нужно меньше телодвижений в коде. Не нужно писать код датчика. А так, больших отличий не будет.
|
|
|
|
MiXaS |
Дата: Ср, 28.05.2014, 20:43 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
хороший вопрос! даже не знаю как ответить. Я всовывал 3 датчика на одну линию, для экономии ножек, а также,чтобы съэкономить провод + с точки зрения эстетики тоже. по поводу кода, даже не знаю не мерял, но сделал общие метки, например опрос, конвертация и проверка отрицательной температуры. Я еще заморочился сделал меню, которое читало айди датчика и предлогало записать к определенному значению, например, айди для датчика уличного... а потом все в еепром. ну и т.д
|
|
|
|
xvovanx |
Дата: Ср, 28.05.2014, 21:08 | Сообщение # 12 |
Группа:
Модераторы
Ранг:
Помогаю всем
Сообщений:
328
Замечания:
±
На сайте с 02.05.2013
Статус:
Offline
|
Спасибо за ответы Цитата ivan_fd ( ) Если включите на 2 линии, то нужно меньше телодвижений в коде. ... Да, согласен, не нужно писать временную прогу и поочередно подключать для определения ID каждого.
Цитата MiXaS ( ) Я всовывал 3 датчика на одну линию, для экономии ножек, а также,чтобы съэкономить провод... сделал общие метки, например опрос, конвертация и проверка... Да, тоже есть плюсы.
Решил так - разведу плату на отдельные ноги проца, как-то проще без этих ID. Потом, если что, на одну линию можно и несколько датчиков подцепить в будущем.
А, возник еще вопросик: сколько датчиков можно навесить на одну линию, сколько ID сможет определить проц? Так чисто интересно стало.
|
|
|
|
ivan_fd |
Дата: Ср, 28.05.2014, 22:30 | Сообщение # 13 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Процедура автоматического определения кода датчика, ой как не проста. Там голову сломать можно как ее написать.
Легче, сначала определить, по очереди, все датчики и записать их коды в память.
|
|
|
|
MiXaS |
Дата: Ср, 28.05.2014, 23:42 | Сообщение # 14 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
только сейчас замел,что написал сэкономить неправльно! ну и чурбан! ведь знаю как правильно, а написал неправильно. прошу прощения...
|
|
|
|
xvovanx |
Дата: Чт, 29.05.2014, 09:13 | Сообщение # 15 |
Группа:
Модераторы
Ранг:
Помогаю всем
Сообщений:
328
Замечания:
±
На сайте с 02.05.2013
Статус:
Offline
|
Цитата MiXaS ( ) а написал неправильно. прошу прощения... Все мы люди, все ошибаемся. Я и сам часто корректирую свою писанину после прочтения
|
|
|
|