Обещанный релиз первого варианта "правильной" программы к статье Сделай сам лабораторный блок питания с микропроцессорным управлением на ATMega16. Вторая жизнь Back-UPS.
Содержание статьи / Table Of Contents
↑ Про лицензию
Это свободная программа; вы можете повторно распространять ее и/или модифицировать ее в соответствии с Универсальной Общественной Лицензией GNU. Я уверен, что в Датагории исключительно разумные жители, для которых дальнейший юридическо-образный текст не более чем констатация того состояния дел, как оно должно бы быть, так что скрытый текст можно не читать и переходить сразу к более интересному следующему разделу.↑ Описание программы:
Я написал программу (условное название Power_Man, в честь первого донора запчастей для блока питания) в среде программирования Lazarus версии 0.9.30.4 на языке программирования Free Pascal. Данная среда программирования распространяется сайтом //www.lazarus.freepascal.org по лицензии GNU GPL, т.е. без особых ограничений по использованию и распространению.Lazarus - это Delphi-подобная интегрированная среда разработки для создания графических и консольных приложений при помощи компилятора Free Pascal. Free Pascal - это компилятор языков Pascal и Object Pascal, работающий под Windows, Linux, Mac OS X, FreeBSD, и другими ОС.
Lazarus позволяет разрабатывать программы для всех вышеперечисленных платформ в Delphi-подобном окружении. Эта среда разработки является инструментом RAD, включающим в себя дизайнер форм.
В архиве я поместил все необходимые исходники (если чего забыл - пишите), таким образом Вы можете модифицировать программу под собственные нужды.
Бинарный код программы Power_Man.exe скомпилирован для работы в операционной системе MS Windows (c), однако при минимальных изменениях в исходном коде (касающихся наименования COM-портов в разных ОС) ее можно перекомпилировать для всех вышеперечисленных платформ.
Данная версия программы 0.0.1 носит ознакомительно-информативный характер, и я рассматриваю ее как декларацию о намерениях. Полное и безошибочное выполнение всех заявленных характеристик я не гарантирую. Предложения по дополнению функционала приветствую и рассмотрю. Я надеюсь, что весь этот проект будет жить как развивающийся и уточняющийся поиск единственно правильного решения, и надеюсь на интерес и участие в дополнении проекта. Так что, если Вы вдруг изменили код программы с целью устранения какой-либо ошибки, или дополнили функционал, я прошу Вас сообщить мне об этом через личное сообщение на сайте datagor.ru с указанием выявленной проблемы или описанием дополнения, и замен/дополнений в исходном тексте программы. Таким образом я надеюсь поддерживать какую-то целостность проекта.
↑ Интерфейс
программы состоит из двух окон: главного окна, содержащего графики изменения величин тока и напряжения, измеряемых блоком питания, органы управления для установки величин тока и напряжения в блоке питания, средства для элементарного программирования поведения блока питания при проведении таких операций как тренировка и зарядка аккумуляторов различных типов, измерение Вольт-амперных характеристик, емкости аккумуляторов, сохранения измеренных данных в файл для дальнейшей обработки и анализа, настройки взаимодействия с COM-портом.Дополнительное окно содержит числовую информацию о наиболее важных текущих параметрах работы блока питания: текущем напряжении и токе на выходе блока питания и производных этих величин.
Организация главного меню:
Файл->Сохранить — Данная команда позволяет сохранить измеренные данные, хранящиеся во временном файле temp.txt в заданный пользователем файл. Сам файл temp.txt формируется при активации команды Аппарат->Подключить, и заполняется во время работы программы и в случае непредвиденных сбоев дает возможность вручную восстановить данные.
Аппарат->Подключить — Данная команда проводит настройку СОМ-порта компьютера (задает скорость, количество бит, четность и прочие настройки) и запускает процедуру получения данных с блока питания и управления блоком. Номер COM-порта программа узнает из настройки «СОМ-порт» с вкладки настройки.
Протокол->Новый — Данная команда очищает таблицу протокола
Протокол->Открыть — Данная команда загружает предварительно составленный и сохраненный протокол из файла.
Протокол->Сохранить — Данная команда сохраняет предварительно составленный протокол в файл.
Ниже главного меню расположены настройки ограничений тока и напряжения. Для передачи настройки в блок питания надо после редактирования настройки нажать Enter. Только в этом случае в блок будет отправлена соответствующая команда «i=» или «u=». Кнопка «Сохранить в EEPROM» отправляет в блок команду «store».
Организация вкладок главного окна:
Вкладка Графики содержит два поля для графиков зависимости тока и напряжения от времени. На графиках зеленой линией отображаются реально измеренные величины, красной — заданные для данных моментов времени ограничения тока и напряжения.
Вкладка Протокол содержит средства для элементарного программирования динамического поведения блока питания.
Вкладка Настройки содержит настройки номера COM-порта, интервала обмена с блоком питания и замечания относительно лицензии.
↑ Протоколы
никакого отношения к документообороту сотрудников МВД не имеют. Это всего лишь средство простого программирования поведения блока питания. Идея организации взята мной из софта, который я использую для проведения электрофизиологических экспериментов на одиночных нервных клетках.Протокол представляет собой набор следующих друг за другом установок ограничения тока и напряжения, организованных в циклически повторяющиеся «Прогоны», состоящие, в свою очередь, из «шагов». Настройка шагов организована в виде таблицы, по строкам которой расположены различные параметры шагов, а в столбцах настройки для конкретного номера шага.
Каждый шаг включает в себя набор следующих настроек:
Тип шага — задает форму изменения установок тока и напряжения (ступенька или пила) или признак завершения прогона (Пусто). При установке ступенька установки тока и напряжения вступают в силу вначале шага и действуют постоянно в течении всего данного шага. При установке пила установки тока и напряжения линейно изменяются в течении всего шага от установок предыдущего шага до достижения установок данного шага в конце данного шага. Таким образом можно просканировать некоторый диапазон значений тока или напряжения за один шаг.
Напряжение (В) — задает установки ограничения напряжения для данного шага.
Ток (А) — задает установки ограничения тока для данного шага.
Интервал (мин) — задает промежуток времени в течение которого будет выполняться данный шаг. Переход к следующему шагу возможен и по выполнению условий, заданных настройками Условие перехода и Значение перехода. Однако расчет скоростей изменения установок тока и напряжения при типе шага «пила» происходит именно с учетом данной настройки. Сочетание типе шага «пила» с условием перехода отличным от «Время» может привести к непредсказуемому поведению программы!
Шаг напряжения (В) — задает шаг изменения параметра Напряжение (В) при переходе от одного прогона к другому. Например, если заданы значения Напряжение (В) = 0, Шаг напряжения (В)=1, Число прогонов=11, то на первом прогоне будет установлено напряжение 0В, на втором — 1В, и так далее до 10В на последнем 11-м прогоне. Таким образом на каждом прогоне можно установить линейно изменяющуюся характеристику.
Шаг тока (A) — задает шаг изменения параметра Ток (А) при переходе от одного прогона к другому.
Шаг интервала (мин) — задает шаг изменения параметра Интервал (мин) при переходе от одного прогона к другому. Таким образом на каждом прогоне можно задать увеличивающееся(уменьшающееся) время выполнения данного шага.
Условие перехода — задает условие перехода к следующему шагу (прогону, если тип следующего шага равен «Пусто»). Допустимые условия: "Время", "V>", "V", "I", "dV", "dI<". Это позволяет реализовать условный способ перехода к следующему шагу протокола. Например, при зарядке кислотного аккумулятора 12В емкостью 7Ач можно задать Напряжение (В) = 14,4В, Ток (А) = 0,7А, Условие перехода I<, Значение перехода = 0,3. При этом аккумулятор будет заряжаться постоянным током 0,7А до достижения напряжения 14,4В, далее напряжение стабилизируется и зарядный ток будет уменьшаться, и когда достигнет 0,3А шаг закончится, прогон переместится на следующий шаг. При необходимости разрядки свинцового аккумулятора 12В 7Ач до напряжения 12В можно параллельно к аккумулятору подключить резистор 20 Ом и составить такой 1-й шаг: Напряжение (В) = 14,4В, Ток (А) = 0А, Условие перехода V<, Значение перехода = 12,1. 2-й шаг: Напряжение (В) = 13,8В, Ток (А) = 1А, Интервал (мин) = 900. В этом случае аккумулятор разрядится через резистор до напряжения 12В и затем перейдет в режим буферной зарядки. В случае зарядки NiMH аккумуляторов с помощью Условие перехода dV< можно отловить окончание зарядки по дельте напряжения.
Значение перехода — задает пороговое значение для предыдущей настройки условного перехода.
Слева от таблицы настройки шагов расположен график изменения установок для предварительного просмотра формируемого протокола.
Внимание! Тестовые прогоны составленных Вами протоколов я рекомендую проводить при непрерывном контроле правильного выполнения программы на старых, отслуживших свое аккумуляторах или модельных нагрузках! Я не несу и не собираюсь нести ответственность за возможную порчу Вашего оборудования в результате использования этой программы!
По окончанию сеанса работы с программой основные настройки (положение и размер окон, графиков, установки напряжения и тока, интервал обмена с блоком питания, номер используемого порта) автоматически сохраняются в файле Main_settings.xml и при следующем запуске программы используются для стартовой настройки.
Кроме того, в папке «Простой текстовый терминал» находится простая программа (тоже написаная в Lazarus) — эквивалент терминала Arduino, которую можно использовать на начальном этапе проверки и настройки блока питания путем отправки текстовых команд и просмотра ответа от него.
↑ Файлы:
Архив с программой и исходниками🎁Power_Man_0_0_1.7z 3.42 Mb ⇣ 222
Камрад, рассмотри датагорские рекомендации
🌼 Полезные и проверенные железяки, можно брать
Опробовано в лаборатории редакции или читателями.