Тестер ОУ
Часть 4. Программное обеспечение
Структура исходного текста программы
Управляющая программа написана на языке C++ в среде Arduino IDE v.2.3.10. Ее исходный текст состоит из шести основных модулей (файлов с расширением ".ino") и использует несколько готовых библиотек, подключаемых к основным файлам директивами #include. Структура исходного текста показана на рис. 34, а назначение основных модулей - в таб. 5 под рисунком.

| Имя модуля | Назначение |
| OpAmpTester.ino | Главный модуль программы, содержащий функции setup() и loop(), а также определения типов данных, глобальных переменных и констант, используемых в программе. Здесь же находятся директивы препроцессора, позволяющие компилировать разные варианты программы, например, отладочную версию или версию для релиза. Подробнее о директивах см. ниже в разделе "Компиляция программы". |
| Calibration.ino | Процедуры калибровки прибора: - калибровка программируемого источника питания (PPS) - калибровка вольтметра - калибровка миллиамперметра Используются во время настройки прибора в процессе его изготовления, а также при периодической поверке, ремонте или замене элементов. |
| Display.ino | Функции вывода на дисплей экранных форм, сообщений и другой информации. Содержит также процедуры и данные, связанные с переключением цветового оформления ("темы"). |
| EepromEmulation.ino | Эмуляция EEPROM путем сохранения данных в программной памяти ("flash-памяти") микроконтроллера. Используется для хранения калибровочных констант и текущих настроек при выключеном питании прибора. |
| ProgPowerSupply.ino | Функции для управления программируемым источником питания (PPS). Используются для включения/выключения питания испытуемого ОУ, а также для изменения питающих напряжений в процессе измерения его параметров. |
| TestOpAmp.ino | Процедура измерения параметров испытуемого ОУ, включающая как непосредственно измерение, так и последующую математическую обработку измеренных значений. |
Компиляция программы
Для компиляции проекта нужно скачать архивный файл с исходными текстами по ссылке внизу этой страницы и распаковать его в папку, которая в настройках среды Arduino IDE выбрана как "Путь к альбому со скетчами" или "Sketchbook location". Обычно этот путь выглядит как C:\Users\ВашеИмя\Documents\Arduino\ или как-то иначе, если вы сами ранее выбрали другое местоположение на жестком диске для своих проектов. После распаковки архива у вас образуются две папки - одна с именем OpAmpTester и в ней будут находиться шесть файлов с расширениями .ino, вторая - с именем libraries и в ней будут находиться четыре библиотеки, показанные справа на рис. 34.
Во избежание конфликта версий мы включили в архив с исходными текстами прошивки именно те версии четырех библиотек верхнего уровня, которые автор использовал для разработки. Надеемся, что все остальные необходимые для компиляции библиотеки у наших читателей окажутся если и не тех же самых версий, что у автора, то, по крайней мере, совместимыми с ними, что позволит успешно компилировать проект. Если с этим возникнут какие-либо трудности - пишите, будем разбираться вместе.
Обратите внимание, что библиотека TFT_eSPI требует некоторой настройки в зависимости от типа дисплейного модуля и аппаратной конфигурации вашего изделия. В состав библиотеки входит файл User_Setup.h, который содержит большое количество определений различных параметров дисплея - его разрешение, тип контроллера, порядок чередования цветов и другие. Там же имеются определения различных конфигураций интерфейса SPI - тип микроконтроллера, номера его пинов, к которым подключены соответствующие сигналы шины, скорость передачи данных. Кроме того с помощью этого же файла можно выбрать шрифты для отображения текстов на дисплее.
Если вы используете точно такой же дисплейный модуль, какой использовал автор, и подключили его к тем же пинам микроконтроллера, то вам можно не совершать никаких действий - все необходимые настройки уже сделаны в том файле User_Setup.h, который вы получите, скачав архив с исходными текстами по ссылке внизу этой страницы. Однако, если вы хотите использовать другой тип дисплея или микроконтроллера, решили как-то иначе соединить их между собой или внести какие-либо другие изменения в аппаратную конфигурацию, то вам надо будет открыть этот файл при помощи любого текстового редактора и внести в него требуемые изменения, закомментировав те определения, которые в нем сейчас активны, и раскомментировав другие.
Скопировав исходные тексты и библиотеки в соответствующее местоположение на диске, открываем файл OpAmpTester.ino в среде разработки, при этом остальные пять файлов с расширением .ino также откроются в отдельных закладках и далее все шесть будут компилироваться совместно.
Настройки IDE (меню Tools) должны выглядеть следующим образом:
- Board: "Generic STM32F1 series"
- Port: имя COM-порта, к которому у вас подключен микроконтроллер
- Debug symbols and core logs: "None"
- Optimize: "Smallest (-Os default)"
- Board part number: "BluePill F103CB (or C8 with 128k)"
- C Runtime Library: "Newlib Nano (default)"
- Upload method: "STM32CubeProgrammer (Serial)"
- USB support (if available): "None"
- U(S)ART support: "Enabled (generic 'Serial')"
- USB speed (if available): "Low/Full Speed"
Имеется в виду, что для загрузки программы в микроконтроллер вы будете использовать USB-to-TTL конвертер, эмулирующий COM-порт компьютера, а также пакет STM32 CubeProgrammer, который должен быть заранее скачан с сайта ST Microelectronics и установлен на вашем компьютере.
В самом начале файла OpAmpTester.ino находятся директивы препроцессора, управляющие различными вариантами сборки программы. Все они позволяют включить или выключить те или иные вспомогательные функции программы, которые нужны во время настройки прибора при его изготовлении или ремонте, но не требуются в процессе нормальной эксплуатации. Их назначение показано в таблице 6.
| Директива | Если директива активна | Если директива закомментирована |
| #define __DEBUG__ | Программа при запуске устанавливает соединение с Serial Monitor и в процессе работы отправляет туда детальные отладочные сообщения, включая сообщения обо всех выполняемых действиях и значения переменных. | Программа не использует Serial Monitor. |
| #define __STOP_ON_EACH_PARAM__ | При тестировании ОУ программа останавливается после измерения каждого из параметров и ждет нажатия на любую кнопку для продолжения работы. | Программа выполняет измерения всех параметров ОУ без остановок. |
| #define __EEPROM_RESET__ | Программа при запуске не читает ранее сохраненные в EEPROM значения калибровочных констант и текущих настроек, а удаляет их и записывает в EEPROM значения по умолчанию. | Программа при запуске загружает ранее сохраненные значения из EEPROM. |
Последнюю из приведенных в таблице директив следует применять с особой осторожностью, поскольку откомпилированная с этой директивой прошивка при каждом включении тестера ОУ будет стирать из EEPROM хранящиеся там калибровочные параметры и заменять их на значения по умолчанию. Это обязательно приведет к полной потере точности всех измерений и потребует повторной калибровки прибора. Поэтому используем эту директиву только в случае какого-то сбоя в настройках, который невозможно устранить другими методами. Однократно загружаем и запускаем программу, откомпилированную с этой директивой, затем сразу же ее комментируем в исходном тексте, снова компилируем и загружаем в микроконтроллер прошивку уже без нее. После этого необходимо будет первым делом выполнить процедуры калибровки чтобы заменить значения калибровочных констант по умолчанию на "правильные". Подробнее о калибровке смотри далее в следующих частях этой публикации.
Исходные тексты программы тщательно прокомментированы, автор надеется, что назначение каждой константы, переменной или функции должно быть понятно читателям, имеющим даже небольшой опыт программирования микроконтроллеров на языке C++ в среде Arduino IDE. Поэтому было решено не включать подробный разбор исходного текста в эту публикацию. Если возникнут вопросы - пишите, автор готов на них ответить, а мы приближаемся к концу нашего долгого повествования и нам осталось рассмотреть последний вопрос - калибровку тестера ОУ.
Файлы для загрузки
OpAmpTesterSources.zip
- (1.7 MByte) исходные тексты управляющей программы тестера ОУ и библиотеки верхнего уровня, использованные в проекте. Версия 3.0 от 7 июля 2026.