Безумству храбрых поем мы песню


Недавно случайно узнал о существовании очаровательного девайса MG238 — тестера электронных приборов. Посмотрел пару видео, слегка офигел, нашел сайт автора (кстати проект открытый, я думаю, что производители-китайцы авторские не платят), посмотрел схему и офигел окончательно. То есть измерительная часть представлена 3 управляемыми делителями и ЭТО меряет все, что я увидел в ролике?

Первая мысль была — это фейк, но есть отзывы людей, данный прибор купивших и его использующих, и в основном позитивные. Тогда пришла вторая мысль — почему это не сделал я? На этот вопрос есть множество ответов, главным из которых будет «Старшая сестра не позволила». Для тех, кто в танке — это от присловья «Лень раньше тебя родилась». Ну да ладно, проехали, но все-таки, как ЭТО работает. Исходные коды выложены, схема дана, можно посмотреть, но возникло желание понять самому, раз сделать не успел, то хотя бы повторить (если не в железе, то в голове).

Начнем с, по моему мнению, простейшего — измерения сопротивления. Попытаемся понять логику автора разработки и ее особенности. В схеме прибора href=«www.mikrocontroller.net/wikifiles/f/f0/Schaltplan_transistortester.png» можно выделить 3 измерительные точки, каждая из которых содержит 2 сопротивления 680Ом и 470КОм, подключенные ко входу АЦП и к портам МК. Исходя из схемы, можно предположить следующий алгоритм определения неизвестного сопротивления — подключаем его между двумя измерительными точками, на одну из них подключаем питание через порт МК через резистор, а на другую — землю через порт МК, совмещенный с АЦП. Получаем классический делитель напряжения, для которого справедливо выражение

Ux=Uo*Rx/(Rx+R0), где U0 — напряжение питания, R0 — известное сопротивление, а Rx — исследуемое сопротивление.
Замерив теперь напряжение Ux за входе АЦП, можем рассчитать значение исследуемого сопротивления по формуле
Rx=R0*Ux/(U0-Ux).

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

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

Прежде всего примем, что значения U0 и R0 нам известны абсолютно точно (по крайней мере по отношению к U0 это действительно верно, поскольку мы меряем не реальное значение Ux, а масштабируем его на напряжение опоры, которое совпадает с напряжением U0, так что нас совершенно не интересует его абсолютное значение). В отношении эталонного сопротивления такое предположение выглядит более смелым, оставим его на долю калибровки. При таких предположениях точность полученного результата зависит только от точности измерения Ux, исследованием которого мы и займемся.

Точность выходного результат работы АЦП зависит от многих факторов, мы их все просуммируем и превратим в некий обобщенный показатель ошибки dUx. Конечно, такой подход сильно упрощает задачу, но вполне работоспособен, и для первого приближения, мы можем предположить, что АЦП в МК дает нам 10 точных двоичных разряда. Тогда ошибка преобразования составит dUx=U0/2**10 = U0/1024 (или для данной схемы 5/1024 ~ 5мВ, что абсолютно неважно). Мы же должны только запомнить цифру 1/1024 — единица младшего разряда и соответственно, ошибка измерения.

Исследуем поведение функции Rx(Ux)=R0*Ux/(U0-Ux) при небольших изменениях вблизи Uxo, представленных в виде Ux=Ux0+dUx, в первом приближении получаем Rx(Ux)=Rx(Uxo)+dUx*Rx`(Ux0), учитывая что Rx`(Ux0)=R0*U0/(U0-Ux)**2, находим что dRx=dUx*R0*U0/(U0-Ux0)**2, отсюда получаем qRx=dRx/Rx=dUx/Ux0*U0/(U0-Ux0)=qU*U0/Ux0*U0/(U0-Ux), или, разделив обе части на U0*U0
qRx=qU/(K*(1-K)), где K = Ux0/U0, или qRx/qU = 1/(K*(1-K)).

Обозначив целевое значение через qM, получаем квадратное уравнение

K**2-K+1/qM=0, решением которого являются значения
K1,2=(1+-sqrt((qM-4)/qM))/2.

Для начала увидим, что qM не может быть меньше 4, если мы не рассматриваем всерьез комплексные сопротивления, то есть в самом лучшем случае при K=1/2, то есть сопротивление исследуемого резистора равно сопротивлению эталона, точность измерения сопротивления в 4 раза хуже, чем предельно достижимая точность АЦП. Далее мы видим что по мере отклонения значения K от 1/2 ошибка измерения увеличивается и в пределе уходит в бесконечность. Немного о том почему это происходит. В левой части, при уменьшении измеряемого значения и при фиксированной погрешности измерения относительная погрешность будет неизбежно повышаться, так что здесь все ожидаемо. А вот в правой части дело немного хитрее — обратим внимание на знаменатель U0-Ux. Опять таки при неизменной абсолютной погрешности относительная погрешность всего знаменателя в целом опять таки будет возрастать, что и приводит к потере точности.

Теперь можно и посчитать — зададимся требуемой точностью 1%, учитывая qU~0.1% получаем qM=10 и, соответственно, K1=0.89 K2=0.11. Из этих значений легко получить Rmax/R0=7.87 и Rmin/R0=0.13. То есть, если мы задаемся значением эталонного резистора в 680Ом, мы вышеуказанным методом при заданных условиях с точностью 1% сможем померить резисторы номиналом от 86 ом до 5к3, а для резистора 470к соответствующий диапазон составит от 59к6 до 3700к, очевидно, что вне этих пределов точность будет ниже. Строго говоря, динамический диапазон в таком случае составляет 62, то есть мы должны ставить 1000/62=16 эталонных резисторов на диапазон сопротивлений 1 к 1000. Поскольку мы имеем всего лишь 2 эталонных резистора, то посмотрим, какая точность достижима при перекрывании их диапазонов — если мы задаемся точностью 3%, то сможем измерять с такой точностью резисторы от 24Ом до 13Мом при помощи всего лишь двух эталонных резисторов, причем диапазон для одного резистора составляет 1 к 782 (достаточно близко к 680 к 470000). Возможно, такая точность и была принята в качестве требуемой разработчиком прибора. При этом за пределами данного диапазона точность падает и точность 5% достижима в диапазоне от 14Ом до 22Мом. Учитывая, что обычно измеряются резисторы с точностью 5%, можно считать результат удовлетворительным, хотя хорошим назвать его тоже трудно. С другой стороны, прибор и не позиционируется как измерительный, а как тестер, то есть при точности в 5% вполне можно оценить, исправен ли резистор.

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

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


  1. dcoder_mm
    09.09.2015 18:29
    +30

    Да что-ж такое.
    Как светодиодом помигать на ардуине, так обязательно будет 10 вылизанных в лайтруме фоток по паре мегабайт весом.
    А как что-то годное — простынка текста сверстанная в notepad.exe
    Это лень или вера в то что труъ технарям оформление текста и иллюстрации не нужны?


    1. Lertmind
      09.09.2015 19:32
      +1

      И для формул есть куча редакторов, например.


  1. GarryC
    09.09.2015 20:04

    Честно говоря даже неловко. С одной стороны, меня похвалили, а с другой, я не очень понимаю какие картинки можно добавить. Ну графики пары функций, ну график точности при разном количестве резисторов, я их в Excel нарисовал для себя а как прикрепить — не знаю, но попробую. А вот насчет редактора формул не очень согласен. Есть такой замечательный курс «Power electronics» на Coursera (кстати, очень рекомендую, очень классный курс, я для себя много вспомнил а кое-что и узнал), так там все формулы в ДЗ в одну строку и вроде нормально, все понятно, зато сколько места экономится. Хотя за наводку спасибо, посмотрю.


    1. Punk_Joker
      09.09.2015 20:29
      +1

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


    1. wormball
      09.09.2015 20:32
      +1

      Быть может, вам надо выучить ХТМЛ? Хотя нет, ни в коем случае этого не делайте — человек, написавший 25 статей и не умеющий ХТМЛ и не знающий о хабрастороже — это уникальный экспонат, потеря его будет невосполнимой.


    1. dcoder_mm
      09.09.2015 22:53
      +1

      Ну, как минимум, читать текст, который разбит картинками на небольшие части, гораздо проще (мы — поколение твиттера :)). Во вторых — хорошо если читатель будет представлять о чем идет речь (т.е. фото самого устройства). Даже если далее речь пойдет не о нем самом.

      Графики несомненно нужны. Из Excel их можно вроде как скопировать и вставить в любой редактор а потом сохранить, либо просто сделать скриншот. И схема тоже.

      там все формулы в ДЗ в одну строку и вроде нормально, все понятно, зато сколько места экономится.

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


  1. maksfff
    09.09.2015 21:14
    +3

    Дайте, пожалуйста, хотя бы ссылку на ролик.


    1. spc
      10.09.2015 10:17
      +1

      Полагаю, вот эти тестеры.

      И один клип прямым текстом:


      1. GarryC
        10.09.2015 10:31

        Ага, именно они (тестеры), спасибо.
        Про оформление — спасибо за замечания, буду пытаться, но особых надежд не питаю. Я все-таки уже не юноша и трудно менять привычки, то есть стиль сформировался еще во времена квартальных сборников материалов по зарубежной электронике с минимальными полиграфическими возможностями.


      1. Alexeyslav
        10.09.2015 13:24

        Хм. интересно, есть ли исходники под эти тестеры? Единственая вещь меня раздражает — он выключается аккурат когда успеваешь очередную деталь для измерения вставить. После чего снова ждать когда он включится, заставку покажет…


        1. GarryC
          10.09.2015 14:03

          Да исходники тут www.mikrocontroller.net/svnbrowser/transistortester/Software/trunk.
          Хотя, на мой взгляд, это не код, а «трэш, угар и содомия».
          Вообще то просится перенос на MSP430, там и точность повыше и с потреблением получше, подумываю…


          1. Alexeyslav
            10.09.2015 15:13

            Потребление там не самая главная вещь, светодиод подсветки будет потреблять и того больше.


            1. GarryC
              10.09.2015 17:15

              Так светодиод и погасить можно. У данной реализации проблема, на которую все жалуются — то что он выключается довольно-таки быстро после измерения. Мне кажется, что на МСПшке можно тихо заснуть, а не выключаться. Но надо думать.


              1. Alexeyslav
                10.09.2015 19:11

                Не нужен там сон. Да и как-то странно уходить в сон когда применяется линейный стабилизатор который потребляет 1-2мА просто так.
                Применить же микротоковые стабилизаторы удорожит конструкцию существенно и потребление у них все равно слишком большое чтобы заботится о глубоком сне — порядка десяток микроампер, такой режим сна может обеспечить и атмеловский контроллер.


      1. wormball
        10.09.2015 15:22

        То-то я смотрю — по MG238 какие-то миксеры и битые автомобили вылезают.