Теперь к сути. Сформировал требования к блоку: минимум 0-30В, при токах минимум 10А, с регулируемой защитой по току, и с точностью регулировки по напряжению 0.1В. И что б стало ещё интереснее — 2 канала, пусть и от общей земли. Установка напряжения должна быть цифровой, т.е. никаких переменных резисторов, только энкодеры. Фиксированные установки напряжения и запоминание — опционально.
Для индикации состояния выхода были выбраны цифровые китайские комбинированные индикаторы на ЖК, с диапазоном до 199В с точностью 0.1В и до 20А с точностью 0.01А. Что меня полностью устроило. А вот что забыл, так это прикупить к ним шунты, т.к. по наивности думал что они будут в комплекте.
Для первичного преобразования напряжения думал использовать обычный трансформатор с отводами через каждые 6В, коммутируемый релюшками с контроллера, а для регулировки выхода простой эмиттерный повторитель. И всё бы ничего, но когда узнал стоимость и габариты такого трансформатора (30В * 10А = 300вт), то понял что надо быть современнее и использовать импульсные блоки питания.
Пробежавшись по предложениям понял что ничего толкового на мои токи нет, а если и есть, то жаба категорически против. В связи с этим пришла мысль попробовать использовать компьютерные блоки питания, коих всегда у любого ITшника предостаточно. Были откопаны блоки по 350Вт, что обещало 22А по +5В ветке и 16А по 12В. Пробежавшись по интернету нашёл много противоречивых мнений по поводу последовательного соединения блоков, и нашёл умную статью на Радиокоте как это сделать правильно. Но перед этим решил рискнуть и таки взять и нахрапом соединить блоки последовательно, дав нагрузку.
… И получилось!
На фото последовательно соединены 3 блока. Де-факто на выходе 35В, 10.6А.
Далее возник вопрос: каким контроллером управлять. По идее ATMega328 тут идёт за глаза, но ЦАПы… Посчитав почём обойдётся хотя б 2 ЦАПа на 12 бит и посмотрев характеристики Arduino DUE с ними на борту, а так же сравнив кол-во требуемых ПИНов, понял что проще и дешевле и быстрее будет просто поставить эту ардуину в блок целиком, вместе с платой.
Постепенно на макетках родилась схема. Приведу её в общем виде, только для одного канала:
Схема бьётся на несколько функциональных блоков: Набор блоков питания ATX, блок коммутации БП, блок усилителя напряжения ЦАП Arduino, блок усилителя напряжения токового шунта, блок ограничения напряжения по заданному току.
Блок коммутации БП: В зависимости от заданного пользователем напряжения Ардуино выбирает какую ветку задействовать. Выбирается минимальная по напряжению ветка, на минимум +3В большая заданного. 3В остаются на неточности установки напряжения в блоках питания + ~1.2В просада напряжения на переходах транзистора + не большой запас. Одновременно задействованный ключ ветки активирует тот или иной блок питания. Например задав 24В надо активировать все 3 блока питания и подключить выход на +5в 3-го в цепочке, что даст на коллекторе выходного транзистора VT1 +29В, тем самым минимизируя выделяемую тепловую мощность транзистора.
Блок усилителя напряжения: Реализован на операционном усилителе OP1. ОУ используется Rail-to-Rail, однополярый, с большим напряжением питания, в моём случае — AD823. Причём выход ЦАП Ардуино имеет смещение нулевой точки = 0.54В. Т.е. если Вы задаёте напряжение выхода = 0, на выходе де-факто будет присутствовать 0.54В. Но нас это не устраивает, т.к. ОУ усиливает с 0, и напряжение тоже хочется регулировать с 0. Поэтому применён подстроечный резистор R1, вычитающий напряжение. А отдельный стабилизатор на -5В, вместо использования -5В ветки блока питания, используется ввиду нестабильности выдаваемого блоком питания напряжения, меняющимся под нагрузкой. Выход же ОУ охвачен обратной связью с выхода VT1, это сделано что б ОУ сам компенсировал изменения напряжения в зависимости от нагрузки на выходе.
Кстати, о AD823 из Китая по Ебею: день промучился, понять не мог, почему схема не работает от 0 на входе. Если больше 1.5В то всё становится нормально, а иначе всё напряжение питания. Уже подумав что сам дурак, нарвался на рассказ как человек вместо AD823 получил с Китая подделку. Тут же поехал в соседний магазин, купил там, поставил и… О чудо — всё сразу заработало как надо. Игра, найди отличия (подделка в кроватке, справа оригинал. Забавно что подделка выглядит лучше):
Далее усилитель напряжение токового шунта. Поскольку токовый шунт достаточно мощный, то и падение напряжения на нём мало, особенно на малых токах. Поэтому добавлен OP2, служащий для усиления напряжения падения шунта. Причём от быстродействия этого ОУ зависит скорость срабатывания предохранителя.
Сам предохранитель, а точнее блок ограничения тока, реализован на компараторе OP2. Усиленное напряжение, соответствующее протекаемому току, сравнивается с напряжением, установленным электронным потенциометром и если оно выше — компаратором открывается VT2, и тот сбрасывает напряжение на базе выходного транзистора, по сути выключая выход. В работе это выглядит так:
Теперь к тому, почему в качестве шунта у меня дроссель. Всё просто: как я писал раньше — я просто забыл заказать шунты. А когда уже собирал блок и это выявилось, то ждать с Китая показалось долго, а в магазине дорого. Поэтому не долго думая, порылся в распайке старых компьютерных блоков питания и нашёл дроссели, почти точно подошедшие по сопротивлению. Чуть подобрал и поставил. Дополнительно же это даёт защиту: В случае резкого изменения нагрузки, дроссель сглаживает ток на время, достаточное что б успел отработать ограничитель тока. Это даёт отличную защиту от КЗ, но есть и минус — импульсные нагрузки «сводят блок с ума». Впрочем, для меня это оказалось не критично.
В итоге у меня получился вот такой блок питания:
Надписи на лицевой части сделаны с помощью ЛУТа. Индикаторы работы блоков питания выведены на 2-х цветный светодиод. Где красный запитан от дежурных +5в и показывают что блок готов к работе. А зелёный от Power_Good, и показывает что блок задействован и исправен. В свою очередь транзисторная развязка обеспечивает гашение красного светодиода и если у блока проблема — потухнет и красный и зелёный:
Маленькие экраны показывают заданные параметры, большие — состояние выхода де-факто. Энкодерами вращением устанавливается напряжение, короткое нажатие — вкл/выкл нагрузки, длинное — выбор режима установки напряжения/максимального тока. Ток ограничен 12.5А на канал. Реально в сумме 15 снимается. Впрочем — на той же элементной базе, с заменой блоков питания на нечто 500-т Ваттное, можно снимать и по 20. Не знаю, стоит ли приводить тут код скетча, простыня большая и достаточно глупая, + везде торчат хвосты под недоделанный функционал вроде коррекции выходного напряжения по АЦП обратной связи и регулировки скорости вентилятора.
Напоследок, пара слов. Оказалось что Arduino DUE при включении после длительного простоя может не начать выполнять программу. Т.е. включаем плату, думаем что сейчас начнёт выполняться наша программа, а в ответ тишина, пока не нажмёшь reset. И всё бы ничего, но внутри корпуса reset нажимать несколько затруднительно.
Поискал по форуму, несколько человек столкнулось с такой же проблемой, но решения не нашли. Ждут когда разработчики поправят проблему. Мне ждать было лениво, поэтому пришлось решать проблему самому. А решение нашлось до безобразия примитивное, впаять электролитический конденсатор на 22мкФ в параллель кнопке. В результате, на момент запуска, пока идёт заряд этого конденсатора, имитируется нажатие кнопки reset. Отлично работает, прошиваться не мешает:
В заключение:
По-хорошему надо повесить на все радиаторы датчики температуры и регулировать скорость вентилятора в зависимости от температуры, но пока меня устроила и платка регулятора скорости вентилятора из какого-то FSPшного блока питания.
Ещё хотелось бы через АЦП обратную связь с блоком коммутации на случай залипания релюшки, а так же обратную связь по выходу, дабы компенсировать температурный дрейф подстроечных резисторов (в пределах 0.1в на больших напряжениях бывают отклонения).
А вот кнопки памяти и фиксированные настройки по опыту использования кажутся чем-то не нужным.
This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий