Я DS18B20 опторазвязывал и тянул на 6 метров. И есть большая вероятность горячего отключения. У меня несколько термостатов (2..6), поэтому несколько UART-ов тратить жалко. Подробно выкладывал где-то здесь и на электрониксе. Последний проект - на http://electronix.ru/forum/index.php?showtopic=105772&st=0&p=1089884entry1089884
STM32F205.
Т.к. градусников может быть много, они могут заменяться другими, то привязки к градуснику не должно быть, на одну линию их не повесишь.
Я подключаю градусники к одному порту, команду на запуск преобразования даю параллельно всем и потом сразу со всех читаю.
Разбил весь алгоритм работы на элементарные функции и задержки между ними, и использую прерывание по Compare для вызова этих функций. По вызову прерывания выполняется такая функция, затем в регистр Compare записывается необходимая задержка.