Часы на Atmega8 и семисегментном индикаторе. Двухканальный термометр, часы на ATmega8, DS18B20, DS1307, LCD1602 Часы будильник термометр на atmega8

Компьютер 28.03.2024
Компьютер
  • 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.

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

1. Функции.

– часы, формат отображения времени 24-х часовый, часы:минуты.

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

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

– термометр. Диапазон измеряемой температуры -55,0 ÷ 125,0 о С. Если температура выше 99,9 или ниже -9,9 о С десятые доли градуса не отображаются.

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

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

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

– если в основном режиме нажать на кнопку PLUS , то на индикаторы выводится время, если нажать на MINUS – температура. При отпускании кнопок возобновляется автоматическая смена показаний.

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

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

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

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

Группа CLOC :

– минуты;

– часы;

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

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

Группа ALAr :

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

– минуты срабатывания будильника;

– часы срабатывания будильника.

Группа diSP :

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

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

– выбор эффекта анимации. В старших разрядах символы " EF ". Если установлен 0, смена информации будет проводиться без эффектов , если выбран автоматический режим (символ "А "), то будет производиться поочередная смена эффектов. Если выбран режим r , то смена эффектов будет производиться случайным образом.

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

Группа LiGH :

– включение автоматического управления яркостью индикатора. В старшим разряде символ " A ", в младших " On ", если автоматическое регулирование разрешено, " OF ", если яркость устанавливается вручную;

– минимальный порог яркости для автоматического режима. В старших разрядах символы " L _ ".

– максимальный порог яркости для автоматического режима. В старших разрядах символы " L ¯ ".

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

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

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

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

1. Для минимального и максимального порогов яркости диапазон установки 0 ÷ 99, но программой вводятся ограничения: минимальный не может быть больше либо равным максимальному и наоборот.

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

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

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

1. Если предполагается использовать функцию автоматической регулировки яркости индикатора, то вместо RV 1 устанавливается фоторезистор. А значение резистора R 17 следует подобрать для получения нужной чувствительности системы.

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

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


– будильник.
– термометр.

1. Функции.

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

PLUS MINUS

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

2.2. Нажатием на кнопку MENU SET

Группа CLOC :

– минуты;

– часы;

PLUS или MINUS );

с ".

Группа ALAr :

On OFF ", если запрещена;

Группа diSP :

tc

tt

EF , А r

P

Группа LiGH :

A ", в младших " On OF

L _ ".

L ¯ ".

L ".

2.4. Удержанием кнопок PLUS / MINUS

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

тема .

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

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

1. Функции.

– часы, формат отображения времени 24-х часовый, часы:минуты.

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

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

– термометр. Диапазон измеряемой температуры -55,0 ÷ 125,0 о С. Если температура выше 99,9 или ниже -9,9 о С десятые доли градуса не отображаются.

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

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

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

– если в основном режиме нажать на кнопку PLUS , то на индикаторы выводится время, если нажать на MINUS – температура. При отпускании кнопок возобновляется автоматическая смена показаний.

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

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

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

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

Группа CLOC :

– минуты;

– часы;

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

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

Группа ALAr :

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

– минуты срабатывания будильника;

– часы срабатывания будильника.

Группа diSP :

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

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

– выбор эффекта анимации. В старших разрядах символы " EF ". Если установлен 0, смена информации будет проводиться без эффектов , если выбран автоматический режим (символ "А "), то будет производиться поочередная смена эффектов. Если выбран режим r , то смена эффектов будет производиться случайным образом.

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

Группа LiGH :

– включение автоматического управления яркостью индикатора. В старшим разряде символ " A ", в младших " On ", если автоматическое регулирование разрешено, " OF ", если яркость устанавливается вручную;

– минимальный порог яркости для автоматического режима. В старших разрядах символы " L _ ".

– максимальный порог яркости для автоматического режима. В старших разрядах символы " L ¯ ".

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

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

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

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

1. Для минимального и максимального порогов яркости диапазон установки 0 ÷ 99, но программой вводятся ограничения: минимальный не может быть больше либо равным максимальному и наоборот.

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

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

Для обсуждения материалов статьи создана тема .

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

Часы на 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 автоматическим переходом на летние зимние время.
Без перехода на летние зимние время.
Схема для больших индикаторов. Прислал Алексей.

Привет всем! Хочу предложить Вашему вниманию простые часы-пропеллер, которые я собрал на контроллере Atmega8. Они изготовлены из доступных деталей и их легко повторить и изготовить. Единственное что - необходим программатор для прошивки контроллера часов и пульта управления.

Для основания часов был использован обычный вентилятор 120 мм (кулер). Вентиляторы для этих часов можно использовать любые, как с вращением по часовой стрелке, так и против, потому что пока собирал эти часы, программу немного переделал и сделал переключение отображения символов с пульта программно.
Схема самих часов довольно простая и собрана на микроконтроллере Atmega8, для синхронизации работы которого использован часовой кварц с частотой 32768 Гц.
Часы питаются от приёмной катушки, энергия на которую передаётся с генератора с передающей катушкой. Обе эти катушки составляют воздушный трансформатор.

Со схемой и конструкцией генератора, особых проблем не возникло, так как был использован генератор от плазменного шара.

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

При включении генератора в первый раз, ширину импульсов (скважность) ставим на минимум (ручка регулятора в верхнем по схеме положении, то есть 4 нога через резистор R7 притянута к 14, 15, 2 ноге TL-494). Частоту генератора крутим, пока не исчезнет писк, это примерно 18-20 Кгц (настройка на слух), а если есть чем измерить частоту, то настраиваем её соответственно в этих пределах.
На плате генератора ещё дополнительно собран регулятор напряжения на LM317, предназначенный для регулировки скорости вращения вентилятора.
На схеме его нет, не дорисовал
. Посмотрите демонстрационное видео работы часов.

Видео.

Плата самих часов крепится к основанию вентилятора. Я закрепил её двухсторонним скотчем.

Потом переделал немного схему часов с фоторезистора на инфракрасный фотодиод (рисунок ниже).
В передатчике вместо простого светодиода, у меня теперь стоит инфракрасный.
Резистор вместо 2к поставил 100к.


Ответственными моментами при изготовлении часов являются - изготовление воздушного трансформатора и центровка (вернее балансировка) платы часов на основании вентилятора.

К этим моментам отнеситесь серьёзнее.

Воздушный трансформатор.

В основу взял кулер 120 мм обычный с бронзовыми втулками. Плата часов к основанию приклеена на двусторонний скотч.
С кулера откусываем лопасти и обтачиваем и выравниваем напильником, наждачкой. Катушки сделаны на каркасе из кабельного канала. Придумал такую конструкцию не я, просто взял эту идею из инета. Для намотки трансформатора делается основа из кабельного канала. Через каждые 5 мм на бортиках канала делаем надрез и аккуратно сворачиваем его в круг, диаметр подберите так, чтоб он плотно сел на пластмассовое основание вентилятора.

Далее на оправку из кабельного канала, наматываем 100 витков эмалированного провода, диаметром 0.25.
Ток потребления собранного трансформатора, у меня получился 200 мА (это с довольно заметным зазором между катушками).
В целом вместе с двигателем вентилятора, ток потребления получается в районе 0.4-0.5А.
Первичную (передающую) катушку делаем также, но стараемся сделать минимальный зазор между катушками. Передающая катушка тоже содержит 100 витков провода 0.3 (можно тем-же 0.25).
На схеме у меня немного другие моточные данные этих катушек.

Плата часов.

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

Для балансировки всей платы, с другой её стороны приклеиваем термоклеем винт, диаметром 3-4 мм, накручивая с другой стороны на винт различные гайки - добиваемся минимальной вибрации.
Для проверки работоспособности платы часов - коротим фоторезистор отверткой, пинцетом, светодиоды при этом должны моргнуть.
Часы начинают работать при появлении 5В (логическая единица) на 5 ноге атмеги. То есть при освещении фоторезистора - на 5 ноге должно быть 5В,
Когда фоторезистор не освещён, на 5-й ноге атмеги должен быть логический 0 (около 0В), для этого подбираем резистор на землю с 5 ноги. На схеме стоит 2 кОм, у меня получилось 2.5 Ком.
Внизу на основании вентилятора приклеиваем светодиод так, чтобы при каждом обороте двигателя вентилятора - фоторезистор проходил как можно ближе к источнику света (светодиоду).

Пульт управления.

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

Схема пульта собрана на микроконтроллере ATTINY2313. На плате установлен сам МК с обвязкой и шесть кнопок, предназначенных для управления часами.

Корпус для пульта собирать не стал, поэтому только фото самой платы.

Информация по назначению кнопок пульта;
H+ и Н- настройка часов
М+ и М- настройка минут
R/L смена направления (для винтов крутящихся по часовой и против часовой)
font смена шрифта (тонкий, жирный и надпись сайт)
при надписи сайт кнопками H+ и H - регулируется ширина надписи.

В прикреплённом архиве содержатся все необходимые файлы для сборки часов;

Архив для статьи

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

Рекомендуем почитать

Наверх