Часы_термометр_на_микроконтроллере_atmega8

Часы_термометр_на_микроконтроллере_atmega8

Часы термометр на микроконтроллере atmega8

Теги статьи: Добавить тег

Часы-термометр на микроконтроллере ATmega8.

Автор:
Опубликовано 01.01.1970

Всем привет. Часы на ATmega8 умеют делать следующие вещи:

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

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

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

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

1

2

3

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

4

5

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

6

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

7

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

8

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

9

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

A

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

b

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

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

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

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

Режим 0
нажать F
SET — вход в режим будильников.
F
SET — вход в режим таймера.
F
SET — вход в режим настроек.
F
Режим 0

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 .

Главные меню режима SETUP.
PORT

PLUS MINUS листать основные режимы меню SETUP.
SET — вход в выбранный режим, далее переход к следующему параметру.
Что бы выйти из выбранного режима нажать F.
ЧАСЫ
УSt SEE
SIGNAL
LIGHT
DS18B20
DEFAULT

Режим PORT.

Port

Установить/сбросить ножку будильника A..H. call a_h.

Режим часы.

Устанавливаются: минуты, часы, день недели, число.
Месяц.
Корректировка секунд. Нажатие MINUS сбрасывает секунды в ноль. Если секунд было больше 31, то минуты прибавляются на один.
Коррекция хода часов. Данная величина прибавляется или вычитается каждый час. Шаг 0,03 секунды. Max=0.87.

Режим Уст SEE.

В нулевом режиме часы показывают попеременно до 4 режимов, для которых выбирается один из десяти форматов отображения и время его показа.
P 1 выбор режима.
r выбор одного из десяти форматов отображения.
r0- 003 время, которое будет виден выбранный режим.
При времени равном 000 режим не отображается (выключен).
Форматы отображения.
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.

Датчики температуры DS18B20.
Режим показывает, как определилось подключение датчиков, и настраивает датчики на разрешение 12 бит.
on — датчик подключен 3 проводами;
PA.- паразитное питание, датчик подключен 2 проводами;
— — датчик отсутствует.
При выходе из этого режима датчики настраиваются на разрешение 12 бит.

Режим DEFAULT.

По нажатию SET: Установка по умолчанию основных переменных в программе, обнуление всех будильников. Запись этих значений в EEPROM.
Прочие режимы (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 — установка будильников.

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

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

В этой монтажке не установлены транзисторы на вывод таймера и будильника A..H.

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

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

А вот тут можно скачать весь проект целиком. Ну чтоб был.

Часы-термометр

Несложные часы-термометр на микроконтроллере ATtiny2313, с семисегментным индикатором. В конструкции использована микросхема часов реального времени DS1307 с резервным питанием от батареи CR2032 (3В), датчик температуры DS18B20.

На индикаторе периодически отображаются значения времени и температуры. Период отображения каждого значения равен 4 секундам. Время отображается в 24 часовом формате — ЧЧ.ММ, при этом старший не значащий ноль часов не отображается. Точка мигает в соответствии с ходом секунд.

Температура отображается с точностью до десятых градуса. Погрешность измерения температуры определяется погрешностью датчика температуры и составляет не больше ±0,5 градусов в диапазоне от -10 до 85 градусов Цельсия. В остальном диапазоне погрешность не хуже ±2 градусов.

Измерение температуры производится один раз в минуту. Считанное с датчика значение температуры сохраняется в памяти контроллера организованной для хранения 5 последних измерений. Для отображения на индикаторе последнее записанное в память значение температуры округляется до целых градусов Цельсия. При отображении температуры в крайнем правом разряде индикатора высвечивается символ градуса. Если за последние 5 минут температура внешнего датчика изменяется больше чем на 0,2 градуса, то символ градуса периодически сменяется символом повышения (стрелка вверх) или понижения (стрелка вниз) температуры.

Если в рабочем режиме нажать на кнопку "Меньше", то на индикаторе немедленно отображается время. Если нажать на кнопку "Больше", то температура. При этом одновременно с отображением температуры последнего измерения запускается новый процесс измерения температуры. Примерно через секунду считанное с датчика значение температуры отображается на индикаторе. Причем температура отображается с десятыми долями. В таком формате температура отображается до следующего измерения — примерно 1 минуту. Если датчик температуры отсутствует или читается с ошибкой, то на индикаторе постоянно отображается текущее значение времени.

Схема часов с индикатором с общим анодом

Схема часов с индикатором с общим катодом

В часах можно использовать как индикаторы с общим анодом, так и с общим катодом. Индикаторы работают в динамическом режиме, реализованном программно. Каждый разряд индикатора включается 100 раз в секунду и 3/4 общего времени работы индикатора находится в выключенном состоянии. В случае использования индикаторов с общим катодом в качестве верхних ключей для управления индикаторами используются транзисторы 2N3906, в качестве нижних 2N7000. Для индикаторов с общим анодом в качестве верхних ключей для управления индикаторами используются транзисторы 2N3906, в качестве нижних — транзисторная сборка ULN2803A.

Прошивка для контроллера (в архиве также имеется исходник и проект для Proteus) написана на AVR ассемблере. Особенность прошивки в том, что она без изменения может работать и в схеме с индикаторами с общим анодом и в схеме с индикаторами с общим катодом. При инициализации опрашивается уровень сигнала BT от кнопок и в зависимости от того низкий он или высокий выбирается алгоритм работы с кнопками и индикаторами. При программировании микроконтроллера необходимо запрограммировать следующие fuse-биты: CKSEL3, CKSEL1, CKSEL0, SUT0, BODLEVEL1, BODLEVEL0 (хотя два последних я не программировал, и все равно работает).

Для того, чтобы войти в режим установки времени, необходимо нажать и удерживать в нажатом состоянии кнопку "Ввод". Через 3 секунды часы перейдут в режим установки минут. При этом показания минут на индикаторе будут мигать. Кнопками "Меньше" и "Больше" можно установить новое значение времени. Кратковременное нажатие на кнопку "Меньше" или "Больше" изменяет значение времени на единицу, а удержание кнопки в нажатом состоянии непрерывно изменяет значение времени, соответственно в меньшую или большую сторону. При достижении необходимого значения времени кратковременным нажатием кнопки "Ввод" можно переключиться в режим установки часов. При этом показания часов будут мигать. Чтобы сохранить установленное значение времени, необходимо нажать и удерживать в нажатом состоянии кнопку "Ввод", пока не произойдет выход из режима установки времени. При установке нового значения времени секунды всегда обнуляются. Если в режиме установки времени в течении 10 секунд ни одна кнопка не будет нажата, то часы автоматически перейдут в рабочий режим. Установки нового значения времени при этом не произойдет.

Теперь о том, как это все реализовано практически

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

Индикатор состоит из двух двузначных семисегментных индикаторов с общим анодом FYD-8021BS-11. На плате помимо самих индикаторов размещены кнопки.

Микроконтроллер в соответствии с разводкой платы применен в SOIC корпусе. В качестве верхних ключей, опять же в соответствии с разводкой платы и возможной взаимозаменяемостью, применены транзисторы КТ361В. Хотя аналог 2N3906 — КТ361Г, но последних в наличии не оказалось. Вариант получился не самый лучший, но тем не менее рабочий. Из оригинальной схемы были исключены детали, стоящие до стабилизатора U3, и по ошибке конденсаторы С3 и С4.

При запуске устройство отказалось работать напрочь. Причина — отсутствие на выходе стабилизатора U3 какой-либо емкости вообще и, как следствие, большой уровень пульсаций по шине питания +5В. Опытным путем удалось выяснить, что конденсатор К10-17Б емкостью 1 мкФ вполне решает эту проблему (как раз тот самый С4, но с бОльшим номиналом; а лучше поставить оба). Ставим — устройство запустилось, но нет информации от микросхемы DS1307. Причина — от одной только батарейки CR2032 микросхема питаться не хочет (оказывается, даташиты тоже полезно иногда читать), поэтому восьмую ножку микросхемы подключаем к шине питания +5В. На этот раз все заработало как надо, и все довольны.

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

Часы, будильник, термометр (ATmega8).

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

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 должна быть со встроенным генератором. В зависимости от тока потребления возможно придется установить усилитель (транзисторный ключ).

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

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

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

7. Файл screen.png является скриншотом проекта на тот случай, если Proteus не установлен.

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

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

Читайте также:  Как_класть_плитку_на_пол_своими_руками
Ссылка на основную публикацию
Цена_квадратного_метра_утеплителя
Прайс-лист ВНИМАНИЕ - АКЦИЯ . УТЕПЛЕНИЕ ФАСАДОВ ПОД КЛЮЧ - ЦЕНА ОТ 2000 рублей за 1 м 2 1. Цена...
Цвет_ясень_это_какой_цвет_фото
Ясень: универсальный цвет мебели в доме и 70+ непередаваемо уютных интерьеров Просторная гостиная в стиле рустик с мебелью в оттенке...
Цвета_для_спальни_по_фен_шуй_фото
Спальня по фен-шуй - секреты обустройства Читать шутки относительно восточного учения обустройства жилища можно сколь угодно долго, но оказавшись в...
Цена_мансардной_крыши_под_ключ
Строительство мансарды под ключ Устройство мансардного этажа позволяет расширить жилую площадь и придать строению оригинальный внешний вид. Данный тип чердачного...
Adblock detector