| Форум РадиоКот https://radiokot.ru/forum/ |
|
| Повышение энергоэффективности часов-термометра https://radiokot.ru/forum/viewtopic.php?f=20&t=47592 |
Страница 1 из 2 |
| Автор: | Stalker-U [ Вт май 03, 2011 02:37:20 ] |
| Заголовок сообщения: | Повышение энергоэффективности часов-термометра |
Доброго всем времени суток! Вот к Первому мая для похода в горы сделал себе девайс(часы-термометр). Собственно состоит он из Atmega16A(тактовый внутренний на 1 Мг, питание 5В), датчика ds18b20, часового кварца, кнопок и дисплея (2 строки по 8 символов) Питание от кроны через ЕН5А. На дисплей выводится температура с точностью до тысячных и время с точностью до секунд. Опрос датчика каждые 21 секунду. Программа следующей структупы: сначала выделение памяти, настройка исспользуемых портов, инициализация дисплея и настройка прерывания для Т2 в ассинхронном режиме(я думаю стандартно). Потом идёт основной цикл, где ничего не происходит, а просто съедаются такты до появления прерывания от таймера(в нём то и опрашиваются кнопки, датчик, считается время и выводится результат на экран) а потом опять в основной цикл. По дисплею: подсветку не подключал, обновляю раз в секунду питание 5В. Про датчик написал. Вопрос вот в чём: как снизить энергопотребление?!? Мой поход был расчитан на 3 суток, а девайс перестал показывать на исходе вторых(подогрев возле костра, под звуки гитары его временно реанимировал |
|
| Автор: | Danko [ Вт май 03, 2011 03:03:41 ] |
| Заголовок сообщения: | Re: Повышение энергоэффективности часов-термометра |
Stalker-U писал(а): ... Потом идёт основной цикл, где ничего не происходит, а просто съедаются такты до появления прерывания от таймера совершенно верно здесь МК нужно усыплять.Stalker-U писал(а): ...Мой поход был расчитан на 3 суток, а девайс перестал показывать на исходе вторых(подогрев возле костра, под звуки гитары его временно реанимировал да скорее всего именно показывать т.е. для МК питания хватало, а вот контрастность на LCD исчезла и индикатор продолжал показывать, только Вы ничего не видели.Stalker-U писал(а): ...подогрев возле костра, под звуки гитары его временно реанимировал все кварцы любят одну температуру так, что врать часы будут нехило.
|
|
| Автор: | pyzhman [ Вт май 03, 2011 06:37:49 ] |
| Заголовок сообщения: | Re: Повышение энергоэффективности часов-термометра |
Stalker-U писал(а): Питание от кроны через ЕН5А. Половина емкости батареи - на ветер. А проц надо усыплять. Если есть возможность, то и ЖКИ тушить, а зажигать "по требованию". |
|
| Автор: | uk8amk [ Вт май 03, 2011 09:32:22 ] |
| Заголовок сообщения: | Re: Повышение энергоэффективности часов-термометра |
1. Применить понижающий ШИМ преобразователь с большим КПД. 2. Использовать расширенные режимы сна, всякие power-down и standby. 3. Отключать всю лишнюю периферию в т.ч. ЖКИ и термодатчик. 4. Отображать время и температуру по запросу. Т.е. например нажали кнопку, МК проснулся, подал питание на ЖКИ, инициализировал его, подал питание на термодатчик, опросило его, вывел показания. Подождал несколько секунд и снова в сон. На месяц точно должно хватить. |
|
| Автор: | Jack_A [ Вт май 03, 2011 10:09:21 ] |
| Заголовок сообщения: | Re: Повышение энергоэффективности часов-термометра |
Stalker-U писал(а): На дисплей выводится температура с точностью до тысячных Уже смешно. Представляю очередь из метрологических центром за эим шедевром для использования его если не для государственного, то уж для рабочего эталона температуры. |
|
| Автор: | pyzhman [ Вт май 03, 2011 10:39:16 ] |
| Заголовок сообщения: | Re: Повышение энергоэффективности часов-термометра |
На вкус и цвет, уважаемый,... |
|
| Автор: | murzila [ Вт май 03, 2011 13:20:45 ] |
| Заголовок сообщения: | Re: Повышение энергоэффективности часов-термометра |
Питать можно и от более емкого источника (например, батареек АА) через step-up converter. |
|
| Автор: | Stalker-U [ Ср май 04, 2011 23:47:26 ] |
| Заголовок сообщения: | Re: Повышение энергоэффективности часов-термометра |
Вот дошли руки до энергосберегающего режима. Открыл даташит на Русском(т.к. буржуазный не знаю) и прочитал: за энергосбережение отвечает регистр MCUCR. Чтоб разрешить режим энергосбережения нужно выставить 6 бит(SE). Далее выставляю биты 5 и 4(вроде SM1 и SM0)-экономичный "Power-save" т.е.: Код: ldi r16,0b00111000 out MCUCR,r16 В главном цикле пишу Sleep и контроллер вообще не просыпается! подскажите, где ошибка? Вроде должен проснуться по прерыванию T2(переполнение). Таймер работает на часовом кварце. И ещё вопрос, как сконфигурировать порты перед засыпанием(мнение рунета при поиске разошлось)? |
|
| Автор: | O-LED [ Чт май 05, 2011 00:19:01 ] |
| Заголовок сообщения: | Re: Повышение энергоэффективности часов-термометра |
Stalker-U Цитата: В главном цикле пишу Sleep и контроллер вообще не просыпается! подскажите, где ошибка? а что ты хочешь увидеть? возможно контроллер просыпается, отрабатывает по кругу один цикл, и снова засыпает на секунду. Вот ты и не видишь ничего (хотя часы и тикают). Цитата: Питание от кроны через ЕН5А. кренка потребляет 8ма - я думаю она основной потребитель энергии. Цитата: Опрос датчика каждые 21 секунду. нафига так часто? для экономии можно измерять раз в 5-10мин. или вообще измерять по нажатию кнопки. Цитата: (подогрев возле костра, под звуки гитары его временно реанимировал Danko правильно сказал, скорее всего напряжение село и индикатор погас, а контроллер продолжал работать. я как то пробовал до какого напряжения мега16А сохраняет работоспособность. при 1,4 вольта - контроллеры(пробовал несколько) уверенно стартовали и работали при такте в 8мгц. У вас 1мгц, так что контроллер мог работать и при ещё меньшем напряжении.
|
|
| Автор: | Stalker-U [ Чт май 05, 2011 00:30:02 ] |
| Заголовок сообщения: | Re: Повышение энергоэффективности часов-термометра |
Если бы проснулся и обработал прерывание, то обновился бы экран, а он замер. Пробовал в протеусе, но думаю в железе то же самое. |
|
| Автор: | O-LED [ Чт май 05, 2011 00:39:46 ] |
| Заголовок сообщения: | Re: Повышение энергоэффективности часов-термометра |
а у тебя обновление экрана внутри Т2?? |
|
| Автор: | Stalker-U [ Чт май 05, 2011 00:43:34 ] |
| Заголовок сообщения: | Re: Повышение энергоэффективности часов-термометра |
Да. Там просчитывается время и каждую секунду обновляется экран. Вернее там стои rcall на обновление. |
|
| Автор: | O-LED [ Чт май 05, 2011 00:50:12 ] |
| Заголовок сообщения: | Re: Повышение энергоэффективности часов-термометра |
Вот так попробуй Код: MCUCR=0b01110000; // режим пониженного энергопотребления - Power Sawe
|
|
| Автор: | Stalker-U [ Чт май 05, 2011 00:54:58 ] |
| Заголовок сообщения: | Re: Повышение энергоэффективности часов-термометра |
Попробовал. Не работает. |
|
| Автор: | O-LED [ Чт май 05, 2011 01:12:49 ] |
| Заголовок сообщения: | Re: Повышение энергоэффективности часов-термометра |
хм. это строчка из моего рабочего устройства на мега16. Всё прекрасно засыпает в Power Sawe по команде Sleep, и просыпается по переполнению Т2
|
|
| Автор: | Stalker-U [ Чт май 05, 2011 01:22:35 ] |
| Заголовок сообщения: | Re: Повышение энергоэффективности часов-термометра |
У меня не хочет. Стал эксперементировать с режимами. если вписать MCUCR=0b11100000; (рехим ожидания), то всё работает. Но в этом режиме работает внутренний генератор-может в этом какая фишка? |
|
| Автор: | O-LED [ Чт май 05, 2011 01:30:41 ] |
| Заголовок сообщения: | Re: Повышение энергоэффективности часов-термометра |
Стесняюсь спросить, а у тебя точно Т2 работает в асинхронном режите и тактируется от отдельного часового кварца? и еще. какой у тебя ЖКИ? со своим контроллером? |
|
| Автор: | Stalker-U [ Чт май 05, 2011 01:37:53 ] |
| Заголовок сообщения: | Re: Повышение энергоэффективности часов-термометра |
Я уже собирал свои часы и они шли правильно, от часового кварца. Вот настройка таймера: Код: ; //настройка таймера Т2 для работы с часовым кварцем для Т2(32768Hz) ldi r16, 0b01000000 out timsk, r16; разрешаем прерывание по переполнению T2 (делим на 256) ldi r16, 0b00001000 out ASSR,r16; асинхронный режим у Т2 ldi r16, 0b00000100 out tccr2, r16; делитель для T2 на 1/64 (т.к. 32768Hz/64/256=2сек) Я исспользовал 2сек т.к. я в прерывании опрашиваю ещё и кнопки(чтоб быстрее переключались), а время пересчитываю раз в 2 прерывания, ну и обновляю тож раз в 2 прерывания. Но он не просыпается. ЖК на HD44780. пробовал поставить в начале прерывания включение диода, но он не включается. |
|
| Автор: | Stalker-U [ Чт май 05, 2011 09:14:32 ] |
| Заголовок сообщения: | Re: Повышение энергоэффективности часов-термометра |
Вот пример обрезанного кода. Здесь только необходимое для отладки, но не работает. Должен был загорется светодиод на порте С: Код: .include "D:\avr\avrasm\appnotes\m16def.inc" .cseg .org $0000 rjmp reset; переход на сброс .org $0008 rjmp sow_t2; переход на переполнение T2 reset: ; //настройка стека ldi r16,low(RamEnd); инициализация стека out SPL,r16 ldi r17,high(RamEnd) out SPH,r17 ; //настройка таймера Т2 для работы с часовым кварцем для Т2(32768Hz) ldi r16, 0b01000000 out timsk, r16; разрешаем прерывание по переполнению T2 (делим на 256) ldi r16, 0b00001000 out ASSR,r16; асинхронный режим у Т2 ldi r16, 0b00000100 out tccr2, r16; делитель для T2 на 1/64 (т.к. 32768Hz/64/256=2сек) ; //начало основного цикла nash: sei ldi r16,0b01110000 out MCUCR,r16 sleep rjmp nash; //конец основного цикла ; //прерывание Т2 sow_t2: ldi r16,0b11111111 out ddrc,r16 out portc,r16 reti; //конец прерывания таймера Пробовал в протеусе. И явно не звёзды виноваты. |
|
| Автор: | Леонид Иванович [ Чт май 05, 2011 09:52:36 ] |
| Заголовок сообщения: | Re: Повышение энергоэффективности часов-термометра |
Крона и ЕН5А делают бессмысленными разные sleep-ы. Если требуется длительная работа от батарей - то никаких стабилизаторов. Только прямое питание, например, от трех батареек размера AAA. |
|
| Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|


