Полная версия этой страницы:
AVR + Батарейка
DeXteR
Oct 20 2005, 07:19
Добрый день уважаемые СПЕЦИАЛИСТЫ
Поделитесь пожалуйста опытом по связыванью Атмеги32 и батарейки Необходимо чтоб при выключении питания ОЗУ AVR не сбрасывалось или сбрасывалось в случае повреждения (севшая батарейка)
Если несложно - пару ссылок с исходниками или дельных советов.
Счас собрал схему и написал прогу которая:
1. Мерит сигнал свидетельствующий о работе источника (12 вольтовая шина устроцства) с пом. АЦП и усыпляет контроллер если напряжение падает (источник выключаеться).
2. Атмега уходит в Павердаун и будиться вочдогом каждые 2 секунды.
3. По пробуждению мерим с пом АЦП тот же сигнал Если источник не включен - отдыжаем дальше.
Существуют проблеммы:
1. Иногда вместо того чтоб уснуть Атмега глючит или делает чтото нетак и потребление резко возрастает.
2. Потребление в слипе - 300 микроампер вместо обещаных <10
3. Предлагат выключать Вочдог - но как тогда будить Атмегу - ваще непонимаю ...
4. Взял Атмегу 32 Л У нее вроде пониже питание Запустил на 8 мегагерц. Стало постабильнее но всеравно иногда (раз на 1000-й) память повреждаеться
Думаю я чтото делаю нетак У кого есть опят - очень прошу - поделитесь
IgorKossak
Oct 20 2005, 07:43
Т. к. вотчдог работает на внутреннем генераторе 1 МГц, то и потребляет поэтому.
Я в своих проектах периодически пробуждаю МК либо по прерыванию от внешнего вотчдога (0,5 мкА), либо по прерыванию от асинхронного таймера, но для этого нужен внешний кварц 32768 Гц.
Кроме того, при засыпании желательно поотключать ненужную периферию:
- аналоговый компаратор (источник опорного потребляет);
- АЦП;
- привести выходы в такое состояние, чтобы не было утечки от обесточенной внешней периферии.
DeXteR
Oct 20 2005, 08:13
К сожалению внешний поставить немогу
Асинхронный таймер занят другим програмным делом =)
Нащет внешних ног и переферии.
Пробовал гасить все таимера АЦП UART и Ан. Комп.
Сберег 20-30 микроампер.
Порты отключаю так
clr Temp
out DDRA, Temp
out DDRB, Temp
out DDRC, Temp
out DDRD, Temp
Может нада ещо чтото
Хотелось бы скинуть потребление микроампер до 60 -80
Нащет схемы - 5 вольт и 3- х вольтовая батарейка развязаны диодами
Ресет микроконтроллра подвязан 3кОм к точке диодов
Больше к этой точке ничего неподвязано.
В датащите обещали <10 микроампер А я даже 100 немогу.
Может гдето бока ??
Да, асинхронный таймер жрёт меньше вочдогового. На м48 в пауэрдаун и внутреннем RC@8МГц, при пробуждении раз в сек и выполнении 1000 циклов, потребление было 7мкА@3-3,6В. Резко потребление растёт при 4В. 7мкА на 3В и около 70-80мка на 4,2В при прочих равных. Во как.
Цитата(DeXteR @ Oct 20 2005, 11:19)
Добрый день уважаемые СПЕЦИАЛИСТЫ
Поделитесь пожалуйста опытом по связыванью Атмеги32 и батарейки Необходимо чтоб при выключении питания ОЗУ AVR не сбрасывалось или сбрасывалось в случае повреждения (севшая батарейка)
Для этого используются микропроцессорные супервизоры. Функциональность их очень разнообразна. Посмотрите продукцию (супервизоры) фирмы Maxim, либо другие. Так же в качестве удержания микроконтроллера в рабочем состоянии, после выключения питания, можно использовать ионистор, перед которым включаете диод в разрыв по питанию. Если схема малопотребляющая, не более 1mA, а емкость ионистора 1F энергии его должно хватить не менее чем на четверо суток.
beer_warrior
Oct 20 2005, 08:36
Хм, а нельзя его просто будить внешним прерыванием, от появления
12В (просто через высокомный делитель)?
IgorKossak
Oct 20 2005, 08:50
Желательно также отключить fuse-биты:
OCDEN, JTAGEN и BODEN.
Цитата(DeXteR @ Oct 20 2005, 11:13)
Порты отключаю так
clr Temp
out DDRA, Temp
out DDRB, Temp
out DDRC, Temp
out DDRD, Temp
Другими словами, переключаете на вход? Тогда наступаете на мои
грабли. Проверить бы надо внимательно...
Цитата(avv @ Oct 20 2005, 11:52)
Цитата(DeXteR @ Oct 20 2005, 11:13)
Порты отключаю так
clr Temp
out DDRA, Temp
out DDRB, Temp
out DDRC, Temp
out DDRD, Temp
Другими словами, переключаете на вход? Тогда наступаете на мои
грабли. Проверить бы надо внимательно...
Совверно. Надо на выход. И пуллапы отключить, если включены.
DeXteR
Oct 20 2005, 09:24
Огромное спасибо за ссылку !!!
Счас попробую сконфигурить все что можно на выходы и заземлить ...
Всеже нащет входа в СлипМод
Остаеться проблемма
Надо бы подумать над програмной и аппаратной реализацией этой штуковины
Ато у АЦП бывают помехи всякие и все такое.
Очень нехочиться ставить всякие там Супервизоры и т. п.
Цитата(DeXteR @ Oct 20 2005, 12:24)
Счас попробую сконфигурить все что можно на выходы и заземлить ...
Ага, в "1" на выход и заземлить. ;О) "Никогда не повторяйте этот трюк дома"
Тут или одно, или другое. Вместе либо опасно, либо смысла нет. Да и ноги потом могут понадобиться.
DeXteR
Oct 21 2005, 08:27
Огромное спасибо всем за помощь
Перестал конфигурить выводы на вход
Оставил то что было по программе
Добился потребления в 200 микроампер
Есть одна проблемма Похоже последняя
Вопросс вот в чем
Стал я работать не по АЦП которое мериет 12 вольт а по аналоговому компаратору который сравнивает Батарейку и 5 вольт
Засыпать Атмега стала быстрее и вообще все стало намного лучше =)
Проблемма в том что когда контроллер усыпает первый раз он потребляет на 50 микроампер больше. А когда полсле сброса по ВД чуть меньше 200
Наверно чтото из переферии остаеться работать.
Никто незнает можно ли програмно вызвать в Атмеге сбросс идентичный аппаратному ( с обнулением всех регистров и Т. Д.)
Ато искать что мне занулить и занулять лень и тянет быстродействие
Цитата(DeXteR @ Oct 21 2005, 12:27)
Огромное спасибо всем за помощь
Перестал конфигурить выводы на вход
Оставил то что было по программе
Добился потребления в 200 микроампер
Есть одна проблемма Похоже последняя
Вопросс вот в чем
Стал я работать не по АЦП которое мериет 12 вольт а по аналоговому компаратору который сравнивает Батарейку и 5 вольт
Засыпать Атмега стала быстрее и вообще все стало намного лучше =)
Проблемма в том что когда контроллер усыпает первый раз он потребляет на 50 микроампер больше. А когда полсле сброса по ВД чуть меньше 200
Наверно чтото из переферии остаеться работать.
Никто незнает можно ли програмно вызвать в Атмеге сбросс идентичный аппаратному ( с обнулением всех регистров и Т. Д.)
Ато искать что мне занулить и занулять лень и тянет быстродействие
У ATmega32:
– Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, Standby
and Extended Standby.
Выберите самый преемлемый для вашего устройства.
DeXteR
Oct 21 2005, 09:51
To BVU
Давно выбрал режим PowerDown
Толька вот немогу добиться от него < 10 Микроампер как говориться в документации
Цитата(DeXteR @ Oct 20 2005, 10:19)
Добрый день уважаемые СПЕЦИАЛИСТЫ
Поделитесь пожалуйста опытом по связыванью Атмеги32 и батарейки Необходимо чтоб при выключении питания ОЗУ AVR не сбрасывалось или сбрасывалось в случае повреждения (севшая батарейка)
Если несложно - пару ссылок с исходниками или дельных советов.
Счас собрал схему и написал прогу которая:
1. Мерит сигнал свидетельствующий о работе источника (12 вольтовая шина устроцства) с пом. АЦП и усыпляет контроллер если напряжение падает (источник выключаеться).
2. Атмега уходит в Павердаун и будиться вочдогом каждые 2 секунды.
3. По пробуждению мерим с пом АЦП тот же сигнал Если источник не включен - отдыжаем дальше.
Существуют проблеммы:
1. Иногда вместо того чтоб уснуть Атмега глючит или делает чтото нетак и потребление резко возрастает.
2. Потребление в слипе - 300 микроампер вместо обещаных <10
3. Предлагат выключать Вочдог - но как тогда будить Атмегу - ваще непонимаю ...
4. Взял Атмегу 32 Л У нее вроде пониже питание Запустил на 8 мегагерц. Стало постабильнее но всеравно иногда (раз на 1000-й) память повреждаеться
Думаю я чтото делаю нетак У кого есть опят - очень прошу - поделитесь
A не забыл ли ты выключить опорник АЦП (ADMUX=0, ADCSR=0 - в такой последовательности, до этого ацп должен быть включен)?
Аналоговый компаратор (ACSR|=(1<<ACD))?
В досыл. Не забыл ли ты, что после сброса, в том числе и по WDT, включен аналоговый компаратор? И его надо выключить?
Ищи, где-то лажа, у меня прибор на M128 без основного питания от ионистора 1Ф 1-1.5 суток живет.
AndyBig
Oct 21 2005, 10:36
кстати, меньше 10 uA - это с выключенным WDT

.
DeXteR
Oct 21 2005, 11:01
Перед слипом выключаю и АЦП и Ан. Комп. и все таимера и уарт и все что толька знаю кроме Вочдога
Интересно а гденибудь можно взять инфу о том какие части Атмеги сколька потребляют
Батарейки теперь будет хватать на 1000 часов так что я доволен тем что получилось
Но вроде можно ещо круче и ненравиться мне этот баг с скачком потребления
Цитата(DeXteR @ Oct 21 2005, 13:51)
To BVU
Давно выбрал режим PowerDown
Толька вот немогу добиться от него < 10 Микроампер как говориться в документации
А кроме ATmega32, в схеме вашего устройства еще есть какие либо электронные компаненты? Может дополнительное токопотребление это их ток... А так же переведите все порты микроконтроллера в Z-состояние.
DeXteR
Oct 21 2005, 11:16
Да нет Неможет Там диодами все развязано
Соплей нет
Без контроллера (вынимал его из панельки) ток равен нулю
Меряно хорошим тестером на пределе 20 микроампер
GrayCat
Oct 21 2005, 11:37
Цитата(DeXteR @ Oct 21 2005, 13:16)
Без контроллера (вынимал его из панельки) ток равен нулю
Ток вполне может течь между ногой контроллера и подключенной к ней схемой. Например, у тебя нога МК включена как вход с подтяжкой в +, а снаружи к ней подключен чей-то выход, котрый при отрубании внешнего питания садится в "0". Так что отсутствие потребления
без контроллера -- еще не показатель.
DeXteR
Oct 21 2005, 11:51
Цитата(GrayCat @ Oct 21 2005, 14:37)
Цитата(DeXteR @ Oct 21 2005, 13:16)
Без контроллера (вынимал его из панельки) ток равен нулю
Ток вполне может течь между ногой контроллера и подключенной к ней схемой. Например, у тебя нога МК включена как вход с подтяжкой в +, а снаружи к ней подключен чей-то выход, котрый при отрубании внешнего питания садится в "0". Так что отсутствие потребления
без контроллера -- еще не показатель.
Вся поддтяжка (кроме ресета) подключена не к общей точке 2х диодов развязывающих питание 5 вольт и батарейку а непосредственно к 5 вольтам
Выводы конфигуряться как входы
GrayCat
Oct 21 2005, 13:22
Цитата(DeXteR @ Oct 21 2005, 13:51)
Вся поддтяжка (кроме ресета) подключена не к общей точке 2х диодов развязывающих питание 5 вольт и батарейку а непосредственно к 5 вольтам
Я имел в виду внутренние подтяжки -- те, что включаются при выдаче "1" в защелку порта, сконфигуренного на вход.
Цитата
Выводы конфигуряться как входы
Ну тогда надо следить, чтобы на них не было "плавающих" уровней, шумов и т.п. В частности, при указанном выше включении внешних подтяжек к "исчезающему" +5 возможно попадание "остаточного" напряжения от этих +5 на входы (например, от недоразрядившихся конденсаторов).
James D.
Mar 25 2006, 18:36
Цитата(IgorKossak @ Oct 20 2005, 11:50)

Желательно также отключить fuse-биты:
OCDEN, JTAGEN и BODEN.
Если отключить BODEN, как быть с контролем питающего напряжения?
И еще вопрос: в режиме сна, снижение питающего напряжения допускается до какой величины (если в обычном режиме МК запитан напряжением 5V)?
_Diman_
Mar 25 2006, 19:06
Если знать напряжение питания до стабилизатора 5в то можно просто поставить последовательно
шина питания-стабилитрон-резистор-gnd
стабилитрон 12в-4в=на 8в в итоге на R=4в
У меня работало прекрасно. А если не знать Uпит я делал так
http://startcd.narod.ru/clock/clock.html
James D.
Mar 26 2006, 07:47
У меня схема питается от 5V + батарея 6V (думаю последовательно с батареей поставить резистор, чтобы понизить напряжение до 5-5,5V) для питания МК в режиме сна. При питании от сетевого блока питания батарея будет подзаряжаться - ток заряда ограничивается тем же резюком.
Но вопрос мой остается в силе:
Если отключить BODEN, как быть с контролем питающего напряжения?
И еще вопрос: в режиме сна, снижение питающего напряжения допускается до какой величины (если в обычном режиме МК запитан напряжением 5V)? Можно ли питать от 4.5V батареи?
defunct
Mar 27 2006, 23:24
Цитата(James D. @ Mar 26 2006, 09:47)

У меня схема питается от 5V + батарея 6V (думаю последовательно с батареей поставить резистор, чтобы понизить напряжение до 5-5,5V) для питания МК в режиме сна.
Вполне нормально.
Цитата
При питании от сетевого блока питания батарея будет подзаряжаться - ток заряда ограничивается тем же резюком.
А вот здесь бред.. Как можно заряжать 6V батарею, от 5V источника питания? Батарея скорее будет разряжаться чем заряжаться..
Цитата
Если отключить BODEN, как быть с контролем питающего напряжения?
BODEN вообще-то не предназначен для контроля питающих напряжений. BODEN+BODLEVEL определяют при каком уровне напряжения требуется подать процессору МК сигнал "сброс". Напряжение питании можно контролировать с помощью АЦП, либо с помощью аналогового компаратора.
Цитата
И еще вопрос: в режиме сна, снижение питающего напряжения допускается до какой величины (если в обычном режиме МК запитан напряжением 5V)?
Взависимости от частоты тактирования и типа МК mega/tiny - нижняя планка питающего напряжения может достигать 2.7/1.8В соответственно.
Цитата
Можно ли питать от 4.5V батареи?
В вашем случае, с учетом того что требуется подзаряжать батарею источником 5V - то не то что можно,
нужно ставить батарею 4.5V.
James D.
Mar 30 2006, 14:15
Спасибо за подробные ответы!
Насчет "контроля напряжения" - я имел в виду именно определение при каком уровне напряжения требуется подать процессору МК сигнал "сброс".
Я выбрал режим "Power-save" - в схеме задействованы часы реального времени, которые будят МК (ATmega16) 1 раз в секунду + контроллер должен проснуться и более не засыпать, при приеме по TWI собственного адреса, дальше идет обычная работа. Так вот, при переводе МК в режим сна, по обоим проводам в линии TWI течет ток по 700 мкА, второй контроллер (мастер TWI) при этом полностью выключен. Различная конфигурация выводов порта перед переходом в сон ничего не дает. Как тут надо поступить?
И еще вопрос: правильно ли бит SE в MCUCR устанавливать в "1" перед командой SLEEP и очищать сразу же после пробуждения (как только начинает выполняться обработчик прерывания, вызвавший пробуждение)? После этого, если МК снова нужно перевести в режим сна, бит SE уст. в "1", и SLEEP.
defunct
Mar 30 2006, 16:30
Цитата(James D. @ Mar 30 2006, 16:15)

правильно ли бит SE в MCUCR устанавливать в "1" перед командой SLEEP и очищать сразу же после пробуждения (как только начинает выполняться обработчик прерывания, вызвавший пробуждение)? После этого, если МК снова нужно перевести в режим сна, бит SE уст. в "1", и SLEEP.
Достаточно один раз разрешить режим сна SE=1, и дальше пользоваться sleep. Постоянно сбрасывать и устанавливать SE нет надобности.
James D.
Mar 30 2006, 19:12
Понятно.
А как же быть с TWI?
James D.
Mar 31 2006, 16:12
Можно ли вообще из нескольких МК, находящихся в связке TWI, один оставлять в режиме пониженного энергопотребления, а остальные полностью отключать? Потому что по линии TWI продолжает течь ток (у меня - около 700 мкА). Надо ли как-то конфигурировать выводы TWI перед переходом в сон; может быть отключать этот интерфейс, ведь выводы порта PC0 и PC1 переходят в распоряжение TWI, и обычная настройка порта на них уже не действует? Но контроллер должен выходить из режима сна при обращении к нему по этому интерфейсу...
Как же быть?
James D.
Apr 2 2006, 15:13
С TWI разобрался - подтягивающие резюки на линии оставались под напряжением. Теперь потребляемый ток колеблется в районе 10-15 мкА, т.к. часы реального времени 1 раз в сек. пробуждают контроллер.
Но появилась новая непонятка.
Выставляю часы точно, даю МК заснуть, через несколько секунд бужу, и оказывается, что часы начали спешить на 1 сек. Еще раз даю МК заснуть, бужу, часы начинают спешить еще на 1 сек.
Из-за чего это может происходить?
James D.
Apr 2 2006, 15:55
Такое впечатление, что происходит лишнее прерывание Timer/Counter2. Без задержки.
James D.
Apr 4 2006, 06:52
Ничего не получается... Выяснил только, что сбой происходит при пробуждении МК (при приеме/передаче данных по TWI).
Может быть нарушается счетчик TCNT2, но как это проверить, и если это так, то как избежать сбоя?
В регистры TCNT2, OCR2 и TCCR2 в программе ничего не пишется и не читается. Просто происходит прерывание по совпадению (1 раз в сек), и увеличивается на 1сек счетчик часов/минут/секунд.
James D.
Apr 7 2006, 12:52
А может ли мне кто-нибудь подсказать, как сделать, чтобы при пропадании питающего напряжения (от блока питания) МК засыпал (и переходил на питание от батареи), а при появлении напряжения просыпался?
Сам я что-то никак не разберусь. Спасибо.
James D.
Apr 7 2006, 15:47
Всё, вроде сам разобрался. Спасибо.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.