Секундний таймер зворотного відліку на pic. Таймер – менше просто не буває

Хотілося зробити для всіх випадків життя, різних часових інтервалів на розсуд користувача. Вийшов такий варіант. Всього дві кнопки управління, і один перемикач-перемичка (джампер), два світлодіоди, що відображають режими установки і роботи таймера, а також звуковий контроль здійснюється п'єзокерамічним випромінювачем (за непотрібністю можна його і не підключати, контролюючи процес з миготіння світлодіода D2).

Одна кнопка (за схемою S1) - "SET" для встановлення всіх режимів, (все будемо робити однією кнопкою навіщо нам купа різних ручок, перемикачів?), а друга кнопка (за схемою S2) - "RESET", яка дозволить зупинити таймер у будь-якої миті привівши його в початковий стан і вимкнути реле.

Алгоритм роботи

Інтервал часу таймера формується від перемноження двох чисел: перше число (множинне) - це набраний інтервал у хвилинах від 1 до 255, а друге число (множник), яке при перемноженні на набране вами, перше число сформує заданий час таймера.

ПРИКЛАД

Допустимо треба набрати 1 годину = 60 хв., враховуючи, що мінімальний дискретний часовий інтервал таймера = 1 хвилині, ми можемо сформувати цей інтервал декількома варіантами, наприклад перше число = 10 хвилинним інтервалом, набираємо перше число утримуючи кнопку натиснутою щоб (10 разів мигнув світлодіод , або «пилікнув» зуммер пьезоизлучателя). Набравши потрібну кількість, відпускаємо кнопку, після цього таймер повторить «озвучить» набране вами число (мигнувши світлодіодом і «пилікнув» п'єзовипромінювачем) набрану кількість разів, коли D2 згасне, після цього починає уривчасто блимати другий світлодіод D1. Це означає, що набір першого числа прийнятий, але установка ще не завершена, треба продовжувати установку, (у цей момент, коли блимає D1, можна замкнути контакти джампера S3 і залишити їх у замкнутому положенні, цією дією ми запишемо наші налаштування в енергонезалежну пам'ять мікроконтролера EEPROM , які там будуть зберігатися до моменту запису іншого тимчасового інтервалу замість колишнього Це зручно, якщо вам потрібен один тимчасовий інтервал, яким Ви користуєтеся постійно. набирати щоразу знову) і збережеться в пам'яті при повному знеструмленні пристрою.

Друге число, яке треба вибрати, це - множник (набирається слідом після першого). Для формування години тоді повинен дорівнювати 6-ти (10хв. х 6 = 60 = 1 год).

Процедура набору, така ж, як і при установці першого числа, за допомогою утримування в натиснутому стані кнопки і рахуючи в такт з світлодіодом D2, що миготить, шість миготінь. Після чого кнопку відпустити, відразу ж у підтвердження, що число прийнято індикація D2 блимне і "пилікне" повторно 6 разів, далі світлодіод D1 знову почне переривчасто блимати. Це означає, що друге число прийнято, і таймер готовий до запуску.

СТАРТ

Щоб запустити таймер треба натиснути кнопку "SET" черговий 3-й раз утримуючи натиснутою близько секунди, D2 відразу блимне (озвучить) останній раз для нагадування кількість набраних вами інтервалів і слідом включається реле а режим індикації D1 переходить з миготливого в постійно запалений стан до закінчення циклу, D2 після чергового набраного інтервалу буде блимати і «пилікати» зуммером.

Стільки разів скільки ще залишилося до кінця набраного сумарного інтервалу часу? Після кожних (набраних у прикладі) 10 минулих хвилин світлодіод блимне стільки разів скільки залишилося інтервалів 10 хвилинних з 6-ти за спадною (5 разів потім 4 потім 3..2..1 і фініш). По закінченні всього годинного циклу реле вимкне навантаження. світлодіод D1 згасне, а D2 і зумер близько 8 секунд ще індикуватимуть, сповіщаючи, що цикл закінчено.

Для встановлення в таймері годинного інтервалу варіантів може бути безліч. Наприклад, набрати, перше число хвилина =1, а друге = 60. Тоді через кожну хвилину світлодіод буде блимати стільки разів, скільки хвилин залишилося до кінця, а можна і перше число зробити = 6-ти хвилинам, а друге = 10-ти, решта за аналогією з наведеними вище прикладами.

Такий універсальний варіантна різні уподобання, тому й назвав «УНІВЕРСАЛЬНИЙ». По суті Ви самі програмуєте таймер на власний розсуд, з бажаним варіантом і частотою індикації.

Якщо, використовуючи таймер, Вам необхідно щоразу набирати різні інтервали, перемичку S3 замикати не треба. А якщо таймер вам необхідний для одного постійного інтервалу часу, доцільно занести ці параметри один раз, записавши їх в пам'ять EEPROM мікроконтролера, який ви запрограмуєте самі, зробивши це так.

Встановити (замкнути перемичку джампера S3) треба ТІЛЬКИ в період після набору першого або другого числа, коли блимає D1 (ні раніше ні пізніше) , і залишивши її після цього замкненою постійно, при подальшій експлуатації, після цього, при кожному черговому запуску таймера, натискаючи кнопку «SET» відразу буде ввімкнеться реле, а зумер і D2 нагадає вам індикацією, скільки періодів тимчасових вам залишилося до кінця, коли реле відключиться.

Деталі

Намагався максимум простоти, мінімум деталей та органів налаштувань, вийшло: пара світлодіодів, зумер-п'єзовипромінювач, транзистор керуючий реле, реле на 12 вольт, яке включатиме навантаження, мікросхема-стабілізатор 7805, процесор ATtiny 13 (з будь-якими літерами цієї серії), так і все, мабуть.

Харчуватись схема буде від джерела 12 В. На макетці ганяю, все працює поки що ідеально. Якщо потрібно зробити гучнішим звук зумера, слід додати підсилювальний каскад на транзисторі, на кшталт того, як у схемі в попередній статті «кухонний таймер».

Програмування мікроконтролера

УВАГА!!!
Дуже важливий момент, я використав у мікроконтролері найменшу тактову частоту внутрішнього генератора це 128 кГц / 8 = 16 кГц, Це виставляється ф'юзами при програмуванні (фото я додаю, де треба поставити якісь галочки).

Чому вибрав таку частоту? Та ось захотілося мені))) а переписувати програму під іншу тактову частоту, потім влом було. Та й нема за що, все працює. Мене це влаштовує. Вам же вирішувати самим повторювати цю конструкцію, чи ні.

Так ось при використанні програматора з режимом ISP (типу STK 200 та ін), які найчастіше використовуються для програмування AVR мікроконтролерів.

Ваш мікроконтролер, запрограмується моєю прошивкою ОДИН РАЗ! Повторно перепрограмувати його можна буде лише застосувавши паралельне високовольтне програмування або повернувши, перезаписавши заводські налаштування (попереджаю заздалегідь!).

Повернути заводські установки можна за допомогою програматора з можливістю режиму H/V. (Високовольтного програмування). Я користуюсь якраз програматором з таким режимом у STK 500. Але якщо ви впевнені, що робитимете цей таймер, то перший раз прошивка «заллється» з будь-якого програматора, і проблем ніяких не буде.

Надалі планую викласти статтю зі схемою пристрою «реаніматор» АТtiny13 якраз для таких випадків. Яке дозволить вирішити цю проблему, перезаписавши в «заблокований» мікроконтролер, знову вихідні заводські налаштування без залучення програматорів із режимом паралельного високовольтного програмування.

ПРОШИВКИ

Викладаю 2 прошивки. Обидві робітники, але для різних цілей. Одна для заливки в протеусі (TIMER_PROTEUS.hex). Інша (TIMER_UNIVERSAL.hex) для програмування реального мікроконтролера програматором. Різниця між ними невелика, просто буде похибка точності таймера, якщо залити не ту прошивку.

Викладаю модель в Протеусі і прошивку для заливки в проект. Де в реальному режимі часу пристрій емітує роботу таймера так само, як це буде виглядати в реальному пристрої. У протеусі можна наочно побачити, як буде запрограмована в EEPROM перший осередок з адресою 0х00 для першого числа та з адресою 0х01 для числа множника.

Можливо, перш ніж приступити до складання пристрою, варто "пограти" з віртуальною моделлю цього "Універсального таймера" в Протеусі, щоб зрозуміти, як працює цей таймер (звук від зуммера так само емітується, можна прослухати зі звукової карти через колонки).

Картинка від Novelty Kitchen Timers


У радіоаматорській практиці часто необхідний таймер: засвітлення фоторезиста, витримка після накатки, після засвітки, варіння пельменів, яєць (у мене часто вся вода википає). Варіанти Google мені не підійшли. Мені захотілося зробити таймер, у якому було б 12 кнопок та 4-розрядний LED індикатор – я використав червоний, щоб не засвічувати фоторезист. Для даної конструкції я застосував давно лежачий у засіках мікроконтролер ATMEL AT89C2051. Живлення від одного акумулятора.

І ось конструкція готова. Зустрічайте: агресивний таймер радіоаматора з часом витримки від 1 секунди до 100 хвилин і кроком в 1 секунду або від 1 хвилини до 100 годин з кроком 1 хвилина.

Близько 10 років тому я розробив таймер на РКІ та дешевому мікроконтролері PIC12C508 (журнал Радіо № 5, 2004 р.). Усім він добрий, відтоді навіть батарейки не змінював. Хіба що підсвічування немає і кнопки в тій конструкції були тактові, заїдають. І вирішив не апгрейдить стару розробку, а зробити нову.

У програмі використовується переривання від TIMER0, який включений режим «2», тобто. режим 8-бітного таймера з автозавантаженням. У перериванні таймера, вимикаються катоди індикатора і надсилаються дані в послідовний порт, для виведення чергового розряду індикатора.
Після того, як передача буде закінчена, викликається переривання послідовного порту, в якому вмикається відповідний катод індикатора і опитування клавіатури.

Програма займає трохи більше одного кілобайта, написана серед KEIL. Вихідний текст та файл прошивки додається.

Якщо при включенні таймера тримати натиснутою кнопку "1", то таймер моргне двома крайніми точками і включиться в режим відліку часу в годинах та хвилинах. Тобто. встановлення часу 01.00 вже означатиме 1годину. Треба тільки враховувати, що при живленні від одного акумулятора, його заряду вистачить максимум на 10 годин, з цього випливає, що для тривалих витримок треба живити таймер або від потужніших акумуляторів або від мережі.

Оскільки моя конструкція була зібрана на кнопках з датчиками Холла, то схему підключення механічних кнопок та індикатора із загальним анодом я не перевіряв. Якщо виникнуть проблеми під час реалізації, пишіть, допоможу.

Фото зібраного таймера.


Задній вид з вирізом для акумулятора, даний корпус без батарейного відсіку.

Відео

Невелике відео, на ньому індикатор всіляко переморгує - це биття розгортки фотоапарата та динамічної індикації, це не видно, час оновлення індикатора 20 ms.
Відео з таким дозволом, тому що будинок загоном та Інтернет 3G.

Файли

Вихідний текст у середовищі KEIL та файл прошивки для індикаторів із загальним катодом та загальним анодом.
🕗 05/04/14 ⚖️ 7,15 Kb ⇣ 27 Доброго дня, читачу!Мене звуть Ігор, мені 45, я сибіряк і затятий електронник-аматор. Я вигадав, створив і утримую цей чудовий сайт з 2006 року.
Вже понад 10 років наш журнал існує лише за мої кошти.

Гарний! Халява скінчилася. Хочеш файли та корисні статті - допоможи мені!

Проста схема хорошого таймера на МК atmega8, зручна навігація в меню, рідкокристалічний LCD дисплей, годинник реального часу, мінімальна кількість деталей.

Дуже корисна річ, наприклад для теплиці, можна організувати полив або циркуляцію в гідропоніці, можна налаштувати годівниці та напувалки для тварин, птахів та багато ще для чого.


Серцем даного таймера є дуже популярний і не дорогий мікроконтролер Atmega8.

Звичайно для прошивки нам буде потрібний програматор, але якщо його немає, то можна обійтися всього 4 проводками підключеними до LPT порту за цією схемою.

Що нам знадобиться:

Схема таймеру

Як видно на ній відсутня схема живлення та виконавчий пристрій, це тому, що можливо ви вирішите використовувати виносний стабілізований БП, а також невідомо яке навантаження у плануєте підключати, тому кожен повинен сам вибрати виконавчий пристрій під свої технічні вимоги.

Як варіант виконавчого пристрою на тріаках, тиристорах та симисторах показані нижче.



Варіант із програми Sprint Layout.

Особливу увагу треба привертати при монтажі мікросхеми годинника і кварцового елемента. Довжина доріжок між ними повинна бути мінімальна, а краще використовувати мікро кварц з наручного годинника і припаяти його безпосередньо до ніжок МС годинника. Все вільне місце поруч із годинником заповнюємо міддю на корпус. Батарея необхідна для підтримання годинника в робочому стані під час відключення від мережі. Якщо з якоїсь причини ви не стали встановлювати цю батарейку, то посадіть плюсовий провід на корпус, інакше годинник просто не піде.

Мікроконтролер прошивається програматором або за допомогою простих 5 дротів.

Автор прошивки (завантажити — multitimer) постарався і не став змінювати фьюзи, що дуже полегшує, без проблем, прошивку для радіоаматора-початківця. Якщо МК ще не використовувався, новий із магазину, то просто заливаєте прошивку і все, але якщо вже є зміни у фьюзах, то треба виставити їх так CKSEL=0001. Решта просто і не потребує пояснення.

Для корпусу дуже зручно використовувати розпаювальні коробки з пластмаси, вони бувають різних розмірів та форм.

У прорізану ножем кришку, за допомогою термоклею з пістолета, закріплюємо LCD екран, прорізаємо отвори під кнопки управління і кнопку живлення.

Розміщуємо всі вузли всередині корпусу, постійно перевіряючи як закривається кришка, при необхідності переносимо або підгинаємо заважають.

На зібрану схему подаємо харчування, має з'явитися таке зображення.

Керування здійснюється чотирма кнопками. Меню складається з трьох пунктів, СLOСК - установка годин, RESET - скидання всіх встановлених таймерів, ТІМЕR - установка таймерів.

Спочатку заходимо (*) у меню годинника та виставляємо (>)(<)(#) точное время.


Підказка за кнопками управління в нижньому рядку дисплея, у кожному меню різне, тому описувати кнопки не потрібно.

Тепер все готове щоб коректно задавати тимчасові позиції таймера, після натискання ґрат, програма записується в постійну пам'ять МК.

Електронний таймер призначений для програмного керування побутовими приладами, освітленням та іншими приладами. Таймер можна використовувати для акваріумного та іншого обладнання. Використання таймера дозволить заощаджувати електроенергію, не знижуючи рівень комфорту.

Варіант 1

До складу цього пристрою входить три таймери. Таймер 1.1 і таймер 1.2 кожен з них дозволяє задавати час увімкнення та вимкнення навантаження, яке підключається до реле KV1. Таймер 2.1 і таймер 2.2 також дозволяє задавати час увімкнення та вимкнення навантаження, яке підключається до загального реле KV2. Таймер 3 є зворотним таймером, який керує навантаженням через KV3.

У цьому пристрої застосований мікроконтролер PIC16F628A. Елементи С1, С2, ZQ1 є зовнішніми частотними елементами внутрішнього тактового генератора. Для відображення інформації використовується індикатор HG1 із контролером KS0066. Індикатор може відображати два рядки на шістнадцять символів. Підстроювальним резистором R4 можна регулювати контрастність зображення. Допомогою SB1-SB5 відбувається керування режимами роботи та індикації, а також налаштування таймера. Через висновки 1,17,18 мікроконтролера відбувається управління транзисторами VT1-VT3 і далі реле KV1-KV3, які включають або вимикають навантаження. При використанні реле зі струмом котушки більше 100 мА, то транзистори КТ315В слід замінити на транзистори максимально допустимий струм колектора, яких більше струму котушки реле.

Режим відображення поточного часу.




Режим відображення таймера 1.1.

Якщо час увімкнення встановлено рівним часу вимкнення, то вважається таким, що не використовується.

Призначення клавіш та керування ними так само, як і в режимі поточного часу.

Таймери 1.2, 2.1 та 2.2 по індикації та управлінню аналогічні таймеру 1.1.

Режим відображення таймера 3

Таймер 3 – це зворотний таймер.

Для входу в режим налаштування таймера 3 необхідно натиснути та утримувати, до появи миготливого курсору, кнопку SB5. У режимі налаштування переміщення курсору здійснюється кнопками SB3 та SB4, а зміна значень кнопками SB1 та SB2. При відліку часу зупинити таймер 3 можна, натиснувши SB5. Після повторного натискання SB5 таймер продовжить відлік часу і коли його значення дорівнює нулю, навантаження вимкнеться.

Перемикання між режимами відображення здійснюється кнопками SB1 та SB2.

Біти конфігурації мікроконтролера.

Варіант 2

Режим відображення поточного часу

Призначення клавіш керування в цьому режимі:
SB5 - вхід/вихід у режим поточного часу.
SB3, SB4 – переміщення курсора ліворуч чи праворуч під час настройки.
SB1, SB2 – зменшення чи збільшення значень часу за настроювання.

Режим відображення таймера


Список радіоелементів

Позначення Тип Номінал Кількість ПриміткаМагазинМій блокнот
DD1 МК PIC 8-біт

PIC16F628A

1 У блокнот
HG1 LCD 16x2BC1602B21 У блокнот
ZQ1 Кварцовий резонатор4 МГц1 У блокнот
VD1-VD3 Діод

КД105Б

3 У блокнот
VT1-VT3 Біполярний транзистор

КТ315В

3 У блокнот
C1, C2 Конденсатор15...30 пФ2 У блокнот
R1, R3, R5 Резистор

1 ком

3 У блокнот
R2, R6 Резистор

Таймер на ATmega8 простий, невелика схема, на годинниковому кварці

Опис керування.

Якщо в роботі залишилося менше десяти годин, провідний нуль забирається, якщо залишилося менше години, на індикатор виводяться ММ:СС, при налаштуванні таймера формат часу ЧЧ:ММ.
Коли залишилося менше 20 секунд, сигнальний висновок (РС4) подаються імпульси з періодом 0,5с.
при натисканні кнопки SW4 під час роботи таймера повністю зупиняє рахунок, наступні натискання по черзі відновлюють попереднє налаштування або обнулюють таймер

Якщо Джампер Jmp1замкнений, то при появі живлення таймер продовжує відлік. Якщо розімкнуто, то відлік поки що харчування немає, не йде (пауза). При резервному живленні індикація відсутня. Крапка близько одиниць годинника блимає.
При натисканні на кнопку СКИДАННЯ таймер відключає навантаження, зупиняється і обнулюється, при ще одному натисканні відновлюється попереднє налаштування. Крапка блимає тільки коли йде рахунок.

точки індикатора:

Не блимають: таймер зупинено
- блимає середня - таймер запущений

Індикатори ОА.

Автор проекту VasylYE знайти його можна тутhttp://elektron.ucoz.ru/forum/