К вопросу об точности

2402bc56de6badc8754ea9352e5aca88.jpg

Но есть нюанс …

Поскольку мои уважаемые читатели подавляющим большинством изъявили желание прочитать о точности резистивных схем, у меня не остается выбора и я приступаю к изложению. Следует заметить, что вопросы точности исторически разрабатывались в контексте измерений, а мы будем их рассматривать в обратном направлении, хотя на результаты это никоим образом не повлияет.

Для начала введем основные понятия — предположим, что мы имеем некоторое истинное (или точное) значение произвольного параметра (Po) (например, сопротивление резистора) и практически измеренное значение этого параметра (P). Тогда мы можем ввести понятие «погрешность», численно равную разнице между этими двумя значениями. Если мы возьмем модуль полученного значения, то получим «абсолютную погрешность»: ∆P=|P‑Po|.

Практическая ценность данного показателя несколько сомнительна, поскольку погрешность в 100 Ом для резистора в 10 МОм явно несущественна, а вот для резистора в 1 кОм весьма значительна. Поэтому вводят дополнительный показатель, «относительная погрешность»: δP=∆P/Po, который более информативен и удобнее в применении в силу отсутствия размерности. Обычно относительную погрешность указывают в процентах (%), но встречаются и промиле (%%) и даже миллионные (ppm) и миллиардные (ppb) доли. Мы далее будем иметь дело с первым представлением — в процентах, хотя это и несущественно.
Примечание на полях (Пнп): внимательный читатель спросит, а что делать, когда истинное значение равно нулю, ведь «на ноль делить нельзя». Ну, во-первых, можно … необходимое пояснение для ошеломленных читателей — делить можно, разделить нельзя, но это все шуточки. А по существу — считают, что истинное значение в знаменателе (и только в нем) равно измеренному и тогда получаем δP=|P-0|/P=100% — вполне логичный результат.

Итак, имеется показатель, характеризующий точность поддержания какого-либо параметра, в данном случае сопротивления резистора. Обычно мы будем иметь дело со значением 5% — стандартный ряд E48, но в практических применениях используется и 2% — ряд E96 и даже 0.1% — ряд E240.
Пнп: цифра в индексе определяет количество номиналов в ряду на декаду, откуда легко получить отношение между соседними номиналами 10^(1/48)=1.049~1.05. Где-то читал, что ряды номиналов были созданы таким образом, чтобы резистор любого номинала можно было бы положить в какую-то ячейку кассы, выглядит данная гипотеза правдоподобно.

Поскольку мы крайне редко будем использовать резистор в одиночку и чаще будем создавать систему из неточных резистивных компонентов, необходимо знать, как будет влиять точность компонента на точность системы в целом. Рассмотрим различные функции от одного аргумента и определим точность вычисления функции в зависимости от точности аргумента.

Рассмотрим для начала линейные функции — прибавление константы и умножение на константу.
Начнем с умножения и решим задачу «в лоб». Пусть f (x)=kx, тогда f (x+dx)=k*(x+dx) и относительная погрешность значения функции
q (k*x) =|k*x-k*dx-k*x|/(k*x)=k*|dx|/(k*x)=|dx|/x=qx.
Пнп: здесь и далее символ d будет заменять
∆, а символq — δ, ничего личного, просто так мне удобнее. Вывод — при умножении параметра на константу (заданную абсолютно точно) относительная точность сохраняется.

Теперь сложение: f (x)=x+k, тогда
q (x+k)=|f (x+dx) — f (x)| / f (x)= |x+dx+k-(x+k)| / (x+k) =
|dx|/(x+k) = |dx|/x — |dx|/x*
k/(x+k)=qx*(1-k/(x+k))
.
В предположении, что x и k всегда одного знака (к примеру, положительны), относительная погрешность не возрастет, а иногда и уменьшится. Пнп: да, нам повезло, сопротивления отрицательными не бывают, иначе операция сложения была бы запрещенной с точки зрения оценки точности.

Перейдем к нелинейным функциям и рассмотрим для начала квадратичную f (x)=x*x.Тогда q (x*х)=((x+dx)*(x+dx)-x*x)/(x*x) = (2*x*dx+dx*dx)/(x*x) =
2*dx/x+dx*dx/(x*x) = 2*qx+qx*qx.
Пренебрегая членами второго порядка малости, получим q (x*x)=2*qx, то есть погрешность при возведении к квадрат возрастает в 2 раза. Можно провести аналогичное решение для произвольного показателя степени k, но сначала упростим процесс.

Для этого воспользуемся формулой Ньютона и заменимf (x+dx) на f (x)+f»(x)*dx, тогда
qf(x) = (f (x)+f»(x)*dx-f (x))/f (x) = f»(x)*dx/f (x)=f»(x)*dx/x*x/f (x)=qx*f»(x)*x/f (x)
и мы получили обобщенную формулу. Проверим ее на уже решенных задачах
q (k*x) = qx*k*x/(k*x) = qx (+),
q (x*x) = qx*2*x*x/(x*x) = 2*qx (+),
q (x) = qx*1*x/x = qx (+).

Тогда q (x^k) = qx*k*x^(k-1)*x/(x^n) = k*qx.
Отметим, что q (1/x) = |-1|*qx = qx.

Теперь легко перейти к функциям двух аргументов. Начнем со сложения.
f (x+y) = qx*1*x/(x+y)+qy*1*y/(x+y)=qx*x/(x+y)+qy*y/(x+y),
то есть при сложении относительные погрешности складываются с разными коэффициентами, каждый из которых менее единицы. В важном частном случае, когда qx=qy, получим q (x+y) = qx, то есть относительная погрешность суммы равна погрешности каждого слагаемого.

Далее рассмотрим умножение
f (x*y) = qx*y*x/(x*y)+qy*x*y/(x*y) = qx+qy,
что согласовано с формулой для квадрата.

Формулу для деления можно получить двумя способами — рассматривая деление, как умножение на обратное к знаменателю и тогда получим
q (x/y)=q (x*1/y)=q (x)+q (1/y)=qx+qy.
Но можно для тренировки использовать обобщенную формулу, тогда
q (x/y)=qx*1/y*x/(x/y)+qy*(x/y*y)*y/(x/y)=qx+qy, ч.т.д.

А вот теперь слайды можно перейти к резисторным схемам. Последовательное соединение резисторов приводит к формуле суммы, значит погрешность остается неизменной (при одинаковой погрешности слагаемых). Параллельное соединение также не представляет проблемы, если мы вспомним, что в этом случае складываются проводимости, или единицы, обратные к сопротивлению. q (1/(1/x+1/y))=qx. Значит, и в этом случае погрешность остается неизменной. Пнп: доказательство погрешности для функции x*y/(x+y) оставим пытливому читателю.

Рассмотрим теперь весьма часто применяемую схему, а именно резистивный делитель, который описывается формулой x/(x+y). С формальной точки зрения мы должны получить погрешность в 2 раза больше погрешности резисторов, поскольку вверху q и внизу q. Но проведем анализ при помощи обобщенной формулы, тогда:
qf = q (x/(x+y)) =
qx*
(1*((x+y)-1*x)/((x+y)*(x+y)))*x/(x/(x+y)) + qy*((0–1x)/((x+y)*(x+y)))y/((x+y)*(x+y)) = . qx*y/(x+y)^2*x/x*(x+y)+qy*-x/(x+y)^2*y/x*(x+y) =
qx*y/(x+y)-qy*y/(x+y)=(qx+qy)*y/(x+y).

И для частного случая qx=qy получим qf = 2q*y/(x+y).
Поскольку x и y положительны и не равны нулю, то итоговая погрешность коэффициента деления будет всегда меньше удвоенной погрешности резисторов. Если ввести параметр «отношение резисторов» k, равный x/y, по коэффициент передачи делителя будет равен 1/(1+k) с погрешностью 2*qx*k/(k+1) и, например, при одинаковых резисторах (k=1) погрешность будет равна погрешности каждого резистора. Интересно, что при k<1 мы получим погрешность коэффициента передачи меньшую, чем погрешность одного резистора, например для k=2/3 имеем qf=2*qx*2/3/(1+2/3)=qx*2*2/3*3/5=qx*4/5, что явно меньше qx. Лично меня получение результата функции более точным, нежели ее аргументы слегка удивляет, но такая картина вполне реальна. К примеру, погрешность функции f(x)=sqrt(x) в два раза меньше, чем погрешность ее аргумента.

К сожалению, при увеличении соотношения резисторов и, соответственно, уменьшению коэффициента передачи погрешность задания данного параметра стремится к сумме погрешностей резисторов и уже при k=9 практически от этой суммы не отличается qf=0.9*2*qx=1,8*qx. Гениальное решение сделать секционированный делитель не работает, потому что итоговая погрешность будет суммой погрешностей каждой секции и выигрыш становится эфемерным, и, скорее всего, превратится в проигрыш, хотя последнее утверждение требует доказательств.

Habrahabr.ru прочитано 3010 раз