Часы с термометром на микроконтроллере
- Подробности
- Категория: Микроконтроллеры
- Опубликовано 15.06.2016 13:34
- Автор: Admin
- Просмотров: 1790
Простые часы с термометром на микроконтроллере AVR ATtiny2313 с выводом информации на семисегментный индикатор. Часы используют для отсчета времени микросхему DS1307 — часы реального времени и источником резервного питания в 3 В. Температура измеряется при помощи датчика температуры DS18B20.
Текущее значение времени и температуры происходит поочередно сначала время а потом температура с нтервалом в 4 секунды. Формат отображения времени ЧЧ.ММ (часы,минуты). Первый ноль не отображается. О ходе отсчета времени сигнализирует мигающая точка.
Точность отображения температуры составляет десятые доли градуса. Погрешность в интевале температуры от -10 до 85 градусов составляет порядка +/- 0.5. В другом диапазоне точность уже +/- 2 градуса.
Температура замеряется 1 раз в минуту. Измеренное значение отправляется в память контроллера в которой может хранится пять послених измеренных значения. Измеренная температура округляется до целого значения. На дисплее имеются специальные символы повашения температуры (стрелка вверх) и понижения температуры (стрелка вниз), которые показывают как изменилась температура повисилась она или понизилась.
Если нажать на кнопке «меньше» то на дисплее сразу отобразится время. Если кнопку «больше» то отобразится температура последнего измеренного значения и начнется новый процесс измеерения температуры и новое значение отобразиться на дисплее в этом случае точность составит десятые доли и в таком формате будет отображатся в течении минуты. Если датчик температуры неисправен или отсутсвует подключение то будет оторажаться только время.
Схема часов с термометром на микроконтроллере
Представленные схемы отличаются только общим выводом индикатора анод и катод. Индикаторы работают в динамической индикации. Динамическая индикация раелизована программно. Каждый семисегментный индикатор включается с интервалом 100 раз за 1 секунду. остальное время выключен.
Прошивка для микроконтроллера
В архиве имеются файлы Proteus и сама прошивка написана на ассемблере. Прошивка может работать для двух вышеприведенных схем, для схемы с индикатором с общим катодом и схемы индикатора с общим анодом. При прошивке микроконтроллера важно выствыить fuse-биты: CKSEL3, CKSEL1, CKSEL0, SUT0, BODLEVEL1, BODLEVEL0.
Скачать: прошивка микроконтроллера
Вход в режим усановки времени осуществляется нажатием и удерживанием кнопки «ввод». После того как пройдет 3 секунды начнется режим установки минут. Для того чтобы устаноыить новое значение времени нужно использовать кнопки «больше» и «менеше». Для того чтобы перейти в режим установки часов необходимо нажать на кнопку «ввод». Для того чтобы сохранить выбранное время нужно также нажать и удерживать кнопку «ввод» после этого программа выйдет из режима установки времени. Если после этих всех операций в течении 10 секунд не будет нажата какия нибудь кнопка то часы перейдут в рабочее состояние и новое значение времени не будет сохраненно.
Для устройства необходимы две печатные платы из одностороннего стеклотекстолита который имеет размеры 50 на 100 мм, на одной плате устанавливаются индикатор с кнопками, а на другой сами часы. Равзодка платы в формате SpringLayout.
Индикатор или дисплей собран на двух семисегментных индикаторах FYD-8021BS-11, каждый имеет 2 разряда и имеют общий анод.
Вместо указаных на схеме вернхних включающих транзисторов платы можно использовать другие к примеру KT361B.
Исходник статьи: Часы-термометр
- < Назад
- Вперёд >
Добавить комментарий
Часы-календарь-термометр на ATMega8 — Меандр — занимательная электроника
Хочу представить еще одни часы с термометром на микроконтроллере. В основе устройства лежит микроконтроллер фирмы ATMEL серии AVR — ATMega8. Микроконтроллер работает с микросхемой реального времени DS1307 и цифровым датчиком температуры DS18B20.
Микросхема DS1307 представляет собой экономичные часы реального времени с последовательным интерфейсом, которая содержит часы-календарь с представлением информации в двоично-десятичном коде и 56 байт энергонезависимого статического ОЗУ. Адрес и данные передаются по двунаправленной двухпроводной последовательной шине. Информация о реальном времени и календаре представляется в секундах минутах, часах, дне, дате, месяце и годе. Если текущий месяц содержит менее 31 дня, то микросхема автоматически определит количество дней в месяце с учетом высокосности текущего года. Часы работают или в 24-часовом или 12-часовом формате с индикатором AM/PM (до полудня/ после полудня). DS1307 содержит встроенную схему контроля уровня основного источника питания и при его недопустимом значении автоматически переключается к резервной батареи.
Датчик DS18B20 — цифровой термометр с программируемым разрешением, от 9 до 12–bit, которое может сохраняться в EEPROM памяти прибора. DS18B20 обменивается данными по 1-Wire шине и при этом может быть как единственным устройством на линии, так и работать в группе. Все процессы на шине управляются центральным микропроцессором.
Диапазон измерений от –55°C до +125°C и точностью 0.5°C в диапазоне от –10°C до +85°C. В дополнение, DS18B20 может питаться напряжением линии данных (“parasite power”), при отсутствии внешнего источника напряжения.
Индикация реализована на семисегментном LED-дисплее с общим анодом. Принципиальная схема часов-термометра показана на рисунке.
Часы-термометр. Принципиальная схема
При кратковременном нажатии кнопки S1 начинают поочередно мигать разряды для осуществления настройки времени и даты. Для этого используем кнопки S2 и S3 («+» и «-» соответственно). При нажатии кнопки S3 на табло высвечивается температура окружающей среды.
Часы-термометр. Индикация времени
Таким образом в нормальном режиме прибор отображает поочередно время и дату. А при нажатии на кнопку S3 показывает температуру. В начале каждого часа часы подают кратковременный звуковой сигнал.
Точность часов в основном зависит от примененного кварца. У меня погрешность времени составляет около двух секунд в месяц (спешат).
Прибор «Часы-календарь-термометр на ATMega8» собран на двух печатных платах (см. фото).
В дальнейшем прибор будет усовершенствован, будут добавлены функции будильника и таймера.
Фьюзы для прошивки микроконтроллера:
Архив к проекту (печатные платы, прошивка, исходник):
Исходник [/hidepost]
Внимание! Есть научная работа по этому проекту написанная на 25 страниц (на украинском языке). Оформление идеально подходит под дипломную или курсовую работу. Скачать содержание.
Связь с автором
Часы, будильник, термометр на ATmega8, DS1307, DS18B20
Более четырех лет назад я собрал простые часы на ATmega8. Все это время они исправно работали и приносили пользу, особенно в темнее время суток. Но мне показалось, что такой микроконтроллер, как ATmega8 может делать намного больше, чем просто подсчитывать колебания кварца и выводить их в виде времени.
Захотел, чтобы новые часы информировали не только о текущем времени, но и о температуре в помещении, где они находятся. Задался поиском подобных схем в интернете, отталкиваясь от уже имеющихся комплектующих, а именно: микроконтроллер ATmega8 и светодиодный индикатор с общим катодом. Отличное решение нашлось на этой странице, которое предоставил пользователь Soir, за что ему большая благодарность.
Схема часов не сложная, плюс, я сделал в ней некоторые упрощения. Что получилось, я привожу ниже. Оригинальная и упрощенная схема, разведенная в Proteus, имеется в АРХИВЕ. В данном архиве приведены также прошивки ATmega8, дающие разный функционал часам, пример выставления фьюзов, полная инструкция по настройке часов и их возможностях, а так же разведенная печатная плата в формате *.lay6. Печатная плата разводилась мной под уже имеющийся корпус. В архиве представлены прошивки для индикаторов с общим анодом и катодом.
Хочу признать, что часы получились отлично. В часах есть будильник (как разовый, так и по дням недели), термометр. Для регулировки освещения индикатора в дневное и ночное время, могут использоваться как предустановки в часах, так и специальный датчик (фоторезистор). Есть возможность коррекции времени, если оно отстает или спешит; цифровая коррекция отображения температуры с градацией 0,1ºС.
Большим плюсом является наличие сохранения настроек в энергонезависимой памяти микроконтроллера. Помимо этого, применение микросхемы DS1307, в паре, с батарейкой, делают часы абсолютно энергонезависимыми. Батарейка выполняет дежурное питание часов. Теперь, сколько бы поставка электричества у Вас не обрывалась, при ее возобновлении, часы буду идти, без каких-либо изменений и отклонений, даже останется заведенным будильник(и).
В эстетическом плане, данные часы, также хороши. Есть более десяти видов визуальных эффектов смены отображения времени и температуры. Кстати, эти эффекты можно выбирать самостоятельно или выставить их отображение в случайном порядке.
Пользователь «yurich» предоставил свой вариант разводки платы под корпус советских часов «Кварц». Файл можно скачать ЗДЕСЬ.
Наружные часы-термометр с боем — Автоматика для дома — Умный дом
Владимир Макаров
Как известно, в дачный период хозяева и гости много времени проводят вне помещения – за размеренной беседой под навесом или на качелях, за подвижной игрой на лужайке или садово-огородными работами по выращиванию сказочного урожая.
В это время хочется одеть легкие одежды, оставить все гаджеты в доме и предаться свободному общению, отдыху или творчеству на приусадебном участке. Но как бы глубоко мы не увлекались любимым занятием всегда будет интересовать вопрос: а который час? Не пора ли готовить обед, смотреть продолжение мыльной оперы, кормить ребенка и т.д.?
К чему я вас подвожу? Да к тому, что пора, пора во дворе установить большие часы, да еще с боем курантов, ну и термометр не помешал бы.
В данной статье описывается устройство, в котором в одном корпусе объединены наружные часы и термометр. Размер корпуса устройства — 36х28х7см, размер индикатора одной цифры часов или минут — 5х9см, размер индикатора одной цифры термометра — 3х5cм. При этих размерах цифры хорошо различимы на расстоянии до 25 метров.
Часы показывают время в часах и минутах в формате Н24. Начало каждого часа в период с 09.00 до 23:00 включительно обозначается звуком курантов Спасской башни Московского Кремля. На фонограмме записан перезвон колоколов и бой колокола по количеству наступивших часов суток в формате Н12. В 23:00 в алгоритме программы и прошивки исполняется мелодия «Спокойной ночи, малыши», звуковые файлы которой так же имеются в архиве.
Термометр показывает актуальные положительные и отрицательные значения температур воздуха, с точностью до десятых долей градуса.
Внешний вид часов показан на рисунке 1.
Рисунок 1.
Внешний вид часов-термометра.
Демонстрационный ролик:
Часы-термометр
Схема электрическая принципиальная контроллера часов-термометра показана на рисунке 2.
Рисунок 2.
Контроллер. Схема электрическая принципиальная.
Контроллер устройства разработан основе микроконтроллера ATmega8 (DD3). Микроконтроллер считывает значения часов и минут с микросхемы часов реального времени DS1307N (DD2).
Взаимодействие МК с DS1307N осуществляется по последовательному двухпроводному интерфейсу TWI (Two Wire Interface), являющемуся полным аналогом интерфейса I2C (Inter-Integrated Circuit).
Микроконтроллер ATmega8 имеет на борту аппаратную реализацию сигналов TWI (выводы SDA и SCL). В прикладную программу устройства включены функции взаимодействия с оборудованием TWI микроконтроллера и функции взаимодействия с микросхемой DS1307N.
Программой также обеспечивается возможность корректировки пользователем значений часов и минут в микросхеме DS1307N для чего предусмотрена обработка нажатий кнопок устройства «часы+» (SA1) и «минуты+» (SA2), так же возможна корректировка и показаний термометра.
Блок кнопок выполнен в виде пульта. Назначение кнопок управления следующее;
Кнопка «часы+» — установка часов (увеличение на 1), кнопка «минуты+» установка минут (увеличение на 1), «температура-» — корректировка температуры (уменьшения на 0.1 градуса), «температура+» корректировка температуры (увеличение на 0.1 градуса).
Далее в пульте следует выключатель питания звукового генератора и регулятор громкости. При удержании кнопки выполняется инкремент (+) или декремент (-) с отображением на индикаторах текущего времени или дельты, на которую отображаемая температура будет отличаться от температуры, измеренной датчиком DS18B20. Это для желающих выставить температуру по своему доверенному термометру.
Рисунок 3.
Внешний вид пульта управления.
Рисунок 4.
Обратная сторона пульта управления.
Включение DS1307N осуществлено по типовой схеме. Стабильный ход часов обеспечивается кварцевым резонатором на 32768Гц (Y1), включенным в цепь внутреннего генератора часов.
Непрерывный ход часов в периоды отключения основного питания (+5В) поддерживается резервным элементом питания (GB1) типа CR2032 напряжением 3В.
Выводы SDA и SCL через подтягивающие резисторы (R5 и R6) подключаются к шине TWI. Индикатор «разделительное двоеточие» (DS1), разделяющий на табло разряды часов и минут, отображает секундные импульсы, снимаемые с вывода SQW/OUT микросхемы DS1307N. Для управления индикатором DS1 используется транзистор КТ315Б (VT1), работающий в ключевом режиме.
Считанные значения часов и минут отображаются на табло семисегментными индикаторами часов (DS2, DS3) и минут (DS4, DS5). Значения (0,1) сегментов для всех четырех индикаторов часов передаются в регистры сдвига на микросхемах 74HC595 (DD4, DD5, DD6, DD7), включенных последовательно.
В каждом цикле передачи данных на табло микроконтроллер сбрасывает регистры сдвига по входу !MR, а затем последовательно бит за битом выдает данные о включении сегментов на вход DS микросхемы DD4 и продвигает биты по регистрам сдвига подачей сигнала такта SH_CP. Особенностью регистра сдвига 74HC595 является то, что значения битов регистра сдвига передаются на выходы Q0..Q7 не сразу, а при поступлении импульса на вход «защелки» ST_CP. Это позволяет высвечивать разряд на табло после полного заполнения регистра сдвига, что исключает мерцание сегментов индикатора во время заполнения регистра сдвига.
С выходов Q0..Q7 регистров сдвига сигналы поступают на входы транзисторов Дарлингтона в микросхемах ULN2803A (DD8, DD9, DD10, DD11). Эти транзисторы обеспечивают согласование разных уровней питания регистров сдвига и индикаторов (5 и 12 Вольт соответственно) и позволяют подключать мощную индикаторную нагрузку вплоть до 500мА на один сегмент индикатора.
При наступлении нового часа для исполнения звуковой имитации боя курантов звуковому генератору через разъем XP1 подается код мелодии (контакты L0, L1, L2, L3 и L4). Через этот же разъем подается питание для звукового генератора (контакт VDD, GND).
С выхода BUSY («занят») разъем XP1 снимается сигнал занятости звукового генератора проигрыванием фонограммы, но в данной версии прикладной программы этот сигнал не обрабатывается.
Описание звукового генератора представлено в отдельном разделе данной статьи.
Датчик температуры DS18B20 (DD2) обеспечивает измерение температуры окружающей среды и подачу кода температуры в микроконтроллер по его запросу.
Взаимодействие МК с DS18B20 осуществляется по однопроводному интерфейсу, задействующему только 1 порт МК (PINС3).
Датчик подключен по классической схеме, взятой из описания DS18B20. Обязательным дополнительным оборудованием является подтягивающий резистор 4.7кОм (R7).
Прикладная программа содержит необходимый набор функций для инициализации датчика, записи команд и чтения данных.
Прочитанное микроконтроллером значение температуры приводится для отображения на индикаторы в формате S ХХ.Х T, где S – знак температуры (+ или -), XX.Х – целая и дробная часть значения температуры, T – символ градусы по Цельсию.
Отображение температуры осуществляется с помощью регистров сдвига 74HC595 (DD12, DD13, DD14), транзисторов Дарлингтона в микросхемах ULN2803A (DD15, DD16, DD17) и индикаторов (DS7, DS8, DS9) аналогично описанному выше способу отображения часов и минут. Индикатор «+/-» управляется через транзисторы Дарлингтона непосредственно микроконтроллером. Индикатор «°С» включен постоянно.
В устройстве предусмотрена корректировка отображаемой температуры в диапазоне от минус 5.0 до плюс 5.0 градусов с шагом 0.1 градуса.
Установленное значение корректировки складывается с измеренным значением температуры и отображается на индикаторах. Установленное значение корректировки постоянно храниться в энергонезависимой памяти МК (EEPROM) и каждый раз после подачи питания на устройство восстанавливается в прикладной программе.
Установка значения корректировки температуры осуществляется кнопками «температура-» (SA3) и «температура+» (SA4).
Цепочка R8-С5 выполняет начальный сброс МК при подаче питания.
Для внутрисхемного программирования МК предусмотрен разъем для подключения программатора (XP2).
Питание устройства осуществляется напряжением 12 Вольт. Для питания МК ATmega8, датчика часов DS1307N, датчика температуры DS18B20 и регистров сдвига 74HC595 осуществляется преобразование питания DC-DC в 5 Вольт с использованием микросхемы MC34063 (DA1), включенной по рекомендованной в описании схеме.
Для получения 5 Вольт на выходе DC-DC преобразователя значения резисторов R2 и R4 должны быть 1кОм и 3кОм соответственно.
Значения фьюзов микроконтроллера ATmega8: D9, E4 (HIGH, LOW).
Звуковой генератор.
Схема электрическая принципиальная звукового генератора показана на рисунке 5.
Рисунок 5.
Звуковой генератор. Схема электрическая принципиальная.
Звуковой генератор построен на микроконтроллере ATtiny861 (DD1). В основу положено известное решение «255-Voice PCM Sound Generator» (Автор — ChaN, оригинал статьи здесь — http://elm-chan.org/works/sd20p/report.html). Устройство и программа адаптированы для использования в устройстве часов.
Звуковой генератор обеспечивает проигрывание WAV файлов записанных на microSD Card в соответствии с кодами мелодий, выставленных на контактах L4..L0 разъема XP1.
С помощью преобразователя на линейном регуляторе LM1117-3.3 (DA2) подаваемое на устройство напряжение12 Вольт преобразуются в напряжение 3.3 Вольта, необходимое для питания microSD Card и микроконтроллера устройства.
Для согласования уровней выходных сигналов от контроллера часов-термометра (5B) с уровнями входных сигналов звукового генератора (3.3В) служат делители напряжения на резисторах R9…R18.
Запуск звукового генератора осуществляется всякий раз, когда меняется состояние входной комбинации L4..L0 на разъеме XP1 при условии, что генератор в это время не занят проигрыванием звукового файла.
Запуск осуществляется по прерыванию на ножках PINA3…PINA7. Функция обработки прерывания преобразовывает код L4..L0 в имя файла. Микроконтроллер читает файл с microSD Card и направляет поток на внутренний широтно-импульсный модулятор — на выходах OC1A и OC1B формируется звуковой сигнал фонограммы. Звуковой сигнал через цепочку R1, R2, R3, C2, C3 подается на вход усилителя низкой частоты TDA7056A (DA1), нагруженный динамиком SP1 (8Ом). Резистор R5 и потенциометр R4 обеспечивают регулировку громкости.
Во время проигрывания фонограммы светится светодиод VD1, который также служит для индикации ошибок при работе звукового генератора с microSD Card. Перечень ошибок и количество соответствующих каждой ошибке вспышек VD1 приведен в исходном коде программы звукового генератора.
Подключение microSD Card осуществлено через адаптер формата SD Card, который в свою очередь подключаен к устройству через разъем XS1.
Цепочка R7-С7 выполняет начальный сброс МК при подаче питания.
Для внутрисхемного программирования МК предусмотрен разъем для подключения программатора (XP2).
Значения фьюзов микроконтроллера ATtiny861: DF, C1, FF (HIGH, LOW, EXT)
Индикаторы.
Питание всех индикаторов осуществляется напряжением 12 Вольт.
Индикаторы часов и минут выполнены из двух рядов светодиодов. Расположение светодиодов в сегментах показано на рисунке 6.
Рисунок 6.
Расположение сегментов часов.
Сегменты A,D состоят из 10 светодиодов на сегмент, сегменты B, C, E, F, G из 12 светодиодов на сегмент, разделительное двоеточие состоит из 8 светодиодов.
При таком расположении светодиодов в сегментах цифры на индикаторах будут высвечиваться как показано на рисунке 7.
Рисунок 7.
Свечение цифр на индикаторах часов.
Индикаторы термометра выполнены из одного ряда светодиодов. Расположение светодиодов в сегментах показано на рисунке 8.
Рисунок 8.
Расположение сегментов термометра.
При таком расположении светодиодов в сегментах цифры на индикаторах будут высвечиваться как показано на рисунке 9.
Рисунок 9.
Свечение цифр на индикаторах термометра.
При соединении светодиодов в сегменте они могут быть включены последовательно. Для расчета рекомендую воспользоваться LED-калькулятором http://cxem.net/calc/ledcalc.php.
Согласно расчетам при последовательном включении светодиодов должны быть использованы номиналы резисторов, указанных на рисунке 10.
Рисунок 10.
Схема последовательного включения светодиодов.
Обратите внимание, что для разных типов светодиодов схемы отличаются.
Конструкция.
Самым трудоемкими элементами при изготовлении устройства являются индикаторы. Каждый разряд изготавливается на отдельной плате — удобно травить, паять, тестировать. Печатные платы разработаны в DipTrace. Макет печатной платы одного разряда часов показан на рисунке 11.
Рисунок 11.
Макет печатной платы разряда часов.
Печатные платы всех элементов табло часов-термометра представлены в архиве.
Печатная плата контроллера представлена на рисунке 12, а внешний вид платы на рисунке 13.
Рисунок 12.
Макет печатной платы контроллера.
Рисунок 13.
Внешний вид контроллера.
Печатная плата звукового генератора представлена на рисунке 14, а внешний вид платы на рисунке 15.
Рисунок 14.
Макет печатной платы звукового генератора.
Рисунок 15.
Внешний вид звукового генератора.
Устройство собрано в корпусе, спаянном из металлического оцинкованного профиля, используемого для монтажа гипсокартона.
В корпусе размещены промышленный блок питания (12В/2А), динамик, панель управления, табло с индикаторами, контроллер и звуковой генератор. Размещение блоков часов-термометра показано на рисунках 16 и 17.
Рисунок 16.
Размещение блоков устройства в корпусе.
Рисунок 17.
Размещение индикаторов устройства в корпусе.
В архиве размещены файлы:
ExternalClock.c – исходный код программы на Си контролера часов-термометра
ExternalClock.hex – прошивка контроллера часов термометра
SoundGenerator.rar – исходный код программы на Си звукового генератора
SoundGenerator.hex – прошивка звукового генератора
SoundFiles.rar – звуковые файлы «Куранты»
SCH_ExternalClock.dch – схема контроллера в DipTrace
SCH_SoundGenerator.dch – схема звукового генератора в DipTrace
PCB_ExternalClock.dip – печатная плата контроллера в DipTrace
PCB_ExternalClockControl.dip – печатная плата пульта управления контроллера в DipTrace
PCB_SoundGenerator.dip – печатная плата звукового генератора в DipTrace
PCB_DigitLarge.dip – печатная плата цифры часов в DipTrace
PCB_DigitLargeD.dip – печатная плата разделительного двоеточия в DipTrace
PCB_DigitSmallM.dip – печатная плата цифры термометра в DipTrace
PCB_DigitSmallS.dip – печатная плата знака «+/-» термометра в DipTrace
PCB_DigitSmallT.dip – печатная плата символа «градус по Цельсию» термометра в DipTrace
Архив, первая часть.
Архив, вторая часть.
Архив разбит на две части (из-за объёма), поэтому для нормальной его распаковки скачивайте (сохраняйте) обе части в одно место.
ТЕРМОМЕТР НА МИКРОКОНТРОЛЛЕРЕ
Представляю схему простого и проверенного термометра на МК. Сердцем его является микроконтроллер PIC16F628A. В схеме термометра используется 4-х значный или 2+2 светодиодный индикатор с общим анодом. Датчик температуры используется типа DS18B20, и в моем случае показания датчика отображаются с точностью 0,5*С. Термометр имеет пределы измерения теемпературы от -55 до +125*С, что достаточно на все случаи жизни. Для питания термометра была использована обычная зарядка от мобилы на ИП с транзистором 13001.
Принципиальная схема термометра на микроконтроллере PIC16F628A:
Для прошивки микроконтроллера PIC16F628A я использовал программу ProgCode, установив её на компьютер и собрав программатор ProgCode по известной схеме:
Обозначение выводов используемого микроконтроллера и цоколёвка некоторых других аналогичных МК:
Программа ProgCode и инструкции с фотографиями пошаговой прошивки находятся в архиве на форуме. Там же и все необходимые для этой схемы файлы. В программе открываем и нажимаем на кнопку «записать всё”. В моем изготовленном устройстве, как видно из фотографий, собрано 2 термометра сразу в одном корпусе, верхний индикатор показывает температуру дома, нижний — на улице. Размещается он в любом месте помещения и соединяется с датчиком гибким проводом в экране. Материал предоставил ansel73. Прошивку редактировал: [)еНиС
Обсудить статью ТЕРМОМЕТР НА МИКРОКОНТРОЛЛЕРЕ
cxema.org — Простой термометр на микроконтроллере
Искал простой термометр для дома что бы выполнить в полевых условиях (переехал в другой город и только паяльник и монтажная плата из инструментов), задача была проста — а именно узнать температуру прежде чем выйти из дома и занять себя на время сборки
Хотелось минимум вложений трудностей и максимум простоты и «красивости» термометра
Придумывать что то новое или изобретать велосипед не хотелось (да и времени с желанием не было именно изобретать, хотелось взять и сделать)
————————————————————————————————
Схема (Из оригинала статьи тут мне добавить собственно нечего)
На схеме показан запасной вариант включения термодатчика, если он не захотеть работать по первому варианту (хотя у меня заработало все сразу). Хочу обратить внимание на резистор в 4.7 кОм, изменение его значения чревато нестабильной работой устройства, хотя можно поэкспериментировать.
Сегментный индикатор подключен на прямую к микроконтроллеру (как и в моем варианте реализации) но я бы рекомендовал добавить ограничительные резисторы номиналом 150-470 Ом.
Что получилось при сборке
Так как у меня была только монтажная плата и 300р на все про все было принято решение собирать все «на весу» сложностей было только 3 а именно:
- припаять smdрезистор (такого наминала в магазине не оказалось, но мне попалась плата с нужным мне резистором на мусорке)
- поиск проводов (как бы это банально не звучало)
- самое главное! Программатор для тиньки. У меня был программатор USBASP (купленный на ебэе за 3$) который работать с контроллером отказался, причины так и остались для меня тайной…
Пришлось искать компьютер с LPTпортом (что нынче проблема великая) для использования старого доброго….
А вот и фьюзы для программы PonyProg (будьте внимательны неправильная их расстановка ведет блокированию микроконтроллера в лучшем случае, при разблокировке обычно спасает кварцевый резонатор на 8 мГц ) :
Ну и конечно что получилось в результате
На индикатор натянул пленку красного цвета для того что бы в глазах не рябило и воспринималось красивее
Питание контроллера упростил до практически критического минимума оставив только стабилизатор 7805 (планировал питать от USBпорта ноутбука где перепады и помехи маловероятны)
Печатная плата:
Прошивка:
Прошивка для индикаторов с ОА (+) и ОК (-) — в HEX-формате, проект под CodeVisionAVR с которым можно поэкспериментировать при достаточных знаниях программирования . Главная «фишка» это динамическая индикация. Проблема заключалась в том, что во время общения с датчиком температуры бывали моменты, когда «сканирование» индикации останавливалось. Поэтому обновление индикатора сделано в главном цикле программы, и ещё вставлено кое-где в процедуре общения с датчиком… таким способом удалось избежать мерцания индикатора
В итоге мы имеет ОЧЕНЬ простое устройство которое способен повторить любой начинающий радиолюбитель (единственное на мой взгляд что может вызвать трудность так это прошивка микроконтроллера )Габариты сравнительно малы, в первом прототипе устройства разместил в пластмассовый корпус из под жвачки (фото к сожалению не могу показать но все устройство помещалось в ладонь ) И один из главных плюсов (не считая точности) это индикатор – в темноте отлично видно и не надо ломать голову над подсветкой как с китайскими термометре на ЖК которые при холоде ещё и отображаться неадекватно
ЗЫ
Точность измерить не удалось но судя по бытовым приборам очень высока
Скачать архив можно тут
Автор Den688
«Тикающие» часы с будильником на микроконтроллере Atmega48 / Habr
Описание
Данные часы с будильником основаны на микросхеме часов реального времени, что позволяет им работать от резервного источника питания при отсутствии основного. Заданное время будильника и режим работы хранится в энергонезависимой памяти микроконтроллера. Режим отображения — 24 часовой. Содержат имитацию «тикания» Индикация времени и режимов работы осуществляется посредством светодиодных индикаторов.
Принцип работы
Основой данных часов является микросхема DS1307 — часы реального времени, обменивающаяся информацией с управляющим контроллером посредством I2C интерфейса. Индикация времени осуществляется через 4 7-и сегментных индикатора, работающих в динамическом режиме. Ввод и корректировка времени осуществляется 5-ю кнопками: «+ минуты», «+ часы», «установка», «будильник» и «сброс». Звуковой сигнал будильника выводится через стандартный пьезоизлучатель и представляет из себя сигнал частотой 1кгц с секундными паузами.
В качестве управляющего микроконтроллера был выбран Atmega48 по причине его доступности и наличии необходимой периферии на борту(даже с избытком). Часы реального времени DS1307 подключены к аппаратным выходам I2C управляющего микроконтроллера. Для работы DS1307 в автономном режиме( в случае отключения питания главного контроллера) используется литиевая батарейка резервного питания на 3V, ресурса которой хватит на несколько лет из-за низкого энергопотребления микросхемы.
Рассмотрим подробнее управляющую программу:
Программа работает по принципу флагово-таймерного автомата: все состояния и события представлены в виде соответствующих флагов, выполняющихся в прерываниях соответствующего таймера 1с, 1мс и 263.17мс. Программа использует 2 аппаратных таймера.
Опрос часовой микросхемы и нажатие кнопок осуществляется с интервалом 263.17мс. Интервал 1мс служит для формирования звукового сигнала звонка, а 1с — для его модуляции. Секундный интервал также управляет миганием точки во 2-ом разряде индикатора, разделяющий часы и минуты и также служащим формированием «тиканья».
Рассмотрим принципиальную схему часов.
Обозначения и номиналы:
S4 — Увеличение часов
S3 — Увеличение минут
S2 — Установка
S1 — Включение будильника
S5 — Сброс
R6-R10 — 10k
R1-R5 — 510ом
Напряжение питания — 5 вольт.
Настройка и использование
Правильно собранные часы в дополнительной настройке не нуждаются. Необходимо лишь установить текущее время и будильник.
Установка текущего времени осуществляется следующим образом:
1) Кнопками S1 и S2 установить текущее время (точка между разрядами при этом не мигает)
2) Запустить часы кнопкой S3
Установка будильника:
1) Нажать S3 и убедиться в том, что загорелась точка в 1-ом разряде
2) Установить время звонка кнопками S1 и S2
3) Включить звонок кнопкой S4
Дополнительные возможности:
Включить тиканье — удерживая S4 нажать S2 до появления характерных звуков. Отключается так-же.
Отображение минут и секунд — удерживая S4 нажать S1. Если после этого нажать S3 произойдёт сброс секунд в 00. Возврат — та-же комбинация.
Приложение: Исходный код (на ассемблере) + hex для микроконтроллера atmega48 + модель в Proteus.
Фото и видео часов
Часы собраны в корпусе из под нерабочей «электроники».