Багатоканальний таймер на atmega8 своїми руками. Таймер кухонний на ATMega8

Розглянемо, як зробити таймер своїми руками на мікроконтролері ATmega8, хоча код досить просто адаптувати і до МК AVR інших серій. Електронний таймер потрібний пристрій у всіх областях, де потрібне виконання певних дій через певний проміжок часу.

Управління таймера складається з чотирьох кнопок:

- Збільшення значення числа;

- Зменшення значення числа;

- Старт таймера;

- Скидання таймера.

Як індикатор спрацьовування таймера застосовується генератор звукової частоти динаміком. Генератор запускатиметься за допомогою транзисторного ключа Q5, який у свою чергу відкривається позитивним потенціалом, що надходить з порту PC2 мікроконтролера.

Спрощено таймер працює в такий спосіб. Кнопками "+" і "-" встановлюється необхідна кількість секунд; кнопкою "старт" запускається таймер. Коли таймер відрахує до нуля, на виведенні мікроконтролера PC2 ATmega8 з'явиться високий потенціал, який відкриє Q5. Далі транзисторний ключ запустить генератор і пролунає звук у динаміці. Скидання таймера здійснюється при натисканні кнопки скидання. Генератор звукової частоти зібраний на двох транзисторах Q6 і Q7 різних напівпровідникових структур. З принципом роботи та описом схеми подібних генераторів можна ознайомитися, перейшовши по .

Алгоритм роботи таймера на мікроконтролері

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

Для формування інтервалу часу за одну секунду ми скористаємося першим таймер-лічильником мікроконтролера ATmega8. Усі його налаштування ми визначимо у функцію start. Спочатку розділимо робочу частоту мікроконтролера 1000000 Гц на 64 та отримаємо нову частоту 15625 Гц. За це відповідають біт CS10, CS11 та CS12 регістра TCCR1B. Далі дозволяємо переривання за збігом і в регістр порівняння (старший і молодший) записуємо двійкове число рівне десятковому 15625. Потім обнулюємо лічильний регістр TCNT1 і встановлюємо в одиницю біт WGM12 регістра TCCR1B, що викликає скидання лічильного регістру при його захід регістри порівняння.

void start (void)

TCCR1B &= ~(1<

TCCR1B |= (1<

TIMSK | = (1<

OCR1AH ​​= 0b00111101;

OCR1AL = 0b000001001; // Регістр порівняння 15625

TCNT1 = 0;

TCCR1B |= (1<

Коли таймер відрахує рівно одну секунду – викликається переривання. У тілі функції переривання ми знижуватимемо значення змінної на одиницю. При досягненні нуля на другий вихід порту мікроконтролера C з'явиться високий потенціал, який відкриє транзисторний ключ і запустить генератор, в результаті чого ми почуємо звук в динаміці.

ISR (TIMER1_COMPA_vect)

Z-;

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

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

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

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

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

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

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

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

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

У конструкції застосований годинник реального часу PCF8583 у зв'язці з резервною годинниковою батареєю для роботи годинника при відсутності живлення. Як мозок пристрою застосований мікроконтролер Atmega8 з тактуванням 16MHz.
Живлення пристрій планувалося від зарядки телефону – тому на схемі немає стабілізатора 5В – є роз'єм живлення 5В та живлення 220В для БП.
Навантаження комутується реле – із зазначеним на схемі типом до 10А.
На схемі присутні 3 світлодіоди:
OPTIONS– спалахує при попаданні в налаштування годинника.
TIME- блимає коли таймер працює - не горить коли таймер деактивовано.
OUT– показує стан реле – увімкнено або вимкнено.
Кнопки:
SW1– кнопка H.
SW2– кнопка M.
Налаштування:
Налаштування годинника.
Щоб налаштувати годинник, потрібно затиснути кнопку SW1до загоряння світлодіода OPTIONS.
Крапка загоряється і не блимає – кнопкою SW1встановлюється годинник, а кнопкою SW2хвилини.


Щоб вийти з налаштувань, потрібно також потримати кнопку SW1поки не згасне світлодіод OPTIONS.
Налаштування таймера.
Для налаштування таймера потрібно в режимі відображення (черговий режим – основний) встановити кнопками SW1– час увімкнення навантаження, SW2– час вимкнення навантаження. Після набору таймера він сам перейде в режим відображення часу, якщо кнопки не будуть натиснуті протягом 2-3 секунд.


Деактивація таймера.
Для деактивації таймера потрібно затиснути та потримати кнопку SW2– пристрій увімкне навантаження і таймер не відключатиме його.
Схема.


На схемі застосовано нестандартний ISP роз'єм:
1 – VCC
2 – MOSI
3 – MISO
4 – SCK
5 – RESET
6 – GDN.

Друкарські плати.



На друкованій платі застосований індикатор із загальним анодом E40361 – але можна й інший зі схожою розпинкою та розмірами.

Небагато 3D-моделей.




Розповісти у:

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

Ось із цих міркувань я і зробив програму таймера, який відповідає наступним параметрам:
– компактна конструкція та проста схемотехніка;
- Оперативне кнопкове управління;
– при керуванні кнопками, дублювання дій на РКІ;
- Завдання часу з точністю до секунди;
- Діапазон відліку від 1 секунди до 24 годин;
- Функція старт, пауза;
– функція скидання відліку та виставлених значень часу;
– при досягненні значення 00.00.00 включається виконавчий пристрій;

Усі поставлені завдання було реалізовано у цьому проекте.Схема.

Опис режимів роботи таймера

Після включення таймера можна виставляти час, який нам потрібен. Призначення кнопок помітно на схемі. Після встановлення натискаєте кнопку СТАРТ-пауза відлік починається. Максимальний час, що виставляється 23.59.59.

Корекція часу відліку може бути здійснена в будь-який момент роботи таймера після подачі живлення на схему.

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

Якщо під час роботи таймера натиснути кнопку старт-ПАУЗА, таймер зупинить відлік, подвійне натискання кнопки СТАРТ-пауза призводить до відновлення зупиненого відліку.

Щоб вимкнути навантаження після включення, потрібно натиснути СКИДАННЯ, дані таймера встановляться 00.00.01 - навантаження вимкнутись. Або виставити новий період відліку та подвійне натискання кнопки СТАРТ-пауза.

Відображення на РКІ символів< ! >означає, що навантаження вимкнено (PD3) і при одноразовому натисканні кнопки СТАРТ почнеться зворотний відлік встановленого часу.

Кварц зовнішній 8 МГц, для точності рахунку.

Для програматора PonyProg і CodeVisionAVR потрібно прибрати всі галочки з налаштування тактового генератора.

Після прошивки програматором ф'юзів від зовнішнього кварцу, контролер читатиметься програматором лише з кварцом.

Увага! Що стосується FUSE-бітів. Це основне джерело помилок, що призводять до залочування контролера.
- CKSEL3...0 повинні бути НЕзапрограмовані.

У PonyProg та CodeVisionAVR стоять так:

РК має бути на базі контролера HD44780

16х1, для нього в архіві є прошивка V-1

або 8х2, в архіві прошивка V-2.
Прошивка V-3 для індикатора 8х2. Додано; задіяний ще один порт (висновок МК №27 (РС4)) на якому буде лог. одиниця поки йде рахунок, виконавчий пристрій вмикається після натискання кнопки "старт-пауза" та вимикається після закінчення відліку заданого часу.

Роботу схеми можна протестувати в proteus.

Якщо при симуляції проекту в proteus некоректно відображаються символи кирилиці на РКІ, то для правильного відображення кирилиці на РК індикаторі розпакувати бібліотеку LCDrus.zip (додана в архіві проекту) в папку models proteusа.
АРХІВ: Завантажити з сервера Розділ.