Будильник, барометр, термометр (ATMEGA88, GY-65, DS18B20, LED)

Автор: Soir. Опубликовано в Часы

   time 0 Будильник на ATMEGA88 с функцией измерения атмосферного давления и температуры.

 Характеристики:

   - Часы-будильник на LED-индикаторах с общим анодом.
   - Термометр на DS18B20.
   - Измерение атмосферного давления на GY-65.
   - Анимированная смена индикации.
   - Возможность работы от автономного источника питания +3V.
   - Ручное/автоматическое управление яркостью индикатора.

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

Возникла необходимость обновить будильник в спальне. Для переделки использовались китайские часы VST-716. Из недостатков, присущих им: мерцание индикатора; цвет индикатора в моей модели был раздражающий красный; для ночи яркость индикатора слишком, для дня недостаточная; и самое главное, хотя и предусмотрена работа от батареек, но это только работа часов, чтобы не сбились, индикатор и будильник не работают. Ну и еще - скучные.

При вскрытии выяснил, что динамическая индикация идет с частотой сети (отсюда мерцания). Индикатор "урезанный", то есть в неиспользуемых сегментах светодиоды отсутствуют. Коммутация для динамики мягко говоря странная и заложена конструкцией индикатора. Пришел к выводу, что кроме корпуса и кнопок (после переделки) и использовать ничего не получится. Поэтому решил кардинально все переделать.

1. Функции.

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

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

1.3. Будильник. В заданное время (установка п. 2.2.1) в течении одной минуты раздаются короткие двойные сигналы. Отключить звук досрочно можно нажатием на кнопку ALARM. Когда работа будильника разрешена (переключатель сзади часов в положении On), при отображении времени в младшем разряде индицируется точка. Если индикатор был отключен, то при срабатывании будильника включается автоматическая регулировка яркости.

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

1.5. Барометр. Измерение атмосферного давления в мм рт. ст.

1.6. Индикация. Поочередная, смена индикации анимированная. Время индикации устанавливается в настройках п.2.2.3. Нажатием на кнопку MINUS производится ручной выбор выводимой информации. Нажатие на кнопку SET переводит часы в режим автоматической смены информации.

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

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

Выбор режима яркости производится в основном режиме кнопкой PLUS по кругу: индикатор отключен – автоматическая регулировка яркости – ручной режим регулировки яркости.

Пределы регулировки яркости в автоматическом режиме и уровень яркости в ручном режиме задаются в настройках п. 2.2.4.

1.9. Работа от автономного источника питания (две батарейки “AAA”).

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

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

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

2.2.1. Группа ALAr:

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

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

2.2.2. Группа CLOC:

– минуты;

– часы;

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

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

2.2.3. Группа diSP:

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

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

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

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

2.2.4. Группа LiGH:

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

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

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

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

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

2.5. Через ~10 сек от последнего нажатия на кнопки часы перейдут в основной режим работы, а новые параметры запишутся в энергонезависимую память.

3. Работа от автономного источника питания.

3.1 При отсутствии основного питания часы продолжают свою работу, если установлены батарейки.

3.2 При питании от батареек индикация отключается, будильник остается в работе.

3.3 При срабатывании будильника в течении минуты раздаются двойные звуковые сигналы, мигает индикатор с отображением времени. Отключение звука производится нажатием на кнопку ALARM или переключателем сзади часов в положение Off.

3.4 Кратковременно (~4 сек) включить индикацию можно нажав на кнопку ALARM. В этом режиме доступны просмотр и установка параметров.

3.5 При работе от батареек измерение температуры и давления не производится.

3.6 Яркость индикатора устанавливается в ручной режим.

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

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

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

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

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

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

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

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

4. Индикатор - 4 одноразрядных 0.8" SM610806B/8, общий анод, синий. Яркости более, чем достаточно.

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

6. Датчик давления GY-65.

датчик

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

8. Питаются часы от внешнего источника стабилизированного напряжения +5V, ток потребления около 30 мА. В моем случае используется зарядное устройство от мобильного телефона. Резервное питание – два элемента "AAA".

В архиве набор файлов: прошивка, проект в Proteus для симуляции, два файла Proteus, по которым строились печатки, описание, фото внешнего вида. Печатные платы в статью не выкладываю, так как при разработке допустил ряд ошибок и пришлось вносить некоторые изменения уже на плате. Кроме того, плата сделана именно под этот корпус. Если кому надо - пишите, выложу в форме. По случаю сфотографирую и внутреннее устройство часов.

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

-----

P.S. 09.12.2015

Обновление прошивки - добавлено несколько эффектов анимации.

Прошивки для индикатора с общим анодом и катодом.