Блок питания с микроконтроллерным управлением

Может ли кто-нибудь помочь мне сделать блок питания, выходное напряжение которого будет контролироваться Arduino, а последняя настройка напряжения будет автоматически сохраняться в энергонезависимой памяти?

Я прохожу программу OJT (On the Job Training Scheme). Мне дали задание сделать регулируемый источник питания с управлением напряжением Arduino, выходы которого можно переключать между несколькими предустановленными значениями с помощью кнопочного управления. Это похоже на переключение между двумя разными выходами при нажатии назначенной кнопки.

Вот что я сделал на данный момент. Я сделал блок питания на основе LM317 с выходным напряжением, управляемым потенциометром. Я следовал этому уроку на YouTube. Он работает хорошо, но меня попросили его обновить.

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

Эта ссылка также может быть релевантной.
Код указан под принципиальной схемой.
ARDUINO КАК ИСТОЧНИК ПИТАНИЯ ГЕНЕРАТОРА

, 👍3

Обсуждение

Я предлагаю вам убедиться, что ваши слова означают то, что вы подразумеваете. Пример (по ссылке), который вы привели, переключается между двумя батареями. «Генератор» — это «генератор переменного тока», вращающаяся электромеханическая машина, используемая для преобразования механической энергии в электрическую. Регулятор генератора — это устройство, которое управляет выходным напряжением (обычно) генератора. Если вы хотите переключаться между двумя батареями попеременно, вам нужен программно-управляемый селектор батарей с выбранной батареей, сохраненной в памяти., @Russell McMahon

@RussellMcMahon — Да, мне нужна программа, которая меняет местами два разных источника питания., @April Cyra

@RussellMcMahon Это простой регулируемый источник питания, и я сделал один. Я следовал этому руководству на YouTube [ссылка](youtube.com/watch?v=F-ahtojVl4M). Он работает хорошо, но меня попросили его модернизировать, вместо использования потенциометра для регулировки напряжения, он предложил использовать кнопки переключения, с помощью которых я могу автоматически переключать два или более источника питания. У каждой кнопки переключения есть соответствующее напряжение. Можете ли вы помочь мне разобраться, как это применить, может быть, с помощью Arduino?, @April Cyra

AC - Я значительно переписал ваш вопрос на основе оригинала и того, что вы сказали в комментариях. Я сделал это, потому что слова, которые вы использовали, давали неправильное представление о том, что вы говорите, что вы хотите добиться. Если вам не нравятся мои правки, пожалуйста, измените их. Я мог бы легко дать ответ, НО полезно видеть, что говорят другие люди., @Russell McMahon

@RussellMcMahon Спасибо за редактирование вопроса. Я оценил то, что вы сделали. Это именно то, что я должен был спросить., @April Cyra

@RussellMcMahon Сэр, я бы с радостью подождал вашего ответа. Это было бы большой помощью., @April Cyra

Важный вопрос: это похоже на задание или тест, где вы пытаетесь узнать или показать, что вы знаете, или кто-то будет использовать конечный продукт для приложения? Мы можем ответить на любой тип вопроса здесь, но подход, используемый в каждом случае, отличается., @Russell McMahon


2 ответа


2

Я опасаюсь давать полный ответ, не зная, что от ВАС ожидается - это похоже на задание, где вас проверяют на понимание и то, что вы узнали. Следующее будет вам полезно. Вам нужно предоставить больше подробностей, если вам нужна дополнительная помощь с этими схемами.

Вот существующий вопрос обмена стеками. Я вижу, что я ответил на него в 2011 году :-).
Как работает эта схема питания? (MCU + LM317)
Схема и мой предыдущий ответ должны очень помочь.
В вашем случае вы применяете ШИМ с помощью аналогового сигнала. Запишите в R1.
Вы ДОЛЖНЫ понимать, как работает схема, а не просто применять ее.
Оригинал, по-видимому, находится здесь с описанием схемы, со схемой <b>здесь</b>


На этой странице журнала EDN есть похожая схема. Потенциометр между контактами 1 и 5 обычно не используется.


В другом вопросе обмена стеками есть очень полезное предостережение об ограничениях нагрузки операционных усилителей в аналогичной схеме.
Проблемы управления LM317 с помощью операционного усилителя - 2013


Вы можете получить множество возможных идей здесь - поиск = lm317 voltage controled power supply - это чрезвычайно мощный способ поиска информации - ЕСЛИ картинка стоит тысячи слов, то это бесценно. Обратите внимание на используемые термины.


Плохие проекты:

Есть несколько плохих проектов, которые могут выглядеть нормально, но вести себя плохо.
Несмотря на подробное описание, Эта неудачная конструкция использует «управление с разомкнутым контуром», а выходное напряжение меняется в зависимости от нагрузки и лишь «в какой-то степени контролируется».

Меня спросили, почему я считаю, что эта схема — «разомкнутая». Я не смог найти полную схему на странице, но эта схема была показана для выходного каскада. Если это НЕ фактическая используемая схема, было бы «хорошо» иметь полную схему в легкодоступном месте.

ЕСЛИ это реальная используемая схема, то:

Назовем транзисторы Q1 Q2 Q3 Q4 в порядке слева направо.
Назовите предполагаемое выходное напряжение = Vset = Vdac x (R6 + R7)/R7.
Vdac подается на базу Q1 и усиливается Q1 и Q2 для формирования желаемого выходного напряжения, появляющегося на коллекторе Q2. Меньшее напряжение появляется как Vout из-за падения Vbe в Q3 и Q4. По мере увеличения тока нагрузки Vout будет «падать», тем самым увеличивая привод на Q4. Это, в свою очередь, увеличивает нагрузку на Q3, и напряжение эмиттера Q3 будет падать, увеличивая привод Q3. Фактические напряжения Vbe будут зависеть от бета (коэффициента усиления по току) Q3 и Q4, их температур (которые зависят от теплоотвода, нагрузки и температуры окружающей среды) и производственных отклонений. При отсутствии или очень низких нагрузках Vout будет примерно на 1 В ниже Vset. При больших нагрузках Vbe_Q3 будет в диапазоне 0,6-0,8 В, а Vbe_Q4 будет 0,8 В+. Таким образом, Vout будет примерно на 1,5+ В ниже Vset и будет изменяться (по крайней мере) с учетом факторов, упомянутых выше.

Это все еще пригодная к использованию конструкция, но Vout можно «достаточно легко» сделать гораздо более стабильным с нагрузкой, используя обратную связь от Vout к усилителю Q1-Q2 — по сути, образуя компаратор, который сравнивает Vset и Vout.

Обновление:
Это [ссылка предоставлена NilsB] МОЖЕТ быть фактической схемой или близкой к ней. Это более ранняя конструкция 2005 года, которая, предположительно, во многом совпадает с более поздней версией.

Похоже, это не открытый контур в широком смысле. Vout по-прежнему отделен от Vset, а программная обратная связь позволяет ему настраивать Vset, чтобы сделать Vout таким, каким он хочет, по принципу «подтолкни и увидишь». То есть Vset не является фиксированным отношением к Vout, поэтому он никогда не сможет его установить и «просто отслеживать». Таким образом, он не стабилизируется автоматически при изменении нагрузки или температуры, и между kx Vset и Vout существует переменный drp.
Программное обеспечение работает достаточно быстро, но не так быстро, как замкнутый контур в оборудовании, который позволяет Vout отслеживать Vset в пределах мВ с задержкой настолько короткой, насколько это предусмотрено контуром усилителя ошибки.

Это принципиальная схема 2005 года, то есть более ранняя версия, чем изначально цитируемая V3 — можно предположить, что он не «отступил» в концепции дизайна. Странно, что он не включил полную принципиальную схему или хорошее обсуждение предоставленной обратной связи по току и напряжению. Возможно, он хотел продавать наборы, а не раздавать свой окончательный дизайн. Ссылка на продажи наборов теперь не работает, поэтому теперь он не управляет ни тем, ни другим.

Я бы счел предпочтительным добавить простой аппаратный усилитель ошибки, так что Vout = kx Vset, а ПОТОМ измерить Vout и Iout с помощью АЦП (как он это делает). Vout тогда по сути "установил и забыл" с дополнительной возможностью проверки того, что Vout соответствует тому, что должно быть (что позволяет, например, обнаружить сильную перегрузку).
Работа в режиме постоянного тока по-прежнему остается «подтолкну и увидишь», но «не так уж и плохо».
Кроме того, Vout включает в себя Vdrop на резисторах измерения тока - около 0,5 В/А. Измерение с помощью 2 каналов AD C, как он делает, позволяет это компенсировать. Если бы резисторы Isense были в "высокой стороне" питания перед регулятором, это бы устранило это изменение, но сделало бы измерение тока несколько сложнее.

,

Почему вы думаете, что это решение: http://tuxgraphics.org/electronics/201005/bench-power-supply-v3.shtml является «управлением с разомкнутым контуром»?, @NilsB

@NilsB Пожалуйста, посмотрите мой обновленный ответ. Я предположил, что фактическая схема - это та, что показана на странице. Если где-то есть полная схема и/или если это не фактическая схема, я был бы рад узнать. (Оба этих комментария подлинны - я чувствую, что **ВОЗМОЖНО** я где-то пропустил какую-то окончательную схему, но если так, то я не могу ее найти.) В нынешнем виде я предполагаю, что то, что показано, это то, что используется, и мои комментарии применимы. Разработчик, по-видимому, пытался минимизировать использование микросхем; использование компаратора на выходном каскаде улучшило бы результат и облегчило бы задачу проектирования., @Russell McMahon

Я думаю, что это http://tuxgraphics.org/common/images2/article379/powersupply.gif и есть вся схема. И поскольку обратная связь реализована в программном обеспечении, IMHO, это не "открытый контур". Что вы думаете?, @NilsB

@NilsB Если ваша догадка верна, то, похоже, это не разомкнутый контур в широком смысле. Vout по-прежнему отделен от Vset, а обратная связь программного обеспечения позволяет ему настраивать Vset, чтобы сделать Vout таким, каким он хочет, на основе «подталкивания и наблюдения». То есть Vset не является фиксированным отношением к Vout, поэтому он никогда не может его установить и «просто отслеживать». То есть он не стабилизируется автоматически при изменении нагрузки или температуры, и между kx Vset и Vout существует переменная drp. ..., @Russell McMahon

... Программное обеспечение быстрое, но не такое быстрое, как замкнутый контур в оборудовании, который позволяет Vout отслеживать Vset в пределах мВ с задержкой времени, которая так же коротка, как и запрограммированная вами петля усилителя ошибки. || Это схема CCT 2005 года, так что более ранняя версия, чем изначально цитируемая V3 - можно предположить, что он не «отступил» от концепции дизайна. Странно, что он не включил всю схему цепи или хорошее обсуждение предоставленной обратной связи по току и напряжению. Возможно, он хотел продавать наборы, а не раздавать свой окончательный дизайн. Ссылка на продажи наборов теперь не работает, поэтому теперь он не управляет ни тем, ни другим., @Russell McMahon


5

Если вы хотите выводить заданные уровни напряжения отдельными шагами, а не в «аналоговом» диапазоне от X вольт до Y вольт, то ответ можно найти в техническом описании LM317:

Рисунок 57. Цифрово выбранные выходы

Подключите каждый из ВХОДОВ через базовый резистор 1 кОм к контактам Arduino. Выбор различных значений для всех резисторов, конечно, позволит вам изменять Vout, включая или выключая каждый транзистор, по отдельности или вместе. Вы можете использовать любой стандартный транзистор: 2N3904, 2N2222, BC548 и т. д., но я бы предпочел использовать (маломощный) MOSFET, например BSS138 (и исключить базовый резистор). Конечно, вы можете использовать больше линий резистора/транзистора, если вам нужно больше выходных возможностей. Я рекомендую использовать R2, чтобы Vout всегда был ограничен, в противном случае - если Vin довольно высоко - вы можете повредить все, что питает Vout, из-за некоторых неконтролируемых напряжений.

Вычисление значений резисторов — это ваша математическая задача. Если вы действительно приложите немного мозговой активности, вы сможете изменять Vout линейными шагами с минимальным использованием пинов Arduino:

'Input' states            Vout
  A  B  C  D            (/volts)
  0  0  0  0              5.00  [Vmax set by R2]
  0  0  0  1              4.75
  0  0  1  0              4.50
  0  0  1  1              4.25
  0  1  0  0              4.00
   ...  ...                ..
  1  1  1  0              1.75
  1  1  1  1              1.50

Это показывает, что с N выводами Arduino вы можете иметь (N^2)-1 уровней. Использование R2 дает ваш окончательный уровень, когда все ВХОДЫ выключены.

Если вы хотите иметь возможность понизить Vout до 1,25 В, добавьте транзистор/MOSFET, который подключает R1/ADJ напрямую к земле. Включение этого приведет к снижению Vout до 1,25 В, независимо от состояния других ВХОДОВ.

,

Я хотел бы добавить несколько дополнительных заметок для этого интересного подхода к цифровому управлению выходным напряжением. То, что описано в оригинальном техническом описании, на самом деле является очень "минималистичной" 4-битной схемой ЦАП. Для некоторого обоснования было бы полезно изучить эти два документа от AnalogDevices: [One](http://www.analog.com/media/en/training-seminars/tutorials/MT-014.pdf) и [Two](http://www.analog.com/media/en/training-seminars/tutorials/MT-015.pdf)., @cybercow