1-wire городится довольно быстро с помощью готовых библиотек в CodeVision или в чем вы там пишете. Сложностей особо не вижу.
Гыгыг
Я как-то городил. Ни чего сложного - только сначала я писал автокалибровку, она же - проверка на предмет КЗ и обрыва линии. Просто провода у всех разные и от них зависит tау отой вздрочной RC цепочки на которой весь протокол и держится. С автокалибровкой - нормально рулит.
А, да - там ещё CRC не всегда с первого раза понять удаётся
Помогает Сишный код, который прямо в pdf приведен - тулишь его в IAR, смотриши дезасм и повторяешь дезасм один в один
Посля чего вё пашет шо в жопу ранетое, а автокалибровка освобождает от святой обязанности настраивать датчик при переносе его в другое место и изменении длины проводов
Транзистор не нужен, достаточно отключить на это время PWM. Еще на входе PWM я бы поставил последовательно конденсатор (+ опционально резистор и диод), чтобы в случае зависания проца не угробить аккумы.
Для упрощения программы можно сгородить 4 линии 1-wire.
Не самое безопасное решение... Я б сделал программный клац ножкой и повесил на неё диод-кондёрный удвоитель напряжение, а его юзал бы в качестве питания для драйвера ключей (естественно берутся кмопы без букавы L).
В этом случае при затухании проца - перестает формироваться эта самая вольтдобавка и в каком положении не зависни (хоть с включенным ШИМом) - ключи невозможно будет открыть.
P.S. Только придется гадать куда там её запихать в программе, чтобы не мешала и чтобы регулярно туда лазить и клацать. Я бы привязал к прерыванию, по которому будет опрашиваться АЦП, обычно это ШИМовского таймера прерывание, так как измерять желательно привязанно к чему-то, что влияет на ток, для приведения ошибки в разряд систематических.