• Часы на ATmega8. Часы пропеллер на Atmega8 Схема часов на atmega8

    09.12.2023
    • 10 будильников на каждый день недели.
    • Отсрочка сигнала, если будильник не отключить, срабатывает примерно через 5 мин.
    • 8 будильников на отдельную ножку мк, вкл\откл нагрузки.
    • Два датчика температуры DS18B20 (дома и на улице).
    • Таймер 99 часов.
    • Яркость индикатора настраивается для дневного и ночного времени.
    • Изменяемый параметр плавно меняет яркость, как в АОН.
    • При пропадании 220 вольт потребление от батарей 40 микроампер.
    • Будильник срабатывает при любом режиме питания.
    • Часы могут последовательно показывать до 4 режимов.

    В часах есть возможность последовательно показывать 4 режима, для которых выбирается один из десяти форматов отображения и время его показа.

    Форматы отображения.
    0
    1

    Часы-минуты-секунды.

    2

    Часы-минуты.

    3

    Часы-минуты, День недели.

    4

    Число_месяц_день недели.

    5
    6
    7
    8
    9
    A

    b

    Температура 1 датчик, Температура 2 датчик.

    Кнопка F - выход из режима. Выбор 3 основных режимов.
    Кнопка SET - вход в выбранный режим. Далее переход к следующему параметру (мигающему полю).
    Кнопка PLUS - плюс/on. В режиме SETUP листать главные меню.
    Кнопка MINUS - минус/__(off). В режиме SETUP листать главные меню.

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

    Режим CALLS

    on/__-будильник вкл/откл.
    Дни недели, в которые сработает будильник (здесь в 6 и 7 день будильник выключен).
    Будильники A B C D E F G H вкл/откл. вывод call a_h мк. Будильник пригодится для управления нагрузкой. С его помощью вывод call a_h можно устанавливать на любое количество минут.
    ___-выключен, SET-ножка буд. A-H уст в 1, CLS уст в 0.
    n-сработает один раз, o-вкл. всегда.

    Режим SETUP.
    Для записи значений в EEPROM нужно все значения в подрежиме подтвердить нажатием SET.
    Пример: LIGHT ->SET-> L.ooooo ->SET-> НО4Ь L.2 ->SET-> LIGHT .

    Режим PORT.

    Режим часы.

    Режим Уст SEE.

    Форматы отображения.
    0

    Число, День недели, Часы-минуты.

    1

    Часы-минуты-секунды.

    2

    Часы-минуты.

    3

    Часы-минуты, День недели.

    4

    Число_месяц_день недели.

    5

    Температура 1 датчик, Температура 2 датчик.

    6

    Температура 1 датчик (датчик дома).

    7

    Температура 2 датчик (датчик на улице).

    8

    Температура 1 датчик, Часы-минуты.

    9

    Температура 2 датчик, Часы-минуты.

    A

    Температура 1 датчик, Температура 2 датчик.

    b

    Температура 1 датчик, Температура 2 датчик.

    В режимах где не указываются десятые градуса, точка определяет больше 0,5 гр..


    Режим УSt Буd. Установки будильника.

    Bip сигнал будильника - ШИМ.
    Pin сигнал будильника - уст в 1 вывод буд.
    Oba Шим и вывод.
    Отсрочка сигнала.
    При откл. отсрочке будильник выключается нажатием любой клавиши.
    При вкл. отсрочке сигнала будильник откл. кнопкой F, при нажатии кнопок SET PLUS MINUS сигнал отключается, но опять сработает примерно через 5 минут, если будильник не выключать, то после 8 раз срабатывания он откл. автоматически.
    При активной отсрочке сигнала, в нулевом режиме, мигает точка последнего разряда.
    Отключение отсрочки (при отсутствии сигнала). В режиме 0, нажатие SET вкл. этот режим. Наличие активной отсрочки индуцирует символ о на 4 знакоместе. Нажатие PLUS MINUS выключает отсрочку.

    Режим DS18B20.

    Режим DEFAULT.

    Прочие режимы (SETUP).
    LIGHT L ooooo - дневная яркость индикатора.
    НОЧЬ L2 - яркость с 23-00 до 6-00.
    SIGNAL после входа в режим кнопками плюс/минус выбирается:
    budil. S или button. S
    соответственно частота ШИМ для будильника и кнопок.
    При входе в эти подрежимы на индикаторе:
    H004.L000.
    Частота генерируется в режиме быстрой шим(CTC mode). Верхний порог задается регистром OCR1A1. H004-старший байт L000-младший байт.
    Что бы отключить сигнал от нажатия кнопок - установить H000 L000.
    Если в режиме УSt Буd.выбрана опция PIN, для будильника шим сигнал выводится не будет.

    Действия в нулевом режиме.

    F - выбор режима.
    SET - режим отмены отсрочки сигнала
    PLUS - режим Уст SEE.
    MINUS - установка будильников.

    Если будильник настроить на включение вывода, то можно использовать чип от музыкальной открытки.

    Программа написана на си в WinAvr.
    Скачать исходник, HEX и EEP файлы. clock_t.rar (18 Kb)

    При прошивке мк установите биты CKSEL3..0 в 0011 (внутренний RC генератор 4 Meg). Запрограммировать бит CKOPT (подключение внутренних конденсаторов). Затем прошить EEPROM, или сбросить основные переменные в программе таким образом - SETUP -> DEFAULT -> SET.

    Часы на ATmega8.

    • 10 будильников на каждый день недели.
    • Отсрочка сигнала, если будильник не отключить, срабатывает примерно через 5 мин.
    • Два будильника на отдельную ножку мк, вкл\откл нагрузки.
    • Два датчика температуры DS18B20 (дома и на улице).
    • Выбор отображения температуры (гашение не значащего нуля).
    • Таймер 99 часов.
    • Яркость индикатора настраивается для дневного и ночного времени.
    • Изменяемый параметр плавно меняет яркость.
    • При пропадании 220 вольт потребление от батарей меньше 40 микроампер.
    • Будильник срабатывает при любом режиме питания.
    • Часы могут показывать до 8 режимов.
    • В схеме можно использовать индикаторы с общим анодом или катодом.

    Часы могут показывать до 8 режимов, для которых выбирается один из пятнадцати форматов отображения, время его показа и количество раз, которое он будет пропущен.

    Форматы отображения.
    0

    Число, День недели, Часы-минуты.

    1

    Часы-минуты-секунды.

    2

    Часы-минуты.

    3

    Часы-минуты, День недели.

    4

    Число_месяц_день недели.

    5

    Число месяц год.

    6

    Число месяц год день недели.

    7
    8

    Температура 1 датчик (датчик дома).

    9

    Температура 2 датчик (датчик на улице).

    A

    Температура 1 датчик, Часы-минуты.

    b

    Температура 2 датчик, Часы-минуты.

    C

    Температура 1 датчик, Температура 2 датчик.

    d

    Температура 1 датчик, Температура 2 датчик.

    E

    День недели число месяц год.

    F

    Число месяц год.

    В режимах где не указываются десятые градуса, точка определяет больше 0,5 гр..

    Кнопка F — выход из режима. Выбор 3 основных режимов.
    Кнопка SET — вход в выбранный режим. Далее переход к следующему параметру (мигающему полю).
    Кнопка PLUS — плюс/on. В режиме SETUP листать главные меню.
    Кнопка MINUS — минус/__(off). В режиме SETUP листать главные меню.

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

    Режим CALLS

    Режим SETUP.
    Для записи значений в EEPROM нужно все значения в подрежиме подтвердить нажатием SET.
    Пример: LIGHT ->SET-> L.ooooo ->SET-> НО4Ь L.2 ->SET-> LIGHT .

    Режим PORT.

    Режим часы.

    Корректировка секунд. Нажатие MINUS сбрасывает секунды в ноль. Если секунд было больше 31, то минуты инкрементируются.
    Далее идет установка минут и часов.
    Устанавливаются:
    число, месяц, год и день недели.
    Коррекция хода часов. Данная величина прибавляется или вычитается каждый час. Шаг 0.008 секунды. (50 значений), максимальное значение 0.391. Пример расчета: при коррекции равной нулю измеряется уход часов, например за 5 дней часы убежали на 3 секунды, тогда коррекция ровна 3/(5*24)=0.025.

    Режим Уст SEE.

    В нулевом режиме часы показывают попеременно до 8 режимов, для которых выбирается один из десяти форматов отображения и время его показа (верхняя таблица) .
    1 выбор режима.
    r5 выбор одного из пятнадцати форматов отображения.
    с03 время в секундах, которое будет виден выбранный режим.
    n0 сколько раз пропускать (не показывать) режим. Пример:
    1 r0 c03n0
    2 r5 c03n0
    3 r4 c02n1
    r0; r5; r4; r0; r5; r4; r0; r5; r4; r0; r5; r4; ..
    r4; — виден, r4; — пропущен.
    При времени равном 00 режим выключен.

    Режим УSt Буd. Установки будильника.

    Bip сигнал будильника — ШИМ.
    Pin сигнал будильника — уст в 1 вывод буд.
    Oba Шим и вывод.
    Отсрочка сигнала.
    Задаётся число отсрочек сигнала.
    При откл. отсрочке (00) будильник выключается нажатием любой клавиши.
    При вкл. отсрочке сигнала будильник откл. кнопкой F, при нажатии кнопок SET PLUS MINUS сигнал отключается, но опять сработает примерно через 5 минут.
    При активной отсрочке сигнала, в нулевом режиме, мигает точка последнего разряда.
    Отключение отсрочки (при отсутствии сигнала). В режиме 0, нажатие SET вкл. этот режим. Наличие активной отсрочки индуцирует символ о на 4 знакоместе. Нажатие PLUS MINUS выключает отсрочку.

    Режим DS18B20.

    Режим Light.

    Режим Сигнал.

    Режим Сброс настроек.

    Действия в нулевом режиме.

    F — выбор режима.
    SET — режим отмены отсрочки сигнала
    PLUS — режим Уст SEE.
    MINUS — установка будильников.

    Каждый час, на одну секунду, устанавливается вывод PB2(16).

    Для экономии, в режиме питания от батарей запрещается отсрочка сигнала. Так же останавливается работа таймера.

    Исходник WinAVR-20060421. Прошивки анод, катод и прошивка для схемы с большими индикаторами. C автоматическим переходом на летние зимние время.
    Без перехода на летние зимние время.
    Схема для больших индикаторов. Прислал Алексей.

    Схема принципиальная электрическая

    В одном устройстве объединено две функции: собственно измерение температуры и времени (часы). Индикация производится попеременно, сменяясь через десять секунд. Для настройки часов используется две кнопки, аналогично простым китайским электронным часам: одна отвечает за выбор параметра, вторая за его изменение. Питается устройство от сети с помощью постоянного стабилизированного источника тока напряжением пять вольт (плата от зарядного устройства телефона).

    Датчиком температуры является микросхема DS18B20. Так как в устройстве «Часы-термометр» нет своей батареи, при пропадании питания естественно показания будут сбиваться. И что бы это не явилось причиной какого-нибудь опоздания человека на жизненно важные дела, имеется интересная «фишка» - при подаче питания вместо времени на дисплее будут отображаться прочерки, пока не нажмёшь одну из двух кнопок настройки.

    Корпусом самодельного измерителя температуры послужила подходящая коробочка от запонок. В неё была помещена сама плата часов-термометра и плата вытащенная из телефонного зарядника. Датчик DS18B20 сделан выносным и подсоединяется через разъём.

    Список необходимых деталей

    • Микроконтроллер Atmega8 - 1шт.
    • Кварц 32768 Гц - 1 шт.
    • Датчик температуры DS18B20 - 1шт.
    • Семи сегментный индикатор(4 - разряда) - 1 шт.
    • Резисторы SMD типоразмера 0805:
    • 620 Ом - 8шт.
    • 0 Ом (перемычка) - 1шт.
    • 4,7 кОм - 1шт.
    • Тактовые кнопки - 2 шт.

    Видео работы устройства на Ютуб-канале

    Данные часы с будильником основаны на микросхеме часов реального времени, что позволяет им работать от резервного источника питания при отсутствии основного. Заданное время будильника и режим работы хранится в энергонезависимой памяти микроконтроллера. Режим отображения - 24 часовой. Содержат имитацию «тикания» Индикация времени и режимов работы осуществляется посредством светодиодных индикаторов.

    Принцип работы

    Основой данных часов является микросхема DS1307 - часы реального времени, обменивающаяся информацией с управляющим контроллером посредством I2C интерфейса. Индикация времени осуществляется через 4 7-и сегментных индикатора, работающих в динамическом режиме. Ввод и корректировка времени осуществляется 5-ю кнопками: "+ минуты", "+ часы", «установка», «будильник» и «сброс». Звуковой сигнал будильника выводится через стандартный пьезоизлучатель и представляет из себя сигнал частотой 1кгц с секундными паузами.

    В качестве управляющего микроконтроллера был выбран Atmega48 по причине его доступности и наличии необходимой периферии на борту(даже с избытком). Часы реального времени DS1307 подключены к аппаратным выходам I2C управляющего микроконтроллера. Для работы DS1307 в автономном режиме(в случае отключения питания главного контроллера) используется литиевая батарейка резервного питания на 3V, ресурса которой хватит на несколько лет из-за низкого энергопотребления микросхемы.

    Рассмотрим подробнее управляющую программу:

    Программа работает по принципу флагово-таймерного автомата: все состояния и события представлены в виде соответствующих флагов, выполняющихся в прерываниях соответствующего таймера 1с, 1мс и 263.17мс. Программа использует 2 аппаратных таймера.

    Опрос часовой микросхемы и нажатие кнопок осуществляется с интервалом 263.17мс. Интервал 1мс служит для формирования звукового сигнала звонка, а 1с - для его модуляции. Секундный интервал также управляет миганием точки во 2-ом разряде индикатора, разделяющий часы и минуты и также служащим формированием «тиканья».
    Рассмотрим принципиальную схему часов.

    Обозначения и номиналы:
    S4 - Увеличение часов
    S3 - Увеличение минут
    S2 - Установка
    S1 - Включение будильника
    S5 - Сброс

    R6-R10 - 10k
    R1-R5 - 510ом

    Напряжение питания - 5 вольт.

    Настройка и использование

    Правильно собранные часы в дополнительной настройке не нуждаются. Необходимо лишь установить текущее время и будильник.
    Установка текущего времени осуществляется следующим образом:
    1) Кнопками S1 и S2 установить текущее время (точка между разрядами при этом не мигает)
    2) Запустить часы кнопкой S3
    Установка будильника:
    1) Нажать S3 и убедиться в том, что загорелась точка в 1-ом разряде
    2) Установить время звонка кнопками S1 и S2
    3) Включить звонок кнопкой S4
    Дополнительные возможности:
    Включить тиканье - удерживая S4 нажать S2 до появления характерных звуков. Отключается так-же.
    Отображение минут и секунд - удерживая S4 нажать S1. Если после этого нажать S3 произойдёт сброс секунд в 00. Возврат - та-же комбинация.

    Фото и видео часов

    Часы собраны в корпусе из под нерабочей «электроники».


    – часы с цифровой коррекцией точности, календарь
    – будильник с установкой по дням недели.
    – два термометра.
    – индикация на 8-и разрядный семисегментный индикатор. Анимированная смена индикации.
    – автоматическая регулировка яркости индикатора.

    Описание часов.

    1. Функции.

    – часы, формат отображения времени 24-х часовый, часы-минуты-секунды. Ежечасно срабатывает короткий звуковой сигнал («кукушка»), если разрешен в настройках. Сигнал не срабатывает в ночном режиме.

    – календарь, формат отображения ДД-ММ-ГГ.

    – цифровая коррекция точности. Возможна ежесуточная коррекция ±25 сек. Установленное значение в 1 час 0 минут 30 сек будет прибавлено/вычтено из текущего времени.

    – будильник. В заданное время в течении одной минуты раздаются короткие двойные сигналы. Отключить звук досрочно можно нажатием на любую из кнопок. Если звук не отключен, то через 5 минут будильник включится снова на одну минуту. Всего 5 повторов, дальше звук отключается до следующего срабатывания будильника. Когда работа будильника разрешена, при отображении времени в младшем разряде индицируется точка. Выбор дней недели для работы будильника.

    – термометр, два датчика. Диапазон измеряемых температур -55,0 ÷ 125,0 о С.

    – индикация. Поочередная.

    – настраиваемая анимация смены показаний.

    – использование энергонезависимой памяти микроконтроллера для сохранения настроек при отключении питания.

    – в основном режиме кнопкой SET производится ручное переключение отображаемой информации.

    – переключение между дневным и ночным режимами яркости в заданное время.

    – автоматическая регулировка яркости индикатора в зависимости от освещения.

    2. Настройка.

    2.1. При включении питания часы в основном режиме.

    2.2. Нажатием на кнопку MENU производится вход в режим настроек и выбора группы параметров для установки. В пределах группы выбор параметра для установки производится кнопкой SET . По-очереди доступны для установки:

    Группа CLOC :

    – секунды (обнуляются при нажатии на кнопки PLUS или MINUS );

    – минуты;

    – часы;

    – день недели.

    Группа dAtE :

    – год;

    – месяц;

    – дата.

    Группа Corr :

    – величина коррекции.

    Группа ALAr :

    – время срабатывания будильника, в старшем разряде символ A ;

    – глобальная активация будильника AL On - будильник активен, AL OFF - работа будильник запрещена;

    – активация будильника по дням недели. На индикаторе "On ", если работа будильника разрешена, "OFF ", если запрещена.

    Группа diSP :

    – время индикации температуры датчика "Улица". В старших разрядах символы "

    – время индикации температуры датчика "Дом". В старших разрядах символы "td ". Диапазон установки 0÷99 сек; Если установлен 0, то на индикаторы выводиться не будет.

    – время индикации текущего времени. В старших разрядах символы "tc ". Диапазон установки 0÷99 сек; Если установлен 0, то на индикаторы выводиться не будет.

    – время индикации даты. В старших разрядах символы "tdt ". Диапазон установки 0÷99 сек. Если установлен 0, то на индикаторы выводиться не будет.

    – выбор скорости анимации. В старшем разряде символ "SP ". Диапазон установки 0÷99. Одна единица соответствует примерно 2 мсек, чем выше величина, тем медленнее идет анимация.

    Группа LiGH :

    – максимальная яркость индикатора в дневном режиме. В старших разрядах DAУ . Диапазон установки 0÷99;

    – время включения дневного режима. В старшем разряде символ d .

    – максимальная яркость индикатора в ночном режиме. В старших разрядах niGH . Диапазон установки 0÷99;

    – время включения ночного режима. В старшем разряде символ n .

    Группа Sound :

    – включение режима «кукушка». В старших разрядах символы cuc , если ежечасный звуковой сигнал разрешен, то в младших разрядах On , если запрещен – OFF .

    2.3. Устанавливаемый параметр мигает.

    2.4. Удержанием кнопок PLUS /MINUS производится ускоренная установка параметра.

    3. Примечания.

    1. При установке параметров яркости информация на индикаторе отображается с выбранной величиной яркости.

    2.Необходимо соизмерять скорость анимации и время отображения информации. Если выбрана медленная анимация и малое время отображения, то может оказаться, что информация не успевает полностью обновиться до очередной смены.

    3. Если время индикации для всех параметров установлено 0, тогда на индикатор будет выведено время без анимации.

    4. В дневное время нажатие на кнопки озвучивается коротким сигналом.

    4. Особенности схемы.

    1. Датчик температуры может работать и по 2-х проводной схеме подключения. Если планируется измерять температуру в помещении, где установлены часы, то датчик все равно следует выносить за корпус часов.

    2. Пищалка BUZ1 должна быть со встроенным генератором. В зависимости от тока потребления возможно придется установить усилитель (транзисторный ключ).

    3. Индикатор с общим катодом. Если яркость окажется недостаточной, тогда следует установить дополнительные ключи (в архиве в папке Clock_ULN2803_v4).

    4. При прошивке МК следует установить FUSE для работы от внутреннего тактового генератора частотой 8 МГц.

    5. В проекте (это по сути уже схема) не показаны выводы питания микросхем.

    6. При изготовлении переменный резистор RV1 следует заменить фоторезистором. Резистор R18 подобрать по наиболее оптимальному изменению яркости индикатора при изменении освещенности.

    24.02.2015 Исправлена ошибка при смене индикации в варианте с ULN2803.

    16.03.2015 Исправлена нечеткость работы одного из эффектов анимации.

    28.03.2015 Небольшие изменения в индикации тире при отображении времени. Версии файлов 4.1

    Видео работы программы, от пользователя wolf2000 .

    Похожие статьи