Так уж получилось, что начинаю я автоматизацию с измерения температуры. Для самогонщиков продаются специальные очень удобные электронные термометры. Выглядят они вот так:

К сожалению во-первых они очень неточны, берёшь 5 штук, включаешь, и они будут расходиться в показаниях на 3-5 градусов. Во-вторых годятся только для чтения показаний на глаз. В контроллер их можно ввести только жмакая на кнопочки. В третьих батарейка у них рано или поздно кончается. А его проще выкинуть, чем менять батарейку. Вот и у меня в двух термометрах батарейки кончились. Но вместо того чтобы выкинуть, я их разобрал. Ценного там во-первых термодатчик, во-вторых железная гильза термодатчика. Её диаметр стандартен, под него выпускаются тоже стандартные силиконовые ниппели, и под эти ниппели в железе для самогонщиков делают стандартные отверстия. Вот как всё это выглядит:

Термодатчик представляет собой полупроводниковый резистор с отрицательным температурным коэффициентом. Сопротивление при комнатной температуре около 100 килоом. При нагревании понижается. Какое оно при 100 градусах - не знаю. Я осторожно грел паяльником (пока всё делал на соплях !) удавалось догнать до 40 килоом.
Таким образом датчик достаточно высокоомный. А у меня, по условиям размещения, расстояние от датчика до контроллера метра три. В электронике считается очень плохим тоном таскать сигналы с высокоомных датчиков по длинным проводам. Помех нахватаешься с гарантией. Даже дома в квартире. Не говоря уже о местах, в отношении помех более шумных. Как правило, в таких случаях прямо рядом с датчиком ставят либо предусилитель, либо даже АЦП. И по проводам передают либо существенно усиленный сигнал, либо сразу цифру. Увы, во-первых дорого. Современные микроконтроллеры (в частности мой любимый esp32) работают от 3.3 вольт и для предусиления потребуются недешевые и дефицитные ОУ типа Rail-To-Rail. АЦП скорее всего будет ещё дороже. Во-вторых лишние провода. Предусилитель это три провода как минимум. Плюс питания, земля, и выходной сигнал. Для АЦП проводов будет ещё больше. То ли дело простой резистивный датчик ! Кинул два провода и всё ! Спрашивается, а можно ли чтобы и дёшево, и обойтись всего двумя проводами ? Можно, отвечаю я !
Рассмотрим схему:

Резистор Rx здесь и есть наш термодатчик, сопротивление которого мы измеряем.
К микроконтроллеру это подключается вот такими транзисторными ключами:

Пусть микроконтроллер выставил на входе ключа J1 высокий уровень, причем произошло это достаточно давно. Транзистор ключа Q1 открыт и находится в насыщении (его ток базы умноженный на h21э значительно больше чем реальный эмиттера). Датчик (в смысле преобразователь) потребляет 5-6 миллиампер. На резисторе R1 ключа падает порядка 0.3 вольта, что недостаточно для открывания транзистора Q2 ключа, поэтому он закрыт и уровень на линии прерывания высокий.
У датчика (преобразователя) на линии J2(соединенной с коллектором ключа) напряжение порядка 0.5 вольт относительно общей земли (0.3 вольта на сопротивлении R1 ключа плюс 0.2 вольта на его транзисторе Q1). Транзистор Q2 открыт, а транзистор Q1 закрыт. Конденсатор C1 полностью заряжен до напряжения 4.5 вольта относительно нижней линии датчика. Его напряжение подаваемое на неинвертирующий вход компаратора выше напряжения на инвертирующем входе, 3.3 вольта, которое поддерживается стабилитроном. Уровень на выходе компаратора высокий, ток через резистор R2 не течет.
Пусть теперь микроконтроллер выставляет на линию управления ключом низкий уровень. Транзистор ключа Q1 закрывается. Транзистор Q2 тоже закрыт. Уровень на линии прерывания остается высоким.
Нижняя линия датчика отрывается от ключа и через резистор R4 подтягивается к линии +5 вольт. Транзистор Q2 закрывается, а Q1 открывается. Через Q1 и токоограничивающий резистор R6, конденсатор C1 очень быстро разряжается. Напряжение на неинвертирующем входе компаратора становится меньше чем на инвертирующем, на его выходе устанавливается низкий уровень и через резистор R2 начинает течь ток. Конденсатор C2 поддерживает схему своим зарядом.
Спустя короткое время микроконтроллер снова выставляет на линии управления ключа высокий уровень и транзистор ключа Q1 открывается. Но теперь конденсатор датчика C1 разряжен, уровень на выходе компаратора датчика низкий, и его резистор R2 течет ток. А это дополнительные 10 миллиампер. На резисторе R1 ключа теперь падает 0.6-0.7 вольта, что достаточно для открывания транзистора ключа Q2. Уровень на линии прерывания ключа становится низким. Транзистор датчика Q2 в этот момент открывается, а Q1 закрывается. Конденсатор C1 начинает заряжаться.
Наконец спустя время, определяемое постоянной времени цепочки RxC1 (а именно сопротивление Rx нам и нужно измерять !) и напряжением стабилизации стабилитрона D1 (3.3 вольта), напряжение на неинвертирующем входе компаратора становится больше чем на неинвертирующем и на его выходе устанавливается высокий уровень. Ток через резистор R2 перестаёт течь, и потребление датчика падает до бывших ранее 5-6 миллиампер. Напряжение на резисторе R1 ключа снова падает до 0.3 вольт, его транзистор Q2 закрывается и на линии прерывания устанавливается высокий уровень. Схема переходит в первоначальное состояние. Измерив время, которое линия прерывания ключа имела низкий уровень, мы можем измерить сопротивление Rx.
Алгоритм работы микроконтроллера:
Перед началом работы разрешаем прерывания от таймера и по одной из ног(линии прерывания) по положительному перепаду (от низкого уровня к высокому). На линию управления подаем высокий уровень.
Устанавливаем на линии управления низкий уровень и запускаем таймер на очень короткое время (сотня-другая микросекунд).
Получив прерывание от таймера, выставляем на линии управление высокий уровень, а сам таймер запускаем на счёт (без прерываний).
Получив прерывание от линии останавливаем таймер и считываем его значение.
Повторяем эти шаги столько, сколько будет надо.
Приятное дополнение. Линии прерывания ключей это выходы с открытым коллектором. Поэтому их можно объединить по схеме монтажного ИЛИ. Например вот так:

Правда только в том случае, если датчики будут опрашиваться ПООЧЕРЕДНО. В самом деле, если каждый раз активен только один датчик, то мы во-первых точно знаем какой, ибо его мы и активировали, во-вторых только он может переводить линию прерывания в низкий уровень. Это весьма полезно, ибо экономит дефицитные ноги микроконтроллера.
Ну и наконец интересный момент, посчитаем во сколько нам всё это обойдётся. Цены брал по каталогу магазина Чип и дип на март 2026-го. Причем брал только те товары, которые есть в наличии в магазине на Абельмановской в Москве. Цены там конские, наверняка можно взять и дешевле. Здесь посчитано и на датчик и на ключ.
Компаратор LM393P 1 шт. 25 рублей.
Транзисторы 2N4403BU 2 шт. по 2 рубля
Диод Шотки SR3100S 1 шт. 9 рублей
Стабилитрон 1N4728A 1 шт. 3 рубля
Конденсатор плёночный 0.01 мкф 1 шт. 6 рублей
Конденсатор электролитический 470 мкф 6.3 в 1 шт. 8 рублей
Транзисторы BC547A 2 шт. по 6 рублей
Резисторы 9 шт. по 4 рубля
Итого 97 рублей. Уложились в сотню ! Хотя на самом деле может быть дороже, эти ребята любят играть с наценками. Но вряд ли сильно больше.
Как выбирались компоненты. Транзисторы в ключе npn типа, в датчике pnp. Коэффициент передачи h21э не менее 100. Граничная частота без разницы. Рабочие напряжение и ток в 5 вольт и 20 миллиампер выдерживают все. Резисторы ключа R2 и R3 достаточно безразличны. 1k будет достаточно. На резисторе R1 ключа должно падать 0.3-0.4 вольта при токе 5-6 миллиампер и свыше 0.6 вольта при токе 10-15 миллиампер. Резисторы R3, R4, R5 датчика довольно безразличны. Желательно чтобы ток через них был порядка миллиампера при напряжении 4 вольта. Стабилитрон D1 с напряжением стабилизации 3-3.3 вольта. Резистор R1 должен обеспечивать для него минимальный ток стабилизации (это порядка миллиампера) при напряжении питания 4 вольта. Следует учитывать падение напряжения на самом стабилитроне. Конденсатор C1 довольно безразличен. Я выбирал из соображений постоянной времени цепочки RxC1 порядка 10 миллисекунд. Конденсатор нужен с небольшим температурным коэффициентом ёмкости. Подойдут плёночные или слюдяные. Резистор R6 ограничивает ток разряда конденсатора C1, проходящий через транзистор Q1. Его желательно выбирать поменьше, чтобы конденсатор быстрее разрядился. Но так чтобы не спалить транзистор. Компаратор - единственное требование выход с открытым коллектором и допустимый ток не менее 20 миллиампер. Прекрасно подходит LM393P. Резистор R2 выбирается таким, чтобы при напряжении 4 вольта, ток через него был порядка 10 миллиампер. В качестве D2 желательно брать диод Шотки, с небольшим прямым напряжением. Конденсатор C2 - электролит на несколько сотен микрофарад. Он поддерживает схему во время активации, когда микроконтроллер отключает её от питания. На этом вроде бы всё...
И да, таварисчам особо дотошным и въедливым. Я прекрасно знаю закон заряда конденсатора через резистор. Физтех всё-таки заканчивал, а не физкультурный техникум. Поэтому не надо мне рассказывать про нелинейность. Всё равно каждый датчик придётся калибровать, и это отдельная история.
ДИСКЛЕЙМЕР !!! Реально схема пока не собиралась. Только вот планирую завтра идти закупаться комплектухой. Просто показалось что придумал красивое решение, самому понравилось. Копеечная стоимость, работает всего по двум проводам, и решает проблему удаленных высокоомных датчиков. Вот и спешу поделиться с народом. Наверняка кому-то окажется полезным. Такие датчики достаточно распространены, и не только термо. Так что задача думаю для многих актуальна.
Комментарии (19)

programania
08.03.2026 14:34Для измерения температуры не нужно быстродействие, поэтому проще поставить конденсатор, например на 10 мкф. Он замкнёт все помехи. А время измерения: 10 мкф * 100 ком = примерно 1 сек. Или усреднять программно, если это микроконтролёр.

alcotel
08.03.2026 14:34Фантомное питание - это прекрасно!
А вы моделировали схему? Мне резануло глаза два момента:
C2 470 мкФ сгладит импульс тока и исказит время. Токовый сигнал хорошо бы как-то пустить мимо него.
Заряжаете вы времязадающий конденсатор от 5 В, которое после ключа и 3 метров проводов превратится в непонятно что. А порог заряда - фиксирован, 3,3 В. Я бы и порог выставил относительно питания, как делают в таймере 555. (кстати, на нём возможно, и всю схему собрать получится. Универсальная вещь!)

eugenk Автор
08.03.2026 14:34На модели всё прекрасно работает. Завтра куплю комплектуху и напишу следующую статью о том что вышло. Тут в другом засада. С тех пор как я занимался esp32 (последние лет 5 я занимался почти исключительно FPGA, можете посмотреть мои публикации здесь), эти ребята очень плотно интегрировали freertos в свой SDK. И в итоге боюсь что esp32 перестал быть пригоден для ТОЧНОГО измерения интервалов времени. Во всяком случае при работе с вайфай (для чего он собственно мне и нужен). Попытаюсь поэкспериментировать под freerfos с подачей кварцованной частоты, посмотрю что получится. Но пока боюсь, что для измерения придется ставить в пару к esp32 что-то значительно более примитивное и предсказуемое, типа avr.

alcotel
08.03.2026 14:34Да вроде и на ESP таймеры умеют измерять длительность импульса аппаратно. Какая разница, есть там ОС, или нет? Чисто для удобства.

alcotel
08.03.2026 14:34Вы бы в статье привели графики из симуляций. По схеме и краткому описанию я-то может разберусь, как это всё работает. А вот длинный текст в стиле "Транзистор Q2 закрывается, а Q1 открывается. Через Q1...", я уверен, что 99% прочитавших проскроллили дальше.

sgrb
08.03.2026 14:34Для АЦП проводов будет ещё больше
Загуглите 1-wire, на эту шину есть АЦП, и питаться они при этом могут по тем же 2 проводам, по которым идёт обмен данными (с некоторой хитростью т. к. АЦП жрут довольно много, но физически это 2 провода)
И предусилитель может быть с питанием по тому же проводу, фактически понижая эффективное сопротивление нагрузки (чтобы ток был на порядки выше, чем при прямом подключении)

VT100
08.03.2026 14:34Занятно. Для понимания была бы неплоха сквозная нумерация компонентов на стороне передатчика и приëмника.
А почему бы не "общепромышленный" 4-20 мА?
Зачем 3-амперный(?) Шоттки, если ток ограничен R1?
eugenk Автор
08.03.2026 14:34Просто нашел первый попавшийся за приемлемый прайс. Сейчас уже заменил на меньших размеров.

xSVPx
08.03.2026 14:34Скорее всего не взлетит.
А чем плох уж тогда ds18d20 или как там его ? One wire до 120 примерно оС. Его вроде бы и калибровать можно.
Вообще как сформулирована задача? Как быстро и как точно надо измерять ?

eugenk Автор
08.03.2026 14:34ds18d20 не взлетит прежде всего потому, что не пролезет в 4-мм гильзу. Сам об этом раньше думал. Но увы... Слишком большой. Отверстия в железе для самогонщиков стандартные. И ниппели под них стандартные. И в стандартную гильзу ds18d20 не пролезет. Так что пришлось колхозить.

xSVPx
08.03.2026 14:34Он внутри корпуса всё место занимает ? Яб один проточил до нужного размера... Может оказаться, что это лишний пластик для унификации размера.
В любом случае лучше что-то подобное городить. Особенно если совершенно всё равно какая получится точность и быстродействие...

alcotel
08.03.2026 14:34Не праздный вопрос. От самогонщика - самогонщику. Как вы считаете, имеет ли смысл такое делать?
Вынашиваю план пет-проекта - спиртомер на основе измерения ёмкости. С коррекцией по температуре, естественно. У воды ведь огромная диэлектрическая проницаемость. Хотелось бы измерять ещё и на фоне электропроводимости, когда дистиллят уже разбавлен.

andramed243124
Уолтер Уайт. Если бы родился в Россий
eugenk Автор
Шарль де Голль в Париже рос.
У него с намёком нос.
Одессит мне говорит,
Так это наш одесский ...
Гид я хотел сказать ! Который экскурсии по городу водит ! А Вы что подумали ???
Добро пожаловать на Хабр ! Поздравляю с первым комментарием ! Только просьба, постарайтесь пожалуйста в следующий раз всё-таки писать что-то содержательное.
dimone73
Просьба - пейте благородный фабричный коньяк, и не пытайтесь воспроизвести это самостоятельно.