Здравствуйте!
2х9 Многофункциональные часы на ATmega16.
 

На базе проекта Дмитрия Мосина (startcd.narod.ru).
Доработка проекта напильником Александр Смарыго (sany_impuls @ pisem net).


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

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

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

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

Основной режим отображения (Режим 0)
"PLUS" - быстрый переход в режим установки отображения -->
"MINUS" - быстрый переход в режим установки будильников
"SET" - отображение запрограммированных строк режима
"F" - вход в основное меню
Основное меню
Режим установки будильников -->
(думаю надо убрать, так как получается дубляж)
Режим работы с таймером -->
Вход в меню настроек
Меню настроек
Настройка часов -->
Настройка термостатов -->
Управление портами нагрузки -->
(думаю надо перенести в "Основное меню", вместо будильников)
Программирование строк кнопки "SET" -->
Настройка дополнительных опций будильника -->
Установки яркости -->
Настройка частот ШИМ для биппера (пьезо) -->
Настройка обработчика температуры -->
Настройка обработчика давления -->
Инициализация ВСЕГО в установки по умолчанию. Обязательно нужно сделать при первом запуске, либо при сбоях EEPROM (пишут что бывает такое с EEPROM, ни разу не видел)
Быстрый переход - Режим установки отображения (вверх)
1я строка:
- 2й разряд - № режима (8 режимов по 4 для каждой строки)
- 3й разряд - № строки (1я строка - сегмент А, 2я - сегмент D)
- 4й разряд - № формата отображения, всего 8
- 7-9й разряд - длительность режима в секундах, значение "0" - режим отключен
2я строка - отображение выбранного формата
Основное меню - Режим установки будильников (вверх)
1я строка:
- 1й разряд - № будильника
- 2-3й разряд - статус (вкл./выкл.)
- 5-9й разряд - время включения
2я строка - установка дней недели срабатывания
Будильники управления нагрузкой делятся на 4 группы по 4 штуки, № группы в 4м разряде 1й строки (1я гр. - сегмент А, 2я - сегменты А+В и т.д.)
2я строка - отображение выбранного режима
Для будильников управления нагрузкой дополнительно устанавливается длительность (макс. 23-59-59). Главное чтобы длительность будильников oдной группы не накладывалась друг на друга!!! Защиты от "дурака" нет!!!
Основное меню - Режим работы с таймером (вверх)
2я строка:
- 1й разряд - статус таймера (вкл./выкл)
- далее длительность (макс. 99-59-59)
При старте таймера нога PIN_timer устанавливается в лог.1, при ручной остановке в лог.0, при окончании установленного времени в лог.0 плюс подается звуковой сигнал (в зависимости от настроек)
Меню настроек - Режим настройки часов (вверх)
Очередность перехода:
Сек->Мин->Час->День->Год->Месяц->Число
1я строка - сигнал каждый час правда только на пьезо (ШИМ)
2я строка - Коррекция хода часов. Данная величина прибавляется или вычитается каждый час. Шаг 0.008 секунды. (50 значений), максимальное значение 0.391. Пример расчета: при коррекции равной нулю измеряется уход часов, например за 5 дней часы убежали на 3 секунды, тогда коррекция ровна 3/(5*24)=0.025.
Меню настроек - Режим настройки термостатов (вверх)
1я строка 8й разряд - № термостата
2я строка - две температуры.
Алгоритм работы:1я температура задает порог включения, 2я порог отключения. Разность температур = гистерезис
(думаю ввести статус (вкл./выкл) для каждого т-стата. сейчас просто ставлю пороги выше реального для откл. т-стата)
Меню настроек - Режим управления портами нагрузки (вверх)
Ручное управление портами нагрузки для экстренного вмешательства
Меню настроек - Программирование строк кнопки "SET" (вверх)
1я строка:
- 4й разряд - № строки
- 8й разряд - № режима
2я строка - отображение выбранного режима
Меню настроек - Настройка дополнительных опций будильника (вверх)
1я строка - выбор режима работы будильника:
- bIP - биппер (пьезо)
- Pin - нога CALLS_OSN
- ОБА - использовать оба варианта
2я строка - отсрочка сигнала. При откл. отсрочке будильник выключается любой клавишей. При вкл. отсрочке сигнала будильник откл. кнопкой "SET", при нажатии других кнопок сигнал отключается, но сработает примерно через 5 минут.
При активной отсрочке сигнала, в основном режиме мигает точка последнего разряда 1й строки. Для отключения отсрочки, при отсутствующем сигнале, нужно перейти в режим "SET" и нажать PLUS или MINUS, мигающая точка исчезнет.
Меню настроек - Установки яркости (вверх)
1я строка - дневная яркость
2я строка - ночная яркость
(не рекомендую использовать самое маленькое значение, сделано для мигания селектора)
Ночное время "с" "до"
Меню настроек - Настройка частот ШИМ для биппера (пьезо) (вверх)
после входа в режим кнопками плюс/минус выбирается: budil. или button соответственно частота ШИМ для будильника и кнопок. Частота генерируется в режиме быстрой ШИМ (CTC mode). Верхний порог задается регистром OCR1A1. H004-старший байт L000-младший байт. Что бы отключить сигнал от нажатия кнопок - установить H000 L000. Если в режиме УSt Буd. выбрана опция PIN, для будильника ШИМ сигнал выводится не будет.
Меню настроек - Настройка обработчика температуры (вверх)
1я строка: Выбор отображения температуры.
- 1 - 07.5
- 2 - 7.5(гашение нуля.)
2я строка показывает, как определилось подключение датчиков:
- on - датчик подключен 3 проводами
- PA.- паразитное питание, датчик подключен 2 проводами
- --- датчик отсутствует
При выходе из этого режима датчики настраиваются на 12 бит.
Интервал измерения тенденции температуры (работает в режимах отображения одного датчика):
- "-" - нет изменений
- "сегмент В" - повышение
- "сегмент С" - понижение
гистерезис 0,2 градуса
Меню настроек - Настройка обработчика давления (вверх)
1я строка:
- 2-4й разряд - коэффициент коррекции (врать не буду, по моему "относительного нуля" т.е. "над уровнем моря")
- 6-8й разряд - тонкая коррекция показаний под опорное напряжение АЦП
2я строка - текущее давление с учетом коррекций
Интервал измерения тенденции давления:
- "-" - нет изменений
- "сегмент В" - повышение
- "сегмент С" - понижение
В основном режиме отображения замер происходит раз в 10 сек, в режиме настройки обработчика каждую секунду
!Плюшки!(вверх)
При срабатывании будильника (не нагрузки), в зависимости от текущего времени, часы желают вам доброго времени суток =)
1я строка:
- 3й разряд - № будильника
- далее текущее время
2я строка - приветствие бегущей строкой

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


схема

Из схемы можно исключить конденсаторы к кварцу, если запрограммировать fuse бит CKOPT.


Датчик температуры можно подключить двумя проводами, для этого нужно замкнуть GND c VDD, при этом датчик переключится в режим паразитного питания. Такой способ удобно применять для датчика, который расположен на улице. При таком подключении нужен резистор 100 ом для защиты порта, на схеме указан. По программе перед каждым циклом чтения температуры выполняется проверка на замыкание и на присутствие датчика. При любом криминале вывод мк. переводится в Z состояние, на индикаторе: ---.

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


При прошивке мк установите fuse-биты CKSEL3..0 в 0100 (внутренний RC генератор 8 Meg ). Cбросить основные переменные в программе


Исходник WinAVR-20060421.
Прошивки (анод/катод) + файлы протеуса.


Если после сборки данного устройства вы испытываете чувство удовлетворения от содеяного, то можете отблагодарить:
Дмитрия (автора) - за труды: яндекс кошелёк 41001377752875, вебмани R421483449411
ну и мне, Александру, накапать немного - за мой посильный вклад: вебмани R248399418405



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

 


Hosted by uCoz