Зарядное устройство на микроконтроллере PIC16F873A » Программирование устройств на PIC микроконтроллерах


Логин:
Пароль:
О сайте:

Pic.Rkniga.ru - Сайт как для начинающих, так и для опытных радиолюбителей, разрабатывающих свои устройства на популярных PIC микроконтроллерах.
Здесь можно обмениваться сообщениями на форуме, а также добавлять на сайт статьи и схемы своих устройств.

Меню сайта
Главная Форум по PIC микроконтроллерам Форум Статьи по PIC микроконтроллерам Статьи Справочная информаци по PIC микроконтроллерам Справочник Литература по PIC микроконтроллерам Литература Схемотехника Схемотехника устройств на PIC микроконтроллерах Микроконтроллеры Программаторы Все по программированию PIC микроконтроллеров Программы, Софт Программы Ссылки
Опрос

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


MPLab/MPLabX
MicroC
MicroBasic
MicroPascal
Другой


Последние материалы
  • Тестовая плата для отладки программ на микроконтроллере PIC18F4550
  • Кнопка On/OFF на PIC12F629.
  • Часы с синхронизацией от китайского будильника
  • ШИМ регулятор на PIC16F628A.
  • Счетчики прямого и обратного счета на PIC16F628A.
  • Таймер отключения питания для мультиметра и не только.
  • Измеритель напряжения и тока
  • Маршрутный компьютер для электровелосипеда
  • Простой двухканальный термометр на PIC16F690 и датчиках DS18B20
  • Электронная "Незабудка" для забывчивых
  • Популярные материалы
    Случайная книга
    Зарядное устройство на микроконтроллере PIC16F873A
    Автор публикации: alex Просмотров: 18205 Добавлен: 8-08-2012, 11:02 Комментарии: 0

         В настоящее время для питания радиоэлектронной аппаратуры применяют разные типы аккумуляторов и аккумуляторных батарей, что вызывает необходимость иметь соответствующие им типы зарядных устройств (ЗУ). Предлагаемое ЗУ можно назвать универсальным, поскольку оно позволяет проводить как зарядку, так и разрядку различных типов аккумуляторов и батарей. Пользователь имеет возможность выбора одного из четырех алгоритмов зарядки, а все ее параметры — продолжительность, напряжение и ток отображаются на цифровых индикаторах.
         Несмотря на то что на страницах журнала "Радио" опубликовано много описаний разнообразных ЗУ, вниманию читателей предлагается еще одно — с использованием микроконтроллера. Оно предназначено для зарядки и разрядки током от 0,02 до 1,0 А Ni-Cd, Ni-MH, Li-ion и Pb-Acid (герметичные свинцово-кислотные) аккумуляторов и батарей с номинальным напряжением от 1,2 до 12 В. Оно отличается от аналогичных наличием цифровой индикации режима зарядки и разрядки, что позволяет контролировать их ход и оценивать состояние аккумуляторов и батарей в процессе эксплуатации.
         Источником зарядного тока является импульсный преобразователь напряжения, которым управляет микроконтроллер. Длительность управляющих импульсов определяется программой, а также зависит от установленных пользователем параметров. Изменения напряжения и тока в процессе зарядки отслеживаются программно и используются в качестве сигнала обратной связи при регулировании длительности управляющих импульсов.
         Значения продолжительности процесса зарядки тока, а также напряжения, до которого необходимо зарядить батарею, вводятся пользователем с помощью кнопок и отображаются на трех отдельных трехразрядных семиэлементных светодиодных индикаторах. Тип заряжаемого аккумулятора (алгоритм зарядки) устанавливается DIP-переключателем на передней панели, всего предусмотрено четыре различных алгоритма. В процессе зарядки на индикаторах отображаются ток, напряжение и оставшееся до ее окончания время. Кроме того, две группы светодиодов предназначены для индикации выбранного алгоритма зарядки и отображения текущего состояния ЗУ.
         Для проведения разрядки пользователь с помощью кнопок устанавливает напряжение, до которого необходимо разрядить аккумулятор или батарею. Ток разрядки устанавливают переменным резистором, при этом индикаторы отображают напряжение, ток разрядки и продолжительность процесса. При достижении установленного напряжения разрядка прекращается.
    Зарядное устройство на микроконтроллере PIC16F873A

         Схема ЗУ показана на рис. 1, его основа — микроконтроллер DD2, работающий по программе "charge". На элементах VT1, VT3, VD1, R8, R15, R6, R7, С6, С8, С11, L3 собран понижающий импульсный преобразователь напряжения, а на элементах L2, С12, С13, R39 — сглаживающий фильтр. С выхода фильтра напряжение зарядки через электронный ключ на транзисторе VT5 и развязывающий диод VD4 поступает на гнездо XS2, к которому подключают заряжаемый (разряжаемый) аккумулятор или батарею. На ОУ DA2.1 и транзисторе VT4 собран стабилизатор тока разрядки, его значение устанавливают переменным резистором R19.
         На ОУ DA2.2, DA3.1, DA3.2 собраны повторители напряжения. Вход первого из них, в зависимости от положения переключателя SA1.2, будет подключен к одному из резисторов — R28 или R50, которые выполняют функции датчиков тока. Поэтому на его выходе формируется напряжение, пропорциональное току зарядки (показано на схеме рис. 1) или разрядки. На выходах ОУ DA3.1 и DA3.2 формируются напряжения, составляющие 1/8 и 1/2 часть напряжения аккумулятора (батареи). Диоды VD5, VD6 защищают входы этих ОУ от отрицательного напряжения при неправильном подключении батареи. Режимы ЗУ "Зарядка” и "Разрядка” устанавливают переключателем SA1, при этом высокому логическому уровню на входе RC3 микроконтроллера DD2 соответствует режим "Зарядка".
         Выбор типа заряжаемого аккумулятора (алгоритма зарядки) осуществляют выключателями SA2, SA3, при этом загорается один из светодиодов HL1—HL4. Выходы RC4—RC7 микроконтроллера DD2 подключены к входам дешифратора DD4 и использованы для управления трехразрядными семиэлементными светодиодными индикаторами HG1 —HG3 с общим катодом, а также и группой из пяти светодиодов HL5— HL9, которые индицируют режимы работы ЗУ. Резисторы R46—R49, R51— R55 — токоограничивающие.

         Выход RC2 микроконтроллера DD2 запрограммирован как выход импульсного сигнала, который поступает на входы (выводы 9 и 10) логического элемента DD1.1, а с его выхода — на транзистор VT1, управляющий транзистором VT3. На другие входы этого элемента (выводы 12 и 13), а также на входы элемента DD1.2 поступает сигнал с выхода RA5 микроконтроллера DD2. Низкий уровень на этом выходе блокирует прохождение ШИ сигнала, транзисторы VT3, VT5 закрываются — преобразователь напряжения не работает. Выход RA2 микроконтроллера DD2 через резистор R40 подключен к переменному резистору R19 и управляет стабилизатором тока разрядки. Диоды VD2, VD3 совместно с резистором R40 образуют параметрический стабилизатор напряжения 1,4 В. С движка резистора R19 напряжение Uраз поступает на неинвертирующий вход ОУ DA2.1. На его инвертирующий вход поступает напряжение с резистора R28. Выходное напряжение ОУ открывает транзистор VT4, при этом ток разрядки Iраз = Uраз/R28.
         Линии RA0, RA1 и RA3 порта А микроконтроллера DD2 запрограммированы как входы трехканального десятиразрядного АЦП и подключены через резисторы R12, R13 и R14 к выходам повторителей напряжения на ОУ DA3.2, DA2.2, DA3.1 соответственно. В качестве образцового напряжения для АЦП использовано напряжение питания 5,12 В, поэтому оно повышено до этого значения. Разрешающая способность АЦП составляет 5 мВ. Значение тока в амперах выводится на индикатор HG2, а значение напряжения в вольтах — на индикатор HG3. Выбор канала АЦП (RA0 или RA3) при измерении напряжения производится программно. Для канала RA0 максимальное измеряемое напряжение 10 В и десятичная точка устанавливаются в третьем разряде индикатора, для канала RA3 — 40 В и десятичная точка будет во втором разряде.
         Нажатием на кнопку SB1 "Пуск" значения напряжения, тока и продолжительности зарядки, установленные пользователем и отображаемые на индикаторах, записываются в память микроконтроллера DD2, и начинается процесс зарядки или разрядки в зависимости от положения переключателя SA1. Порт В микроконтроллера DD2 используется как для вывода данных на индикаторы HG1—HG3, так и для ввода данных с помощью кнопок SB3—SB8 (по две кнопки на один индикатор). Резисторы R20—R27 токоограничивающие, а сопротивление резисторов R29—R34 выбрано так, чтобы при нажатии на кнопки яркость свечения индикаторов не изменялась. Кнопка SB2 "Сброс" предназначена для установки микроконтроллера DD2 в исходное состояние.

         После подачи питающего напряжения происходит инициализация регистров и портов микроконтроллера и программа считывает из его памяти и выводит на индикаторы предыдущие установки: максимальное напряжение на батарее Uб макс. максимальный ток зарядки Iб макс, время процесса Тб макс. Затем следует пауза продолжительностью 3 с, после чего на индикатор HG3 выводится напряжение аккумуляторной батареи, если она подключена. Сначала измерение выполняется в канале RA3, если напряжение батареи Uб > 10 В устанавливает масштабный фактор, который учитывается программой при выполнении следующих измерений и индикации (при этом на индикаторе HG3 десятичная точка переносится на один разряд вправо). При Uб < 10 В следующее измерение и индикация выполняются в канале RA0. Если батарея отсутствует или ее напряжение менее 0,1 В, работа программы приостанавливается (зацикливается на измерении напряжения) и включается светодиод HL5. После подключения батареи работа программы возобновляется, загорается светодиод HL8 и ЗУ переходит в режим установки параметров. Проверяется состояние контактов кнопки SB1 "Пуск", если они разомкнуты, проверяется флаг нажатия на любую из кнопок SB3—SB8. Флаг устанавливается при обработке прерывания от таймера TMR0, оно происходит каждые 0,002 с, при этом проводится отсчет времени и устанавливаются флаги временных интервалов 0,5 с и 1 мин. Далее инкрементируется счетчик прерываний lnd_Nom и каждому прерыванию присваивается порядковый номер от 0 до 12.
         Код нажатой кнопки передается основной программе через переменную Key_Buff. Программа определяет соответствующий нажатой кнопке регистр индикатора. Так, если нажать на кнопку SB8 и удерживать ее, показания индикатора HG3 (два младших разряда) увеличиваются на единицу каждые 0,25 с. При нажатии на кнопку SB7 увеличиваются показания в старшем разряде индикатора HG3. Отображение ввода данных на индикаторах HG2 и HG1 происходит аналогично. Если ни одна из кнопок не нажата (флаг нажатия сброшен), программа возвращается к опросу кнопки SB1. При нажатии на нее информация, отображаемая на индикаторах, записывается в 16-разрядные регистры и в память микроконтроллера.
         От логического уровня на входе RC3 зависит тип процесса (зарядка или разрядка). При низком уровне начинается разрядка, транзисторы VT3 и VT5 закрываются, обнуляются рабочие регистры таймера и включается светодиод HL6. На выходе RA2 устанавливается высокий логический уровень и выполняется цикл измерения напряжения, затем оно сравнивается с установленным. На индикаторы выводится текущее напряжение батареи Uб, ток разрядки Iб и время Тб (в минутах) от начала процесса, показания обновляются каждые 0,5 с. Резистором R19 устанавливают ток разрядки. Когда напряжение батареи Uб достигнет установленного значения, высокий уровень на выходе RA2 сменится низким, транзистор VT4 закроется, разрядка прекратится и светодиоды HL9, HL6 станут мигать с частотой 2 Гц. На индикаторе HG1 отображается продолжительность разрядки, на HG3 — напряжение батареи в момент окончания разрядки, а ток разрядки должен быть равен нулю. Для выхода из режима разрядки необходимо нажать на кнопку SB2 "Сброс".

         При высоком уровне на входе RC3 микроконтроллера DD2 начинается зарядка. В рабочие регистры таймера загружается значение заранее установленной максимальной ее продолжительности Тб макс и включается светодиод HL7. В зависимости от положения выключателей SA2, SA3 будет выбран один из четырех возможных алгоритмов зарядки. В соответствии с ним производится расчет ее параметров и определяются напряжение Uб мин и ток Iб мин предварительной, а также ток Iб кон окончательной зарядки. После этого начинается сам процесс, который состоит из следующих основных этапов.
         1.    Инициализация. Транзистор VT4 закрывается, происходит измерение напряжения батареи U6 и данные выводятся на индикатор HG3. Высокий уровень на выходе RA5 микроконтроллера разрешает прохождение ШИ сигнала на транзисторы VT3, VT5. Относительная длительность импульсов при этом составляет 6 % от их периода. Напряжение U6 сравнивается с Uб мин, и если Uб < Uб мин. будет выполняться предварительная зарядка малым током Iб мин. В противном случае начнется зарядка током Iб макс. В алгоритме "Общий" и "РЬ" значения Uб мин и Iб мин не определяются, и этап предварительной зарядки не выполняется.
         2.    Предварительная зарядка. Этот этап необходим для безопасной зарядки глубоко разряженных Ni-Cd, Ni-MH и Li-ion аккумуляторов. Зарядка выполняется стабильным током Iб мин до напряжения Uб мин. Фактический ток зарядки Iб сравнивается с расчетным Iб мин и при Iб> Iб мин, длительность импульса ШИ сигнала уменьшается, если Iб < Iб мин. длительность этого импульса увеличивается. При равенстве токов программа выходит из цикла стабилизации и проводится проверка флагов временных интервалов. Через каждые 0,5 с выполняется вывод на индикаторы новых значений Iб и Uб. Если прошла 1 мин, выполняется сравнение напряжений Uб и Uб мин, при Uб > Uб мин предварительная зарядка заканчивается и начинается третий этап. В противном случае цикл повторяется. Продолжительность зарядки на этом этапе не учитывается, а на индикатор HG1 выводится значение Тб макс.
         3.    Зарядка стабильным током 1б макс-Обновление показаний на индикаторах HG1—HG3 происходит каждые 0,5 с. Подсчет продолжительности зарядки, измерение Uб и сравнение его с Uб макс выполняются через каждую минуту. В случае зарядки по алгоритму "Ni-Cd" дополнительно проверяется знак изменения U6. Если разница между текущим и предыдущим результатами измерения отрицательна и превышает 0,02 В на каждый аккумулятор в батарее, зарядка считается оконченной и будет прекращена. При Uб > Uб макс зарядка будет прекращена для алгоритмов "Общий", "Ni-Cd” и "Ni-MH”, а для алгоритмов "РЬ" и "Li-ion" начнется следующий этап. Когда продолжительность зарядки превысит Тб макс, зарядка будет прекращена независимо от выбранного алгоритма и этапа.
         4.    Зарядка при постоянном напряжении. Напряжение на батарее поддерживается постоянным и равным U6 маКс> подсчет продолжительности зарядки продолжается и данные на индикаторах обновляются каждые 0,5 с. Программа отслеживает изменения тока через каждую минуту и при Iб < Iб кон зарядка считается оконченной и прекращается.
         5.    Окончание зарядки. Отключается импульсный сигнал, транзисторы VT3 и VT5 закрываются и выполняются измерения и вывод на индикацию напряжения батареи и тока зарядки Iб (он должен быть равен нулю), начинают мигать светодиоды HL7 и HL9. Программа зацикливается, и для выхода из этого состояния следует нажать на кнопку SB2 "Сброс".
         Измерение напряжения аккумулятора (батареи) в процессе зарядки выполняется при закрытых транзисторах VT3 и VT5, т. е. в момент, когда зарядный ток через батарею не протекает. Измерения тока выполняются при низком уровне импульсного сигнала, т. е. при закрытом транзисторе VT3 и открытом VT5. Максимальная относительная длительность импульса при регулировании на этапах 2—4 ограничена программно на уровне 75 % от периода. При подключении батарей степень их разрядки не определяется, поэтому перед зарядкой Ni-Cd и Ni-MH аккумуляторов и батарей рекомендуется провести их разрядку током 0,1-Са до напряжения 0,9... 1 В на элемент, где Са — емкость батареи в А*ч.

         В программе предусмотрены следующие алгоритмы зарядки.
         "Общий" — тип аккумуляторной батареи не учитывается, ток зарядки Iб макс в интервале 0,02... 1 А и напряжение Uб макс в интервале 1...15 В устанавливает пользователь. Продолжительность зарядки можно определить из соотношения Тб макс = Ca/(0,8-Iб макс). Выполняются этапы 1, 3 и 5.
         Алгоритмы "Ni-Cd" и "Ni-MH". Устанавливают ток Iб макс = 0,25*Са, напряжение Uб макс= 1.6*N (для Ni-Cd) и Uб макс= 1.45*N (для Ni-MH), где N — число аккумуляторов в батарее, и продолжительность зарядки Тб макс = 300 мин. Это рекомендуемые исходные данные, остальные параметры определяются программно: емкость батареи Са = 4*Iб макс ( число элементов в батарее N, напряжение Uб мин = 1*N и ток Iб мин = 0,1*Са. Выполняются этапы 1—3 и 5.

         Алгоритм "РЬ". Устанавливают Iб макс = 0,1*Са, Uб макс = 2,3*N, Тб макс = 900 мин. Это также рекомендуемые исходные данные, остальные — Са = 10*Iб макс и Iб кон= Са/50 определяются программно. Выполняются этапы 1,3 — 5.
         Алгоритм "Li-ion”. Устанавливают рекомендуемые исходные данные Iб макс = 0,5*Са, Uб макс = 4,2*N, Тб макс = 180 мин. Остальные необходимые параметры определяются программно: Са = 2*Iб макс, Iб мин = Са/10, Iб кон = 0,05 А. Выполняются этапы 1—5.
         Пользователь может задать и другие значения исходных данных, рекомендуемые производителями аккумуляторных батарей или из других источников, но в связи с тем, что контроль температуры батареи в процессе зарядки не предусмотрен, устанавливать большие значения тока зарядки нежелательно. Кроме того, ЗУ рассчитано на ток зарядки не более 2 А, а программного ограничения тока зарядки нет.

         В модернизированной версии программы ("exp_charge") в режиме "Общий" взамен зарядки постоянным током реализован алгоритм ускоренной зарядки экспоненциально уменьшающимся током (рис. 2), описанный в [5]. Значения тока берутся из заложенных табличных данных. В этом случае устанавливают Iб макс = Са, время зарядки Тб макс > 180 мин. Условия прекращения зарядки: Uc > U б макс или Тб > Тб макс.
         Большинство деталей смонтированы на печатных платах из односторонне и двусторонне фольгированного стеклотекстолита толщиной 1,5 мм. Чертежи печатных плат показаны на рис. 3—6. С помощью винтов и стоек они собраны в единую конструкцию (рис. 7), соединения выполнены монтажными проводами. В эту конструкцию входит также дюралюминиевый теплоотвод толщиной 2 мм и размерами 130x60 мм, на котором через теплопроводящую изолирующую прокладку установлен транзистор VT4, а на свободном месте — кнопка SB2 "Сброс".
         Применены постоянные резисторы — МЯТ, С2-33; переменный — СПО, СПЗ-4; подстроечный — СПЭ-38; каждый из резисторов R28 и R50 можно составить из двух соединенных параллельно резисторов по 1 Ом (мощностью 0,5... 1 Вт). Оксидные конденсаторы — К50-35 или импортные, остальные — К10-17, кварцевый резонатор — РГ-05, НС-49. Логические микросхемы К555ЛА7 и К555ИД7 заменимы на аналогичные из серий К155, К1533. Микроконтроллер устанавливают в панель. Микросхему КР142ЕН12А необходимо установить на теплоотвод площадью не менее 35 см2, ее можно заменить на импортный аналог — LM317T. Выключатель SA1 — МТ-3, кнопки — SDTX-210-N, дроссели L1— L3 использованы от модуля питания МП-3-3 телевизоров ЗУСЦТ-51, ЗУСЦТ-61. Сборки КД270А заменимы на отдельные диоды с барьером Шотки на ток не менее 2 А, например SR540, транзистор IRL2703 можно заменить на IRL2505, IRFZ44N — на IRFZ48, IRF540, IRF640.
         Налаживание начинают без микроконтроллера с установки подстроечным резистором R1 напряжения питания 5,12 В. Далее переключатель SA1 устанавливают в положение ''Разрядка", движок подстроечного резистора R19 — в нижнее по схеме положение и временно соединяют левый по схеме вывод резистора R40 с линией питания 5,12 В. После этого к гнездам XS1 и XS2 подключают заряженную аккумуляторную батарею, а к выходу 7 ОУ DA2.2 — вольтметр (мультиметр в режиме измерения напряжения). На выходе этого ОУ напряжение должно быть равно нулю. Затем измеряется напряжение на выходах ОУ DA3.2 и DA3.1. Они должны составлять 1/2 и 1/8 часть от напряжения батареи. При необходимости подбирают сопротивления резистивных делителей R42R43 и R44R45 до получения требуемых значений.

         Подключают амперметр последовательно с резистором R28 и, вращая движок резистора R19, измеряют ток, он должен изменяться от нуля до некоторого максимального значения, которое не должно превышать 3 А. После этого устанавливают микроконтроллер на место и подают питающее напряжение. Правильно собранная цифровая часть и преобразователь напряжения в налаживании не нуждаются.
         Источник питания ЗУ должен обеспечивать ток до 1,2 А при напряжении (нестабилизированном) 20 В. Если не требуется заряжать батареи напряжением свыше 9 В, напряжение источника питания может быть снижено до 15 В.
         Автором были проведены испытания ЗУ на различных типах аккумуляторных батарей. Достигнутая в процессе зарядки емкость Са определялась последующей разрядкой током Iр = 0,1*Са до напряжения, соответствующего полной разрядке. Результаты испытаний приведены в таблице.
    Материал взят из: Журнала Радио 2008 №5

    В архиве исходный код программы на ассемблере и прошивка

    zarustr.rar [39,23 Kb] (cкачиваний: 905)

    Комментарии