Надеюсь, что в этом топике будут размещаться различные датчики для однопроводной шины.Вот первый рабочий вариант дискретного датчика для однопроводной (1-Wire) шины. Код написан для МК ATtiny13A. Тактируется на частоте 9,6 МГц от внутреннего генератора. Уникальный номер датчика
0xE5000003372FC040.
1.png [ 52.67 КБ | Просмотров: 9766 ]
Так как мой код поиска датчиков на шине по уникальным номерам не совершенен, то опытным путём был найден код семейства (0х40) который совместно с датчиками DS18B20 определяется без ошибок. Что касается данного кода семейства, то такой номер не определён для устройств iButton. Таким образом данный номер гарантированно не встретится у других устройств.
Схема:
2.png [ 11.73 КБ | Просмотров: 9766 ]
К порту РВ0 подключается сухой контакт. К порту РВ1 шина (1-Wire) с подтягивающим резистором (4к7) к положительному потенциалу напряжения питания. К порту РВ4 можно подключить светодиод для индикации состояния контактов.
Данный датчик опрашивается так же как и DS18B20… датчик понимает команды РОМ : SEARCH ROM (0xF0) – поиск кода ром; READ ROM (0x33) – чтение ром; MATCH ROM (0x55) – соответствия ром; SKIP ROM (0xCC) – пропуск ром. Из функциональных команд поддерживаются: CONVERT (0x44) – конвертирования значений, и READ MEMORY (0xBE) – чтение памяти датчика.
При поступлении команды 0х44, датчик прижимает шину к «земле» и производит опрос входа сухого контакта. В зависимости от состояния контакта производится занесение соответствующего значения в память датчика с вычислением CRC. После выполнении соответствующих процедур шина отпускается.
При поступлении команды 0хВЕ, датчик выдаёт 9 байт. Два младших байта, это информация о состоянии контакта датчика (по аналогии значения температуры у DS18B20), девятый байт контрольная сумма CRC вычисленная из первых восьми байт. По аналогии с термометром DS18B20, значение 0,0 «градусов» будет соответствовать разомкнутому контакту. Значение 10,0 «градусов» - соответствует при замкнутом контакте.
Концевой выключатель.zip [15.57 КБ]
Скачиваний: 1229