Усовершенствованные часы-термометр-таймер » Программирование устройств на PIC микроконтроллерах


Логин:
Пароль:
О сайте:

Pic.Rkniga.ru - Сайт как для начинающих, так и для опытных радиолюбителей, разрабатывающих свои устройства на популярных PIC микроконтроллерах.
Здесь можно обмениваться сообщениями на форуме, а также добавлять на сайт статьи и схемы своих устройств.

Меню сайта
Главная Форум по PIC микроконтроллерам Форум Статьи по PIC микроконтроллерам Статьи Справочная информаци по PIC микроконтроллерам Справочник Литература по PIC микроконтроллерам Литература Схемотехника Схемотехника устройств на PIC микроконтроллерах Микроконтроллеры Программаторы Все по программированию PIC микроконтроллеров Программы, Софт Программы Ссылки
Опрос

На каком языке программирования вы пишите программы?


Ассемблер
Си
Бейсик
Паскаль
Другой


Последние материалы
  • Тестовая плата для отладки программ на микроконтроллере PIC18F4550
  • Кнопка On/OFF на PIC12F629.
  • Часы с синхронизацией от китайского будильника
  • ШИМ регулятор на PIC16F628A.
  • Счетчики прямого и обратного счета на PIC16F628A.
  • Таймер отключения питания для мультиметра и не только.
  • Измеритель напряжения и тока
  • Маршрутный компьютер для электровелосипеда
  • Простой двухканальный термометр на PIC16F690 и датчиках DS18B20
  • Электронная "Незабудка" для забывчивых
  • Популярные материалы
    Случайная книга
    Усовершенствованные часы-термометр-таймер
    Автор публикации: alex Просмотров: 10310 Добавлен: 30-08-2012, 12:47 Комментарии: 0

         Разработанное автором устройство, работало исправно, но со временем захотелось внести в него некоторые улучшения. Теперь счёт времени не сбивается при отключении сетевого питания, увеличена яркость свечения индикатора, добавлен будильник со звуковой сигнализацией. Существенно переработана программа микроконтроллера.
    Усовершенствованные часы-термометр-таймер

         Схема нового варианта часов показана на рис. 1. Счёт времени в них теперь ведёт не сам микроконтроллер DD2, а специализированная микросхема часов реального времени DS1307ZN (DD1), которой он управляет и получает от неё информацию о времени. При отключении основного источника напряжения 5 В она автоматически переходит на резервное питание напряжением 3 В от литиевого элемента G1 и продолжает работать, потребляя менее 0,5 мкА. При возобновлении подачи основного напряжения питания показания остаются правильными.
         Температуру измеряют датчики ВК1, ВК2 (DS18B20). Оба они расположены вне корпуса часов. В [1] было подробно рассказано об их работе.

         На пятиразрядном (HG1+HG2) светодиодном индикаторе зелёного цвета свечения в течение 10 с выводится время (рис. 2,а), затем 5 с — температура в месте расположения датчика ВК1 (рис. 2,6) и 5 с — температура в месте расположения датчика ВК2 (рис. 2,в), после чего цикл повторяется.
         Организуя динамическую индикацию, микроконтроллер DD1 формирует трёхразрядный двоичный код номера знакоместа индикатора на своих выходах RC4—RC6, соединённых с входами дешифратора DD3, который поочерёдно устанавливает на своих выходах низкий логический уровень. Это приводит к открыванию транзисторов VT3—VT7, соединяющих с плюсом питания общие аноды соответствующих разрядов индикатора. Так обеспечена его повышенная яркость по сравнению с предыдущим вариантом, где выходы микроконтроллера были непосредственно соединены с анодами светодиодов каждого разряда. Теперь время и температура хорошо видны даже при установке прибора в сильно освещённом месте. Логика работы таймера по сравнению с описанной в [1] не изменилась.
         Когда включён будильник, в младшем разряде индикатора при отображении времени светится десятичная точка (на рис. 2,а она показана не залитой), а программа микроконтроллера каждые полсекунды сравнивает текущее время с заданным временем срабатывания будильника. При совпадении на выходе RC2 микроконтроллера формируются пачки импульсов частотой 700 Гц, повторяющиеся с периодом 1 с. Они поступают на акустическую головку ВА1 через усилитель на транзисторе VT1. Так продолжается в течение минуты. Индикатор при этом погашен. Выключить будильник заранее можно нажатием на кнопку SB3.
         Динамическая головка ВА1 подключена к транзистору VT1 без ограничительного резистора. Если громкость звукового сигнала всё-таки недостаточна, необходимо применить транзистор с большим коэффициентом передачи тока. Если же она избыточна, то надо включить последовательно с головкой резистор, подобрав его номинал.
    Усовершенствованные часы-термометр-таймер

         На рис. 3 изображена печатная плата устройства. Она рассчитана на установку обычных резисторов МЛТ-0,125 или CF-0,125 (импортных) и резисторов для поверхностного монтажа типоразмера 1206. Конденсаторы С4 и С5 — керамические группы NP0 по ТКЕ, остальные — любые керамические. Транзисторы КТ3107А можно заменить другими кремниевыми структуры р-п-р с максимальным постоянным током коллектора не менее 100 мА. Вместо транзистора КТ313АМ подойдёт, например, транзистор серии КТ815. Замену светодиодам L-53SRD-D (красный) и L-53SYD (жёлтый) подбирают исходя из цвета и яркости их свечения. Для обеспечения достаточной яркости придётся, возможно, установить резисторы R11 и R20 меньшего сопротивления.

         Часы собраны в корпусе G413. Со снятой верхней частью корпуса они изображены на рис. 4. Ток, потребляемый от внешнего источника напряжения  5 В, изменяется от 6 мА (индикатор выключен) до 200 мА (включён таймер, сработал будильник).
         При первом включении изготовленного устройства его индикатор остаётся выключенным, потому что микросхема DD1 ещё не начала отсчёт времени. Чтобы запустить его, необходимо перейти в режим установки времени и обнулить счётчик секунд. Часы заработают и остановятся только при отключении от них внешнего источника напряжения 5 В и разрядки (или отключения) литиевого элемента G1.

         Прежде чем корректировать ход часов, определяют в секундах уход их показаний от точного времени за сутки. Зная его, нажимают на кнопку SB2. На индикаторе появится надпись, показанная на рис. 5. Число 15 означает нулевую поправку.
         Если часы отстают, то, нажав и удерживая кнопку SB3, увеличивают выведенное на индикатор значение на число секунд суточного отставания. Например, число 15 следует довести до 17, чтобы устранить отставание на 2 с. Если часы спешат, то, нажав и удерживая кнопку SB1, уменьшают число 15, например, до 11, если часы спешили на 4 с в сутки. Нажатием на кнопку SB2 возвращаются в основной режим. Внесённую поправку микроконтроллер запоминает в EEPROM.
         Для управления будильником нажимают на кнопку SB3 На индикаторе появится надпись (рис. 6,а), после чего на ту же кнопку следует нажать ещё раз. Изображение на индикаторе сменится показанным на рис. 6,6, если будильник выключен, или на рис. 6,в, если он включён. В последнем случае цифры означают установленное ранее время срабатывания будильника. Час срабатывания изменяют, нажав и удерживая кнопку SB1, а минуту — кнопку SB2. Включают и выключают будильник с помощью кнопки SB4, а чтобы вернуться в основной режим, нажимают на SB3, при этом микроконтроллер обновляет в EEPROM хранящееся там время срабатывания будильника. Как уже было сказано, при включённом будильнике текущее время выводится на индикатор со светящейся десятичной точкой в младшем разряде.
    Материал взят из: Журнала Радио 2012 №4

    В архиве Исходный код программы и прошивка для микроконтроллера

    chtb.rar [21,53 Kb] (cкачиваний: 537)

    Комментарии