Поиск по сайту:

 


По базе:  

микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Применение > Микроконтроллеров > AVR

реклама

 




Мероприятия:




AVR146: Зарядка литий-ионных аккумуляторов через USB с помощью Atmega16/32U4

Свойства:

  • полностью функционирующая разработка для зарядки литий-ионных аккумуляторов;
  • высокоточное измерение с помощью 10-битного АЦП;
  • модульный исходный код на Си;
  • легко регулируемые параметры аккумуляторов и зарядки;
  • аналоговые входы для считывания идентификатора аккумулятора и температуры;
  • USB CDC пользовательский интерфейс.

1. Введение

Эти «рекомендации» предназначены для Atmega16/32U4 и их цель — объяснить как использовать оценочную плату EVK527 для зарядки литий-ионных аккумуляторов используя соединение USB как источник питания.

USB CDC класс предлагает простой интерфейс для отображения параметров зарядки.

Эти «рекомендации» происходят от AVR458: зарядка литий-ионных аккумуляторов с ATAVRBC100.

Программное обеспечение полностью написано на Си (использовалось IAR®Systems Embedded Workbench) и его легко портировать на другие AVR® микроконтроллеры.

2. Описание

Этот документ описывает приложение, работающее на оценочном наборе EVK527. EVK527 разработан для Atmega16/32U4.

USB обеспечивает 5 вольтовое питание на выводе VBUS. Доступный диапазон токов: от 100 мА до 500 мА. Этого достаточно для зарядки элемента литий-ионных аккумуляторов.

Литий-ионные аккумуляторы требуют точного контроля над током и напряжением во время зарядки.

Atmega16/32U4 имеет full speed USB интерфейс, ШИМ-каналы и каналы 10-битного АЦП. Все эти возможности используются для реализации зарядки литий-ионных аккумуляторов через USB.

Низкочастотный RC-фильтр
Рисунок 2-1. Описание аппаратного обеспечения

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

После USB нумерации, появляется виртуальный com-порт (см. Рис. 1.2). В окне HyperTerminal, подключенного к этому порту, отображаются параметры зарядки. Т.к. Com-порт является виртуальным, настройки порта HyperTerminal (скорость, четность) не учитываются. Пользователь может выбрать конфигурацию по умолчанию.

Окно диспетчера устройств
Рисунок 2-2. Окно диспетчера устройств

2.1 Отображение параметров зарядки на ПК

Приложение обеспечивает постоянное обновление параметров, отображаемых на ПК. Если аккумуляторов не обнаружено или не идентифицировано, зарядка не начинается. Состояние зарядки доступно только на стадии зарядки постоянным напряжением. (см. Раздел 3.2.2).

Когда HyperTerminal запущен, пользователь должен нажать кнопку HWB для начала посылки информации в ПК.

Пользовательский интерфейс после обнаружения аккумулятора
Рисунок 2-3. Пользовательский интерфейс после обнаружения аккумулятора

3. Принцип работы

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

3.1 Технология литий-ионных аккумуляторов

У литий-ионных аккумуляторов лучшее соотношение энергия/вес и энергия/размер среди современных перезаряжаемых аккумуляторов. Сейчас это наиболее быстро растущие системы аккумуляторов на рынке, которые используются в таких приложениях, как ноутбуки, сотовые телефоны, портативные медиа плееры, КПК и медицинские устройства.

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

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

3.1.1 Безопасность

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

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

Устройства защиты элементов аккумуляторов работают следующим образом:

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

Электрическая защитная цепочка работает следующим образом:

  • твердотельный переключатель открывается, если высокое напряжение зарядки в каком-либо элементе аккумулятора превышает заданный уровень.
  • Перемычка останавливает протекание тока, если температура элемента приближается к 90°C (194°F).
  • токовая цепь разрывается, когда напряжение элемента падает ниже заданного уровня. Это сделано, чтобы предотвратить глубокий разряд аккумулятора.

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

3.2 Зарядка литий-ионных аккумуляторов

Существует только один способ зарядки литий-ионных аккумуляторов. У производителей литий-ионных аккумуляторов есть очень строгие нормативы по процессу зарядки и литий-ионные аккумуляторы должны заряжаться при условиях, указанных производителем.

Литий-ионные аккумуляторы заряжаются постоянным напряжением (после достижения напряжением номинального значения) с ограничением по току, чтобы избежать перегрева в начальной стадии зарядки. Зарядка заканчивается, когда ток зарядки падает ниже уровня, заданного производителем. При зарядке осуществляется мониторинг нескольких параметров: времени зарядки и температуры аккумулятора. Аккумулятор повреждается при перезарядке и может взорваться, если его перезарядить.

3.2.1 Безопасность

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

Литий-ионные аккумуляторы потребительского класса не могут заряжаться при температуре ниже 0°C (32°F). Если аккумуляторы заряжать при низкой температуре, то зарядка может происходить нормально, но химические реакции внутри элемента могут привести к долговременному дефекту и могут подвергнуть риску безопасность аккумулятора.

Аккумулятор становится более уязвимым к поломке, при ударе, разрушении или высокой скорости зарядки.

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

3.2.2 Первоначальная зарядка и интервалы зарядки

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

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

Емкость аккумулятора уменьшается со временем в независимости от того, используется он или нет.

3.2.3 Стадии зарядки

Зарядка литий-ионных аккумуляторов состоит из трех этапов:

  • Предварительная оценка тока: зарядка литий-ионных аккумуляторов начинается с проверки напряжения аккумулятора. Если напряжение ниже заданного уровня (PREQUAL_VOLTAGE), зарядка начинается небольшим фиксированным током.
  • Постоянный ток. Зарядка продолжается путем приложения к аккумулятору постоянного тока. Величина тока зарядки зависит от аккумулятора и устанавливается производителем.
  • Постоянное напряжение. После достижения заданного уровня напряжения устройство зарядки переключится с подачи постоянного тока на подачу постоянного напряжения. Эта стадия завершается, когда ток зарядки становится ниже заданного производителем уровня.

Нижеприведенный рисунок иллюстрирует напряжение и ток литий-ионного аккумулятора во время зарядки.

Стадии зарядки и ограничения VARTA™ EasyPack 550mAh
Рисунок 3-1. Стадии зарядки и ограничения VARTA™ EasyPack 550mAh

На вышеприведенном рисунке «перезарядка» — это уровень, при котором включается защитная цепь элемента и открывает твердотельный переключатель и останавливает протекание тока. После этого напряжение аккумулятора обычно должно упасть на несколько сотен милливольт прежде чем протекание тока возобновится. «Чрезмерная разрядка» —это уровень, при котором начинается протекание тока для предотвращения глубокой разрядки аккумулятора.

3.3 Аккумулятор VARTA™

3.3.1 Типичные характеристики зарядки

Параметры аккумуляторов всегда должны проверятся по документации производителя. Ниже приведена сводка типичных характеристик зарядки литий-ионных аккумуляторов. Реальные параметры могут отличаться.

Таблица 3-1. Типичные характеристики зарядки

Параметр Типичное значение
Время зарядки 3 часа
Ток зарядки 1 C1
Эффективность зарядки 99.9 %
Порог тока зарядки 0.03 C1
Напряжение зарядки 4.20 В
Отклонение напряжения зарядки (на элемент) ± 0.05 В
Диапазон температур 0 ... +45 °C
Диапазон влажности 65 ± 20 RH
1C соответствует типичному значению номинальной емкости (см. Таблицу 3-2)

3.3.2 Типичные характеристики аккумуляторов

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

Таблица 3-2. Данные производителя по литий-ионным аккумуляторам серии VARTA™ EasyPack

Параметр EZPack S-3.7V EZPack M-3.7V EZPack L-3.7V EZPack XL-3.7V Единицы
Номинальная емкость (типичное значение) 550 750 1000 2000 мАч
Номинальное напряжение 3.70 В
Диапазон рабочих напряжений 2.75 ... 4.20 В
Напряжение зарядки 4.20 В
Отклонение напряжения зарядки 50 мВ
Ток зарядки 520 720 955 955 мА
Время остановки зарядки 3 3 3 4 часы
Ток при прекращении зарядки 10 14 19 38 мА
RID1 (идентификатор резистора) 3.9 6.8 10 24 kQ
ОТК 10 kQ
B-значение2 3435 K
Напряжение перезарядки 4.35 В
Напряжение чрезмерной разрядки 2.20 В

1 RID: внутреннее сопротивление аккумулятора определяет емкость подключенного аккумулятора.

2 Значение B используется в формуле для расчета температуры.

3.3.3 Электрические выводы

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

Нижеприведенный рисунок показывает выводы аккумуляторов, используемых в этом приложении.

Выводы элемента  VARTA™ EasyPack
Рисунок 3-2. Выводы элемента VARTA™ EasyPack

Аккумулятор подключается к устройству зарядки следующим образом.

Таблица 3-3. Подключение аккумулятора к заряжающему устройству

Вывод аккумулятора Вывод устройства зарядки Примечания
- (minus) BATTERY-  
NTC NTC/RID Измерение температуры
ID SCL RID, резистор идентификации аккумулятора
+ (plus) BATTERY+  

3.4 Напряжение питания VBUS

Приложения, получающие питание от USB, делятся на три категории:

  • Маломощная шина. Функции, получающие питание от маломощных шин, полностью питаются от VBUS и не должны потреблять более одной единицы тока нагрузки (100мА) согласно стандарту USB. Они также должны работать при напряжении VBUS от 4.40 В до 5.25 В.
  • Высокомощная шина. Функции, получающие питание от высокомощных шин, полностью питаются от VBUS и не могут потреблять более 100мА до того, как устройство сконфигурировано. После конфигурирования, оно может потреблять до 5 единиц тока нагрузки (500мА) согласно запросу в дескрипторе. При полной нагрузке оно должно работать при напряжении VBUS от 4.75 В до 5.25 В.
  • Собственное питание. Функции с собственным питанием могут потреблять до 100мА от VBUS, а остальное из другого источника.

Источником тока для питания EVK527 и для зарядки аккумуляторов является VBUS. EVK527 должна ограничивать ток зарядки, если это необходимо.

Простое решение — изменение параметра тока зарядки в таблице.

Например, для аккумулятора на 550мАч может использоваться ток зарядки 260мА. Изменение этого параметра на 90мА (например) позволяет подключать устройство зарядки к маломощной шине, т.к. Известно, что потребление EVK527 с кварцем на 8МГц составляет около 10мА. В этом случае ток предварительной оценки также должен быть не более 90мА

3.5 Версия EVK527

EVK527 версии 1.0.0 должна быть изменена следующим образом:

  • между PF0 и PF1 должен быть включен шунтирующий резистор для использования дифференциального входа. PF0 должен заменить PD4 и SP6 должен быть «без припоя» (отличается от конфигурации по умолчанию).
  • Выводы затвора и истока Q1A должны быть отключены.
  • Новые значения R6 и R7 — 13кОм.
  • Новое значение R3 — 1 Ом.

На схемах, показанных в разделе 6, эти изменения не показаны.

3.6 Вольтодобавочный преобразователь

Схема вольтодобавочного преобразователя
Рисунок 3-3. Схема вольтодобавочного преобразователя

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

3.6.1 Частота ШИМ

Скорость ШИМ запрограммирована на максимальное значение (64МГц). Источником тактирования является выход ФАПЧ (96МГц), используемый и ШИМ и USB.

Постделитель реализует деление сигнала ФАПЧ на 1.5: 96МГц/1.5=64МГц (см. PLLTM1 и PLLTM0 в регистре PLLFREQ).

Частота результирующего выходного сигнала ШИМ составляет 250кГц:

64МГц/256=250кГц.

Где 256 — это размер в битах регистра сравнения OCR4A, используемого в таймере 4.

Выходной ШИМ-сигнал
Рисунок 3-4. Выходной ШИМ-сигнал

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

4. Программное обеспечение для устройства зарядки аккумуляторов

4.1 Планировщик

Планировщик реализован для постоянного выполнения определенных задач. Перед началом выполнения бесконечного цикла вызываются функции инициализации. Существует три задачи. Каждая задача вызывается после выполнения предыдущей (нет приоритетного прерывания обслуживания).

Планировщик
Рисунок 4-1. Планировщик

4.2 Список файлов

Программное обеспечение написано на Си с использованием IAR Systems Embedded Workbench®, версии 5.10. Так как программное обеспечение полностью написано на Си, не должно быть сложно портировать его на другие AVR Си-компиляторы. Из-за некоторых специфических особенностей компиляторов, тем не менее часть кода должна быть переписана.

В нижеприведенной таблице содержится список файлов проекта.

Таблица 4-1. Файлы проекта для приложения CDC (см. файл IAR EW workspace).

Файл Тип Примечания
cdc_task.c Исходный код на Си Функции CDC задачи и инициализации CDC
cdc_task.h Заголовочный файл
main.c Исходный код на Си Основная программа / точка входа в программу
main.h Заголовочный файл
power_drv.c Исходный код на Си Драйвер питания низкого уровня
power_drv.h Заголовочный файл
scheduler.c Исходный код на Си Процедуры планировщика
scheduler.h Заголовочный файл
start_boot.c Исходный код на Си Функции загрузки
start_boot.h Заголовочный файл
time.c Исходный код на Си Функции тактирования
time.h Заголовочный файл
cdc_task.c Исходный код на Си Функции CDC задачи и инициализации CDC
cdc_task.h Заголовочный файл
main.c Исходный код на Си Основная программа / точка входа в программу
main.h Заголовочный файл
uart_lib.c Исходный код на Си Этот файл обеспечивает минимальный доступ к терминалам VT100
uart_lib.h Заголовочный файл
uart_usb_lib.c Исходный код на Си UART USB функции
uart_usb_lib.h Заголовочный файл
usb_descriptor.c Исходный код на Си Параметры USB, которые определяют устройство
usb_descriptor.h Заголовочный файл
usb_device_task.c Исходный код на Си Управление USB устройством
usb_device_task.h Заголовочный файл
usb_drv.c Исходный код на Си Процедуры USB драйвера
usb_drv.h Заголовочный файл
usb_standard_request.c Исходный код на Си Запросы нумерации USB устройства
usb_standard_request.h Заголовочный файл
usb_specific_request.c Исходный код на Си Функции пользователя
usb_specific_request.h Заголовочный файл
usb_task.c Исходный код на Си Функции USB задачи и инициализации USB
usb_task.h Заголовочный файл

Таблица 4-2. Файлы проекта для модуля аккумуляторов (см. файл IAR EW workspace file)

Файл Тип Примечания
ADC.c Исходный код на Си Функции, относящиеся к АЦП
ADC.h Заголовочный файл
Batt_task.c Исходный код на Си Функции Bat задачи и инициализации Bat
Batt_task.h Заголовочный файл
battery.c Исходный код на Си Определения для процесса зарядки аккумуляторов и функции управления аккумуляторами и сбора данных
cbattery.h Заголовочный файл
chargefunc.c Исходный код на Си Функции зарядки
chargefunc.h Заголовочный файл
LIIONcharge.c Исходный код на Си Функции состояния зарядки литий-ионных аккумуляторов
LIIONcharge.h Заголовочный файл
menu.c Исходный код на Си Определения для конечного автомата
menu.h Заголовочный файл
PWM.c Исходный код на Си Функции для генерации широтно-импульсного сигнала
PWM.h Заголовочный файл
statefunc.c Исходный код на Си Функции, относящиеся к состояниям, определенным в файле menu
statefunc.h Заголовочный файл

4.3 Обзор

Программное обеспечение содержит все необходимые функции для зарядки аккумуляторов.

Таблица 4-3. Требования программного обеспечения к памяти (без оптимизации IAR).

Режим работы Память Приблизительное значение
отладка CODE (Flash) 13900 байт
DATA (SRAM) 1109 байт
XDATA (EEPROM) 2 байта

4.4 Конечный автомат

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

Алгоритм работы основной функции, включая конечный автомат
Рисунок 4-2. Алгоритм работы основной функции, включая конечный автомат

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

Таблица 4-4. Коды конечного автомата (см. исходные коды, menu.h)

Метка Соответствующая функция Описание
INIT Initialize() Состояние входа
BATCON BatteryControl() Проверка аппаратного обеспечения и аккумуляторов
PREQUAL Charge() Повышение напряжения аккумулятора, проверка безопасности
PREQUAL_CTRL Charge() Ожидание окончания PREQUAL
SLEEP Sleep() Режим пониженного потребления
CCURRENT Charge() Зарядка постоянным током
CCURRENT_CTRL Charge() Ожидание окончания CCURRENT
CVOLTAGE Charge() Зарядка постоянным напряжением
CVOLTAGE_CTRL Charge() Ожидание окончания CVOLTAGE
ENDCHARGE Charge() Окончание успешной зарядки
DISCHARGE Discharge() Переход к состоянию BATCON для дальнейшей реализации)
ERROR Error() Ошибка решения, если возможно

Функции состояний описаны в разделах ниже.

4.4.1 Initialize()

Функция инициализации является первой функцией состояния, которая будет выполнена после сброса устройства. Алгоритм работы функции показан на нижеприведенном рисунке.

Алгоритм работы функции инициализации
Рисунок 4-3. Алгоритм работы функции инициализации

Функция инициализации всегда возвращает один и тот же код, который указывает на функцию контроля аккумуляторов.

4.4.2 BatteryControl()

Функция контроля аккумуляторов проверяет, что все джамперы установлены правильно, затем проверяет, вставлены ли аккумуляторы разрешенного типа и нужно ли их заряжать. Алгоритм работы показан на нижеприведенном рисунке.

Алгоритм работы функции контроля аккумуляторов
Рисунок 4-4. Алгоритм работы функции контроля аккумуляторов

4.4.3 Charge()

Функция зарядки содержит алгоритм зарядки, разделенный на этапы. Для этого приложения процесс зарядки состоит из 4 этапов:

  • Предварительная оценка — в течении этого этапа аккумулятор заряжается постоянным током до тех пор, пока напряжение зарядки не достигнет нужного значения. Если это происходит за заданный промежуток времени, то считается, что аккумулятор исправный и процесс зарядки продолжается. Если за отведенное время напряжение не достигает заданного значения или температура аккумулятора выходит за установленные пределы, аккумулятор считается неисправным и процесс зарядки прерывается.
  • Зарядка постоянным током — в течение этого этапа аккумулятор заряжается большим током, подходящим для этого типа аккумуляторов, пока напряжение аккумулятора не достигнет максимума. Если это происходит в течение максимального времени зарядки аккумулятора, то процесс зарядки продолжается. Если за отведенное время напряжение не достигает максимума или температура аккумулятора выходит за установленные пределы, аккумулятор считается неисправным и процесс зарядки прерывается.
  • Зарядка постоянным напряжением — в течение этого этапа аккумулятор заряжается при максимальном напряжении пока ток зарядки не уменьшится до определенного для данного типа аккумуляторов значения или пока не истечет время зарядки. На этом этапе также зарядка прерывается, если температура аккумулятора выходит за заданные пределы.
  • Окончание зарядки — на этом этапе устройство зарядки «решает» переходить ли ему в sleep режим или попытаться зарядить другой аккумулятор.

Ключевыми переменными этой функции являются ChargeParameters и HaltParameters. Алгоритм работы этой функции показан на нижеприведенном рисунке.

Алгоритм работы функции поэтапной зарядки аккумуляторов
Рисунок 4-5. Алгоритм работы функции поэтапной зарядки аккумуляторов

Конец алгоритма работы функции поэтапной зарядки аккумуляторов
Рисунок 4-6. Конец алгоритма работы функции поэтапной зарядки аккумуляторов

4.4.4 Discharge()

Эта функция не была реализована.

4.4.5 Sleep()

Приложение переходит в sleep режим, когда все аккумуляторы заряжены. Приложение периодически «просыпается» через заданный промежуток времени для проверки текущего состояния аккумуляторов. Режим sleep прерывается, если какому-либо аккумулятору требуется зарядка.

Алгоритм работы в Sleep режиме показан на рисунке ниже.

Алгоритм работы функции sleep
Рисунок 4-7. Алгоритм работы функции sleep

4.4.6 Error()

Ход программы изменяется, если возникает ошибка. Программа покинет обработчик ошибок, когда все причины ошибок будут устранены.

Алгоритм программы показан на нижеприведенном рисунке.

Алгоритм работы обработчика ошибок
Рисунок 4-8. Алгоритм работы обработчика ошибок

4.5 Функции управления зарядкой

Эти функции вызываются Charge() после установки всех параметров.

4.5.1 Constant Current/Voltage

Эти две функции похожи, не считая того, что они используют разные измерения АЦП для сравнения с установленными пределами. Поэтому ниже приведен алгоритм работы только ConstantCurrent(). Обе эти функции используют переменную ChargeParameters.

Алгоритм работы функции ConstantCurrent()
Рисунок 5-3. Алгоритм работы функции ConstantCurrent()

4.5.2 Определение прерывания процесса зарядки

Прерывание зарядки определяется функцией HaltNow(). Эта функция вызывается для определения, закончилась ли зарядка, функциями ConstantCurrent() и ConstantVoltage() каждый раз, когда они выполняются в цикле.

С помощью переменной HaltParameters пользователь может задать при каких условиях прерывается зарядка, и должен ли выставляться флаг ошибки, если истекает заданный промежуток времени. Установка флага ошибки приводит к следующему состоянию ST_ERRQR, таким образом прекращая зарядку. Если не установлен ни один флаг ошибки, то следующим состоянием будет состояние, установленное ранее в Charge().

В заключение, функция проверяет не выходит ли температура за заданные пределы, исправен ли аккумулятор, и превышает ли питающее напряжение минимум. Если одна из этих проверок не проходит, то следующее состояние будет соответствовать подходящему обработчику ошибок (ST_ERRQR, ST_INIT или ST_SLEEP) и зарядка прекращается.

Алгоритм работы для HaltNow(), часть 1
Рисунок 5-4. Алгоритм работы для HaltNow(), часть 1

Алгоритм работы для HaltNow(), часть 2
Рисунок 5-5. Алгоритм работы для HaltNow(), часть 2

Алгоритм работы для HaltNow(), часть 3
Рисунок 5-6. Алгоритм работы для HaltNow(), часть 3

Алгоритм работы для HaltNow(), часть 4
Рисунок 5-7. Алгоритм работы для HaltNow(), часть 4

4.6 Другие функции

4.6.1 Аналогово-цифровое преобразование

АЦП использует мультиплексор для считывания значений из разных каналов. По окончании преобразования вызывается обработчик прерывания (ADC Interrupt Service Routine (ISR)), как это показано в алгоритме ниже. После завершения обработки прерывания выполнение программы возобновляется в нормальном порядке. Для всех каналов опорное напряжение АЦП является внутренним и составляет 2,56В.

Алгоритм работы обработчика прерывания АЦП
Рисунок 5-8. Алгоритм работы обработчика прерывания АЦП

4.7 Реализация

Этот раздел описывает, как сконфигурировать, создать и загрузить программное обеспечение.

4.7.1 Конфигурирование

Наиболее важные при компилировании константы приведены в таблице ниже. Больше программных констант содержится в файле battery.h.

Таблица 5-1. Константы, относящиеся к аккумуляторам (см. исходный файл battery.h)

Метка Описание
CELL_VОLTAGE_SAFETY При необходимости зарядки аккумуляторов, тип которых не согласован, эта постоянная вычитается из CELL VQLTAGE MAX для каждой дополнительного элемента аккумулятора, т. е. BAT_CELL_NUMBER - 1.
CELL_VОLTAGE_MAX Напряжение, при котором должен заряжаться элемент.
CELL_VОLTAGE_LOW Наименьшее напряжение, при котором аккумулятор считается заряженным. Зарядка начнется, когда напряжение упадет ниже этого уровня.
CELL_VОLTAGE_MIN Наименьшее напряжение, при котором может начаться зарядка. Должно быть установлено равным пределу, при достижении которого последующая разрядка аккумуляторов приведет к повреждениям.
CELL_VОLTAGE_PREQUAL Напряжение, до которого должны быть заряжены аккумуляторы в течение этапа оценки тока.
BAT_TEMPERATURE_MAX Самая высокая допустимая температура аккумуляторов. Зарядка прекратится/не начнется при превышении этого предела.
BAT_TEMPERATURE_MIN Самая низкая допустимая температура аккумуляторов. Зарядка прекратится/не начнется, если температура ниже этого уровня.
BAT_CURRENT_PREQUAL Ток зарядки в течение этапа оценки тока.
BAT_CURRENT_HYST Гистерезис тока зарядки.
BAT_VОLTAGE_HYST Гистерезис напряжения зарядки.
BAT_VОLTAGE_PREQUAL Напряжение аккумулятора в течение этапа оценки тока. Если это напряжение не будет достигнуто, то аккумулятор будет считаться негодным.
BAT_TIME_PREQUAL Максимальная длительность этапа оценки тока.
DEF_BAT_CAPACITY Емкость аккумулятора по умолчанию.
DEF_BAT_CURRENT_MAX Максимальный ток зарядки по умолчанию.
DEF_BAT_TIME_MAX Максимальное время зарядки по умолчанию.
DEF_BAT_CURRENT_MIN Ток остановки зарядки по умолчанию.
ALLOW_NO_RID Если определено, то использование аккумуляторов без RID (или не соответствующих заданным типам) приведет к зарядке при параметрах по умолчанию. Иначе зарядка будет остановлена.
RID[ ].Low and RID[ ].High Предполагается распознавание RID сопротивления, если оно находится в этих пределах.
RID[ ].Capacity Емкость аккумулятора для заданного RID.
RID[ ].Icharge Ток зарядки для заданного RID.
RID[ ].tCutOff Максимальное время зарядки для заданного RID.
RID[ ].IcutOff Ток прекращения зарядки для заданного RID.
NTC[ ] Таблица температур.

4.7.2 Компиляция

Доступны проекты под IAR и GCC. Проект GCC может использовать внешний makefile (см. Makefile в \gcc\default) или опции, которые определяются в проекте в AVR Studio.

Таблица 5-2. Конфигурирование компилятора

Раздел Закладка Поле Значение
General Options Target Processor configuration ATmega16/32U4
Memory model Small
System Data stack 0x100
Return address stack 32
Enable bit definitionsk None
C/C++ Compiler Language Require prototypes Selected
Linker Output Format Other: ubrof8
Extra Options Command Line -y(CODE)
-Ointel-extended,(DATA)=$EXE_DIR$\$PROJ_FNAME$_data.hex
-Ointel-extended,(XDATA)=$EXE_DIR$\$PROJ_FNAME$_eeprom.hex

4.7.3 Программирование

Скомпилированный код легко загрузить в целевое устройство с помощью AVR Studio® и любого отладочного средства или программатора по выбору, например JTAGICE mkII. Заметьте, что скомпилированный код может содержать данные для EEPROM, если это необходимо. Эта возможность предусмотрена для дальнейшей разработки. Ответьте OK, когда AVR Studio спросит, должны ли быть загружено содержимое EEPROM. Это показано на рисунке ниже.

Загрузка данных для инициализации в EEPROM
Рисунок 5-9. Загрузка данных для инициализации в EEPROM

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

Таблица 5-3. Установки фьюзов, отличающиеся от изначальных.

Настройка фьюза Описание
CKDIV8 1 (unprogrammed) Не делить тактовый сигнал на 8
CKSEL3...0 0010 Использовать внутренний генератор

На EVK527 версии 1.0.0 выводы JTAG совмещены с выводами, идущими к кнопкам джойстика. Поэтому при нажатии кнопок CDC приложение отключается.

Кнопка HWB используется для начала передачи данных в HyperTerminal.

После загрузки программного обеспечения с помощью AVR Studio загрузчик ATmega16/32U4 стирается. Если требуется загружать ПО с помощью FLIP (ATMEL ISP), то предварительно нужно восстановить загрузчик с помощью AVR Studio.

5. Схемы EVK527 версии 1.0.0

Рисунок 6-1. Страница 1/5 (схемы версии 3.0.0, соответствуют платам версии 1.0.0)

Рисунок 6-2. Страница 2/5

Рисунок 6-3. Страница 3/5

Рисунок 6-4. Страница 4/5

Рисунок 6-5. Страница 5/5

6. Связанные документы

  1. "What's the best battery?". Retrieved April 3, 2007, from Battery University
  2. "Lithium-ion safety concerns". Retrieved April 3, 2007, from Battery University
  3. "Charging lithium-ion batteries". Retrieved April 3, 2007, from Battery University
  4. "ATmega32U4". Available from Atmel web site: http://www.atmel.com/products/avr/

Документация:

  747 Kb Engl Исходный файл





 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru
©1998-2023 Рынок Микроэлектроники