Reklama

Асинхронный режим работы Atmega16. Power-save режим.

Я решил написать программу для автоматического закрытия двери в блок общежития после 24:00 микроконтроллером.
Собственно столкнулся я огромным количеством подводных камней, и так как статей для того чтобы убрать камни я не нашел, а только методом научного тыка и статей на заграничных сайтах дошел до правильных действий, которые вам сейчас и опишу. Сами механизмы работы я описывать не буду. Ничего там сложного. Самое по моему мнению сложное для меня как новичка будет описано в этой статье.

Задание : Сделать асинхронные часы, которые будут работать от одной батарейки типа CR2032 при том что МК должен спать сладким сном и не кушать дорогую для нас силу тока, и когда наступает 0:00 микроконтроллер просыпался менял состояние ножки (подавал импульс единицу и ставил в ноль чтобы эл. замок провернулся) и в 6:00 утра обратно открывал, и ложился спать. Часы при этом работать должны были не отставая не на одну долисекунду. Представьте последствия этого если механизм будет работать годами, можно будет и утром не выйти на улицу.

Итак приступим. У меня есть МК Atmega16a-pu (собственно почти не отличается от Atmega16) и с помощью него вся схема будет управляться. Для того чтобы включить асинхронный режим нужен не только программный код, но и купленный на радиорынке Кварцевый резонатор на 32 768 Гц у меня он типа “спичка”, можете купить любой его тип. Нужно подключить его к пинам 28 и 29 по даташиту.
Так-же я обозначил пины 12 и 13, для большей стабильности к ним можно подключить кварц на 4 Мгц. И выставить фьюзы на внешней RC генератор, но это по вашему вкусу и надобности. Но то что схема станет стабильнее и правильнее это точно.

Ну и вроде-бы все что по технической части. Переходим к программе.

Такими действиями мы добились мизерного потребления электричества, по моим расчетам одна батарейка 220mA СR2032 будет работать один год без замены и подзарядки. Если подключить другой источник питания, например две пальчиковых батарейки, с 2500 мА то сами можете представить сколько схема будет работать :)

В моем коде программы все описано так, чтобы вы видели когда он вышел из сна. Сигнал подается не в 24:00 и 6:00, а так чтобы вам было все наглядно видно. Что-бы изменить программу и сделать ее полностью работоспособной нужно чуть-чуть подправить код. Но думаю вам это не составит труда.

Удачи ! Надеюсь я вам помог !

 
 
Использовались в работе: Atmel Studio 6.0, khazama avr programmer, программатор - usbasp.

Reklama