Это приложение подробно объясняет, как защитить систему от сбоев из-за пропадания напряжения питания. Оно также описывает, как предотвратить работу микроконтроллера при пониженном напряжении, используя внешние детекторы низкого напряжения. Эти явления часто называются "Brown-Outs" - когда напряжение питания ниже допустимого уровня, или "Black-Outs" - когда на какое-то время оно полностью пропадает.
      Подробно описывается два варианта решения на дискретных компонентах, позволяя пользователю настроить их под конкретные требования системы. Так же как и схему в интегральном исполнении. Благодаря использованию этих методов, в вышеописанных ситуациях можно предотвратить:
      Обратите внимание, что недостаточное напряжение питания ни когда не влияет на содержимое внутренней FLASH памяти программ AVR микроконтроллера.
Теория
      Для того чтобы CPU (процессор) микроконтроллера мог успешно декодировать и выполнять инструкции программы, питающее напряжение должно всегда быть больше минимально допустимого уровня, зависящего от рабочей частоты. Когда напряжение питание опускается ниже этого уровня, CPU может начать выполнять некоторые инструкции неправильно. В результате могут происходить не запланированные процессы во внутренней памяти и на линиях управления. Это может привести к повреждению информации в регистрах CPU, I/O регистрах и в памяти данных.
      Для того чтобы избежать этого, необходимо не допустить выполнение кода CPU, при провалах напряжения питания. Для этого лучше всего использовать внешний детектор пониженного напряжения питания. При уменьшении напряжения ниже фиксированного порога Vt, детектор формирует низкий (активный) уровень на выводе RESET. Это немедленно останавливает CPU, не позволяя ему выполнять программу. Пока напряжение питания ниже порогового Vt, микроконтроллер остановлен, и система находиться в известном состоянии. Когда напряжение питания снова поднимается до установленного значения, вывод RESET освобождается и микроконтроллер начинает выполнять программу с адреса вектора сброса (0x0000).
Пороговое напряжение
      Рекомендуется устанавливать пороговое напряжение на 5-15% ниже рабочего Vcc, допуская таким образом небольшое колебание напряжения питания. Пороговое напряжение должно всегда выбираться так, чтобы детектор формировал сброс, когда напряжение становиться ниже минимально допустимого для CPU. Необходимо гарантировать достаточно высокое пороговое напряжение детектора даже в самых плохих случаях.
Защита содержимого регистров CPU
      Когда детектор формирует сигнал сброса микроконтроллера, работа CPU прерывается. Когда сброс снимается, регистры CPU будут содержать значения устанавливающиеся по умолчанию. В течение сброса, содержимое генеральных регистров сохраняется. Без детектора, случайная активность CPU, как описано во введении, может привести к повреждению информации в регистрах CPU. См. также "ОЗУ".
      Замечание: не гарантируется сохранность содержимого генеральных регистров во время сброса в микроконтроллерах AT90S1200, AT90S8515 , AT90S4414.
Защита содержимого I/O регистров
      Когда используется детектор, удерживающий MCU в режиме сброса, во время сброса содержимое всех I/O регистров становится равным устанавливаемому по умолчанию. Следовательно, все периферийные устройства микроконтроллера также будут находиться в состоянии сброса. Без детектора, непредсказуемая активность CPU, вроде описанной выше, может привести к записи случайного значения в регистр I/O. Это может вызвать нежелательную работу периферии.
Защита от произвольного переключения I/O выводов
      Когда детектор удерживает MCU в режиме сброса, то состояние всех I/O выводов становится равным устанавливаемому по умолчанию. Без детектора, непредсказуемая активность CPU, вроде описанной выше, может привести к записи случайного значения в I/O регистры. Это может привести к появлению нежелательных сигналов на I/O выводах.
Защита содержимого SRAM
      Благодаря использованию детектора напряжения, запрещается доступ к внутренней SRAM. Память сохраняет свое содержимое во время сброса. Без детектора, непредсказуемая активность CPU, вроде описанной выше, может привести к записи случайного значения в любую область памяти. Смотри также "ОЗУ" ниже.
     Замечание: В AT90S8515 и 4414 не гарантируется сохранение данных во внутреннем SRAM во время сброса.
Защита содержимого энергонезависимой памяти
      Энергонезависимая память, такая как EPROM, EEPROM и Flash сохраняют свое содержимое даже при полном отключении питания. Но использование детектора для удержания микроконтроллера в режиме сброса, прекращает всю активность на линиях управления. Таким образом, во время сброса содержимое памяти защищается от случайной записи. Без детектора, непредсказуемая активность CPU, вроде описанной выше, может привести к непреднамеренной записи случайного значения в любую область энергонезависимой памяти и привести к повреждению содержимого.
      Замечания:
Flash память программ
      Содержимое внутренней FLASH памяти программ не повреждается при сбоях питания, так как AVR CPU не способно записывать информацию в свою собственную программную память.
ОЗУ
      Даже, когда внешний детектор пониженного напряжения останавливает CPU, регистры и ОЗУ все равно потеряют свое содержимое, если напряжение питания упадет ниже уровня необходимого для сохранения в ячейках памяти их содержимого. При остановке CPU, минимальное напряжение, при котором гарантируется сохранение содержимого внутреннего ОЗУ AVR контроллеров, составляет 2 вольта. Заводские испытания при использовании стандартных кремниевых пластин показали, что фактически содержимое сохраняется даже при напряжении 0,5 - 1 вольт.
Реализация
      Доступно большое разнообразие различных интегральных схем детекторов от разных производителей. Предлагая высокую точность при низкой цене, они обычно гарантируют точность порогового напряжения ± 1%. Кроме простых трехвыводных детекторов на фиксированные напряжения, есть также большое количество устройств имеющих такие дополнительные функции, как удлинение импульса сброса, сброс при включении напряжения питания, сторожевой таймер, регулятор напряжения, переключатель на резервное питание и так далее, Это приложение является своего рода путеводителем по миру интегральных схем. Как альтернатива так же описывается два детектора пониженного напряжения на дискретных элементах.
Подсказка: фильтрация напряжения питания
      Используйте конденсаторы с маленьким активным сопротивлением для фильтрации Vcc и многослойные платы с широкими проводниками для улучшения переходных характеристик питания.
Вариант 1: С низким потреблением
Характеристики
Введение
      Цепь на рисунке 1 имеет малое потребление, что делает ее подходящей для устройств с батарейным питанием. Использование стандартных элементы делает ее недорогой. Переключение напряжения на выводе RESET происходит с крутыми фронтами. Объединяет большой гистерезис с высокой точностью. Но большое время реакции делает ее не подходящей при быстро меняющемся напряжении питания.
Рисунок 1. Экономичный Brown-Out детектор
Принцип работы
      Детектор состоит из двух каскадов, детектора и усилителя. В детекторе пороговое напряжение устанавливается резисторами R1 и R2 относительно напряжения отпирания транзистора T1. При нормальном напряжении транзистор открыт. Когда напряжение падает ниже порогового уровня, он закрывается.
      Выход этого детектора подключен к входу усилителя с очень низким потреблением. При нормальной работе, низкое напряжение на базе транзистора Т2 удерживает его в закрытом состоянии, позволяя резистору R5 формировать высокое напряжение на входе RESET микроконтроллера. Усилитель также содержит цепь обратной связи - транзистор Т3 и резистор R3, формирующей гистерезис, когда на выходе RESET удерживается низкий уровень.
Выбор элементов
Т1, Т2 и Т3
      Разброс коэффициента передачи по току (hfe) транзистора Т1 влияет на пороговое напряжение Vt (обычно ± 0.2 В). Можно использовать любой маломощный транзистор, но лучше применять транзисторы с небольшим разбросом.
      Необходимо проявлять осторожность при замене транзистора одного типа транзистором другого типа. Напряжение база-эмиттер транзистора Т1 влияет на константу (0,4) в формуле для расчета порогового напряжения (ниже). Поэтому замена транзистора может вызвать изменение порогового напряжения детектора, что потребует пересчета делителя R1+R2.
R1 и R2
      R1 и R2 составляют делитель напряжения, определяющий пороговое напряжение Vt. Так как пороговое напряжение зависит от этих сопротивлений, рекомендуется использовать резисторы с точностью 1% и выше. См. Также "Чувствительность к шуму" ниже. R1 обычно выбирается равным 10 Мом для уменьшения энергопотребления. R2 находиться по формуле приведенной ниже. Постоянная (0,4) может слегка изменяться при изменении транзистора Т1:
R3
      Некритичный нагрузочный резистор, который очень слабо влияет на пороговое напряжение. Его следует выбирать как можно больше, для уменьшения потребления. Сопротивление больше 10 Мом не рекомендуется, см. "Чувствительность к шуму".
R4
      Резистор R4 определяет гистерезис порогового напряжения (Vt). При R4 равном 3,3 Мом, значение гистерезиса составит примерно 0,3 В. Меньший R4 даст больший гистерезис и наоборот. Большее значение R4 так же приведет к уменьшению крутизны фронтов выходного сигнала. Большое отличие от рекомендованного значения, в конечном итоге изменит константу (0,4) в формуле вычисления порогового напряжения. Поскольку величина гистерезиса не сильно зависит от R4, его точность не важна.
R5
      В нормальном режиме R5 формирует высокий уровень. Рекомендуется значение меньше 50 кОм, для надежной привязки RESET к напряжению питания. Так как в нормальном режиме ток через него практически не проходит, его номинал и точность не важны. Когда RESET имеет низкий уровень, через него начинает протекать достаточно большой ток.
C1 и C2
      С1 и С2 уменьшают высокочастотный шум и помехи в схеме. Оба конденсатора могут отсутствовать, но рекомендуется значение не меньше 1нФ. Для максимальной защиты от шума и помех, следует выбирать 100 нФ (низкочастотный) или конденсатор с маленьким ESP(эквивалентное последовательное сопротивление) т.е. высокочастотный. См. также "Время срабатывания" ниже. Точность не важна, но для гарантии надежного подавления высокочастотных шумов, следует использовать конденсаторы с диэлектриком Z5U или лучше.
C3
      С3 осуществляет развязку по питанию. Его можно не устанавливать, если рядом на плате уже имеется развязывающий конденсатор, иначе рекомендуется 1 нФ. Для максимальной защиты от шума, следует выбирать 100 нФ (низкочастотный) или конденсатор с маленьким ESP (эквивалентное последовательное сопротивление) т.е. высокочастотный.
Кнопка сброса/Внутрисистемное программирование
      Если требуется кнопка сброса или возможность внутрисистемного программирования, они просто подключаются параллельно, как показано на рисунке 1. Так как кнопка/программатор устанавливают низкий уровень на выводе RESET, то ток протекающий через R5 будет относительно высоким в этот момент. См. также ниже "Энергопотребление".
Время срабатывания
      Выбор больших значений С1 и С2 увеличивает время срабатывания схемы. Это не проблема в системах с батарейным питанием, где напряжение со временем уменьшается медленно (при разрядке батарей). Когда питание может пропадать очень быстро, следует учитывать время срабатывания.
Чувствительность к шуму
      Выбор R1 и R2 больше, чем 10 Мом не рекомендуется, так как это может привести к увеличению чувствительности схемы к тепловому шуму резисторов. Когда шум не важен, R1 и R2 могут быть увеличены до 20 Мом. Выбор еще большего значения приведет к уменьшению протекающих через них токов, что в итоге приведет к неработающему детектору. Если нужна меньшая чувствительность к шуму, эти резисторы могут быть выбраны меньшего номинала, за счет увеличения потребляемой мощности.
      Конденсаторы С1,С2 и С3 развязывающие и уменьшают как высокочастотный шум, так и наводки 50/60 Гц. Они могут не устанавливаться, но чувствительность к шуму сильно зависит от их номиналов.
Точность порогового напряжения
      Так как пороговое напряжение определяется в основном R1 и R2 , погрешности этих резисторов непосредственно влияют не точность порогового напряжения. Рекомендуется использовать с точностью ± 1%.
Энергопотребление
      Потребляемый ток при нормальной работе (напряжение Vcc высоко) находится как:
      Когда кнопка сброса или программатор формируют низкий уровень на выводе RESET , то ток увеличивается до:
      Когда напряжение падает ниже порога детектора, транзистор Т1 закрывается, Т2 открывается и ток потребления составляет:
      Так как R5 обычно выбирается много меньше, чем R1-R4, последние два выражения можно упростить:
Таблица 1. Примеры номиналов
Компонент |
| Рекомендуемая точность |
||||
T1, T2 |
BC548 / BC848 / 2N3904 |
Ice |
||||
T3 |
BC558 / BC858 / 2N3906 |
Ice |
||||
R1 |
10 МОм |
|
||||
R2 |
|
|
||||
R3 |
10 Мом |
|
||||
R4 |
3,3 Мом |
|
||||
R5 |
47 кОм |
|
||||
C1, C2 и С3 |
100 нФ |
|
Альтернатива 2: Низкая стоимость
Характеристики
Введение
      На рисунке 3а показана недорогая схема, занимающая маленький объем. Однако большая потребляемая мощность может сделать ее не подходящей для систем с батарейным питанием. Поскольку напряжение на выводе RESET падает довольно медленно при пропадании напряжения Vcc, то цепь чувствительна к разбросу значений элементов. Из-за разброса значений резисторов R1 и R2, параметров транзистора Т1 и порогового напряжения сброса AVR MCU, порог Vt следует выбирать минимум на 15% меньше Vcc.
Рисунок 3a. Недорогой Brown-Out детектор
Рисунок 3b. Недорогой Brown-Out детектор с ручным сбросом
Рисунок 4. Осциллограммы, показывающие зависимость напряжения на выходе RESET от Vcc
Принцип действия
     При нормальной работе, транзистор Т1 открыт, подавая на вывод RESET напряжение Vcc. Когда напряжение Vcc снижается ниже порогового (Vt), транзистор Т1 закрывается. Это позволяет резистору R3 подать на RESET низкий (активный) уровень. Закрывание транзистора Т1 происходит, когда напряжение база-эмиттер становиться меньше определенного значения. Для маломощных кремниевых транзисторов обычно 0,7 вольт. R1 и R2 образуют делитель напряжения, формирующий напряжение база-эмиттер. Пороговое напряжение рассчитывается по формуле:
Выбор элементов
T1
     Можно использовать почти любой маломощный PNP транзистор. Рекомендуется использовать транзистор с большим коэффициентом передачи по току (hfe), так как это обеспечит более быстрое переключение выходного напряжения при изменении Vcc в районе порогового напряжения. Более быстрое срабатывание делает схему менее чувствительной к выбору компонентов, уменьшает необходимость настройки детектора. См. также ниже "Точность установки порога". Настройка также требуется при изменении напряжения открывания транзистора. Это напряжение равно около 0,7 вольт. Оно не меняется у однотипных транзисторов, но следует соблюдать осторожность при выборе транзистора. Изменение этого параметра может серьезно повлиять на пороговое напряжение включения.
R1 и R2
      Как видно из формулы, пороговое напряжение Vt зависит от R1 и R2. Сопротивление R1 должно быть около 200 кОм или меньше. Это гарантирует, что ток базы транзистора Т1 не будет влиять на напряжение делителя R1-R2 (Для коэффициента усиления hfe минимум 100.)
R3
      Вывод RESET AVR микроконтроллера имеет внутренний подтягивающий (подключен к Vcc) резистор сопротивлением 100-500 кОм. Когда транзистор Т1 выключается, внутренний подтягивающий резистор и R3 образуют делитель напряжения. Получающееся в итоге напряжение RESET должно быть достаточно низким, что бы гарантировать активный уровень сброса на выводе RESET MCU. Рекомендуемое значение R3 - 50 кОм или ниже, что гарантирует, что напряжение на RESET всегда будет меньше чем 1/3 Vcc.
Ручной сброс/Внутрисистемное программирование
      Если требуется кнопка сброса или возможность внутрисистемного программирования, последовательно должен быть подключен резистор R4, как показано на рисунке 3b. Резистор позволяет кнопке сброса/программатору блокировать транзистор Т1 и устанавливать низкий уровень на выводе RESET. Чтобы гарантировать правильную работу детектора пониженного напряжения, общее сопротивление последовательно включенных R3+R4 не должно превышать рекомендуемые 50 кОм.
Точность установки порога
      Пороговое напряжение в основном зависит от R1 и R2, и погрешность этих резисторов напрямую влияет на точность установки порогового напряжения. Рекомендуется использовать резисторы с погрешностью ± 1%. Из-за медленного переключения транзистора, изменения порога RESET AVR микроконтроллера приведет к погрешности установки порогового напряжения. Эта погрешность имеет типичное значения ± 0.15 вольт, что соответствует ± 3% при напряжении питания 5 вольт(± 5% при3,3 В). Эта погрешность уменьшается при использовании транзистора Т1 с большим коэффициентом усиления (hfe), что увеличивает скорость переключения.
Энергопотребление
      Потребляемый детектором ток в нормальном режиме работы (при достаточно высоком Vcc) находится по формуле:
      Когда кнопка или программатор закорачивает RESET на землю, потребляемый ток увеличивается до:
      Когда напряжение питание падает ниже уровня запирания транзистора Т1, ток уменьшается до:
Таблица 2. Примеры номиналов
Компонент |
| Рекомендуемая точность |
||||
T1 |
BC558 / BC858 / 2N3906 |
Ice |
||||
R1 |
180 кОм |
|
||||
R2 |
|
|
||||
R3 |
|
|
||||
R4 |
|
|
Альтернатива 3: интегральная схема
Характеристики
Введение
      Существует большой выбор интегральных схем разных производителей. Они варьируются от очень простых трех-ножечных детекторов на фиксированные напряжения, до более совершенных, имеющих сторожевой таймер и функцию формирования временной задержки при включении питания. Так как все AVR имеют встроенный сторожевой таймер и функцию сброса при включении питания, то эти функции не требуются от внешних микросхем. Точность порогового напряжения составляет менее ±1% для большинства микросхем. Потребляемый ток в диапазоне мкА. Необходимо использовать микросхему с активным низким уровнем на выходе. Существует большое кол-во различных корпусов, от миниатюрных трехвыводных до больших с большим количеством выводов.
Выходной каскад
      Выход сброса микросхемы может быть двухтактным или с открытым стоком (открытым коллектором), в зависимости от CMOS или TTL выходных уровней. Решение с открытым стоком позволяет просто подключить кнопку ручного сброса и/или внутрисистемного программатора. Эта функция может быть осуществлена и при двухтактном выходе, с помощью дополнительного последовательного резистора. ISP и/или ручной сброс подключается между сопротивлением и входом RESET AVR (смотри рисунок 5а и рисунок 5б).
Рисунок 5a. Детектор с двухтактным выходом
Рисунок 5b. Детектор с открытым коллектором
Рисунок 5c. Альтернативный вариант установки кнопки ручного сброса
Удлинение импульса сброса.
      В некоторых цепях дополнительно происходит увеличение длительности импульса сброса. Сброс удерживается в активном состоянии в течение определенного времени после окончания события вызвавшего сброс (power-on сброс, brown-out сброс и т.д.)(см. рисунок 6.) Некоторые из этих устройств также имею функцию ручного сброса. Они контролирую уровень напряжения на выходе, определяя, нажата или нет кнопка сброса. Когда кнопка отпускается, микросхема удерживает линию сброса в активном состоянии еще некоторое время. ВНИМАНИЕ! Эта функция будет конфликтовать с работой внутрисистемного программатора, который активно переключает линию RESET.
Рисунок 6. Удлинение импульса сброса
Стабилизатор напряжения
      Некоторые стабилизаторы напряжения содержат встроенный детектор низкого напряжения, объединяя две функции в одном устройстве. Это уменьшает стоимость и часто предоставляет дополнительные функции без дополнительных затрат.
Резервное питание
      Некоторые системы содержат батареи резервного питания, используемые при пропадании основного. Стабилизатор напряжения в таких системах часто формирует сигнал статуса, указывающий микроконтроллеру, какой источник напряжения используется в данный момент. Подключив этот сигнал к RESET, мы выключим AVR, когда используется резервное питание, сохраняя содержимое ОЗУ, но останавливая работу программы. Или же, при подаче этого сигнала на отдельный вход, AVR может зафиксировать это событие и выполнить подпрограмму уменьшающую энергопотребление, отключая энергоемкие периферийные устройства (двигатели, дисплеи и т.д.) прежде чем войти в режим power-down. (Потребление в режиме сброса такое же, как и в нормальном режиме, а в режиме power-down составляет мкА.) Когда основное напряжение питания восстанавливается до необходимого уровня, AVR должен зафиксировать это, проснуться и возобновить выполнение программы с прерванного места.
Гистерезис
      Гистерезис в детекторе низкого напряжения может быть выполнен интегрально, или сформирован с помощью внешних цепей (Рисунок 7). Он защищает детектор от генерации при использовании в устройствах с батарейным питанием.
Рисунок 7. Формирование гистерезиса порогового напряжения
Фиксированное/Изменяемое пороговое напряжение
      Некоторые цепи требуют настройки порогового напряжения Vт с помощью внешних элементов, в то время как другие имеют фиксированное пороговое напряжение. Использование микросхемы с фиксированным напряжением показано на рисунке 8. Типичное подключение внешних элементов для настройки порогового напряжения показано на рисунке 9. Это устройство имеет внутренний источник порогового напряжения и компаратор. Если напряжение на входе ниже опорного, то уровень на выходе становиться активным. Пороговое напряжение легко определяется делителем напряжения R1 и R2.
Рисунок 8. Интегральная микросхема сброса с фиксированным пороговым напряжением
Рисунок 9. Интегральная микросхема сброса с изменяемым пороговым напряжением
Таблица 3. Примеры микросхем
Устройство |
Характеристики |
Поддержка ISP |
Ценовой уровень |
MAX809(1) |
Фиксированное пороговое напряжение, фиксированная длительность импульса сброса |
Да |
А |
MAX811(1) |
Фиксированное пороговое напряжение, фиксированная длительность импульса сброса, микропотребление, ручной сброс |
Да |
А |
MAX821(1) |
Фиксированное пороговое напряжение, изменяемая длительность импульса сброса, микропотребление |
Да |
В |
DS1811(2) |
Фиксированное пороговое напряжение, фиксированная длительность импульса сброса |
Да |
В |
DS1813/18(2) |
Фиксированное пороговое напряжение, фиксированная длительность импульса сброса, контроль питания |
Нет |
В |
V6301(3) |
Фиксированное пороговое напряжение, фиксированная длительность импульса сброса, микропотребление, низкая цена |
Да |
С |
V6340(3) |
Фиксированное пороговое напряжение, импульс сброса не удлинняется, низкая цена |
Да |
С |
Замечания: