Можно ли создать регулируемый источник постоянного тока/напряжения с помощью Arduino?

Я хотел бы создать систему автоматического управления аккумулятором 18650, которая может обрабатывать и восстанавливать использованные ячейки, используя солнечные панели для питания. Для этого мне нужно создать регулируемый источник постоянного тока, который ограничит ток/напряжение, поступающие в ячейку/ячейки, до достаточно малого значения.

Поскольку мне хотелось бы реализовать больше функций (например, проверку емкости ячеек), я бы хотел использовать Arduino с минимальным количеством компонентов, чтобы снизить стоимость.

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

Псевдокод для логики, который я предлагаю, прост:

  1. Используйте АЦП для проверки напряжения на конденсаторе (или очень малоомном мощном резисторе при работе в качестве источника тока)
  2. Рассчитать необходимую регулировку напряжения
  3. Используйте AnalogWrite для установки нового значения ШИМ во внутреннем контроллере ШИМ.

Второй вопрос: ШИМ вызывает много «переключений» в MOSFET. Когда MOSFET не находится в состоянии насыщения, его сопротивление высокое, и много энергии теряется в виде тепла. Можно ли НЕ использовать ШИМ для управления им, а вместо этого выключать или включать его каждый цикл, чтобы минимизировать потери энергии? Поскольку батареи имеют некоторое внутреннее сопротивление, изменение напряжения +-20% должно быть приемлемым.

, 👍0

Обсуждение

Когда вы должны спросить, не делайте этого. Риск повредить аккумулятор слишком высок. Существуют специальные чипы для зарядки аккумуляторов. Я предлагаю купить зарядное устройство от известного бренда., @Jot

Специальные чипы отлично работают с новыми и блестящими 18650. У использованных есть особые потребности. В данный момент я восстанавливаю их вручную один за другим. Например, первый час зарядки не может превышать 50 мА, если напряжение 18650 изначально было меньше 1,5 В. Мне удалось получить 1500 мАч (из номинальных 2500 мАч) из ячейки, разряженной до 0,5 В, взятой из старого ноутбука. Я бы предпочел делегировать эту задачу Arduino, потому что это занимает много времени, а проверка температуры ячейки каждые 10 минут утомительна., @Filip Franik

Существуют специальные микросхемы зарядки, которые будут осуществлять капельную зарядку, если напряжение слишком низкое. Проверьте техническое описание. Я бы использовал специальную микросхему для зарядки. И использовал Arduino для измерения емкости. Или купите зарядное устройство-доктора из Китая, которое измеряет мАч для вас., @Gerben

У меня уже есть все, что можно купить в Китае, но мне пришлось модифицировать большую часть, потому что она имеет тенденцию к перегрузке по току (она начинает с 100 мА, а не с 50 мА) и перенапряжению (заряжает до 4,26 В) батарей. Я пытаюсь разработать универсальную (и дешевую) "систему управления использованными батареями" на солнечной энергии, которая в какой-то момент может стать KIT. Я хотел бы создать прототип с Arduino, прежде чем переписывать все для собственного выполнения в ATtiny/ATmega или чем-то подобном. Я проверил, что загрузчик Arduino заставляет ATmega работать намного медленнее в некоторых случаях., @Filip Franik

1. Вы можете замедлить изменения напряжения на любой стороне с помощью конденсатора. Вы можете выбрать конденсатор достаточно большой емкости, чтобы гарантировать себе _достаточно_ времени для считывания АЦП. 2. Вы можете с уверенностью предположить, что МОП-транзисторы переключаются мгновенно для вашего практического применения, что при 5 В довольно близко к истине для полевых транзисторов логического уровня и нагрузок менее 1 А. Во-вторых, внутреннее сопротивление в любом случае настолько мало (миллиомы), что требуется несколько ампер, чтобы даже слегка нагреть их., @dandavis


1 ответ


Лучший ответ:

1

Вы в основном описываете (если добавить в смесь индуктор и диод) простой импульсный регулятор. То есть, в упрощенном виде, ШИМ-сигнал, некоторое сглаживание (индуктор, диод, конденсатор) и обратную связь.

Используйте ШИМ Arduino для переключения P-канального MOSFET в источнике напряжения. Затем этот коммутируемый источник питания подается через индуктор, а затем сглаживается конденсатором:

схема

M1 переключает питание для зарядки остальной части схемы. L1 + C1 сглаживают ШИМ, обеспечивая постоянное плавное (почти) напряжение. D1 замыкает цепь между L1 и C1 только в одном направлении, сохраняя заряд в правой части схемы.

R1 удерживает MOSFET выключенным, когда он не задействован.

R2 — это очень маленький «шунтирующий» резистор (например, 0,1 Ом).

Размеры C1 и L1 определяются частотой переключения вашего ШИМ и требованиями к току цепи. Чем выше частота переключения, тем меньше может быть ваш индуктор, чем выше ваши требования к току, тем больше должен быть C1.

Показание A1 дает выходное напряжение схемы, поэтому вы можете отрегулировать ШИМ (использование ПИД было бы хорошо) для получения определенного напряжения.

Считывание A0 и A1 и вычитание одного из другого дает вам падение напряжения на R2. Из этого вы можете рассчитать ток через R2, используя закон Ома. Затем вы можете использовать это для настройки ШИМ, чтобы получить определенный ток.

Конечно, вы не можете сделать и то, и другое одновременно. У вас либо есть постоянный ток (во время первой фазы зарядки, чтобы поднять напряжение ячейки до 4,2 В), а затем вы переключаетесь на постоянное напряжение, пока ток не упадет примерно до 0,3 С. Для мертвых ячеек начальная фаза постоянного тока (IIRC) 0,1 С может восстановить ячейку.

Некоторые важные замечания о литиевых элементах:

  • Они взрываются (спросите у Samsung), так что будьте осторожны. Может быть полезно провести эксперимент с ячейкой, находящейся в огнестойком контейнере.
  • Литий-ионные и литий-полимерные элементы не любят чрезмерной разрядки, но если они не подвергались обратной зарядке, их, как правило, можно восстановить.
  • Ячейки, которые используются в последовательной батарее и не были заряжены надлежащим балансировочным зарядным устройством, вполне могли быть заряжены в обратном направлении, если батарея «умерла».

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

Итак, вкратце:

  • Один элемент, который был чрезмерно разряжен сам по себе, как правило, подлежит восстановлению.
  • Последовательный блок ячеек, который был чрезмерно разряжен, вполне мог физически повредить один из элементов в блоке из-за обратного тока заряда.

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

Конечно. Вам следует предварительно подготовить свое питание, чтобы оно всегда было в допустимых пределах (т. е. подавать питание на солнечную панель через подходящий понижающий стабилизатор 5 В, чтобы обеспечить чистое питание 5 В). В схеме всегда будет некоторая задержка из-за того, как долго индуктор «сопротивляется» изменениям напряжения. Типичному Arduino требуется ~100 мкс для выборки АЦП. В такой среде это время пренебрежимо мало, поскольку оно, как правило, намного быстрее одного периода ШИМ. В любом случае вы не сможете реагировать быстрее одного периода ШИМ.

Когда MOSFET не находится в состоянии насыщения, его сопротивление высокое, и много энергии тратится впустую в виде тепла. Можно ли НЕ использовать ШИМ для управления им, а вместо этого выключать или включать его в каждом цикле, чтобы минимизировать потери энергии?

Вот что делает ШИМ. Он ВКЛ или ВЫКЛ. Вкл в начале цикла, затем выкл в середине. Да, есть короткий период дважды за цикл, когда он выполняет переключение, но это будет минимально по сравнению с периодами включения и выключения. Потери от этого переключения будут пренебрежимо малы по сравнению, скажем, с работой МОП-транзистора в качестве регулируемого сопротивления, управляемого операционным усилителем с обратной связью от токового шунта (т. е. линейного регулятора).

,

Спасибо за общий ответ, но вы не ответили на мои вопросы. Солнечная панель обеспечивает «случайное» напряжение от 6 В до 48 В, и мой вопрос заключается в том, есть ли у Arduino хотя бы шанс достаточно быстро реагировать на динамические изменения. Измерение АЦП занимает время, логика занимает время, изменения в ШИМ занимают время, и за это время напряжение на выходе регулятора может возрасти, создавая прекрасный красный литиевый огонь. Физически сломанные элементы можно легко обнаружить. Они не уменьшают ток на последней фазе зарядки (и нагреваются) или имеют высокую скорость саморазряда. Я использую старые батареи ноутбуков для элементов., @Filip Franik

@FilipFranik Поскольку вы не указали какой-либо конкретный Arduino, да, есть "Arduino", которые достаточно быстры. Вероятно, даже простой Uno будет достаточно быстрым. Особенно если вы сначала пропустите питание солнечной батареи через обычный импульсный регулятор, чтобы получить стабильные 5 В - таким образом не будет никаких сюрпризов. Кроме того, индикатор работает двумя способами: он не только пытается поддерживать напряжение на высоком уровне, когда полевой транзистор выключается, он также пытается поддерживать его на низком уровне, когда полевой транзистор включается. Вы не получаете мгновенных повышений на выходе из-за скачков на входе., @Majenko