|
|
  |
Борьба за микроамперы, ATmega324P, RTC |
|
|
|
Dec 14 2009, 21:25
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(ivainc1789 @ Dec 15 2009, 00:14)  Питается устройство от двух элементов AAA. Также на борту сс1100, 1wire, клава, пьезоизлучатель. Стабилизатор импульсный L6920 от STM. Пардон, а на кой черт там импульсный стабилизатор ? Ради индикатора и 1-wire ? Если ради индикатора, то TIC107 и забыть про проблему питания. Цитата В принципе я достиг неплохих показателей по потреблению, если выключить часы, то амперметр VC9808 показывает в спячке 38 мкА (верится с трудом, уж очень мало). Многовато, вообще-то, если речь идет о экономии. Впрочем, года три от алкалиновых AAA должно работать. Цитата Работа часов в течение недели в режиме пробуждения MCU 1раз/сек кажется достойной борьбы за использование режима 1раз/8сек или реже. Мне кажется оптимально 1раз/мин. Но... может это нецелесообразно? Достижимые цифры я уже привел, даже при 16-Hz прерывании это всего лишь пара uA (осциллятор жрет в разы больше). Но все это меньше упомянутых 38 uA. Для примера я приведу цифры потребления моих приборов - ~25 uA @3.6V, ATmega8/168 (для 168 - экономичнее) @3.69 MHz, CC1100 с ежесекундным опросом, частота прерываний переполнения таймера - 16 Hz (опрос датчиков). Радикального снижения энергопотребления (если нужно лишь сохранить ход часов) можно применением специализированных чипов RTC, освободив процессор от этого (и вообще чтобы просыпался лишь по клавиатуре).
Сообщение отредактировал rx3apf - Dec 14 2009, 21:27
|
|
|
|
|
Dec 15 2009, 16:37
|

Профессионал
    
Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807

|
Цитата Пардон, а на кой черт там импульсный стабилизатор ? То есть как? Вкл/выкл нагрузок просаживают питание! А нагрузки-то нехилые: что сс1100, что подсветка (LED) LCD. Как вы обходитесь без стабилизатора, если применяете сс1100??? У меня сделано так, что пока батарея свежая - стабилизатор выключен, как только при сильной нагрузке ее напряжение снизится до 2V стаб. включается и уже не откл. в sleep/wakeup. Далее, первое же прерывание от L6920(~LBO) (Vbat = 1.2V) и предупреждаем пользователя "батарея разряжена". Далее, первый же сброс по BOD 1v8 - и попадаем в замкнутый цикл "замените батарею". ИМХО такой подход обеспечит более длит работу от батарей чем вариант без стабилизатора... Цитата Вы можете при просыпании пересчитывать на ходу значения таймера и переинициализировать на прерывания 1с. Об этом то и речь - как это сделать получше. Только нужно учесть, что мало перейти при просыпании в режим 1с, нужно еще и правильно зайти при засыпании в режим 8с. Причем ждать пока окончатся текущие 8с не хотелось бы... Вообщем, наверное тут достаточно использовать вроде только прерывание OC2A, его должно хватить. Остальные процедуры коррекции можно расположить в основной программе. Щас попробую... Цитата Для уменьшения можно действительно поставить RTC внешний типа ds1307 к примеру. CR2032 на пару лет хватит. Это уже изврат в данном контексте. Уже есть две батарейки AAA и мощные потребители. Сейчас вот подумал: если сс1100 находится в PWD, то стоит ли его это состояние "обновлять" стробом при каждом пробуждении MCU когда нужны только часы (wakeup 1раз в 8 сек)? Для обработки строба сс1100 должен проснуться? Нет ли здесь ресурса для экономии? Но появляется риск, что, например, в грозу сс1100 может сбойнуть сам по себе, перейти в состояние IDLE и разрядить батарею...
|
|
|
|
|
Dec 15 2009, 19:50
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(ivainc1789 @ Dec 15 2009, 20:37)  Об этом то и речь - как это сделать получше. Только нужно учесть, что мало перейти при просыпании в режим 1с, нужно еще и правильно зайти при засыпании в режим 8с. Причем ждать пока окончатся текущие 8с не хотелось бы... Вообщем, наверное тут достаточно использовать вроде только прерывание OC2A, его должно хватить. Остальные процедуры коррекции можно расположить в основной программе. Щас попробую... Я немного попроще решение предложил. Представте, что помимо прерывания от RTC(Timer2) вы инициируете прерывание с периодом 1с (Timer0 к примеру). Оно работает только при просыпании и при просыпании пересчитываете текущее время. Именно по этому прерыванию вы и отображаете врямя на индикаторе. Просто при работе с внешними часами придётся городить что-то подобное. Я, например, DS перечитываю раз в минуту, и по нему корректирую внутренний таймер.
|
|
|
|
|
Dec 15 2009, 20:36
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(ivainc1789 @ Dec 15 2009, 19:37)  То есть как? Вкл/выкл нагрузок просаживают питание! А нагрузки-то нехилые: что сс1100, что подсветка (LED) LCD. Как вы обходитесь без стабилизатора, если применяете сс1100??? 1100 вместе с процессором при максимальной мощности на TX - до 30 mA, я использую литий-тиониловую батарею с довольно большим внутренним сопротивлением, но проблем по причине просадки не испытываю. Правда, супервизор на 2.9V оказался "великоват". А пара алкалиновых батарей - это уж по крайней мере 2.5V даже когда на грани издыхания, а у 1100 нижняя граница питания - 1.8V. Это с запасом. Вот подсветка LED - да, штука прожорливая. Если, конечно, использовать дешевые модули с желто-зеленой подсветкой... Цитата У меня сделано так, что пока батарея свежая - стабилизатор выключен, как только при сильной нагрузке ее напряжение снизится до 2V стаб. включается и уже не откл. в sleep/wakeup. Далее, первое же прерывание от L6920(~LBO) (Vbat = 1.2V) и предупреждаем пользователя "батарея разряжена". Далее, первый же сброс по BOD 1v8 - и попадаем в замкнутый цикл "замените батарею". ИМХО такой подход обеспечит более длит работу от батарей чем вариант без стабилизатора... Соглашусь, пожалуй. Решение вполне разумное. Цитата Об этом то и речь - как это сделать получше. Только нужно учесть, что мало перейти при просыпании в режим 1с, нужно еще и правильно зайти при засыпании в режим 8с. Причем ждать пока окончатся текущие 8с не хотелось бы... Вообщем, наверное тут достаточно использовать вроде только прерывание OC2A, его должно хватить. Остальные процедуры коррекции можно расположить в основной программе. Щас попробую... Проснувшись по внешнему событию, вполне можно вытащить содержимое таймера с разрешением 1/32 sec. А дальше никто не мешает вести отсчет по границе секунды (по компаратору таймера), не перенастраивая прескалер таймера (1024). И обновлять показание на индикаторе раз в секунду. Цитата Сейчас вот подумал: если сс1100 находится в PWD, то стоит ли его это состояние "обновлять" стробом при каждом пробуждении MCU когда нужны только часы (wakeup 1раз в 8 сек)? Для обработки строба сс1100 должен проснуться? Нет ли здесь ресурса для экономии? Для обработки строба - да, должен проснуться. Это довольно быстро (~40 uS), но если это не требуется прибору - то зачем ? Цитата Но появляется риск, что, например, в грозу сс1100 может сбойнуть сам по себе, перейти в состояние IDLE и разрядить батарею... Сам по себе - вряд ли. Но у меня с "высоковольтным" супервизором была проблема, когда просадка из-за передачи сбрасывала супервизор, а трансивер оставался на передаче, и батарейки были такие, что ЭДС оставалась слишком низкой для "реанимации". На всякий случай пришлось ввести ключ по питанию трансивера...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|