Когда б Вы знали, из какого сора
растут стихи, не ведая стыда ...


Тема данного поста возникла совершенно неожиданно, в процессе чтения книги «Real-Time C++», более конкретно в процессе чтения раздела 6.13, в котором рассматривалось построение делителя измеряемого напряжения таким образом, чтобы получившийся результат легко (с применением только операции сдвига) масштабировался. Так вот, в конце раздела на странице 121 приводилась формула для оценки погрешности получаемой величины, которая привела меня в некоторое замешательство. Поскольку данную книгу «могут увидеть дети» и получить непоправимую травму психики, если некритично отнесутся к написанному, мною и создан настоящий пост с целью привнести определенный порядок в понимание методики оценки погрешностей измерений молодыми инженерами.




Для начала вспомним основные положения, определимся с терминологией и установим некоторые важные факты.
Любое измеренное значение всегда представляет собой лишь некоторое приближение к измеряемому параметру, и для оценки степени отклонения измеренной величины от точного значения вводят понятие погрешности dX = | X-Xo |, где dX — абсолютная погрешность, X — измеренное значение, Xo — истинное значение( предполагается, что мы его откуда-то знаем).
Также весьма важна относительная погрешность qX = dX / Xo (в тех же обозначениях), которая характеризует степень точности полученного результата значительно лучше абсолютной (хотя с ней есть определенные проблемы для Xо = 0). Тем не менее, относительная погрешность весьма часто применяется для указания параметров компонентов электронных схем в виде точности, например, резисторов — 5% либо 1%.

При этом следует иметь в виду, что нам указывается только максимальное значение отклонения номинала компонента от его ожидаемого значения, никаких предположений о законе распределения данного отклонения нет, это может быть и линейное распределение, и треугольное, и Гауссово с обрезанными хвостами, поэтому никаких предположений о среднеквадратичном отклонении мы не делаем и в дальнейшем оперируем только максимальным отклонением. Такой подход для нашего случая (мы ведь инженеры, а не дрессировщики) правильнее, вряд ли Ваших заказчиков устроит схема, которая будет работать в 98% случаев, спроектированная нами схема будет работать всегда (в пределах допустимых условий эксплуатации, конечно).

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

Начнем с простейшей функции f(X) = K * X ( функция масштабирования) и получим точность для результата этой функции в зависимости от точности входящих в нее членов. Считая константу K заданной абсолютно точно, применим простейший способ прямого вычисления qf(X) = | f(X) — f(Xo) | / f(Xo), что приводит к выражению q(k*X) = | K * (Xo + dX) — K * Xo | / ( K * Xo), или q(K*X) = | K * dX | / ( K * Xo ) = dX / Xo, отсюда q(K*X) = qX, что означает, что при масштабирования относительная погрешность не меняется.

Следующая важная функция — взятие обратного значения f(X) = 1 / X, для нее получаем
q(1/X) = | 1 / ( Xo + dX) — 1 / Xo | / ( 1 / Xo ), после преобразований имеем
q(1/X) = | -dX / ( (Xo + dX) * Xo ) | * Xo = | -dX / ( Xo + dx ) |,
считая, что dX << Xo, получим q(1/X) ~ dX / Xo = qX, то есть при взятии обратного значения относительная погрешность остается неизменной.

Рассмотрим теперь функцию суммы f(X,Y) = X + Y. Проведем аналогичные вычисления и получим
q(X+Y) = | ( (Xo + dX ) + ( Yo + dY ) ) — ( Xo + Yo ) | / ( Xo + Yo ) = | dX + dY | / ( Xo + Yo ) = qX * Xo / (Xo + Yo) + qY * Yo / (Xo + Yo). Мы убедились, что при сложении двух величин абсолютные погрешности складываются, а относительные масштабируются в соответствии со значениями точных величин.
Если при этом относительные погрешности обоих величин совпадают, то мы получим q(X+Y) = qX * ( Xo + Yo ) / ( Xo + Yo ) = qX = qY, то есть при сложении двух величин с одинаковой относительной погрешностью относительная погрешность суммы будет такой же.

Из полученных результатов следует интересный вывод — относительная точность эквивалентного сопротивления любой резисторной схемы равна относительной точности входящих в нее компонентов и не зависит от номиналов и схемы соединения. Действительно, при последовательном соединении сопротивления складываются, а мы установили сохранение точности при сложении, а при параллельном соединении складываются проводимости (величины, обратные сопротивлению), а мы также установили сохранение точности при взятии обратного. Результат (по крайней мере, для меня) несколько неожиданный, но так получается.

Для дальнейшего рассмотрения нам потребуется также точность функции умножения двух величин, получим ее аналогично
q(X*Y) = | ( Xo + dX ) * ( Yo + dY ) — Xo * Yo | / ( Xo * Yo ) = | dX * Yo + dY * Xo + dX * dY | / ( Xo * Yo ) =
= dX / Xo + dY / Yo + dX / Xo * dY / Yo = qX + qY + qX*qY, учитывая qY ~ qY << 1, получим окончательно q(X*Y) = qX + qY, то есть при умножении относительные погрешности складываются.
Рассматривая деление, как умножение на обратное значение, данный результат распространяем и на деление q(X/Y) = qX + qY.

Теперь мы готовы рассчитать точность коэффициента передачи резистивного делителя, который определяется формулой
K(R,r) = r / ( R + r ). Для начала рассмотрим нашу формулу по частям и оценим qK(R,r) = qr + q(R+r) = qr +qR * R / ( R + r ) + qr * r / ( R +r ), считая qr = qR, получим qK(R,r) = 2 * qR.
Именно такой результат и использовался в указанной в самом начале поста книге, однако он не вполне верен, поскольку мы считали, что числитель и знаменатель дроби в нашей функции независимы, а это не так, и там и там используется общий параметр.
Уточним полученный результат, прибегнув к испытанному способу получения относительной погрешности и получим (промежуточные выкладки оставляем пытливому читателю и так меня наверняка будут ругать за неудобные написание формул, у меня Latex сегодня почему-то не работает, а тут будут многоэтажные выражения) qK(R,r) = ( qR + qr ) * R / ( R + r ).
Итак, мы видим, что уточненная формула погрешности показывает нам, что точность коэффициента передачи делителя зависит от коэффициента деления K = r / ( R + r ) в виде qK(R,r) = 2* qR * ( 1 — K ), то есть удвоение погрешности наступит только для очень маленьких коэффициентов передачи (K<<1), а, например, при коэффициенте делений 1/2 относительная погрешность коэффициента совпадет с относительной погрешностью резисторов, что опять-таки несколько неожиданно. Пр заданных в книге номиналах погрешность составит 2*64.9/(11.8+64.9)=1.7*qR, что, хоть и близко к первому результату (2*qR), но все-таки от него отстоит.

Ну и последнее замечание — поскольку я неоднократно подчеркивал, что мы оцениваем максимальное отклонение, вычисление среднеквадратичного значения никоим образом не может приветствоваться и, учитывая, что код на выходе АЦП описывается формулой N = Uвх * Kацп следует просто сложить относительные погрешности данных величин, получая qN = qUвх +qKацп = 1.7*0.01 + 2/1024 ~ 1.9% < 2%, что, впрочем, соответствует результату, указанному в книге.

Следует учесть еще одно немаловажное обстоятельство — если погрешность коэфиициента передач не зависит от входного напряжения, то про погрешность АЦП мы этого сказать не может — она составляет 2 ЕМР не зависимо от входного напряжения (на самом деле все намного сложнее, но мы так приняли для простоты), так что полученная относительная погрешность измерений верна только для напряжений, близких к максимальным, и в других случаях будет увеличиваться.
Не напрасно ли это было написано

Проголосовало 106 человек. Воздержался 241 человек.

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

Комментарии (13)


  1. Alexufo
    13.03.2016 15:10
    +12

    Не хватает пункта "я ничего не понял"


    1. nerudo
      13.03.2016 15:33
      +2

      Количество воздержавшихся как бы намекает =)


    1. GarryC
      13.03.2016 16:26
      +1

      Ну мне казалось, что четвертый вариант покрывает такой ответ ...


      1. Alexufo
        13.03.2016 16:28
        +1

        Я его скорее читаю так, что есть те, кто понял, да и еще понял, что это серьезно гениально.


  1. RouR
    13.03.2016 17:16
    +5

    Есть такая наука — Метрология. Есть книги о ней, в которых излагаются методики расчёта погрешностей.

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

    В качестве примера полезной информации — http://электротехнический-портал.рф/electro-izmerenya/262-pogreshnosty-v-metrologiy.html


  1. PapaBubaDiop
    13.03.2016 18:11
    +1

    В первом же абзаце Ваших рассуждений ошибка — при х0 = 0 ошибка сколь угодно бесконечна. Дальше можно не читать.


    1. GarryC
      14.03.2016 09:17
      +1

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


      1. qbertych
        14.03.2016 12:09

        А в чем проблема-то? Цена деления линейки 1 мм. Значит, ею можно измерить кота (~50 см) с точностью 0.2%, а размер инфузории (~ 1 микрон) — с точностью 100 000%. Последнее измерение, разумеется, ни малейшего смысла не имеет.

        При этом никто не говорит, что нельзя линейкой мерить инфузорий. Можно. Получится, что ее размер от 0 до 1 мм. Если перед вами стоит вопрос, влезет ли инфузория в спичечный коробок, то это измерение будет наиболее простым способом дать ответ.


        1. grossws
          15.03.2016 00:00
          +1

          /zanuda_mode_on
          Абсолютная приборная погрешность измерения линейкой обычно оценивается как d/sqrt(12), где d — цена деления. Если бы измеряли штангенциркулем или микрометром (нониусными приборами, короче), то абсолютная погрешность соответствует цене деления нониуса.
          /zanuda_mode_off


  1. Shamrel
    13.03.2016 20:02
    +1

    Из полученных результатов следует интересный вывод — относительная точность эквивалентного сопротивления любой резисторной схемы равна относительной точности входящих в нее компонентов и не зависит от номиналов и схемы соединения.

    Расскажите это ребятам из Analog Devices. Схема, где для повышения точности измерительного шунта используется параллельное соединение нескольких резисторов, используется довольно таки часто. Кстати, и в школе, курсе так на третьем, изучали, что для повышения точности измерения в N раз, нужно увеличить количество измерений (с последующим усреднением) в N в квадрате раз. На этом принципе основано действие сигма-дельта АЦП.


    1. GarryC
      14.03.2016 09:12

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


  1. Shamrel
    14.03.2016 09:38

    Я с вами согласен, максимальное отклонение останется таким же. Тогда мне непонятно практическое применение максимального отклонения.
    Предлагаю упростить рассуждение, так сказать, перейти на уровень пальцев.
    Допустим, мне нужно получить сопротивление 25 Ом. Я беру 4 резистора по 100 Ом, соединяю параллельно. Действительно, если точность резистора 1%, и эта точность соответствует максимальному отклонению (хотя это не так, и в метрологии всегда используют погрешность для доверительного интервала, которая вычисляется используя закон распределения и СКО), мы получим отклонение в 1 Ом. В худшем случае, когда все резисторы дадут отклонение в одну сторону и строго на 1 Ом, при параллельном соединение итоговое значение составит 25,25 Ом, что соответствует 1%. Это так. Но вероятность этого события (все резисторы дали одинаковый разброс) ниже, чем вероятность, того что один резистор имеет отклонение в 1 Ом. Такими образом, при параллельном соединении удается получить выигрыш в точности. Особенно это актуально при серийном производстве. На мой взгляд, используя вероятности на основе СКО имеет гораздо большую практическую ценность.

    P.S.: хотя резисторы не совсем удачный пример, так как там из-за сортировки по точности (хотя не уверен, что до сих пор так происходит) распределение вероятности имеет не нормальное и не равномерное распределение.


    1. GarryC
      14.03.2016 11:28
      +1

      Вы абсолютно правы, в реальной жизни отклонения будут в разные стороны и итоговая точность будет реально выше. К сожалению, мы не можем на это полагаться, поскольку обязаны обеспечить работу при наихудшем сочетании отклонений.
      А резисторы в наше время, скорее всего, не сортируют, но все равно указывают не СКО, а максимальное отклонение, в силу все тех же причин — обязанности работы при наихудшем случае.
      То есть практическое применение максимального отклонения именно в том, что если мы рассчитали схему с учетом МО, то она, разумеется, будет работать всегда, а не в 95% (или в 98% для разных методик и для разного распределения) случаев, как для СКО.