Первая версия устройства позволяет снимать только прямую ветвь ВАХ – в первом квадранте.
Разработана вторая версия устройства, которая позволяет снимать полную ВАХ (прямую и обратную ветви) фотоэлектрического преобразователя.
Устройство также называется в зарубежных источниках как Four quadrant power supply (четырехквадрантный блок питания), так как позволяет работать в четырех квадрантах осей ток-напряжение. Может как потреблять энергию от внешнего источника (солнечного элемента/модуля), так и генерировать энергию.
Функциональная схема устройства автоматического снятия ВАХ солнечного модуля приведена на рисунке:
Принципиальная электрическая схема устройства:
Данная схема обеспечивает требуемое постоянное смещение напряжения для управления усилителем, контролирующим ток через ФЭП, собранным на комплементарных полевых транзисторах: в качестве N-канального используется IRFP150N, а в качестве P-канального IRFP9140N. Именно эти транзисторы и обеспечивают необходимую выходную мощность ФЭП. Такая схема включения операционного усилителя позволяет создать двухполярное напряжение управления транзисторами посредством однополярного, которое поступает от ЦАП. Управляя выходным напряжением ЦАП можно перемещаться от отрицательной части ветви ВАХ к положительной. В первом квадранте, когда ФЭП работает как генератор энергии, эта энергия будет поглощаться устройством (рассеиваться в виде тепла на транзисторе) и является аналогом полезной нагрузки для солнечных модулей, а во втором квадранте, когда ФЭП включен в обратном смещении, ФЭП потребляет энергию от устройства и будет существенно нагреваться.
Для измерения двунаправленного тока используется интегральный датчик тока HX05-SP/2 фирмы LEM, который позволяет измерять токи в диапазоне –15…+15 А и выдает аналоговый сигнал напряжения в диапазоне 0…5 В прямопропорциональный измеренному току, при этом нулевому значению тока соответствует выходное напряжение 2,5 В.
Для преобразования измеряемого двухполярного напряжения в однополярное положительное, доступное для измерения АЦП, используется схема с делителем напряжения и смещением напряжения на операционном усилителе, на неинвертирующий вход которого подается постоянное напряжение смещения. В схеме используется Rail-to-rail операционный усилитель, что позволяет получать на его выходе напряжение в полном диапазоне уровней напряжения питания (0…5В). Передаточная характеристика такой схемы измерения напряжения будет инвертированной.
Отличительной особенностью является использование большого графического дисплея с разрешением 240х128 точек, что позволяет просматривать получившиеся ВАХ непосредственно после проведения измерений.
Управляет процессом автоматического снятия ВАХ – микроконтроллер ATmega1284P. Микроконтроллер выбран с большим запасом с перспективой дальнейшего развития устройства. Используется не более 8% памяти программ (Flash).
Программное обеспечение для микроконтроллера ATmega1284P написано на языке Assembler в среде AVR Studio v.4.19.
Алгоритм работы микроконтроллера ATmega1284P при автоматическом снятии ВАХ аналогичен предыдущему варианту схемы за исключением части управления комплементарной парой полевых транзисторов, когда необходимо получить на выходе устройства положительное или отрицательное напряжение.
Реакция на события реализована в виде флагового автомата. В цикле непрерывно опрашиваются флаги событий.
Обрабатывются следующие события:
- обновление информации на экране (два раза в секунду);
- поворот ручки энкодера влево;
- поворот ручки энкодера вправо;
- нажатие на кнопку энкодера.
Существуют два состояния: пункт меню активирован или нет. Пункт активируется нажатиен на кнопку энкодера.
На главном экране можно задать текущее значение ЦАП, перейти в меню калибровки и автоматического снятия ВАХ.
Также на главном экране отображаются измеренные значения тока и напряжения, а также их графики.
На экране калибровки можно настроить переменные прибора. В списке отображается имя переменной и её значение. Пункт активруется нажатием кнопки энкодера, значение регулируется при помощи поворота ручки энкодера, деактивация пункта производится повторным нажатием кнопки энкодера. Переключение между пунктами производится поворотом ручки энкодера.
На экране калибровки можно настроить следующие переменные: 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
- шаг ЦАП при автоматическом снятии ВАХ;VAH_DELAY
- временная задержка между последовательными измерениями [мс];CH0_DELTA
- калибровочное значение: смещение нуля для 0-канала АЦП [мВ];CH1_DELTA
- калибровочное значение: смещение нуля для 1-канала АЦП [мВ];ADC_V_REF
- калибровочное значение: опорное напряжение АЦП [мВ];ACS712_KI
- калибровочное значение: коэффициент передачи датчика тока ACS712 [мВ/А];RESDIV_KU
- калибровочное значение: коэффициент передачи жедителя напряжения [В/В];ZERO_DAC
- калибровочное значение: значение ЦАП, при котором на выходе устройства 0 В;VREF_DAC
- калибровочное значение: напряжение смещения для операционного усилителя;LIM_VOLT_NEG
- предельное значение (ограничение) отрицательного напряжения;LIM_VOLT_POS
- предельное значение (ограничение) положительного напряжения;LIM_CURR_NEG
- предельное значение (ограничение) отрицательного тока;LIM_CURR_POS
- предельное значение (ограничение) положительного тока.
Список сообщений об ошибках
Split arguments failed
- ошибка разбивки строки на аргуметы;Unknown command
- неизвестная команда;Invalid argument count
- некорректное число аргументов;Invalid argument
- некорректное значение аргумента;Too many arguments
- слишком много аргументов;No arguments
- отсутствует аргумент/аргументы;Unknown error
- неизвестная ошибка;Invalid numeric parameter
- некорректное число.