Giter VIP home page Giter VIP logo

ivc_tracer_v2's Introduction

IV-Curve Tracer v.2

Первая версия устройства позволяет снимать только прямую ветвь ВАХ – в первом квадранте.

Разработана вторая версия устройства, которая позволяет снимать полную ВАХ (прямую и обратную ветви) фотоэлектрического преобразователя.

Устройство также называется в зарубежных источниках как Four quadrant power supply (четырехквадрантный блок питания), так как позволяет работать в четырех квадрантах осей ток-напряжение. Может как потреблять энергию от внешнего источника (солнечного элемента/модуля), так и генерировать энергию.

Hardware

Функциональная схема устройства автоматического снятия ВАХ солнечного модуля приведена на рисунке:

Functional scheme

Принципиальная электрическая схема устройства:

Functional scheme

Данная схема обеспечивает требуемое постоянное смещение напряжения для управления усилителем, контролирующим ток через ФЭП, собранным на комплементарных полевых транзисторах: в качестве N-канального используется IRFP150N, а в качестве P-канального IRFP9140N. Именно эти транзисторы и обеспечивают необходимую выходную мощность ФЭП. Такая схема включения операционного усилителя позволяет создать двухполярное напряжение управления транзисторами посредством однополярного, которое поступает от ЦАП. Управляя выходным напряжением ЦАП можно перемещаться от отрицательной части ветви ВАХ к положительной. В первом квадранте, когда ФЭП работает как генератор энергии, эта энергия будет поглощаться устройством (рассеиваться в виде тепла на транзисторе) и является аналогом полезной нагрузки для солнечных модулей, а во втором квадранте, когда ФЭП включен в обратном смещении, ФЭП потребляет энергию от устройства и будет существенно нагреваться.

Для измерения двунаправленного тока используется интегральный датчик тока HX05-SP/2 фирмы LEM, который позволяет измерять токи в диапазоне –15…+15 А и выдает аналоговый сигнал напряжения в диапазоне 0…5 В прямопропорциональный измеренному току, при этом нулевому значению тока соответствует выходное напряжение 2,5 В.

Для преобразования измеряемого двухполярного напряжения в однополярное положительное, доступное для измерения АЦП, используется схема с делителем напряжения и смещением напряжения на операционном усилителе, на неинвертирующий вход которого подается постоянное напряжение смещения. В схеме используется Rail-to-rail операционный усилитель, что позволяет получать на его выходе напряжение в полном диапазоне уровней напряжения питания (0…5В). Передаточная характеристика такой схемы измерения напряжения будет инвертированной.

Отличительной особенностью является использование большого графического дисплея с разрешением 240х128 точек, что позволяет просматривать получившиеся ВАХ непосредственно после проведения измерений.

Управляет процессом автоматического снятия ВАХ – микроконтроллер ATmega1284P. Микроконтроллер выбран с большим запасом с перспективой дальнейшего развития устройства. Используется не более 8% памяти программ (Flash).

Firmware

Программное обеспечение для микроконтроллера ATmega1284P написано на языке Assembler в среде AVR Studio v.4.19.

Description

Алгоритм работы микроконтроллера ATmega1284P при автоматическом снятии ВАХ аналогичен предыдущему варианту схемы за исключением части управления комплементарной парой полевых транзисторов, когда необходимо получить на выходе устройства положительное или отрицательное напряжение.

Realization

Реакция на события реализована в виде флагового автомата. В цикле непрерывно опрашиваются флаги событий.

Обрабатывются следующие события:

  • обновление информации на экране (два раза в секунду);
  • поворот ручки энкодера влево;
  • поворот ручки энкодера вправо;
  • нажатие на кнопку энкодера.

Существуют два состояния: пункт меню активирован или нет. Пункт активируется нажатиен на кнопку энкодера.

Главный экран (MAIN_SCREEN)

На главном экране можно задать текущее значение ЦАП, перейти в меню калибровки и автоматического снятия ВАХ.

Также на главном экране отображаются измеренные значения тока и напряжения, а также их графики.

Functional scheme

Экран калибровки (CALIBRATION_SCREEN)

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

На экране калибровки можно настроить следующие переменные: DAC_STEP, ... .

Functional scheme

Экран автоматического снятия ВАХ (IVC_TRACE_SCREEN)

Содержит переменные IVC_DAC_START, IVC_DAC_END, IVC_DAC_STEP для настройки режима автоматического снятия ВАХ, а также кнопку запуска процедуры автоматического снятия ВАХ.

UART terminal

По 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.

Список доступных команд

  1. clear - очистка экрана;
  2. reboot - перезагрузка устройства;
  3. echo - эхо, возвращает в терминал значение своего аргумента;
  4. set - изменение значения переменной (имеет два аргумента: имя переменной и новое значение);
  5. get - считывание значения переменной (при отправке без аргумента, либо при аргументе ALL, выводит список "имя=значение" всех переменных; при указании конкретного имени переменной выводит значение этой переменной);
  6. start - запуск процедуры автоматического снятия ВАХ (отправляет в терминал массив измеренных и обработанных данных);
  7. 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 - предельное значение (ограничение) положительного тока.

Список сообщений об ошибках

  1. Split arguments failed - ошибка разбивки строки на аргуметы;
  2. Unknown command - неизвестная команда;
  3. Invalid argument count - некорректное число аргументов;
  4. Invalid argument - некорректное значение аргумента;
  5. Too many arguments - слишком много аргументов;
  6. No arguments - отсутствует аргумент/аргументы;
  7. Unknown error - неизвестная ошибка;
  8. Invalid numeric parameter - некорректное число.

Links

  1. Зиновьев В.В., Бартенев О.А. Устройство автоматического снятия вольт-амперных характеристик фотоэлектрических преобразователей

ivc_tracer_v2's People

Contributors

nf-zvv avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.