24 February 2019

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

Circuit designDeveloping for ArduinoManufacture and development of electronicsElectronics for beginners
From Sandbox

Введение


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


Чтобы измерять соответствующую величину, датчик включают в цепь делителя в одно из его плеч.
Так рекомендуют поступать практически везде, особенно там, где точность не так важна как стоимость. В интернете множество уроков для ардуинщиков о считывании температуры именно при помощи терморезистора. Так поступают и в более серьезных приложениях.
Для примера ниже я представил часть схемы из драйвера 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

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


Вывод


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

Tags: АЦП терморезистор перфекционизм
Hubs: Circuit design Developing for Arduino Manufacture and development of electronics Electronics for beginners
+26
8.5k 84
Comments 18
Ads