![]() |
![]() |
||||||||||||
Простейший таймер на К1946ВМ014
Автор: ejsanyo Приветствую любителей простых вещей. А давайте сегодня сделаем какую-нибудь несложную, но полезную в хозяйстве самоделку? Например, таймер для подсветки растений. Ночи сейчас наступают долгие, тёмные, нужно помочь домашним цветам с фотосинтезом. Задача у прибора будет совсем не сложна:
При этом желательно, чтобы ход таймера не сбивался при кратковременном пропадании питания. Поначалу была мысль сделать таймер на "рассыпухе", но потом всё же решил для разнообразия приспособить контроллер для этого дела. К1946? Что это за новодел?! Действительно новодел, который разработан и выпускается, а последний год, довольно активно реализуется на интернет-площадках (крайне редкий случай в российской практике!) воронежским НИИ Электронной Техники. И тут секретов нет, как многие, наверняка уже знают, это копия старой доброй Atmega8535...или всё же не копия? Поскольку чип спроектирован с учётом возможностей российских заводов, разработчикам пришлось заменить flash-память на классическую eeprom. Это создало определённые нюансы при работе с этой самой памятью. Оставим в стороне холивары дискуссии на темы, вроде "насколько этот чип можно считать рассово-российским?", или "нужна ли своя AVR в современной России?" Лучше просто перечислим те самые нюансы, которые известны на сегодняшний день:
Если вы знаете ещё какие-либо отличия, особенности ВМ014, напишите об этом в комментариях. Вернёмся к вопросу, а почему этот контроллер был взят, вместо миллионов других, более простых чипов? Ну, во-первых, у автора он был в наличии. А во вторых, он имеет некоторые аппаратные особенности, облегчающие его применение в качестве таймера, и было интересно проверить, сохранились ли они в ВМ014. Timer/Counter2 и его асинхронный режим. А вот и те самые "аппаратные особенности": дополнительный режим работы Таймера 2, который есть во многих контроллерах серии Atmega. Он является хоть и не полноценным модулем часов, но, по крайней мере, удобной "заготовкой" для их создания. В этом режиме в недрах чипа активируется специальный маломощный генератор, и два вывода превращаются во входы для подключения стандартного "часового" кварцевого резонатора на 32768 Гц. Для Atmega8535 К1946ВМ014 это выводы 25 и 26. Генератор вполне самодостаточен, никаких внешних резисторов и даже конденсаторов для его работы подключать не требуется, только лишь кварц. Далее настраиваем предделитель таймера на 1024, выставляем пересчёт таймера на 31 и получаем прерывания с частотой 1 раз в секунду. Которые подсчитываем и сравниваем в основной программе. На всё остальное время мы имеем право перевести ядро контроллера в режим экономии энергии, причём разработчики на такой случай (когда остаётся работать только Таймер 2 и его прерывания) предусмотрели специальный режим под названием "Power-save Mode". Кстати, работа Таймера 2 в асинхронном режиме тоже имеет некоторые нюансы, описанные в соответствующем разделе Атмеловского даташита. В частности, после пробуждения ядра по прерыванию из экономичного режима, "засыпать" по новой разрешается только после прохождения синхронизации таймера и других блоков. Но в нашем случае необходимые задержки выполняются автоматически, если оставить во фьюзах время перезапуска ядра по умолчанию (64 мс). И вот, собственно, готовая схема. В качестве реле использовано реле RP3.52.9.024.00 от компании Релеон, но, понятное дело, вместо него можно использовать любое подходящее. Имеется 2 группы контактов на переключение. Одна группа включает розетку для ламп, Другую я вывел на корпус просто так, мало ли пригодится когда-нибудь... Обмотка рассчитана на 24В, поэтому в качестве питающего трансформатора я поставил ТПК-2 на номинальные 18В вторичной обмотки. 18 вольт после выпрямления в номинале как раз даёт примерно 24В. Но нужно иметь ввиду нюанс, свойственный таким маломощным трансформаторам: напряжение на их вторичной обмотке в режиме холостого хода, как правило, намного выше, чем при номинальной нагрузке! И поскольку режим, близкий к холостому ходу, в устройстве будет всё время, пока нагрузка не включена, придётся учитывать это при выборе компонентов, в частности, сглаживающего конденсатора C1! Так, с моим трансформатором, в режиме холостого хода напряжение на нём получилось около 32В. Если у вас будет другой трансформатор, значение может отличаться. По этой же причине стабилизатор на 5В собран на основе LM317L, поскольку она гарантированно выдерживает разность потенциалов до 40В, в отличие от какой-нибудь 78L05. Большая часть выводов контроллера, конечно же, не используется и просто посажена на землю. Разъём для зашивки контроллера XP1 имеет распиновку в соответствии со стандартной для программаторов серии ChipProg. На всякий случай, учитывая сказанное выше, на этот разъём заведён и тактовый вход контроллера. Помимо ключевого транзистора для управления реле, к контроллеру подключается также кнопка к XP2 и светодиод к XP4, чтобы была хоть какая-то индикация работы. Самое интересное здесь, это источник резервного питания, который подключается к пинам XP3. И это, как несложно догадаться, ионистор. В качестве такового я использовал батарею СКФ-2.5-5В4 от московской компании Феникс, но главное в данном случае, чтобы ионистор был рассчитан на напряжение не ниже 5В. R6 ограничивает ток зарядки ионистора. Максимальный измеренный ток потребления от ионистора у меня составил порядка 0,4 мА, и этот ток в основном определяется...сопротивлением R7, когда на выходе PB4 логическая единица! Чтобы долго не думать, возьмём первый попавшийся онлайн-калькулятор и посчитаем на нём, насколько нам хватит продержаться в таком режиме без розетки на заряде ионистора? Несмотря на множество допущений, не учитывающих, например, саморазряд ионистора, по крайней мере, часа на 3 мы рассчитывать можем. Потребление схемы можно значительно уменьшить, увеличив сопротивление R7, скажем, до 100 кОм (полностью его убирать не рекомендовал бы, поскольку в момент запуска выход контроллера находится в "Z-состоянии", и возможны паразитные утечки и наводки на затвор транзистора). Прошивка прибора сделана в CodeVision V2.04.4a и в скомпилированном состоянии занимает аж 524 байта памяти. Полагаю, вам не составит труда портировать код в ваш любимый AVRGCC при желании. Уставки на включение и выключение забиты жёстко в дефайнах кода (свет включается на 8 часов), поскольку для данного изделия я не увидел особой необходимости их перенастраивать в процессе работы. В обработчике прерываний зажигается светодиод и происходит отработка условий уставок. В основном цикле происходит опрос кнопки и очередной перевод чипа в спящий режим. Фьюзы я выставил следующим образом: lfuse = 0xA1, hfuse = 0xD9. Как видно, "brown-out детектор" включен и настроен на 2,7В для надёжности, хоть и потребление схемы от этого, возможно, возросло на несколько мкА. Порядок действий с таймером такой:
В конце, как обычно, выложен полный проект платы в Altium Designer 10. Плата, насколько возможно, была оптимизирована под грубый ЛУТ и корпус BOX-KA05 от Мастер Кит. Кондовый такой, советского образца, но на практике вполне удобный для различного рода самоделок.
В заключение, традиционно напомним, что часть схемы таймера находится под опасным напряжением 220 230В! Соблюдайте соответствующие меры предосторожности при сборке и наладке устройства!
Файлы: Все вопросы в Форум.
|
|
||||||||||||
![]() |
![]() |


![]() |
||||
|
|
||||









