Хорошо, объясните, понятливый наш, что у него за нагрузка, так что бы я мог понять ВАХ. Вперед. ШИМ без учета ВАХ по всему размаху напряжения применять НЕЛЬЗЯ.
Ну что тут не понятного? Человеку нужен источник постоянного тока 2А с возможностью регулирования напряжения примерно от 1V до 3V. Он пытался проблему решить с помощью ШИМ'а -- тестером в режиме измерения постоянного тока посмотрел и увидел, что тестер показывает правильные напряжения. Осталось только решить вопрос с силой тока, например, при помощи MOSFET'a. Но на практике оказалось не так всё просто... В итоге придётся городить нормальный регулируемый источник питания постоянного тока мощностью примерно 10Вт.
Человек ДУМАЕТ, что ему это нужно. Потому что он понятия не имеет, что делает, и где-то нахватался чуши и пришел к выводам. Которые неверны, я уверен на 80%. И теперь он сидит и пудрит мозги с этими выводами, вместо того, чтобы объяснить проблему в корне.
Задай этот вопрос на kazus -е. Только не с таким ТЗ, а с развернутым вопросом - что за нагрузка, как хочется ею управлять. На данном ресурсе кругозор пользователей ограничен абдурино модулями.
Почему на арудине - другое программировать не умеем, к сожалению Понятно, что избыточно. Если вариант с ключом не подходит, может быть имеет смысл посмотреть на DC-DC? Step-Down вполне должно хватать. Только MP2307 не очень подходит, там нижняя граница 0.9В, мне хочется 0.5 или как минимум 0.6В. Например, LM3150 (по нижней границе 0.6). Но, тут есть непонимание как управлять этим DC-DC с "ардуины", в даташите приводится управление посредством делителя напряжения (потенциометром). Но как этот потенциометр эмулировать - не ясно. В теории можно сделать какую-то сборку на резисторах и подключать их командами с ардуино. Или же применить цифровой потенциометр, например, AD5204 (https://www.analog.com/media/en/technical-documentation/data-sheets/AD5204_5206.pdf). Но тут опять же есть опасение того, что точность резисторной сборки/цифрового потенциометра будет недостаточной для точной установки столь мелких напряжений (плюс дрейф от температуры). В конечном идеале хотелось бы еще и замодулировать выходной сигнал любым jitter-ом (т.е. чтобы не выдавался на выходе постоянно 1.5В, а было колебание, допустим, в пределах 50мВ, т.е. на выходе было бы от 1.45В и до 1.55В). Но до этого еще далеко
Вертикальная ось - А/см2, горизонтальная - потенциал В. На этом графике нет 2А, т.к. устройство маленькое. На большем по размеру - соответственно и токи будут требуемые.
Ну почему сразу не подходят? Все приведённые Вами DC-DC преобразователи как раз ключами и управляют. Просто одним только ключём не обойтись... Посмотрите внимательней на приведённую Вами последнюю схему. Там два ключа M1 и M2 (можно применить теже MOSFET'ы) управляются ШИМ сигналом. Накачивают через катушку L выходной Cout. А резисторы Rfb2 и Rfb1 служат для контроля выходного напряжения. Вот примерно тоже самое можно сделать и на Ардуине. А вот это уже сложнее... При большой нагрузке и так могут быть колебания выше этих пределов, если не правильно рассчитать мощность такого преобразователя. Но всё зависит от катушки индуктивности с выходным конденсатором и правильности управления ключём или ключами.
Для площади "аккумулятора" который выступает в роли нагрузки. На графике собственно ЦВА - заряд/разряд. Вроде бы по опытам удается получить достаточно низкое напряжение на 3.3 вольтовой версии, особенно если взять что-то типа ESP. Там шагов больше, чем у Ардуины.
Все, я вас понял. Спасибо. Получается так: "ардуиной" управляем ключом/ключами, выходное напряжение сглаживанием при помощи катушки и конденсатора. Получаем практически постоянный ток (особенно если давать ШИМ на высокой частоте), как у MP или LM. В этом случае выходное напряжение будет зависит, разумеется, от ШИМ выдаваемого "ардуино", и стабильности Vin. Т.е. если Vin в такой схеме, по каким-то причинам, будет нестабильным, то так же будет плавать и результирующее напряжение. Для устранения этого эффекта можно подключить обратную связь на "ардуине" через аналоговый вход. Скорострельность будет не такой высокой, но тем не менее. Джиттер можно реализовать путем изменения скважности ШИМ в небольших пределах. Например, каждую мс изменять его поочередно то в одну сторону, то в другую. Как я понимаю из диаграммы того же ML: M2 нужен для целей определения отсутствия нагрузки (и скорее вместо разрядного диода). И если нагрузки нет, выключать всю схему, дабы не тратить лишнюю энергию. И в простом варианте должно хватить только одного ключа и соответственно катушки с конденсатором. PS. А может быть кто-то делал управление таким MLxxxx или подобным Step-Down DC-DC преобразователем с микроконтроллера? Уж больно там много вкусных функций: soft start, термальный контроль, защита от сверхтока, от отсутствия нагрузки... Вероятно, что существуют специально сконструированные преобразователи, с нормальным внешним управлением...
Ой-ё... Погуглите что-то типа b3008dc-dc. Он состоит из двух частей -- регулируемый DC-DC и блок управления к нему. Блок управления выкидываете (ну или на складе прячете), а регулируемый DC-DC пытаетеь приспособить к Ардуино. Правда, прийдётся погуглить на тему как им управлять. А то, что Вы написали в предыдущем сообщении, говорит о том, что потребуется не мало времени на изучение принципов работы таких преобразователей и реализацию такой задумки. А у меня не будет времени всё это Вам разжёвывать....
коэффициент пульсация не зависит от частоты. Но, несомненно, чем выше частота, тем проще сгладить пульсации. Ну очень интересно результат посмотреть. Я сейчас ШИМлю частотой 31 кГц нагрузку в 32 кОма (интересно цифры совпали))) - так вот результат на деле далек от результата в симуляторе...
Есть вот такой документ от Maxim (см. AN818.pdf) как можно/нужно управлять DC-DC преобразователем. Только ШИМ нужен будет высокочастотный для разумных параметров RC фильтра и заданной амплитуды пульсаций. Генерировать ШИМ нужно не стандартной библиотекой Ардуино, а немного другим способом. Во-первых, установить в регистре TCCR биты, соответствующие prescaler=1 (частота ШИМ = 16MHz), во-вторых, для минимизации амплитуды пульсаций на выходе фильтра значения регистров OCR и TCNT устанавливать с использованием ряда Фарея (https://en.wikipedia.org/wiki/Farey_sequence) как числитель и знаменатель дроби, максимальный порядок последовательности определяется разрядностью таймера, т.е. 2^8=256 для 8-битного таймера, 2^16=65536 для 16-битного таймера.
Параметры RC фильтра для ШИМа рассчитываются, исходя из двух ограничений: 1) амплитуды пульсаций на выходе фильтра при максимальном периоде ШИМа (ограничение снизу), 2) времени перехода между крайними значениями (ограничение сверху). Условия могут друг другу противоречить и при определенных условиях придется жертвовать либо первым, либо вторым.