Автоматическое ЗУ автомобильных аккумуляторов на PIC. Зарядное для авто на контроллере Автоматическое зарядное устройство на микроконтроллере atmega

Который был собран для тестирования в корпусе от cd-привода. Оказалось, что устройство прекрасно справляется со своими функциями, заряжает и разряжает практически любые аккумуляторы, подсчитывая при этом ёмкость. Чередуя циклы заряда и разряда, можно проводить восстановление аккумуляторов. В проводившемся недавно конкурсе идей было предложено сделать более человеческий вариант.

Новое универсальное зарядное устройство питается через USB от зарядки для смартфона или планшета. Можно питать и от USB-порта компьютера. На плате установлен micro-usb, но можно установить и любой другой вариант. Также имеется гнездо под стандартный DC-штекер; при питании через него напряжением более 5 вольт, на плате снимается джампер и логическая часть начинает питаться через LDO стабилизатор. При питании от 5 вольт джампер должен быть установлен (он просто закорачивает вход и выход стабилизатора +5 вольт).

Устройство размещено на плате размером 10*12 см. ЖК-индикатор 16*2 с i2c-преобразователем закреплён на монтажных стойках. На плате имеются винтовые клеммники для подключения заряжаемого аккумулятора и нагрузки для разряда, в качестве которой может выступать лампочка или мощный цементный резистор на 5Вт сопротивлением, например, 4,7 Ом. Сопротивление этого резистора рассчитывается по формуле R=U/I, где U-напряжение аккумулятора, а I - желаемый начальный разрядный ток. Если разрядку производить не планируется, то нагрузку можно не подключать. Управление осуществляется при помощи трёх кнопок. Информация отображается на дисплее, помимо этого используется маленький бипер без встроенного генератора и светодиод. Чем ярче горит светодиод, тем больше ширина импульсов в режиме заряда.

Схема зарядного устройства такая же, как и в первоначальном тестовом варианте с непринципиальными изменениями. Полевые транзисторы должны быть с логическим уровнем упраления (logic level), найти их можно на компьютерных платах. Транзисторы драйвера p-канального полевика должны быть токовыми, например - SS8050 и SS8550. Дроссель преобразователя должен выдерживать соответствующий ток.


нажми для увеличения
Режимы работы умного универсального зарядного устройства:

  • главное меню. в нём осуществляется выбор параметров зарядки, разрядки, калибровка вольтметра
  • заряд. текущие и установленные параметры заряда отображаются на экране, есть возможность изменения параметров прямо в процессе зарядки. происходит ограничение напряжения и тока до заданных значений при помощи ШИМ. заряд завершается при достижении заданного напряжения и уменьшении тока заряда ниже заданного.
  • разряд. управление аналогично заряду. разряд завершается при уменьшении напряжения или тока ниже заданных.
В процессе подсчитываются миллиампер-часы, также они выводятся и в конце. По подсчитанным значениям можно определить степень потери ёмкости аккумулятора, т.е. насколько он изношен. Если аккумулятор ёмкостью 1А/ч вбирает 500мА/ч или вбирает 1А/ч, а отдаёт 500мА/ч, то его ресурс уже значительно выработан.

Калибровка измерения тока при заряде и разряде осуществляется при помощи подстроечных резисторов по показаниям образцового амперметра. Калибровка вольтметра осуществляется аналогично. Для перепрошивки микроконтроллера на плате предусмотрен ISP-разъём.

Данный вариант прибора вполне пригоден к использованию, но многое можно улучшить. Плату можно сделать более компактной, держатели батарей разместить прямо на ней. Возможно, будет ещё один вариант устройства, если к нему будет интерес. Этот самый интерес ты можешь выразить, поставив лайк в любой соц.сети, нажав кнопку под статьёй. Чем большим будет интерес, тем больше будет стимул работать над этим проектом, информация будет дополняться.

С пожеланиями, дополнениями и уточнениями - милости просим в комментарии.

Печатная плата: скоро
прошивка: скоро

"Народный" вариант почти универсальной зарядки на Aliexpress: Lii-100 .

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

Доработку можно выполнить навесным монтажом или на небольшой плате. Вместе с ней меняются некоторые сигналы. Так, сигнал ШИМ заряда (частота в районе 66 кГц) берётся теперь с OC1A, ШИМ разряда - с OC1B, звук - с OC2. На плате для этого придётся перекинуть два резистора (идущие на OC1A и OC2) и сделать разрыв от неиспользуемого более PB0. Изменения на схеме показаны жёлтым цветом.

Операционный усилитель можно применить такой же, как на измерении тока в основной части схемы. MCP6002 у нас не нашёлся, вместо него поставлен TLC2272. Регулировка разрядного тока работает так же, как в оригинальном IMAX. При этом будет греться не только нагрузочный резистор, но и полевик Q1.

Так как за всё время пользования устройством мы питали его исключительно от USB, то прошивка оптимизирована под выходное напряжение не более 5 вольт, почти для всех "круглых" аккумуляторов этого достаточно: можно заряжать и разряжать одиночные литиевые банки или два последовательно соединённых никелевых аккумулятора, максимальный ток - 2 ампера.

С недавних пор скопилось много аккумуляторов - как кадмиевых, так и никель марганцевых. Для этого купил себе устройство посерьезнее, так как заряжать надо часто, да и аккумуляторы изнашивать трансформаторным ЗУ не очень хочется. Это для пальчиковых аккумуляторов содержит микросхему – микропроцессор F9444, который контролирует заряд аккумуляторов по парам, не допуская их перезарядки и поддерживает заряд только до нужного уровня. Можно собрать и самому подобное устройство, если спаять F9444 согласно . Правда цена микросхемы немалая – 130 руб.

Данные 8-разрядные Flash микроконтроллеры S3F9444 производит фирма Samsung. Контроллеры S3F9444 ориентированы на использование в тех случаях, для которых требуются ADC, о чем говорит следующая за цифрой 9 (8 разрядов) цифра 4 (ADC), несложные таймеры/счетчики и PWM. Особенностью микроконтроллеров S3F9444 является использование ядра CPU SAM88RCRI, младшей версии типового ядра SAM8 c архитектурой, характерной для 8-разрядных CPU фирмы Zilog.

Отличительными особенности архитектуры:

Регистровая архитектура, позволяющая использовать в качестве аккумулятора любой регистр и сокращающая время выполнения команд и необходимый объем памяти программ

Программный стек обеспечивает существенно большую глубину при вызовах подпрограмм и прерываниях, чем аппаратный стек

Конвейерная выборка и выполнение команд


Сокращение функциональных возможностей ядра SAM88RCRI, по сравнению с типовым ядром, привело к сокращению размеров кристалла, снижению потребления, снижению стоимости микроконтроллера в целом. Другим следствием сокращения функциональных возможностей стало уменьшение количества команд до 41 команды. Микроконтроллеры F9444 и оснащены Flash памятью емкостью 4 Кбайта и регистровым файлом, в котором 208 байтов могут быть использованы в качестве регистров общего назначения. Длительность командного цикла составляет 400 нс при fOSC = 10 МГц. Диапазон рабочих напряжений простирается от 2,0 (задаваемый уровень срабатывания схемы LVR) до 5,5 В. Предусмотрены режимы энергосбережения Power-Down и Idle. Типовое потребление при частоте тактирования CPU 10 МГц составляет 5 мА и в режиме Stop всего 0,1 мкА.

В состав встроенной периферии входят:

9-канальный 10-разрядный аналого-цифровой преобразователь (ADC)

8-разрядный широтно-импульсный модулятор (PWM) с максимальной частотой 156 кГц (6-разрядная база + два разряда расширения)

8-разрядный базовый таймер (для функций сторожевого таймера) и 8-разрядный таймер/счетчик с режимом измерения интервалов времени

Три порта I/O (всего до 18 выводов) с конфигурированием каждого вывода. Каждый вывод может управлять LED (типовой ток 10 мА)

Встроенная Smart функция, определяющая стартовые условия работы прибора (разрешение/запрет схемы LVR, используемы источники сигнала тактирования)


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

Так же в устройстве есть функция разряда батарей, что позволяет разряжать их при необходимости, а так же все это еще и отображают индикаторы светодиоды. Устройство поставляется в коробке, с блоком питания (который можно использовать и для других устройств когда не используется зарядка).


Без проблем заряжает даже аккумуляторы с большой ёмкостью 2500-2700 мА, и не за сутки, как в моем старом заряднике, а часа за 4, точно не засекал. При этом батареи сильно даже и не греются.

К статье прилагается фото зарядного устройства и его внутренностей, а так же по эксплуатации с таблицей емкостей и режимами индикации. С Вами был тов. Vanesex.

Зарядное устройство из компьютерного БП

Если у вас лежит старый блок питания от компьютера, ему можно найти легкое применение,особенно если вас интересует зарядное устройство для автомобильного аккумулятора своими руками .

Внешний вид данного устройства представлен на картинке.Переделку легко осуществить, и позволяет заряжать аккумуляторы емкостью 55...65 А*ч

т.е практически любые батареи.

Схема плавного выключения дальнего света

Схема плавного выключения дальнего света

В ночное время, при разъезде двух автомобилей, переключение дальнего света фар своей машины на ближний в первый момент водитель воспринимает, как резкое уменьшение освещенности дороги, что заставляет его напрягать зрение и ведет к быстрому утомлению. Встречным водителям также труднее ориентироваться в обстановке при резких перепадах яркости света спереди. Это в конечном счете снижает безопасность движении.

Фильтр для магнитолы своими руками

Фильтр для магнитолы своими руками

Итак, решил собрать фильтр от ВЧ помех. Понадобился он для питания автомагнитолы от импульсного блока питания в одной недавней конструкции. Кучу их перепробывал, что только не делал - эффект слабый. Ставил сначала большие емкости в батарею соединял по 3 конденсатора на 3300мкф 25вольт - не помогало. При питании от импульсного БП в усилители всегда свист , ставил дроссели большие, по 150 витков, порой на Ш-образных и ферритовых магнитопровадах - бесполезно.

схема управления стоп-сигналами своими руками

Устройство управления стоп-сигналами автомобиля

Данное устройство которое можно непокупать, а легко собрать своими руками предназначено для следующего, оно управляет лампами стоп-сигналов автомобиля или мотоцикла следующим образом: при нажатии на педаль тормоза лампы работают в импульсном режиме (происходит нескольковспышек ламп в течение нескольких секунд), а затем лампы переходят в обычный режим непрерывного свечения. Таким образом, при срабатывании фонари стоп-сигналов значительно эффективнее привлекают к себе внимание водителей других автомобилей.

Запуск 3х фазного двигателя от 220 Вольт

Запуск 3х фазного двигателя от 220 Вольт

Часто возникает необходимость в подсобном хозяйстве подключать трехфазный электродвигатель , а есть только однофазная сеть (220 В). Ничего, дело поправимое. Только придется подключить к двигателю конденсатор, и он заработает.

Схема зарядки автомобильного аккумулятора

Зарядка для автомобильного аккумулятора своими руками

Цены на современные зарядки для автомобильных аккумуляторов постоянно растут изза неспадающего на них спроса. На нашем сайте выложены уже несколько схем таких устройств.И представляю вашему вниманию еще одно устройство: Схема зарядки для автомобильного акб на 12 Вольт

Схема простого зарядного для аккумулятора авто

Схема простого зарядного для аккумулятора авто

В старых телевизорах, которые работали еще на лампах а не микрочипах, есть силовые трансформаторы ТС-180-2

В статье приводится как сделать из такого трансформатора простое зарядное устройство для аккумулятора своими руками

Читаем

Самодельная зарядка для свинцовых аккумуляторов

Самодельная зарядка для свинцовых аккумуляторов

Бродя по интернету,наткнулся на схему несложного мощного зарядного устройства для автомобильного аккумулятора .

Фотографию данного устройства вы видите на фото слева,для увеличения просто кликните на него.

Почти все используемые мной радиодетали, от старой бытовой техники, все собрано по схеме, из деталей которые тогда были у меня в наличии. Трансформатор ТС-180, транзистор П4Б заменил на П217В, диод Д305 заменил на Д243А, немного позже, на радиатор транзистора V5 для дополнительно охлаждения я установил вентилятор от старого компьютерного процессора, транзистор V4, тоже закрепил на небольшой радиатор. Все элементы расположены на металлическом шасси, скреплены винтами и пайкой с помощью навесного монтажа, все это вместе закрыто металлическим кожухом, который для демонстрации сейчас снят.

Зарядное устройство такая вещь, которая необходима каждому владельцу автомобиля. Можно купить готовое ЗУ в магазине, можно собрать его самому по многим , а можно использовать промежуточный вариант - приобрести конструктор для самостоятельной сборки. В этом случае вам понадобится только силовой трансформатор и корпус. Недавно заказал такое ЗУ и теперь поделюсь информацией о нём с вами, уважаемые посетители сайта "Радиосхемы".

Технические характеристики ЗУ:

Вольтметр ……………………………..........................................….. 0 до 29,9 Вольт

Амперметр..................................................................... до 9,9 Ампер

Стабилизатор тока зарядки ………..................................…… от 0,5 до 9,9 Ампер

Таймер отключения заряда ……………..............................….. от 1 до 30 часов

Заданное напряжение на аккумуляторе, при котором будет отключен заряд ……………………..................................................................…. от 5,1 до 30,0 Вольт

Защита от короткого замыкания

Защита от переполюсовки при подключении аккумулятор а

Комплект поставки:

З/У SPARK -3 ……………….............…. 1 шт.

Диодный мост 50 Ампер …......….. 1 шт.

Тиристор 12 Ампер ………….......... 1 шт.

Диод 1N4007 ………………............….. 2 шт.

Рамка для индикатора..….......…… 1 шт.

Инструкция …………………..............… 1 шт.

Назначение прибора

Зарядное устройство SPARK-3 предназначено для заряда аккумуляторов с напряжением 6, 12, 24 вольт током от 0,5 до 9,9 ампер до заданного напряжения или заданное время. В состав прибора входят: Вольтметр, Амперметр, стабилизатор тока, автомат отключения при достижении на аккумуляторе заданного напряжения, таймер. В комплект входит собранная и отлаженная плата, диодный мост, симистор, два диода и рамка для монтажа индикатора в корпус. Управление производится с помощью трех кнопок:

верхняя кнопка - "Верх
средняя кнопка - "Меню
нижняя кнопка - "Вниз

Для включения режим зарядки нажать "Верх ” при этом засветится светодиод "зарядка” инициируя включенный режим зарядки. Последующие нажатия на кнопку "Верх ” будут переключать индикацию напряжения или тока. Если включен амперметр, на индикаторе показана буква "А ” (например "0,0А ”). Для отключения режима заряда нажать кнопку "Вниз ”, светодиод " зарядка” гаснет, последующие нажатия этой кнопки так же поочередно показывают на индикаторе напряжение или ток. Для изменения параметров заряда служит кнопка "Меню ”.

При первом нажатии и удержании будет показан символ вольтметра "- U ” после отпускания показано напряжение от 5,1 до 30,0 вольт. Последняя цифра мигает. С помощью кнопок "Верх ” и "Вниз ” установить требуемое напряжение, при достижении которого будет отключен режим заряда.

При втором нажатии и удержании будет показан символ ампер " - A ” после отпускания показано задание тока заряда от 0,5А до 9,9А в амперах с помощью кнопок "Верх” и "Вниз” установить требуемый ток заряда.

При третьем нажатии и удержании будет показан символ часов " - h ” при отпускании показано задание таймера отключения от 1h до 30h (от 1 до 30 часов) с помощью кнопок "Верх ” и "Вниз ” установить требуемое значение таймера отключения.

При четвертом нажатии на индикаторе будут три черточки "- - - ”. при отпускании прибор выйдет из режима Меню, на индикаторе не будет мигать последняя цифра.

Как заряжать аккумулятор

Подсоедините крокодилы, на клеммы аккумулятора нажимая кнопку "Вниз” переключите прибор в индикацию напряжения. Вольтметр покажет напряжение на аккумуляторе. Нажмите кнопку "Верх”. Включится светодиод " зарядка”. Ток будет плавно подниматься до заданного значения. Каждые две минуты ток выключается на 4 секунды и при отключенном токе напряжение сравнивается с заданным максимальным напряжением, если напряжение на аккумуляторе достигнет заданного значения, то зарядка отключится и светодиод " зарядка” погаснет. Если напряжение на аккумуляторе не достигнет максимального значения, то отключение произойдет по истечении задания таймера (от 1 до 30 часов).

- Для ручного отключения зарядки нажать кнопку "Вниз”

-
Аккумулятор с напряжение меньше 5 вольт заряжаться не будет.

-
При переполюсовке клемм ток зарядки так же не будет включен.

-
При выключенном заряде или отсутствии сети 220 вольт прибор не разряжает аккумулятор.

Сборка зарядного устройства

Собираем зарядное устройство с МК согл асно принципиальной схемы - клик для увеличения картинки:

Для сборки зарядного устройства SPARK-3 потребуется трансформатор мощностью от 100Вт до 250Вт с напряжением на вторичной обмотке 18 - 22 Вольт, корпус и радиатор (пластина размером 100*150*3 мм). Если необходимо собрать зарядное устройство для аккумуляторов 24 вольта, то трансформатор должен иметь напряжение на вторичной обмотке 30 вольт.

Выпрямитель и симистор закрепить на радиаторе. Радиатор закрепить в корпусе через изоляторы. Кнопки на плате служат только для проверки устройства при установке в корпус рекомендуеся припаять другие кнопки установленные на передней панели.

При первом включении не подключая аккумулятор, нажимая кнопку "Вниз” переключить в Вольтметр. Вольтметр должен показывать "00,0" если вольтметр показывает напряжение, значит, пробит симистор, подключать аккумулятор недопустимо. Для замены подойдет любой импортный симистор на ток 12-20 ампер. Не подключать отечественные симисторы - для них требуется большой ток включения. Цена данного набора может колебаться в пределах 12-20уе - уточняйте в интернет магазинах. В дальнейшем устройство будет собрано, подключено к электронному трансформатору и размещено в корпусе. Следите за публикациями!

Обсудить статью ЗАРЯДНОЕ УСТРОЙСТВО С МИКРОКОНТРОЛЛЕРОМ ДЛЯ САМОСТОЯТЕЛЬНОЙ СБОРКИ

В интернете существует огромное количество схем зарядных устройств (ЗУ) для автомобильных аккумуляторов. От простейших до очень сложных. В нашем случае пойдет речь о ЗУ сделанном на микроконтроллере (МК) Atmega8. Использование МК в отличие от схемы на транзисторах позволяет внедрить очень богатый функционал для ЗУ. К примеру в данном зарядном я решил внедрить следующие функции.

1. Простота в управлении. Достаточно одного энкодера. Повернул по часовой стрелке - заряд включился. Вращением по часовой стрелке или против часовой выбирается ток заряда. Энкодер решил выбрать с тактовым нажатием. Нажимая на него можно будет войти в меню с настройками дополнительных функций.

2. Ток заряда будет до 5А. Хотя у меня в автомобиле стоит батарея 85А/ч мне для заряда хватит и 5А, просто на заряд уйдет немного больше времени. Однако при необходимости можно будет без глобальных переделок и перепрошивки МК увеличить ток заряда до 10А.

3. Менять ток заряда можно будет с шагом до 0.1А. Минимальный ток можно будет выбрать до 0.1А. Это значит можно заряжать и батареи маленькой емкости. Причем если энкодер вращать чуть быстрее, шаг увеличения/уменьшения тока заряда будет работать в пределах 0.5 А.

4. Батарея будет заряжаться до напряжения 14.4 вольт.

5. На дисплей будет выводится информация о текущем токе заряда и напряжении на батарее, так же будет работать индикатор заряда батареи, примерно как в мобильном телефоне. Мне показалось что так будет более наглядно.

6. Обязательно должна быть защита от замыкания клемм ЗУ. К примеру если закоротить клеммы между собой и при этом включить зарядник, то разумеется это не должно принести ему вред. И вообще пока не будет подключена батарея на клеммах не будет никакого напряжения. Так же если по ошибке была подключена батарея не с соблюдением полярности, включение заряда будет невозможно. Вся эта защита будет реализована программно аппаратным способом.

7. Заряд батареи должен быть полностью автоматизирован. Это вполне возможно, так как будет использоваться МК. Автоматизация процесса заряда должна исключать участие человека. Это значит подключил батарею, выбрал ток заряда и на этом все. Все остальное должно сделать само зарядное. А именно, поддержание выбранного зарядного тока в процесе заряда. Если батарея неисправна и заряд дальше не возможен, батарея должна быть автоматически отключена, в противном случае она будет просто бесконечно кипеть, а нам это не надо.

8. Показалось, что удобна будет функция "хранение батареи зимой". Как ни крути, абсолютно любая батарея в природе имеет свой внутренний саморазряд. Это значит, что если просто оставить без присмотра батарею на определенный срок, то из-за тока саморазряда она разрядится, что в итоге приведет к сульфатации пластин. А для батареи это смерть. Причем время саморазряда и сульфатации не такое уж и большое. Порой достаточно пару месяцев. Чтобы этого не произошло и будет внедрена функция "хранение батареи зимой". Работает это просто, подключаем зарядник к батарее, причем батарею не нужно вынимать из автомобиля. Далее ЗУ будет раз в пол часа смотреть какое же напряжение на батарее. Если напряжение упало ниже нормы, включится автоматический заряд, после окончания цикла заряда, ЗУ опять перейдет в режим контроля напряжения на батарее. Причем порог срабатывания выставляет сам пользователь в меню и силу тока тоже можно выбрать в меню. Лично я для себя установил порог 12.5 вольт и сила тока заряда 0.5А. Зярадка малым током более эффективна чем большими токами.

9. Возможно будет полезна функция "продолжение заряда после отключения электричества". Хотя такое совпадение может произойти раз в 150 лет, тем не менее эта функция есть. Зарядное всегда "помнит", что включен процесс заряда и если произойдет отключение/включение элетричества, заряд просто продолжится дальше. В любом случае все функции можно отключить или включить по выбору в меню. Если отключить все функуции, то зарядное просто станет "обычным зарядным" которое зарядит батарею и выключится.

10. Ну и напоследок в ЗУ будет работать программный таймер. Таймер будет постоянно тикать вперед 0..1,2 и так далее. Если батарея заряжается, а это видно будет по тому, как на ней будет постепенно подниматься напряжение до 14.4 вольта. Так вот, как только на батарее напряжение чуть поднялось, таймер сразу сбросится в 0 и продолжить снова считать 0...1,2... Но если батарея неисправна или старая, или не совсем правильна плотность электролита, то при определенном пороге заряд дальше невозможен. И этот порог может быть ниже 14.4 вольта. Как быть? В таком случае таймер перестанет сбрасываться. И дотикав до определенного момента, он попросту выключит заряд с сообщением на дисплей. Дальше кипятить батарею не имеет смысла. Таймер можно выключить в меню или включить, задав диапазон тикания от 30 мин до 3х часов. На дисплее можно будет видеть как таймер будет тикать и сбрасываться время от времени, если заряд протекат в штатном режиме.

Теперь перейдем к обсуждению схемы зарядника.

Блок питания.
В данном случае будем использовать любой импульсный блок питания (ИБП). Выходное напряжение от 16 до 20 вольт. Так как ток заряда будет до 5А, то выходной ток ИПБ должен быть с запасом где-то до 6А. Я использовал ИПБ MEAN WELL RS-75-15 у которого выходное напряжение 15 вольт, но в блоке есть подстроечный резистор которым можно поднять напряжение до 16.5 вольт. Преимущество ИПБ в том что он легкий, компактный и имеет уже втроенную защиту от повышенных токов, замыканий и пр. Поэтому об этом уже не надо особо заботиться. Впринципе подходит любой другой ИПБ. Хоть с ноутбука. Если в вашем ИПБ ток менее 5А, его тоже можно использовать, просто нужно следить за тем чтоб не выставлять ток заряда более чем может выдать ИПБ. Трансформатрный блок питания в нашем случае не подходит. Зарядное на трансформаторе это отдельная тема и отдельная статья. Итак схема питания будет выглядеть примерно так.

Конденсатор на 1000uF в принципе можно не ставить так как он уже установлен в импульсном блоке питания на выходе, но если установить то хуже не будет. Конденсатор С2 лучше если будет электролит, но я поставил керамический smd. Стабилизатор 7805 нужен чтобы питать МК, дисплей LCD и прочую обвязку.

Теперь подключим батарею и полевой транзистор.



Как видим, все просто. Транзистором будем регулировать силу тока через батарею. Реле К1 будет брать на себя роль защиты, будет включаться только тогда, когда батарея подключена и подключена правильно. Цементный резистор R18 выполняет роль шунта. При токе в 5А на нем будет напряжение 0.5 вольт. Это напряжение усилим и подадим на АЦП МК, так МК будет знать какой ток в цепи заряда и это значение можно будет вывести на дисплей. Теперь пора подключать МК к схеме.

Как видим схема немного усложнилась. Но не сильно. К выводу PB0 подключим реле, любое реле на 12V, контакты которого должны выдержать ток в 5А. Последовательно с реле надо подключить гасящий резистор примерно в 200 Ом, так как питаться то реле у нас будет от напряжения 16-20 вольт. Параллельно катушке реле надо установить защитный диод (любой, поставил LL4148) , без диода может пробиться транзистор VT4. VT4 может быть любой тип npn, использовал MMBT4401LT1 .

К выводам PD7, PC1, PC0 подключен энкодер. Использовался этот или этот . На выводы к которым подключен энкодер необходимо подключить конденсаторы 0.1 uF и подтягивающие резисторы по 10к. Это уменьшит контактов.

Дисплей использовался на две строки по 16 символов. Дисплей так же имеет встроенный русский шрифт. Если подключить дисплей без русских символов, на экране будут крякозябры. Так как у МК Atmega8 не сильно много ног, то дисплей подключил по 4х битной шине. Выводы дисплея DB3-DB0 не используются.

К выводу МК PB2 подключен диод шоттки BAT54S , два конденсатора 0.1uF и резистор 100 Ом. Зачем это нужно? Дело в том что в схеме используется операционный усилитель ОУ LM358 который не "rail to rail". В таких ОУ без отрицательного напряжения питания на минусовом выводе питания, на выходе ОУ никогда не будет 0 вольт. Поэтому эта цепочка элементов подключенная к выводу PB2 создает отрицательное напряжение где то -4V для питания ОУ. Для того чтобы цепочка на выводе PB2 заработала и генерировала -4V, на нее необходимо подать ШИМ сигнал со скважностью 50%. Таким образом на выводе PB2 всегда присутствует ШИМ с частотой 62.5 кГц.

На выводе PB3 так же всегда присутствует ШИМ, но скважность сигнала в данном случае от 0 до 100% уже регулируется вращением энкодера. Резистор R18 и конденсатор С11 составляют интегрирующую цепочку сглаживают ШИМ в постоянное напряжение. Резисторы R19 и подстроечный R20 являются делителем напряжения. Как настроить R20? Подключаем мультиметр к выводу PB3 и вращаем энкодер до тех пор, пока прибор не покажет 2.5 Вольта. Далее вращаем подстроечный резистор R20 так чтобы на неинвертирующем выводе ОУ было напряжение 0.25 вольта. На этом настройка R20 закончена.

Как работает регулировка и управление транзистором? Предположим что на неинвертирующем выводе ОУ (+) 0.5 вольт. Одно из свойств ОУ это то, что он стремиться к тому, чтоб уровнять разность потенциалов между его двумя входами. Делает это он используя свой выход, повышая или понижая на нем напряжение. Итак на выводе (+) 0.5 вольт, а на выводе (-) 0 вольт. Что дальше? ОУ сразу же начнет повышать напряжение на выходе, который подключен к затвору транзистора IRF540. Транзистор начинает открываться. Через батарею, транзистор и шунт начинает течь ток. Текущий ток вызывает падение напряжение на шунте R18. ОУ будет открывать транзистор до тех пор пока на шунте не будет напряжение 0.5 вольт. Напряжение с шунта подается через R13 на вывод (-). Как только на выводе (-) будет 0.5 вольта (такое же как и на выводе (+)), ОУ перестанет открывать транзистор. При этом ток заряда будет равен 5А.

Если энкодером уменьшить напряжение на выводе (+) до 0.25 вольта, ОУ уменьшит напряжение на затворе транзистора до такой величины, чтоб на выводе (-), так же стало 0.25 вольта, данное значение соответствует току заряда в 2.5А. Получается что регулировка тока заряда осуществляется аппаратным способом с помощью ОУ. А это очень хорошо, так как ОУ никогда не зависнет и скорость раекции мгновенная. Данная схема регулировки является обычным линейным источником тока. Удобство данной схемы в том что она является простой, но минус в том, что вся разность напряжения между импульсным блоком питания и напряжением на батарее выделяется в виде тепла на транзисторе.

К примеру ИПБ выдает 20 вольт, напряжение на батарее в начале ее заряда 12 вольт, а ток заряда 5А. Какая мощность выделиться на трназисторе? (20-12)*5=40 Вт. 40Вт это очень много!!! Нужен здоровенный радиатор и пять вентиляторов. Так никуда не годиться. Хотя транзистор IRF540 выдержит и 150 ватт, разогревать транзистором зарядник нет смысла. Как уменьшить выделение тепла? Можно понизить напряжение ИПБ например до 16 вольт. Тогда (16-12)*5 =20 Вт в два раза меньше уже лучше. Но нагрев можно сделать еще меньше до 5 ватт и менее. Каким образом?

В ИПБ подобного типа как MEAN WELL RS-75-15 всегда есть подстроечный резистор, которым можно регулировать напряжение на выходе в пределах 10%. Это значит от 13.5 до 16.5, в моем случае получилось от 13 до 17 вольт. Можно выпаять из ИПБ подстроечник, а вместо него впаять вывод МК, таким образом мы сможем с помощью МК регулировать напряжение на выходе ИПБ, это позволит снизить выделение тепла на транзисторе до минимума. К примеру если на батарее 12 вольт, понижаем напряжение до 13 вольт и получаем (13-12)*5=5 Вт тепла на транзисторе, лучше чем 40. Итак модернезируем схему


В выводу PB1 подключаем оптрон PC123 или подобный ему. На выводе PB1 так же всегда дежурит шим сигнал который интегрируется цепочкой R22 и C13. В ИБП выпаиваем подстроечный резистор и вместо него впаиваем обычный на 1.2 кОм. Вот теперь МК может управлять напряжением на выходе ИБП через оптрон. Когда оптрон выключен напряжение на выходе ИБП минимально, когда включен, резистор R23 шунтируется на землю, напряжение поднимается. Плавно закрывая/открывая оптрон с помощью ШИМ сигнала на выводе РВ1, плавно регулируем напряжение на выходе ИБП.

Чтабы знать когда и на сколько регулировать напряжение на выходе ИБП, надо знать сколько вольт вообще на силовом транзисторе. Нам то надо напряжение на выходе ИБП понизить настолько, чтоб разница между напряжением на батарее и напряжением на выходе ИБП была допустимо минимально. Для этого выводом РС2 используя АЦП МК измеряем напряжение на стоке транзистора. Это делается с помощью делителя R9 и R10. Теперь зная необходимые параметры, программа в МК будет сама контролировать скважность ШИМ на выводе РВ1.

Теперь осталось совсем немного. Это измерять ток в цепи заряда и выводить его на дисплей. И еще осталось измерить напряжение на батарее и так же вывести его на дисплей.

Напряжение на батарее измеряем дифференциальным способом. Значение снимаем с вывода РС5. Резисторы R5 и R6 должны быть ровно по 3кОм, а резисторы R2 и R4 по 1кОм, желательно точность не менее 1%, у меня таких не было поэтому R4 установил подстроечным. Суть в том, что при таких номиналах резисторов отношение напряжений на входах ОУ и на его выходе составляет 3:1. При изменении напряжения от 0 до 15 вольт на батарее, на выходе ОУ напряжение будет меняться от 0 до 5 вольт. Для настройки данной цепочки необходимо вместо батареи подключить 14.4 вольта например с лабораторного блока питания. Далее вращаем подстроечник R4 чтоб на дисплее LCD тоже было 14.4 вольта. Настройка цепи измерения напряжения на этом закончена.

Ток измеряется через падение напряжения на шунте, роль которого играет обычный цементный резистор. Ток у нас от 0 до 5А. Напряжение на шунте соответсвенно изменяется от 0 до 0.5 вольт. Значения резисторов R16 и R17 подобраны так, чтоб на выходе ОУ значение напряжения было от 0 до 5 вольт. Отображение тока заряда настраиваем по следующей цепочке. Подключаем батарею и делаем ток в 2.5 А. Параллельно батарее подключаем лампочку на 12 вольт. Батарею отключаем, а лампочку оставляем. Убеждаемся что ток равен 2.5 ампера. Если на шунте напряжение будет 0.25 вольт, значит ток равен 2.5А. если это не так, вращаем энкодер пока на шунте не будет 0.25 вольт. Теперь вращаем подстроечник R17 чтоб на дисплее отображался ток в 2.5А. Настройка отображения тока на этом закончена.

Что можно было бы упростить? Например если нет желания возиться с делителем напряжения в ИБП, то все что припаяно к ноге МК РВ1, можно выкинуть из схемы. Но все остальное должно быть на своих местах. Но в таком случае вся разница напряжения между батареей и на выходе ИБП высадится в виде тепла на силовом транзисторе. В таком случае радиатор берем побольше не жалеем.

Если нужен ток заряда до 10А, параллельно шунту припаиваем такой же шунт значением 0.1 Ом. Реле берем с контактами выдерживающем до 10А и параллельно транзистору IRF540 припаиваем еще один такой же. Транзисторы прикручиваем на здоровенный радиатор и вперед, делаем тест. Единственное, значение тока на диспле надо в уме умножать на 2. Если дисплей покажет 5А, на самом деле это уже будет 10А. Лично я сам так не делал, но в теории должно работать.

В конце концов итоговая схема будет иметь следующий вид:


Ничего не видно согласен, поэтому скачиваем схему отсюда .

Пару фрагментов прошивки.

#include "define.h" #include "init_mcu.h" #include "lcd.h" #include "text.h" #include "bits_macros.h" #include "fun.h" #include "encoder.h" #include "servise.h" #include "main.h" #include #include #include #include #include #include #include #define RELAY PB0 uint8_t lcd_time,lcd_track,lcd_count,enc_interval,enc_speed,off_charge; uint8_t U_bat_tim,I_bat_tim=255,stok_reg,energy_flag,count; uint16_t I_reg,enc_block,bat_count,bat_save,bat_off; EEMEM uint8_t energy_off; struct flag { _Bool lcd_clr_txt0: 1; _Bool lcd_clr_txt1: 1; _Bool count_timer0: 1;//для обработчика прерывания _Bool start_charging: 1;//отключение реле если при заряде бат откл. электричество _Bool ocr1a_block: 1; }flags; ISR(TIMER0_OVF_vect)//прерывание по переполнению Timer 0 раз в 1мсек. { TCNT0=0x6; flags.count_timer0=1; } void reg_I(uint16_t reg_val)//уменьшение тока заряда при достижении 14.4вольта { if (I_reg>reg_val) { I_reg=0; off_charge=1; if (OCR2!=0) { OCR2--; enc_data=OCR2; } } } void charg_off(void) { if (BitIsSet(PORTB,RELAY)) { eeprom_update_byte(&energy_off,0); } ClearBit(PORTB,RELAY); ClearBit(TCCR2,COM21);//отключили аппаратный вывод шим на пине PB3 OCR1A=0;//опустили питание импульсника до 12.5 вольт. off_charge=0; flags.start_charging=0; flags.ocr1a_block=0; enc_data=0; I_bat_tim=255; count=0; OCR2=0; } int main(void) { #if 1//инициализация MCU_init_ports(); MCU_init_adc(); MCU_init_an_comp(); MCU_init_timer0(); MCU_init_timer1(); MCU_init_timer2(); LCD_init(); LCD_string_of_flashXY(text_1,4,0); LCD_string_of_flashXY(text_2,3,1); _delay_ms(1500); LCD_string_of_flashXY(text_3,3,0); LCD_string_of_flashXY(text_4,2,1); _delay_ms(1500); LCD_clear(); if (BitIsClear(PIND,PUSH)){servise();}//вход в сервисное меню if (eeprom_read_byte(&energy_off) && u_batt()>20) { enc_data=eeprom_read_byte(&i_pusk); } else { eeprom_update_byte(&energy_off,0); } MCU_init_wdt(); sei(); #endif while(1) { wdt_reset(); uint8_t u_bat=u_batt(); uint8_t i_bat=i_batt(); #if 1/*определяем подключена ли батарея*/ if (u_bat>30)//30*0.0585=1.7 вольта на батарее, подключена { if (flags.lcd_clr_txt0==0) { flags.lcd_clr_txt0=1; LCD_clear(); } if (lcd_time>200) { lcd_time=0; LCD_string_of_flashXY(text_7,0,0); LCD_string_of_flashXY(text_9,7,0); LCD_string_of_flashXY(text_11,13,0); char buffer; uint16_t U=(u_bat*59)/100; utoa((uint8_t)U, buffer, 10);//выводим напряжение на дисплей if ((uint8_t)U>=100) { LCD_dataXY(buffer,2,0); LCD_data(buffer); LCD_data("."); LCD_data(buffer); LCD_string_of_flashXY(text_10,6,0); } else if ((uint8_t)U>=10 && (uint8_t)U<=99) { LCD_dataXY(buffer,2,0); LCD_data("."); LCD_data(buffer); LCD_string_of_flashXY(text_10,5,0); } else { LCD_dataXY("0",2,0); LCD_data("."); LCD_data(buffer); LCD_string_of_flashXY(text_10,5,0); } uint16_t I=(i_bat*20)/100; utoa((uint8_t)I, buffer, 10);//выводим ток на дисплей c шунта if ((uint8_t)I>9) { LCD_dataXY(buffer,10,0); LCD_data("."); LCD_data(buffer); } else { LCD_dataXY("0",10,0); LCD_data("."); LCD_data(buffer); } } } else //неподключена { LCD_string_of_flashXY(text_5,0,0); LCD_string_of_flashXY(text_6,0,1); flags.lcd_clr_txt0=0; eeprom_update_byte(&energy_off,0); continue; } #endif #if 1/*обрабатываем флаг прерывания timer0*/ if (flags.count_timer0==1) { flags.count_timer0=0; lcd_time++; enc_interval++; I_reg++; lcd_track++; if (enc_speed!=100)//определяем скорость вращения энкодера. { enc_speed++; } if (enc_block>=1) { enc_block++; if (enc_block>=500) { enc_block=0; } } if (BitIsSet (PORTB,RELAY)) { bat_count++; } else { bat_count=0; bat_off=0; bat_save++; } stok_reg++; if (flags.start_charging && count!=255) { count++; } } #endif #if 1/*Получение данных от энкодера*/ if (enc_interval>=5) { enc_interval=0; OCR2=encoder();//считали значение энкодера. #if 0//временно для теста char buffer; utoa(OCR2, buffer, 10); if (OCR2>=100) { LCD_dataXY(buffer,0,1); LCD_data(buffer); LCD_data(buffer); } else if (OCR2>=10 && OCR2<=99) { LCD_dataXY("0",0,1); LCD_data(buffer); LCD_data(buffer); } else { LCD_dataXY("0",0,1); LCD_data("0"); LCD_data(buffer); } #endif if (OCR2==0)//отключаем все. { charg_off(); } else//начали заряд { if (flags.ocr1a_block==0) { flags.ocr1a_block=1; OCR1A=255;//подняли питание импульсника до 17 вольт. } SetBit(TCCR2,COM21); SetBit(PORTB,RELAY); } } #endif #if 1 /*уменьшение тока заряда при достижении 14.4вольта*/ if (u_bat==246 && OCR2>0) { reg_I(3000);//раз в 3 сек } else if (u_bat==255 && OCR2>0) { reg_I(100);//раз в 100 мсек } else if (u_bat>246 && OCR2>0) { reg_I(500);//раз в 500 мсек } #endif #if 1 /*Отключаем заряд при достижении тока заряда 0.1А*/ if (off_charge==1 && enc_block==0) { if (i_bat<=5)//5*0.02=0.1 А ток в батарее. { charg_off(); flags.lcd_clr_txt1=1; LCD_string_of_flashXY(text_13,0,1);//"БАТАРЕЯ ЗАРЯЖЕНА" } } //отключение реле если при заряде бат откл. электричество. if (OCR2>0 && i_bat>4)//4*0.02=0.08A { flags.start_charging=1; } if (flags.start_charging==1 && i_bat<2 && count==255)//2*0.02=0.04 А ток в батарее. { ClearBit(PORTB,RELAY); } #endif #if 1 /*Бегущий индикатор на дисплее*/ if (OCR2>0) { if (flags.lcd_clr_txt1==1) { flags.lcd_clr_txt1=0; LCD_string_of_flashXY(text_8,0,1); } if (lcd_track>=200) { lcd_track=0; lcd_count++; switch (lcd_count) { case 0: LCD_data_of_flashXY(text_15,8,1); break; case 1: LCD_data_of_flashXY(text_16,8,1); break; case 2: LCD_data_of_flashXY(text_17,8,1); break; case 3: LCD_data_of_flashXY(text_18,8,1); break; case 4: LCD_data_of_flashXY(text_19,8,1); break; case 5: LCD_data_of_flashXY(text_20,8,1); break; case 6: LCD_data_of_flashXY(text_21,8,1); break; case 7: LCD_data_of_flashXY(text_22,8,1); break; case 8: #if 1 if (off_charge==1) { lcd_count=5; break; } if (u_bat<232)// 13.57V/0.0585=230 на АЦП. { lcd_count=255; LCD_string_of_flashXY(text_12,8,1); } else if (u_bat<=234) { lcd_count=0; } else if (u_bat<=236) { lcd_count=1; } else if (u_bat<=238) { lcd_count=2; } else if (u_bat<=240) { lcd_count=3; } else if (u_bat<=242) { lcd_count=4; } else if (u_bat<=244) { lcd_count=5; } else { lcd_count=5; } break; #endif default:lcd_count=5; break; } } } else { lcd_count=255; if (flags.lcd_clr_txt1==0) { flags.lcd_clr_txt1=1; LCD_string_of_flashXY(text_8,0,1); } } #endif #if 1 /*Аварийный таймер отключения*/ if (bat_count>=60000 && eeprom_read_byte(&timer_time))//мсек 60000 { bat_count=0; bat_off++; #if 1//для отладки LCD_string_of_flashXY(text_37,0,1); char buffer; utoa(bat_off, buffer, 10); if(bat_off>=100) { LCD_dataXY(buffer,2,1); LCD_data(buffer); LCD_data(buffer); LCD_string_of_flashXY(text_38,5,1); } else if (bat_off>=10 && bat_off<=99) { LCD_dataXY(buffer,2,1); LCD_data(buffer); LCD_string_of_flashXY(text_38,4,1); } else { LCD_dataXY(buffer,2,1); LCD_data(" "); LCD_string_of_flashXY(text_38,4,1); LCD_dataXY(" ",7,1); } #endif } if (u_bat>U_bat_tim && off_charge==0)//сброс аварийного таймера по напряжению { bat_off=0; U_bat_tim=u_bat; } if (i_bat= eeprom_read_word(&tim_dlitl))//180 минут по умолчанию { charg_off(); LCD_string_of_flashXY(text_14,0,1); bat_off=0; flags.lcd_clr_txt1=1; } #endif #if 1/*Регулировка напряжения на выходе блока питания*/ if (stok_reg>=100) { stok_reg=0; uint8_t u_stok=u_stokk(); if (u_stok>62)//0,0195*51*2=2 вольта на стоке. { if (OCR1A!=0) { OCR1A--; } } else if (u_stok<60) { if (OCR1A!=255) { OCR1A++; } } #if 0//временно для теста char buff; utoa(u_stok, buff, 10); if (u_stok>=100) { LCD_dataXY(buff,3,1); LCD_data(buff); LCD_data(buff); } else if (u_stok>=10 && u_stok<=99) { LCD_dataXY("0",3,1); LCD_data(buff); LCD_data(buff); } else { LCD_dataXY("0",3,1); LCD_data("0"); LCD_data(buff); } #endif } #endif #if 1 /*Режим хранения батареи*/ if (bat_save>=60000 && eeprom_read_byte(&save_on)!=0) { bat_save=0; if (u_bat<=eeprom_read_byte(&u_start))//12.5V / 0.0585=213,6 на АЦП { enc_data=eeprom_read_byte(&i_pusk); } } #endif #if 1 /*Режим отключения питания*/ if (enc_data && eeprom_read_byte(&power_off) && energy_flag==0) { energy_flag=1; eeprom_update_byte(&energy_off,1); } #endif } } #if 1 //тексты на дисплей const uint8_t PROGMEM text_1="Зарядное"; const uint8_t PROGMEM text_2="устройcтво"; const uint8_t PROGMEM text_3="SIRIUS 5А "; const uint8_t PROGMEM text_4="Для АКБ 12В"; const uint8_t PROGMEM text_5="Подключи батарею"; const uint8_t PROGMEM text_6="УЧТИ полярность."; const uint8_t PROGMEM text_7="U="; const uint8_t PROGMEM text_8=" "; const uint8_t PROGMEM text_9=" I="; const uint8_t PROGMEM text_10="В "; const uint8_t PROGMEM text_11="А "; const uint8_t PROGMEM text_12=" "; const uint8_t PROGMEM text_13="БАТАРЕЯ ЗАРЯЖЕНА"; const uint8_t PROGMEM text_14="ЗАРЯД ОТКЛЮЧЕН! "; // const uint8_t PROGMEM text_15={0xFF,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0}; // 1 const uint8_t PROGMEM text_16={0xFF,0xFF,0x20,0x20,0x20,0x20,0x20,0x20,0}; // 12 const uint8_t PROGMEM text_17={0xFF,0xFF,0xFF,0x20,0x20,0x20,0x20,0x20,0}; // 123 const uint8_t PROGMEM text_18={0xFF,0xFF,0xFF,0xFF,0x20,0x20,0x20,0x20,0}; // 1234 const uint8_t PROGMEM text_19={0xFF,0xFF,0xFF,0xFF,0xFF,0x20,0x20,0x20,0}; // 12345 const uint8_t PROGMEM text_20={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x20,0x20,0}; // 123456 const uint8_t PROGMEM text_21={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x20,0}; // 1234567 const uint8_t PROGMEM text_22={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0}; // 12345678 const uint8_t PROGMEM text_23 ="Режим сохр. "; const uint8_t PROGMEM text_24 ="ВКЛ "; const uint8_t PROGMEM text_25 ="ВЫКЛ"; const uint8_t PROGMEM text_26 ="U запуска <"; const uint8_t PROGMEM text_27 =" СЕРВИСНОЕ МЕНЮ "; const uint8_t PROGMEM text_28 =" ВЫХОД ИЗ МЕНЮ "; const uint8_t PROGMEM text_29 ="I запуска "; const uint8_t PROGMEM text_30 ="Режим отключения"; const uint8_t PROGMEM text_31 ="питания "; const uint8_t PROGMEM text_32 ="Аварийный Таймер"; const uint8_t PROGMEM text_33 =" ВКЛ "; const uint8_t PROGMEM text_34 =" ВЫКЛ "; const uint8_t PROGMEM text_35 ="задержка "; const uint8_t PROGMEM text_36 =" мин"; const uint8_t PROGMEM text_37 ="T="; const uint8_t PROGMEM text_38 ="min"; #endif

Вопросы задаем сюда dmalash@gmail com
Если кому то нужен прошитый микроконтроллер, то его можно заказать отсюда . Все остальное естественно собираем и делаем сами.

Сейчас немного видео и фотографий. Вот так выглядел самый первый прототип.

Вот так выглядела первая плата.

В последствии была сделана более цивильная плата.

Потом был придуман корпус.

Потом все это было собрано.

В итоге получилось вот что.

Скачать схему зарядного устройства можно .
Заказать прошитый микроконтроллер можно .
Дополнительная информация., печатная плата .
Вопросы и пожелания [email protected]