Тестер ОУ
Часть 4. Программное обеспечение
Функции тестера ОУ, реализуемые программой
Функции тестера ОУ, включая его пользовательский интерфейс - сообщения, выводимые на экран и реакции на нажатие кнопок управления, а также непосредственно измерительные и вычислительные процедуры реализованы в управляющей программе микроконтроллера ("прошивке"). Программа эта непрерывно развивается, регулярно появляются новые версии, добавляются новые функции, устраняются ошибки, улучшается дизайн и процесс этот пока не думает останавливаться. Тем не менее, мы решили опубликовать исходные тексты программы по состоянию на сегодняшний день - 15 июля 2026 г. для того чтобы наши читатели уже могли приступить к изготовлению и испытаниям прибора, а затем будем выкладывать обновленные версии по мере их появления. Мы будем очень признательны тем нашим читателям, которые внесут свой вклад в совершенствование программного обеспечения тестера ОУ и поделятся с другими читателями и с авторами сайта своими улучшенными версиями этого ПО.
Мы начнем рассмотрение ПО прибора с описания его пользовательского интерфейса и функций органов управления, а непосредственно к программному коду перейдем уже в следующем разделе этой публикации.
Взаимодействие с пользователем
При включении тестера ОУ на экране кратковременно появляется заставка (рис. 23), а затем - начальный экран (рис. 24), предлагающий установить испытуемый ОУ в одну из панелек в соответствии с его типом.


Справа вверху на начальном экране отображается выбраное напряжение питания испытуемого ОУ. В нижней части на этом и на многих других экранах показаны функции трех кнопок управления прибором, расположенных под экраном. Эти функции меняются от экрана к экрану.
Установив тестируемый ОУ в соответствующую позицию ZIF-панельки, пользователь нажимает кнопку "Start", запускающую процесс измерения. В это время на экране показывается прогресс-индикатор (рис. 25), а по окончании - таблица с результатами (рис. 26). Как видите, обещание автора, данное им в предисловии к этой публикации, о том что измерение всех параметров будет происходить посредством нажатия одной кнопки, выполнено!


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


В случае поправимой ошибки на дисплей выводится предупреждение ("Warning", рис. 28) и у пользователя есть две возможности - кнопка "Stop" прерывает дальнейшие измерения и возвращает пользователя на начальный экран, а кнопка "Skip" предписывает пропустить измерение параметра, вызвавшего ошибку, и продолжить тестирование. В таблице результатов, полученных после такого тестирования, значение параметра, вызвавшего предупреждение, будет выделено цветом, как недостоверное.
Нажав во время показа начального экрана кнопку "Mode", пользователь попадет на экран выбора питающего напряжения испытуемого ОУ (рис.29), а нажав кнопку "Setup" - на экран выбора цветовой темы (рис. 30). В первом случае можно будет выбрать напряжение питания испытуемого ОУ - ±12 В для стандартных ОУ или ±2,5 В для низковольтных, а во втором - выбрать одну из трех цветовых палитр для отображения на экране - зеленую, синюю или коричневую.


Разнообразие информации, выводимой на дисплей тестера ОУ не ограничивается приведенными выше восьмью скриншотами, имеются и другие экранные формы, например, используемые во время калибровки прибора. Мы не будем здесь изображать все эти формы, а коснемся их далее, в соответствующих разделах этой публикации.
Диапазоны измерений и обработка связанных с ними ошибок
Раз уж мы в предыдущем разделе упомянули о реакции программы на ошибки во время измерения параметров ОУ и показали экраны с сообщениями об этих ошибках (рис. 27, рис. 28), то пришло время сказать несколько слов о диапазонах измерений, а также о том, что происходит, если измеренная величина того или иного параметра выходит за пределы этих диапазонов.
Как мы уже поняли, прочитав предисловие к данной публикации и изучив основопологающие документы, шесть основных параметров испытуемого ОУ вычисляются по результатам измерений напряжения на выходе вспомогательного (AUX) ОУ при различных положениях контактов реле K1...K3 (V02a...V02d), а также при некоторых манипуляциях с программируемым источником питания (V02e...V02f). Эти напряжения измеряются цифровым вольтметром, входящим в состав тестера ОУ, а затем пересчитываются в значения параметров испытуемого ОУ по формулам, приведенным в тех самых основополагающих документах. Физически вспомогательный ОУ, питающийся от напряжения ±15 В, способен развить на своем выходе напряжения в пределах ±13,5 В или даже больше, однако, для исключения нелинейности на краях диапазона, мы считаем достоверными значения напряжения на выходе вспомогательного ОУ в пределах ±12 В. Подставив эти предельные значения в расчетные формулы, мы получим диапазоны измерений параметров испытуемого ОУ, показанные в крайнем правом столбце таблицы 3.
| Напряжение на выходе AUX ОУ | Пределы измерения,V | Параметр испытуемого ОУ | Диапазон измерений |
| V02a | -10…+10 | Vos | -10...+10 mV |
| V02b | -12…+12 | Ib- | -120…+120 nA |
| V02c | -12…+12 | Ib+ | -120…+120 nA |
| V02d | -12…+12 | Aol | 200…1200000 (в режиме питания ±2,5 В) 600…1200000 (в режиме питания ±12 В) |
| V02e | -12…+12 | CMRR | 40…132 dB |
| V02f | -12…+12 | PSRR | 40…132 dB |
Таб. 3. Пределы измерения основных параметров ОУ.
Скажем сразу, что диапазоны измерений всех параметров, перечисленных в таблице, кроме самого первого (Vos) носят несколько условный характер и могут смещаться вверх или вниз в зависимости от фактического значения Vos, а точнее, от измеренного значения напряжения V02a. В причины этого мы сейчас углубляться не будем, желающие могут самостоятельно проанализировать расчетные формулы, приведенные в основопологающих документах, и понять, откуда возникает эта зависимость. Уточним только, что для большинства современных ОУ, имеющих Vos менее 1 мВ, это смещение диапазонов измерений можно считать несущественным.
Кроме шести параметров испытуемого ОУ, перечисленных в таб. 3, мы вычисляем также его ток потребления, измеряя выходное напряжение дифференциального усилителя (Vtp5 - напряжение в контрольной точке TP5 на главной плате). При изменении тока потребления от 0 до 10 мА, напряжение в этой точке меняется от 0 до +10 В, что и показано в таб. 4.
| Напряжение на выходе дифф. усилителя | Пределы измерения,V | Параметр испытуемого ОУ | Диапазон измерений |
| Vtp5 | 0...+10 | Iq | 0...10 mA |
Таб. 4. Пределы измерения тока потребления ОУ.
В процессе тестирования ОУ программа контролирует измеренные значения напряжений V02a...V02f и Vtp5, а также вычисленные значения параметров и, в случае выхода их за пределы или диапазоны, указанные в таб. 3 и таб. 4, останавливает процесс измерений, выводя на экран одно из сообщений об ошибке, показанных на рис. 27 и рис. 28.
При этом, выход тока потребления испытуемого ОУ за пределы диапазона 5 мкА...10 mA считается непоправимой ошибкой, поскольку чаще всего свидетельствует о том, что испытуемый ОУ либо неправильно вставлен в панельку, либо просто неисправен (нулевой потребляемый ток или короткое замыкание по питанию). Также непоправимой ошибкой считается значение V02a более 10 В по абсолютной величине, так как это напряжение определяет рабочую точку всего следящего контура и все остальные параметры измеряются относительно этой рабочей точки. Дальнейшее измерение параметров в этих обстоятельствах смысла не имеет. Если же выход за пределы измерения обнаружился при измерении любого другого параметра, пользователь имеет возможность пропустить его и продолжить измерение других параметров, как показано на рис. 28.
Отладочные сообщения
Если загруженная в микроконтроллер управляющая программа была откомпилирована в режиме отладки, а сам микроконтроллер соединен с компьютером, где запущена среда разработки Arduino IDE, то в процессе работы тестера ОУ в окно Serial Monitor будут в больших количествах приходить различные отладочные сообщения обо всех выполняемых программой действиях и значениях измеренных и вычисленных величин. Как именно включить или выключить режим отладки, вы прочитаете в одном из следующих разделов, а сейчас мы рассмотрим некоторые из этих сообщений чтобы использовать содержащиеся в них полезные сведения для настройки прибора.
На скриншоте внизу показан блок сообщений, появляющихся в окне Serial Monitor при включении тестера ОУ.
После заставки, включающей в себя дату выпуска прошивки, которая обновляется автоматически при каждой компиляции, мы видим здесь группу из 11 строк, содержащую подробные сведения о чтении ранее сохраненных калибровочных констант и текущих настроек из EEPROM. Там имеется информация об адресах и номерах секторов программной памяти микроконтроллера, которые используются в качестве EEPROM, а также непосредственно прочитанная из нее информация. Это ActiveSettings.array - массив из 12-ти чисел с плавающей точкой, в котором хранятся калибровочные константы, Theme - номер цветовой палитры для вывода на экран и Voltage - выбранное напряжение питания испытуемого ОУ.
Четыре следующие строки сообщают нам о том, что инициализация двух ЦАП, находящихся на плате PPS прошла успешно и что программа выполнила процедуру установки выходного напряжение равного нулю в обоих каналах PPS . При этом число в квадратных скобках означает код, который программа записала в рабочий регистр ЦАП (в десятичном формате). Учитывая, что ЦАП MCP4725 - 12-разрядный, это число может находиться в пределах от 0 до 4095. Значение "0.0V" в этих строках означает не то, что реально получилось на выходах каналов PPS (откуда программе знать об этом, у нее нет способов это измерить), а то, что программа хотела получить, отправляя число в квадратных скобках в рабочий регистр. Насколько успешно это у нее вышло, можно выяснить, подключив вольтметр к выходу PPS, а вообще, за соответствие между кодами, отправляемыми в регистр ЦАП и фактическими значениями напряжений на выходах PPS, отвечают калибровочные константы, о чем будет подробнее рассказано далее.
И, наконец, в последней строке на рис. 31 программа нам радостно сообщает об успешной инициализации АЦП ADS1115, находящегося на главной плате прибора.
После установки тестируемого ОУ в соответствующую панельку и нажатия кнопки "Start" запускается процесс измерения параметров, который сопровождается выдачей в окно Serial Monitor множества различных сообщений, часть из которых показана на рис. 32.
Здесь большинство сообщений начинается с целого числа, имеющего 5 десятичных разрядов - это отметки времени в миллисекундах от начала теста.
Первые два сообщения с префиксом PPS говорят о том, что на выходах каналов V+ и V- PPS установлены напряжения +12 В и -12 В соответственно, или, другими словами, на испытуемый ОУ подано питание. Здесь и далее целые десятичные числа в квадратных скобках в строках с префиксом PPS означают данные, записанные в рабочий регистр ЦАП.
Далее с отметки времени 00472 начинается первое измерение напряжения V02a на выходе вспомогательного ОУ. На отметке 00811 измерение закончилось и в этой строке отображаются его результаты. Результатов этих получилось два - сначала мы измерили V02a с малым разрешением АЦП и получили результат "[-3665] -1.6564V var=0.01%", а затем, увидев, что измеренное значение по абсолютной величине не превышает 1,85 В, измерили его повторно, но уже с повышенным разрешением АЦП. Получили при этом "[-29114] -1.6555V var=0.05%". Этот механизм автоматического переключения диапазонов встроенного вольтметра ранее был описан в разделе, посвященном главной плате.
В каждом результате измерения целое десятичное число в квадратных скобках - это прочитанные из рабочего регистра АЦП данные, за ними следует величина напряжения в вольтах, вычисленная с использованием калибровочных констант, а значение var=x.xx% означает относительную нестабильность напряжения за период его измерения. Что это такое и зачем программа вычисляет эту нестабильность, можно узнать подробнее под спойлером ниже.
Измерение напряжения производится путем многократного запуска процесса аналогово-цифрового преобразования и считывания полученных данных из рабочего регистра АЦП с последующим усреднением результатов. Это позволяет в значительной степени подавить все виды помех, влияющих на точность измерений и повысить реальную разрешающую способность встроенного цифрового вольтметра. В процессе этих многократных считываний программа запоминает максимальное и минимальное значения считанных данных и по окончанию измерения может не только вычислить среднее, но и выяснить, насколько измеряемое напряжение менялось в течение всего цикла.
Например, было сделано 10 выборок и получены следующие результаты:
6820 6822 6817 6820 6823 6819 6820 6821 6821 6819
Здесь среднее арифметическое, то-есть усредненный результат измерения Navg равен 6820, минимальное считанное значение Nmin равно 6817, а максимальное Nmax равно 6823. Теперь мы можем посчитать, сколько процентов от измеренного значения составляет разница между максимальным и минимальным значением.
var = (Nmax - Nmin) / Navg * 100%
Подставив значения, получим var = 0.09%. Это и есть относительная нестабильность измеряемого напряжения за период его измерения.
Теперь о том, зачем нам надо ее знать и как мы можем это знание использовать. Как видно из отладочных сообщений на рис. 32, значение var в основном составляет сотые доли процента, редко - десятые доли. Это говорит о том, что измеряемое напряжение не менялось и было достаточно стабильным во время его измерения. Но если мы вдруг увидим нестабильность на уровне единиц процентов или, еще хуже, десятков, то это должно быть сигналом о том, что в измерительной схеме что-то пошло не так и что надо разбираться, откуда эта нестабильность берется.
Причин повышенной нестабильности измеряемого напряжения может быть, как минимум, три:
- Большой уровень наводок от сети переменного тока или от источников питания. Как правило, такие наводки имеют частоту 50 или 100 Гц. Возможны также наводки от импульсных источников питания с частотой их переключения. Потребуются меры по дополнительному экранированию чувствительных к наводкам цепей и/или дополнительная фильтрация питающих напряжений.
- Самовозбуждение в следящем контуре, включающем в себя испытуемый ОУ и вспомогательный ОУ. Потребуется подбор элементов схемы, отвечающих за борьбу с самовозбуждением.
- Не полностью завершившиеся к моменту измерения переходные процессы в следящем контуре. Временных задержек между переключениями в схеме и измерениями напряжений обычно достаточно для завершения переходного процесса и установления стабильного напряжения на выходе вспомогательного ОУ, но в каких-то особых случаях переходной процесс может продолжаться дольше и это сразу же вызовет повышения уровня относительной нестабильности.
Разобраться, какая из перечисленных причин вызвала повышение относительной нестабильности измеряемого напряжения, проще всего с помощью осциллографа, подключая его к выходу испытуемого ОУ и к выходу вспомогательного ОУ и наблюдая за тем, какие процессы происходят в следящем контуре во время тестирования.
Возвращаемся к отладочным сообщениям на рис. 32. На отметке 01422 сообщение с префиксом ADC2 информирует о том, что произошло измерение напряжения на входе канала A2 АЦП, а канал этот, как нам известно, измеряет напряжение на выходе дифференциального усилителя, пропорциональное потребляемому испытуемым ОУ току. Из регистра данных АЦП был считан код 9001, который затем был пересчитан в значение тока Iq. Получилось, что ток этот равен 2.7091 мА при относительной нестабильности равной 0.01%.
На отметке 05102 появляется запись с префиксом RELs, говорящая о том, что микроконтроллер изменил состояние реле ("K2=On"), подготовив тем самым тестер ОУ к измерению следующего напряжения - V02b. На отметке 06153 это измерение выполнено и мы видим его результат.
Далее последовательно происходит измерение всех остальных напряжений в соответствии с временной диаграммой, которую мы подробно обсуждали в разделе, посвященном процессу измерений параметров ОУ. По ходу этих измерений, как только программа собирает достаточное количество информации для вычисления какого-либо из параметров ОУ, она его вычисляет, не дожидаясь завершения всех остальных измерений. Так например, в строке ниже отметки 07543 мы видим вычисленное значение входного тока испытуемого ОУ "Ib- = 7.2 nA". Делается это для того чтобы в случае выхода измеренного или вычисленного значения за допустимый диапазон измерений сразу же выдать пользователю предупреждение (рис. 28) и дать ему возможность решить - прервать процесс измерений или продолжить его.
По завершению процедуры тестирования в окно Serial Monitor отправляются несколько сообщений, содержащих важную информацию о проделанной программой работе (рис. 33).
Здесь на отметках 19028 и 19060 в рабочие регистры обоих АЦП на плате PPS записываются коды, соответствующие нулевым выходным напряжениям, то-есть отключается питание испытуемого ОУ.
В следующей строке - результаты вычислений дрейфа напряжения смещения. Разность температур dT, вычисленная исходя из потребляемой ОУ мощности и теплового сопротивления кристалл-окружающая среда, затем разность напряжений смещения dVos, измеренных в начале и в конце теста, и, наконец, сам дрейф dVos/dT. Все эти величины вычисляются в соответствии с процедурой, описанной в разделе этой публикации, посвященном процессу измерений.
Сообщение "Test completed in..." информирует об общей длительности всей процедуры тестирования в миллисекундах, а последние две строки представляют собой список всех вычисленных параметров испытуемого ОУ и всех измеренных напряжений V02a...V02f в виде их имен (1-я строка) и их значений (2-я строка), разделенных символами табуляции. Содержимое этих двух строк очень удобно скопировать из окна Serial Monitor и вставить в таблицу MS Excel или другого офисного приложения для последующего сохранения в файле или для печати.


