======================================================= =================== PSL-3604 history: ================= ======================================================= ======================= Hardware: ===================== PCB rev.1 ! В схеме передней панели ошибка - перепутаны выводы 11 и 12 регистра U4. + Исправил на готовой плате перемычками, благо рядом находятся нужные переходные отверстия. ! Во время динамической индикации при некоторых комбинациях горящих разрядов паразитно подсвечивается светодиод FINE. Причина - отрицательные выбросы на выходах ULN2003 из-за того, что коммутируются заряженные емкости переходов светодиодов сегментов индикатора. В ULN открывается паразитный диод, что приводит к появлению выходного тока в выключенном соседнем канале. Устраняется диодами Шоттки с выходов ULN на землю (так рекомендуют в DS). + Как самое простое решение - поставил параллельно светодиоду FINE конденсатор 0603 10 нФ. На первый взгдяд - глупость. Но проблему это полностью устранило. Описание тут: http://leoniv.livejournal.com/195409.html ! Процессор STM32F100C4T6B имеет недостаточно памяти. + Процессор заменен на STM32F100C8T6B. ! Ошибка АЦП на несколько единиц. + На входе АЦП C2, C4 заменил на 220 пФ. Объяснение тут: http://leoniv.livejournal.com/194681.html ! Напряжение на конденсаторе C20 около 48 В, что близко к максимальному (50 В). + Заменил конденсатор C20 на 2200 мкФ 63 В. ! Напряжение на входе стабилизатора -5 В слишком высокое (около 20 В). + Заменил конденсаторы C1 и C3 на 47 мкФ 100 В. Напряжение уменьшилось примерно до 13 В, что нормально. ! На выходе в состоянии OFF (с выключенным DP) около -0.5 В. + При выключении выхода в ЦАП загружаю не нулевой код, а код 0 В. + Удалил компоненты VD20, R78, так как они приводили к большому втекающему току при отключенном выходе. ? Убрать R73, R74, а R77 заменить перемычкой? Тогда не будет на выключенном выходе DC. Эффекта от местной ООС ни в одной ситуации не вижу. Как вариант, можно R74 заменить емкостью и сделать ООС только по переменному напряжению. + Заменил R89 на плате power на 5.1 кОм для правильного детектирования состояния втекающего выходного тока. + Для детектирования состояния Unregulated вход компаратора на LM358 отключил от выхода усилителя ошибки I (удалил R80) и подключил вход к земле. ! Если не планируется делать отдельные клеммы SENSE, компоненты R79, R82 - R87, C39 - C41, VT11 - VT13 можно не устанавливать. ! Очень удачным оказалось дизайнерское решение "одно окно", LED-индикаторы смотрятся замечательно. Но есть и серьезный недостаток - динамическая индикация создает большие пульсации тока потребления платы индикации, что является причиной помех на аналоговые узлы источника. + Разрезал полигон земли платы power таким образом, чтобы C24, C25, C26, C27 оказались подключенными к COM, а не к AGND. При этом C43, C44 должны остаться на AGND. Резистор R49 заменил перемычкой. ! Делитель напряжения COM на плате передней панели обладает слишком высоким выходным импедансом, наблюдается ошибка измерения тока и напряжения. + Добавил на выход делителя повторитель на ОУ. Для этого задействовал ОУ фильтра ЦАП. Вданном случае активный фильтр не нужен, достаточно пассивной RC-цепочки, которая присутствует. + Дополнительно соединил на плате power контакт 8 разъема XP2 и вывод "-" конденсатора C18 толстым медным проводом диаметром 0.8 мм. Это снизило помехи до уровня шумов. Емкость 1000 мкФ на питании +5 В на плате процессора тоже дает положительный эффект, но эта мера уже является излишней. Все доработки платы описаны в отдельном файле PSL-3604_hw_fix.pdf. ! Выброс при переходе между двумя уровнями стабилизации тока. + Промоделировал и добавил в схему R98 10 кОм и C51 1 нФ. На плате монтируется резистор R98 размера 1206 над C32, к нему подпаивается C51 размера 0805, который вторым выводом паяется на площадку для R78. - При выдергивании сетевой вилки при низком выходном напряжении на выходе наблюдается выброс до 10 В. + Уменьшил номинал R32 на плате выходного каскада до 47 кОм. ? Попробовать с эмиттера VT7 платы выходного каскада включить резистор на землю (хотя проблема и так решена)? - При работе на токах около 4 А необходимо обеспечить хороший теплоотвод для регулирующих транзисторов. Это возможно при условии применения керамических прокладок с хорошей теплопроводностью и эффективного радиатора. Для упрощения охлаждения регулирующих транзисторов желательно применить корпуса TO-247. Для освобождения места на радиаторе можно отказаться от диодов, заменив их N-канальными MOSFET (например, IRFZ46), которые можно установить без радиаторов на плате питания. Управление MOSFET сделать аналогично основным выпрямителям с помощью компараторов LM393. Питание компараторов есть готовое ("-" - текущий уровень, "+" - следующий уровень). Промоделировал такой вариант, проблем не обнаружил, но такой вариант плат пока не разводил. + Заменил R77 на 270 Ом (лучше даже поставить 220 Ом). Иначе при низком установленном токе (порядка 1 - 5 мА) при больших выходных напряжениях наблюдалось ложное срабатывание индикации CC. Это происходило по той причине, что базы VT9, VT10 при выходном напряжении 36 В имели потенциал +1.2 В. На выходе U8:1 напряжение достигало нуля, индикация срабатывала. Происходило это только при малом установленном токе, когда на выходе U8:2 было менее 0.7 В и VT10 начинал открываться. - Резисторы MF в обвязке диффусилителей имеют слишком большой ТКС. + Заменил на отобранные по номиналу МЛТ - температурный дрейф выходного напряжения стал незаметным. - Заменить все точные резисторы прецизионными SMD 0805 0.1% 25ppm. PCB rev.2 - При выключении питания напряжение спадает плавно, на индикации мелькают разные цифры, что некрасиво. + Использовал встроенный PVD, котрый при падении напряжения питания всё выключает и делает software reset. Но проблема частично осталась, индикация все равно при выключении ведет себя плохо. + Добавил схему супервизора на плату Pow. На плате Pan добавил штырек PVG, подключенный к пину 33 процессора (PA12). - На плате выходного каскада при большом выходном токе сильно нагреваются резисторы R25-R28. + Установил параллельно этим резисторам (вторым этажом) еще такие же резисторы. Это увеличило максимальный ток защиты вдвое, что вполне допустимо. - При некоторых условиях наблюдается возбуждение с небольшим уровнем (десятки мВ). + Проблему устранил установкой конденсаторов 0.1 мкФ на 100 В (размер 1206) на плату Out с уровней напряжения V1, V2, V3, V4 на землю. + Для снижения уровня помех на сигнале COM относительно GND удалил провод, соединяющий GND платы выходного каскада и XT17 основной платы. Вместо него снизу на основной плате установил перемычку с XT17 на "-" С18. PCB rev.3 + Внесены исправления всех замеченных ошибок. ====================== Software: ====================== - При управлении от компьютера занчения V и I в EEPROM не сохраняются. Надо ли их сохранять? В какой момент? Есть опасность израсходовать ресурс EEPROM. + Пока решил не сохранять. - Считывать серийный номер из FTDI для возможности работать сразу с несколькими БП. Окно Connect с выбором нужного БП. - Включить все доступные COM-порты в список для поиска устройства. - Сейчас лог ведется с периодом 320 мс. Есть возможность вести быстрый лог с периодом 1 мс. Но для этого нужно в firmware добавить FIFO. - Добавить запись/чтение параметров в файл. - Добавить пошаговый визард для калибровки источника под управлением компьютера. Вводить показания внешнего прибора, по ним вычислять коды для калибровочных точек. Такое вычисление возможно только после ввода двух точек? - Калибровку убрать из Settings, отдельное окно визарда, сохранять калибровку в отдельный файл. - Упорядочить исходник программы, разложить по классам: TData, TGraphs, TDevice (обертка для функций DLL с поддержкой исключений). 24.04.2014 - Ver. 1.02 + В меню About добавлена индикация номера версии программы. + Добавлена постоянная индикация выходной мощности. + Заблокированы обработчики контролов включения и выключения выхода, иначе они вызывали загрузку в БП напряжения и тока, что мешало проводить калибровку при запущенном софте. 24.04.2014 - Ver. 1.04 + Исправлена обработка ситуации Disconnected. + Добавлена поддержка программируемых пределов напряжения и тока. + Выведены калибровочные коэффициенты K и S, чтобы была возможность сравнить две разных калибровки, сделанных по разным точкам. Коэффициенты вычисляются на основе формул: V[В] = 99.99[В] * (Kv * code / 65520 - Sv) I[А] = 9.999[А] * (Ki * code / 65520 - Si) 13.11.2014 - Ver. 2.00 + Изменена система команд - исключены команды SET_PROT и SET_PROT. Теперь пороги защиты передаются как обычные параметры. В связи с этим поменялась и DLL. + Добавлен чекбокс включения индикации мощности. + Добавлено поле задание интервала таймера. ====================== Firmware: ====================== - Контроль измеренных значений V и I, если отличие от установленных более 1%, выключается режим CV (или CC), включается UNREGULATED. Ситуация возможна, например, при пониженном напряжении сети. Сейчас в этом случае просто включается режим CC. - Оптимизировать метод SoftTimer->Over(). Возможно, сделать несколько производных классов от SoftTimer. - Параметры наследовать от TParam, тогда отображение параметра каждого типа будет реализовано в классе-наследнике. - Задействовать Watchdog. 05.04.2014 - Ver. 1.00 Версия соответствует описанию PSL-3604_Draft5.pdf. 11.04.2014 - Ver. 1.01 + Исправлена ошибка: состояние выхода при включенном режиме OUT RESTORE = 1 не восстанавливалось при включении БП. + Добавлен выход из меню по нажатию и удержанию ручки энкодера. Если в это время находимся в редактировании, то новое значение параметра сохраняется. + При срабатывании защиты в меню Setup выход БП отключается, генерируется звук ошибки, но сообщение об ошибке не выводится до выхода из меню Setup. + Добавлен выход из меню по нажатию кнопки OUT ON/OFF. + Если редактируется параметр LOCK, то выход в основное меню по нажатию ручки энкодера производится только в том случае, если LOCK = ON. + При повороте энкодера при заблокированном управлении переход в меню "Lc-On" не производится. + Когда энкодер не задействован (TRACK = 0 или LOCK = 1), то его поворот не генерирует звук ошибки. + Сделана попытка улучшить обработку энкодера. Вместо цифрового фильтра сигналов энкодера добавлен таймер, который разрешает реверс энкодера лишь спустя 100 мс состояния покоя. + Исправлена загрузка ЦАП при отключении выхода. Теперь грузится код нулевого напряжения и тока, а не нулевой код, как раньше (что приводило к появлению отрицательного напряжения около -0.5 В на выходе). + Добавлена индикация dnP, когда ток DP становится больше -5 мА. Это возможно при перестройке напряжения вниз с емкостной нагрузкой или при втекающем входном токе от постороннего источника. 24.04.2014 - Ver. 1.02 + Увеличено время записи внешней EEPROM до 10 мс. Для микросхем 24C04 некоторых производителей 5 мс недостаточно. + Исключена нелинейная фильтрация отсчетов АЦП, иначе при больших колебаниях тока нагрузки среднее значение тоже прыгало. + Изменена логика отображения V и I. Теперь при импульсном характере тока нагрузки (пример - brushless DC вентилятор), когда БП постоянно переключается CV-CC и обратно (светодиоды CV и CC горят постоянно), отображается измеренный ток и измеренное напряжение. + Добавлен вызов EeSection->Validate() при установке калибровочного коэффициента через порт, иначе CRC не обновлялась и при следующем включении загружались коэффициенты по умолчанию. Добавлено гашение дисплея при сохранении коэффициентов. 02.05.2014 - Ver. 1.03 + Добавлено сохранение индеса параметра меню настроек. При следующем входе в это меню сразу делается переход на этот параметр. В EEPROM индекс параметра не сохраняется. + Добавлен выход из меню установки порога OVP по нажатию SET V, из меню установки порога OCP по нажатию SET I, из меню установки порога OPP по нажатию SET V + SET I. + Исключен звук при удержании кнопки, если удержание не используется для активизации какой-либо функции. + Изменена логика индикации мощности. Теперь при регулировке напряжения индикация мощности продолжается в нижней строке. При регулировке тока индикация мощности временно переносится в верхнюю строку. 08.05.2014 - Ver. 1.04 + При выходе из меню во всех ситуациях генерируется звук High(). + Изменен способ обнуления ЦАП при выключении выхода: в класс ЦАП-а добавлен новый метод SetZero() для загрузки величины для состояния OUT OFF. При выключении выхода в ЦАП напряжения загружается 0 В, в ЦАП тока - 0.001 А. + В меню установки пределов TOP запрещено включение выхода. Вместо этого кнопка OUT выполняет выход из меню установки пределов с сохранением нового значения. + В модуле display.cpp сделаны незначительные изменения, которые касаются только стилистики программы. + Первым пунктом меню сделано чтение пресетов, затем запись пресетов, затем Lock: PrE-CALL, PrE-Stor, Lc-OFF ... + Запрещен автоматический выход по таймеру из меню индикации температуры радиатора, чтобы можно было следить за температурой сколь угодно долго. + Изменен звук перегрева, иначе его можно было спутать со звуком нажатия кнопок. + Добавлен выход из меню установки порогов защиты по нажатию и удержанию ручки энкодера. + При срабатывании защиты во время калибровки выход БП отключается, генерируется звук ошибки, но сообщение об ошибке не выводится до выхода из калибровки. Это сделано для того, чтобы выход из калибровки всегда осуществлялся штатно с сохранением новых или восстановлением старых коэффициентов. При повторном включении калибровочной точки производится сброс защиты. + По умолчанию в конце калибровки предлагается выход без сохранения новых коэффициентов. Это сделано для защиты от случайной перезаписи коэффициентов. + Добавлен автоматический выход из меню защиты, когда флаг защиты сбрасывается. Без этого при управлении от компьютера было невозможно выйти из меню защиты. + Добавил polling EEPROM. Максимальное время записи ограничено таймаутом 25 мс. 13.11.2014 - Ver. 2.00 ! Изменена структура данных - перепрошибка БП версией 2.00 требует перекалибровки. + Пороги OVP, OCP, OPP хранятся в SetupData вместе с другими параметрами. Пороги доступны через Setup Menu. Как вариант, остался быстрый доступ к порогам OVP и OCP при удержании кнопок SET_V и SET_I. + В меню защиты (куда попадаем при срабатывании) возможен быстрый доступ к редактированию порога. Для этого нужно нажать кнопку энкодера. Повторное нажатие сбрасывает защиту и осуществляет выход в меню Main. Выйти в меню Main можно также нажатием кнопки OUT, SET V, SET I. + Удалены команды протокола CMD_SET_PROT и CMD_SET_PROT. Команды CMD_SET_PAR и CMD_GET_PAR не проверяют индекс параметра, что позволяет с минимальными переделками добавлять новые параметры. Если параметр не реализован, его запись не прозводит никаких действий, а чтение всегда возвращает ноль. + Название модуля timer.cpp изменено на systimer.cpp. + Добавлен таймер автоматического отключения выхода. Дискретность установки таймера 1 сек. (режим FINE), 1 мин. (нормальный режим), 1 час (быстрое вращение). Максимальный интервал - 18 часов. Таймер работает только тогда, когда включен выход. При выключении выхода происходит пауза в работе таймера. При работе таймера светодиод OUT мигает. + Изменена последовательность пунктов меню, сейчас оно имеет такой вид: 1. PrE-CALL - чтение пресета 2. PrE-Stor - запись пресета 3. Lc-OFF/On - блокировка управления 4. XX.XX-OUP - порог OVP, В 5. OCP-X.XXX - порог OCP, мА 6. OPP-XXX.X - порог OPP, Вт 7. dEL-XXXX - задержка OVP/OCP/OPP, мс 8. FAn-XX.X° - порог включения вентилятора, °C 9. OtP-XX.X° - порог OTP, °C 10. HSt-XX.X° - текущая температура радиатора, °C 11. t-XX.XX.XX - таймер автоотключения выхода, час., мин., сек. 12. trc-OFF/On - регулировка простым поворотом ручки 13. Con-OFF/On - подтверждение введенного значения 14. P- OFF/On - включение режима отображения мощности 15. Set-OFF/On - отображение установленных значений 16. Get-OFF/On - отображение измеренных значений (даже в off) 17. APU-AG/PH/PL - режим измерения напряжения 18. APC-AG/PH/PL - режим измерения тока 19. PrC-OFF/On - предпросмотр установленного ограничения тока (в off) 20. dnP-OFF/On - включение downprogrammer 21. Out-OFF/On - восстановление состояния выхода 22. Snd-OFF/AL/ON - режим звука 23. Enr-OFF/On - реверс энкодера 24. SPL-OFF/On - включение отображения splash screen 25. InF-XX.XX - индикация текущей версии прошивки 26. dEF-nO/YES - загрузка параметров по умолчанию 27. CAL-nO/YES - вход в калибровку 28. ESC-YES - выход из меню + Кнопка OUT ON/OFF в меню осуществляет следующие функции: в меню Splash - выход в меню Main; в меню Error - выход в меню Main; в меню Main - выход из редактирования, OUT ON/OFF; в меню Preset - выход из редактирования, переход в Main; в меню Setup - выход из редактирования, OUT ON/OFF; в меню Prot - выход из редактирования, переход в Main; в меню Top - выход из редактирования, переход в Main; в меню Calib - OUT ON/OFF, когда это разрешено. + Работа с шиной I2C выделена в отдельный файл i2csw.cpp. + В модуль eeprom.cpp добавлен алгоритм формирования кода ошибки при обращении к EEPROM. Этот код выводится на дисплей в виде Err- E-xx, где xx - шестнадцатиричное число, в котором биты задают тип ошибки: D0 - ошибка сигнатуры D1 - ошибка CRC D2 - ошибка выделения памяти в EEPROM D3 - нет сигнала ASK от EEPROM D4 - признак CRC-секции EEPROM D5 - признак RING-секции EEPROM + Изменена логика работы вентилятора. Если запрашиваемая скорость превысит порог 25%, формируется импульс разгона вентилятора величиной 70% длительностью 1 сек. После старта вентилятор работает минимум 5 сек. Если запрашиваемая скорость ниже 25%, питание вентилятора отключается. Иначе вентилятор может вибрировать без вращения, издавая шум. При ошибке термометра вентилятор все время работает на полной скорости. + Уменьшен интервал запрета реверса энкодера до 10 мс. Иначе при резкой смене направления вращения энкодер не работал. + При нажатии ручки энкодера производится вход в редактирование V. Если без регулировки нажать еще раз, то происходит вход в редактирование I. + Добавлена поддержка сигнала PVG. Если схема детектора напряжения питания в БП не установлена, этот сигнал можно не подключать, работоспособность БП при этом не нарушится. + Добавлена проверка текущего режима работы при завершении каждого пункта калибровки. Если режим CV/CC не соответствует нужному, или если OUT = OFF, то изменение калибровочных коэффициентов не производится, восстанавливаются старые значения калибровочной точки и соответствующего кода. =======================================================