Например TDA7294

Форум РадиоКот :: Просмотр темы - Повышение энергоэффективности часов-термометра
Форум РадиоКот
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 суток, а девайс перестал показывать на исходе вторых(подогрев возле костра, под звуки гитары его временно реанимировал :))) , притом время не сбивалось). У меня есть мысли: нужно что-то делать с питанием и исспользовать энергосберегающий режим. Может что-то ещё! Но это только мысли. Подскажите какой режим выбрать, и как оптимально запитать(схему пожалуйста по возможности)! И может ещё что нибудь можно сделать? Может дисплей какой- нибудь другой? Хотелось бы, что б девайс как и сейчас помещался в мыльницу. И ещё вопрос: иногда показывает температуру +28, а на улице намного ниже, но при следующем измерении всё нормально(глюк однако)- эт у датчиков бывает такое?(в протеусе не было).

Автор:  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 :dont_know:

Автор:  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/