Разработано устройство для автоматического снятия вольт-амперных характеристик (ВАХ) фотоэлектрических преобразователей (ФЭП) с полевым транзистором в качестве управляемой электронной нагрузки.
Выделяют четыре режима работы электронной нагрузки: режим поддержания тока (constant current, CC) - с обратной связью по току, режим поддержания напряжения (constant voltage, CV) - с обратной связью по напряжению, режим поддержания мощности (constant power, CP) и режим поддержания сопротивления (constant resistance, CR). См. рис.:
В данном устройстве реализован последний режим. Транзистор управляется усиленным при помощи операционного усилителя сигналом от ЦАП без аппаратной обратной связи. Обратная связь по току, напряжению или мощности может быть реализована программным способом. Аппаратная обратная связь необходима для немедленного реагирования и восстановления установленного режима при изменении характеристик элементов цепи. Поскольку время проведения измерений при автоматическом снятии ВАХ очень короткое, транзистор, установленный на радиаторе, не успевает ощутимо нагреться и изменить свои характеристики.
Функциональная схема устройства автоматического снятия ВАХ солнечного модуля приведена на рисунке:
В качестве переменной электронной нагрузки используется полевой (MOSFET) транзистор, установленный на радиаторе для рассеивания выделяющегося тепла. Цифровой измерительный блок содержит датчики тока и напряжения, аналого-цифровые преобразователи (АЦП), цифро-аналоговый преобразователь (ЦАП) и микроконтроллер.
Напряжение затвор-исток транзистора устанавливается при помощи цифро-аналогового преобразователя. ЦАП обеспечивает изменение сопротивления перехода сток-исток транзистора в широком диапазоне: от практически нуля Ом (точка короткого замыкания) до нескольких МОм (точка холостого хода). При помощи АЦП производится оцифровка данных от датчиков тока и напряжения исследуемого солнечного модуля. Измерение тока производится с помощью интегрального датчика тока ACS712 фирмы Allegro. Для измерения напряжения используется делитель напряжения на двух резисторах.
Управляет процессом автоматического снятия ВАХ – микроконтроллер ATmega16, входящий в состав микроконтроллерного комплекта Pinboard II.
Принципиальная электрическая схема устройства:
Программное обеспечение для микроконтроллера ATmega16 написано на языке Assembler в среде AVR Studio v.4.19.
Алгоритм работы микроконтроллера при автоматическом снятии ВАХ следующий: путем установки цифрового кода ЦАП задается начальное сопротивление перехода сток-исток транзистора, при этом изменяются ток и напряжение солнечного модуля в соответствии с его ВАХ. Напряжение и ток измеряются датчиками, сигналы оцифровываются с помощью АЦП и передаются в микроконтроллер, который выполняет вычисления и передает измеренные ток и напряжение на компьютер через преобразователь интерфейсов UART-USB. Затем значение ЦАП увеличивается на заданный шаг и процесс повторяется, пока не будет достигнуто конечное значение ЦАП.
Начальное, конечное значение и шаг ЦАП задаются в меню настройки на жидкокристаллическом дисплее путем поворота ручки энкодера, а также через управляющую программу с компьютера. Есть возможность прямого (от точки ХХ к точке КЗ) и обратного (от точки КЗ к точке ХХ) хода ЦАП при автоматическом снятии ВАХ. При прямом ходе начальное значение ЦАП больше конечного и уменьшается на величину шага. При обратном ходе начальное значение меньше конечного и увеличивается на величину шага.
Также доступен ручной режим снятия ВАХ. Текущие значения ЦАП устанавливаются путем поворота ручки энкодера, измеренные значения тока и напряжения отображаются на жидкокристаллическом дисплее.
Реакция на события реализована в виде флагового автомата.
На главном экране существуют следующие события:
- обновление информации на экране (два раза в секунду);
- поворот ручки энкодера влево (уменьшение значения ЦАП);
- поворот ручки энкодера вправо (увеличение значения ЦАП);
- короткое нажатие на кнопку (вызов главного меню);
- длительное нажатие на кнопку (запуск процедуры автоматического снятия ВАХ).
При помощи главного меню можно настроить переменные прибора. На каждом экране меню отображается имя переменной и ниже её значение. Значение регулируется при помощи поворота ручки энкодера. Переключение между экранами производится нажатием на кнопку меню.
При помощи меню можно настроить следующие переменные: DAC_STEP
, IVC_DAC_START
, IVC_DAC_END
, IVC_DAC_STEP
.
По UART доступен командный интерпретатор. По мере поступления, входящие символы добавляются в кольцевой буфер UART по прерыванию UART Receive Complete
. При получении символа перевода каретки (CR, код 13, \n
), возводится флаг о приёме строки. Далее управление передаётся парсеру UART_RX_PARSE
. Запускается подпрограмма SPLIT_LINE
, которая подготавливает командную строку CMDLINE
в виде команда\0[аргумент]\0[аргумент]\0
: из кольцевого буфера последовательно извлекаются символы, после первой последовательности символов (команды), отделённой символом \0
, следуют опциональные аргументы, индексы начала которых добавляются в отдельный массив ARG_ADDR_LIST
. Количество аргументов сохраняется в пременную ARG_COUNT
. Затем запускается подпрограмма DEFINE_CMD
, которая идентифицирует команду и в случае успеха возвращает CMD_ID
- идентификатор команды. Если ошибок не обнаружено, управление передаётся обработчику команды при помощи подпрограммы EXEC_CMD
.
Список доступных команд
clear
- очистка экрана;reboot
- перезагрузка устройства;echo
- эхо, возвращает в терминал значение своего аргумента;set
- изменение значения переменной (имеет два аргумента: имя переменной и новое значение);get
- считывание значения переменной (при отправке без аргумента, либо при аргументеALL
, выводит список "имя=значение" всех переменных; при указании конкретного имени переменной выводит значение этой переменной);start
- запуск процедуры автоматического снятия ВАХ (отправляет в терминал массив измеренных и обработанных данных);dac
- получение текущего или установка нового значения ЦАП.
Разделителем служит пробел.
Имена переменных для команд get
и set
DAC_STEP
- текущий шаг регулировки ЦАП;IVC_DAC_START
- начальное значение ЦАП при автоматическом снятии ВАХ;IVC_DAC_END
- конечное значение ЦАП при автоматическом снятии ВАХ;IVC_DAC_STEP
- шаг ЦАП при автоматическом снятии ВАХ;CH0_DELTA
- калибровочное значение: смещение нуля для 0-канала АЦП [мВ];ADC_V_REF
- калибровочное значение: опорное напряжение АЦП [мВ];ACS712_KI
- калибровочное значение: коэффициент передачи датчика тока ACS712 [мВ/А];RESDIV_KU
- калибровочное значение: коэффициент делителя напряжения [В/В].
Список сообщений об ошибках
Split arguments failed
- ошибка разбивки строки на аргуметы;Unknown command
- неизвестная команда;Invalid argument count
- некорректное число аргументов;Invalid argument
- некорректное значение аргумента;Too many arguments
- слишком много аргументов;No arguments
- отсутствует аргумент/аргументы;Unknown error
- неизвестная ошибка;Invalid numeric parameter
- некорректное число.