Как «поделить» АЦП правильно

Введение


Довольно часто в устройствах применяются активные датчики (терморезисторы, тензорезисторы, фоторезисторы, времярезисторы, счастьерезисторы и прочее).


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



О величине резистора во втором плече все высказываются по-разному. Кто-то связывает величину только с ограничением тока на нагрев термистора.
Где-то существуют прикидки и советы.
Но я не нашел конкретных указаний по типу: «Сделай так, потому что так-то и так-то».
Инженерный подход не дает мне спать спокойно. Место для прикидки в жизни есть, но порой встает вопрос: «А почему именно такое сопротивление?»
Интерес подогрел спор с коллегой. Что же, вызов принят.


Расчет


Сразу скажу, что расчет выполнялся в программе SMath Studio. Прикладываю исходник. Вы можете использовать его в своих расчетах.


Постановка задачи


Необходимо ввести только диапазон изменения сопротивления, а формула должна возвратить оптимальное сопротивление второго плеча. Критерий оптимальности – максимальный размах напряжения на выходе.


Решение


Вариантов схем включения может быть две: либо изменяющееся сопротивление находится в лапах АЦП, либо наоборот.



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


Напряжение на входе АЦП зависит от сопротивления постоянного резистора и пределов изменения переменного:


$ \Delta U(R_{const}, R_{max}, R_{min}, U) = U \cdot \left({{R_{max}}\over{R_{max}+R_{const}}}-{{R_{min}}\over{R_{min}+R_{const}}} \right), $


где $R_{const}$ – сопротивление постоянного резистора;


$R_{max}$ – самое большое сопротивление изменяющегося резистора;


$R_{min}$ – самое маленькое сопротивление изменяющегося резистора;


$U$ – напряжение питания.


Если построить график зависимости этого напряжения от сопротивления постоянного резистора, то можно увидеть ярко выраженный пик, а это именно то, что нам нужно (график построен для случая питающего напряжения в 1 В при использовании NTC термистора в широком диапазоне температур).



Если надо найти максимум функции, то мы берем производную. (Входное напряжение я намеренно приравнял к нулю, так как здесь важны соотношения сопротивлений).


${{d}\over{dR_{const}}} \Delta U(R_{const}, R_{max}, R_{min}) = \frac{\mathit{R_{min}}}{{{\left( \mathit{R_{min}}+\mathit{R_{const}}\right) }^{2}}}-\frac{\mathit{R_{max}}}{{{\left( \mathit{R_{max}}+\mathit{R_{const}}\right) }^{2}}} = 0$


Корни нам подскажет либо листок бумаги, либо компьютерная алгебра (благодарность GarryC за пинок в сторону символьных вычислений):


$\mathit{R_{const}}=\pm\sqrt{\mathit{R_{max}}\, \cdot \mathit{R_{min}}}$


Естественно, нам больше подойдет сопротивление больше нуля. Так как сроки поставки резисторов с отрицательным сопротивлением слишком большие.


Навскидку


Бывает, что считать числа сложно, но хочется покачать свое мышление навскидку. Бывает, люди навскидку считают децибелы, а все диву даются их уму. На самом деле они знают несколько секретов того как это делать.



Выделим и мы несколько правил для умничанья в дальнейшем. По графику такие прикидки делать легче. Как раз ниже он и представлен (но он лишь демонстрирует зависимость, описанную ранее).



1 правило: Если изменение сопротивление незначительно, то постоянное сопротивление должно быть примерно равным среднему изменяющемуся. Но и изменение напряжения будет ничтожно. Используй лучше мостовую схему.


2 правило: Если сопротивление изменяется в разы, то постоянное сопротивление должно быть меньше максимально возможного у изменяемого.


3 правило: Чем больше изменяется сопротивление в изменяемом резисторе, тем меньше должно быть сопротивление постоянного относительно максимума изменяемого.


Например, при разнице между граничными заключениями сопротивления изменяемого резистора в 10 раз рекомендуемое сопротивление постоянного должно быть примерно в три раза меньше максимального, а в случае изменения в 50 раз постоянный резистор уже должен составлять 0,14 от максимального в диапазоне изменения переменного резистора.
Если кто-то выделил дополнительные правила или не согласен с имеющимся, делитесь, и мы сделаем наш мир более грамотным.


Шаблоны


Если совсем не охота вникать, но хочется поставить в свой arduino проект «осознанный» делитель, то можно воспользоваться готовым ответом.
Какой резистор ставить в паре с NTC термистором на 10 кОм с В = 3950.
Ниже я представил таблицу, в которой показаны различные диапазоны измеряемых температур и соответственное сопротивление второго плеча.


Диапазон изменения сопротивления, градусов целься Применение Рекомендуемое сопротивление второго плеча, кОм Процент использования динамического диапазона АЦП, %
0..+125 Мониторинг температуры внутри устройств в помещении 3,3 81
-50...+125 Максималка для данного термистора 18 96
-20..+50 Температура на улице 20 68

Если есть еще распространенные применения, то пишите, добавлю еще.


Вывод


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

Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 18

    +3
    Теперь я понял, почему тойота меньше -30 на градуснике не показывает. Всё дело в таблицах для ардуинщиков!
      0
      Вот Вы смеётесь, а тем временем в некоторых устройствах BMW диапазон до -40. И там самая обычная LUT для NTC от -40 до +125, по которой считают самой обычной интерполяцией.
      +3
      Кто-то связывает величину только с ограничением тока на нагрев термистора.

      И это правильно, т.к. при самом жёстком из рекомендованных случаев (3.3 кОм для термостора в 10 кОм и напряжении питания 3.3.В) получим на термисторе уже 0.6 мВт. А термистор-«капелька» (типа B57861) имеет саморазогрев 1 °С при 1.5 мВт, чип-термисторы типоразмеров 0603-0805 — на 1 °С при 2..3 мВт.
      Понятно, что вряд-ли кто-то станет измерять термистором температуру с точностью лучше 1..2 °С, но лучше не умножать энтропию.
      P.S. А если поступиться «размахом» выходного сигнала, то с помощью дополнительных резисторов можно линеаризовать передаточную характеристику. См. app. notes по термисторам от AVX, TDK-Epcos и т.п.
        0
        В таком случае, на терморезистор ток можно подавать только на время измерения.
        +2
        Если нужно красиво и точно для NTC — берут 2 резистора разного номинала. Один включен постоянно — второй может подключатся параллельно первому от выхода МК и уменьшать общее сопротивление. Соответственно — 2 функции с 2-мя диапазонами. Переход с одной на другую на определенной температуре естественно — с гистерезисом…
          0
          А ещё можно подстраховаться, если не уверены в референсном напряжении, и ещё одним каналом АЦП измерять напряжение до делителя, я уже от него отталкиваться в расчётах.
            0
            В общем случае напряжение до делителя и есть референсное напряжение АЦП, поскольку его источник один, в хороших девайсах он еще и прецизионный… А если они разные — это не очень грамотное решение.
              0
              Это актуально когда датчик находится прямо вот возле АЦП. Но как правило это не так — напряжение хоть и поступает от референсного источника, но на проводах длиной метр и про токе через мост в 10мА напряжение на мосте от референсного уже может отличаться на десятки милливольт. Это может оказаться проблемой. Причем тогда надо контролировать и нижнюю точку моста и верхнюю.
                0
                Точность этих датчиков обычно хорошо если 2% но бывает и 5% и метровые провода там погоды не делают. А если у вас схема измерения в виде моста — то напряжение питания этого моста не имеет значения поскольку измеряется его расбалансировка. Имеет значение лишь точность элементов.
                  0
                  Это для сбалансированного моста не имеет значение… а применяют по большей части несбалансированные мосты, у которых только в лучшем случае «ноль» приходится в точку баланса моста, такие как датчики давления например. А амплитуда и соответственно измеряемая величина давления зависит от напряжения на мосте. Мост в таком случае компенсирует только один ньюанс — температурный коэффициент. И в таком случае мост просто позволяет измеряемой величине работать в противофазе, выделяя разность, а паразитной величине(ТКС) работать синфазно взаимно компенсируясь.

                  Пример сбалансированного моста — когда в одном плече у нас имеется набор образцовых резисторов, а в другом плече неизвестное сопротивление которое надо измерить. Подбором образца мы добиваемся баланса моста и тем самым делаем вывод о величине неизвестного сопротивления. Тут и правда не имеет значение напряжение питания моста т.к. рабочее его состояние — сбалансированное. А если мост не сбалансирован, и есть какая-то ненулевая разница мы не можем сказать точно насколько образцовое сопротивление отличается от неизвестного, только сказать больше или меньше пока не зафиксируем напряжение питания моста.
                    0
                    Вы очень много лишних сущностей наплодили — все эти копеечные не точные датчики как правило включаются в простой делитель. И в общем случае делимое напряжение и опорное напряжение АЦП равны конкретному значению от единого источника, ТКС постоянного элемента игнорируется, а от величины опорного напряжения ничего не зависит — поскольку вторым плечом сбалансированного моста в этом случае выступает «шкала АЦП».
          0

          Интересно, на сколько повысилась точность измерения температуры? Вообще, как правильно измерять температуру термистором написано в апноте CN-0206 от AD. Но нужен АЦП с возможностью подачи опорного напряжения.

            +1
            Делая универсальный блок вычисления температуры по входному сопротивлению NTC, для разных датчиков, при помощи калибровки, получалось добиться точности сравнимой с комплектными датчиками термосопротивлений, подбирались коэффициенты a,b, с уравнения Стейнхарта-Харта, процедура замороченная, но дает хорошие результаты.
              0

              Было бы интереснее про термометры сопротивления — они дают лучшую точность и не требуют индивидуальной калибровки

                0
                Всё же требуют. Даже платиновый ТС не обладает абсолютной линейностью и для точности лучше +-2 градуса его надо калибровать(скорее аппроксимировать по формуле с коэффициентами). Но у них воспроизводимость результата лучше.
                Медный терморезистор линеен, а вот платиновый… «Функция преобразования платинового тepморезистора нелинейна и обычно аппроксимируется квадратичным трехчленом».
                +1
                Хм, вообще то честное аналитическое решение, проведенной на листочке бумаги, дает
                Rопт = sqrt(Rmin*Rmax), или среднее геометрическое от диапазона, что и следовало ожидать.

                Почему данный результат не приведен в посте в явном виде?
                  0
                  Спасибо за пинок, добавил)
                  0
                  А в случае применения разных типов датчиков —
                  … MCP42100 — при должном использовании,
                  в том числе,
                  может помочь, без необходимости перепайки резисторов,
                  перейти на датчик с другим диапазоном…

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое