Добро пожаловать!

Часы на ATmega8.

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

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

0 12-01 часы - минуты.
1 01-53 минуты - секунды.
2 3.20.09 день недели, число, месяц.
3 20.09 число, месяц.
4 20 СР. число, день недели.
5 d 23.7 температура дом. (DS1)
6 d 23.° температура дом. (DS1)
7 y-10.0 температура улица. (DS2)
8 y-10° температура улица. (DS2)
9 23.°C температура дом. (DS1)
A -10°C температура улица. (DS2)

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



будильник
Будильники.
включается ножка будильника на 1 минуту.
1_ 7.0 Выбирается номер будильника. Второе знакоместо - состояние будильника
"_" - выключен. "=" - включен. "о" - включен + отсрочка сигнала.
В этом режиме не видны единицы минут.
= 7.00 = - включен.
o 7.00 о - включен + отсрочка сигнала.

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

yst_r Установка режимов.
1.r0.03 Первая цифра - номер режима, вторая - формат отображения, далее его время 0..99 секунд. При времени = 0 режим выключен.

light Настройка яркости.
dEHЬ7 Дневная яркость
НОЧЬ3 Для ночи.
с 23 с такого то времени
по 07 по такое то.

ds18b20 Настройка датчиков DS18B20 на 12 битное разрешение.
d.1 PA Показывает состояние датчика "--" нет, "on" подключен 3 проводами, "РА" - 2 проводами (паразитное питание). При выходе из этого режима датчики настраиваются на 12 бит.

Сброс Сброс всех настроек и будильников. На случай страшных глюков.

Сема часов.

Сxема

На следующей схеме:
а) подключение индикаторов с общим катодом.
b) с общим анодом.
соответственно для разных индикаторов разные прошивки. Диоды нарисованы просто так, для наглядности.

подключение индикаторов

Схема подключения больших индикаторов с общим анодом. Для этой схемы используется прошивка с общим катодом. Для питания индикаторов можно использовать отдельное питание с повышенным напряжением. Транзисторы Q1-Q8 можно заменить микросхемой ULN2803. Транзисторы на включение цифры (Q10) следует выбирать исходя из максимального тока 8 сегментов.

Будильник в часах простой, при срабатывании, устанавливается в 1 ножка будильника, сделал так, потому что будильник не всем нужен, по большей части часы весят где то на стенке и показывают температуру :) так же пищать микроконтроллером как то не прикольно, можно например повесить на вывод музыкальную открытку..
При включенном будильнике:
при откл. отсрочке будильник выключается нажатием любой клавиши.
при вкл. отсрочке сигнала, будильник откл. кнопкой F, при нажатии кнопок SET PLUS MINUS сигнал отключается, но опять сработает примерно через 5 минут, если будильник не выключать, то после 7 раз срабатывания он откл. автоматически.
При активной отсрочке сигнала, в нулевом режиме, мигает точка последнего разряда.

Действия в нулевом режиме.
F - вход в настройки.
F - при активной отсрочке, отмена отсрочки.
MINUS - установка будильников.
PLUS - режим УСt. P.

Кнопка F - выход из режима.
Кнопка SET - вход в выбранный режим. Далее переход к следующему параметру (мигающему полю).

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

Программа написана в WinAVR - 20060421.
Микроконтроллер тактируется от внутреннего RC генератора 4 мег. CKSEL3..0 0011, значение остальных fuse бит оставлено по умолчанию.
Для ponyprog можно воспользоваться скриптом:

SELECTDEVICE ATMEGA8
CLEARBUFFER
LOAD-PROG clock5k.hex
PAUSE "Прошить мк?"
ERASE-ALL
WRITE&VERIFY-PROG
PAUSE "Прошить fuse биты?"
#Fuse High Byte: RSTDISBL WDTON SPIEN CKOPT EESAVE BOOTSZ1 BOOTSZ0 BOOTRST    0b11011001
#Fuse Low Byte: BODLEVEL BODEN SUT1 SUT0 CKSEL3 CKSEL2 CKSEL1 CKSEL0   0b11100011
# note that a 1 means programmed. (для понипрог инвертируем)
WRITE-FUSE 0x261C

исходник, hex (24 Kb). 15.03.08.

исходник, hex (24 Kb). 18.01.09.
Добавил третий датчик (PC2) и на него термостат (PC0), верхний и нижний порог.
0-нижний
1-верхний
2 Р0 - ручное, включить/выкл выв. термостата.
формат b - температура 3 датчика. "t 24.0"
Из косметики, добавил пропуск режима, как в часах на 9 индикаторах.
1. 0. 00. 0
№ Ф. врем. пропуск.
Если не охота вешать 3 датчик, то можно его вывод с мк (PC2) замкнуть на первый или второй датчик и термостат будет работать по нему.

исходник, hex (23 Kb). 02.03.09.
Изменены будильники, их число увеличено до 8 и добавлена установка дней недели.
1о СР. – первый будильник в среду включен.
1_ ЧГ. - первый будильник в четверг выключен.

Добавлен режим hour, для сигналов в начале каждого часа. Данные сигналы выключены в ночное время (ночная яркость).
Р b П
Р (Pin) - вывод РС1 каждый час устанавливается на 1 секунду.
b (будильник) вывод будильника устанавливается на 2 секунды.
П (пьезо) разрешить подавать сигнал, как от нажатия кнопки.

исходник, hex (23 Kb). 12.04.09. Добавлен автоматический переход на летние/зимние время.

исходник, hex (23 Kb). 10.03.2010.
Добавлен таймер. Максимальное время 9-59-59. Выход таймера - ножка будильника. Логика работы: как только включили таймер, на ножке будильника устанавливается высокий уровень напряжения, по истечении заданного времени на выводе устанавливается логический ноль.

исходник, hex (24 Kb). 19.04.2010.
Без перехода на летние зимние время.
Выход таймера - ножка PC2(25). Логика работы: как только включили таймер, на ножке PC2(25) устанавливается высокий уровень напряжения, по истечении заданного времени на выводе устанавливается логический ноль.
Удален 3 датчик. Термостат работает по первому датчику. (Вывод PC2(25) отдан таймеру.)
В этой версии добавлен прерывистый сигнал будильника.

Схема, исходник, hex (43 Kb). 10.03.2010.
Без перехода на летние зимние время.
Удален 3 датчик. Термостат работает по первому датчику. Вывод PC2(25) отдан таймеру.
Изменен таймер. Максимальное время 9-59-59.
Логика работы:
_00.00 включен/выключен; часы.минуты срабатывания.
0.00.00 часы.минуты.секунды. На сколько сработает.
При включенном выводе таймера, при входе в меню таймера отображается текущие время таймера, этот режим не имеет выхода в основной режим по времени.


Монтажная плата (35 Kb) , прислал Юрий.


Cхема часов для больших индикаторов, присланная Юрием.
Скачать монтажную плату, схему (128 Kb). Фото (570 Kb).

На главную - startcd.narod.ru



Hosted by uCoz