Часы на pic контроллере: Часы на PIC-микроконтроллере

Содержание

Часы с термометром и таймером на PIC-микроконтроллере PIC16F873A

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

В продаже имеются различные устройства отображающие время, температуру в помещении и на улице Но практически все они выполнены на ЖКИ, которые необходимо освещать в темное время суток.

А встроенную подсветку, если она есть, в приборах с автономным (батарейным) питанием не рекомендуется использовать длительное время. Небольшие размеры цифр не позволяют разглядеть показания с расстояния более одного метра Кроме того в таких приборах применяются в основном многовыводные БИС для поверхностного монтажа, которые очень трудно заменить в случае неисправности.

Все это стало причиной самостоятельной разработки прибора, который показывал бы на ярких светодиодных индикаторах текущее время, температуру в квартире и на улице.

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

Описания подобных конструкций можно найти, например. в [1.2]. Но они либо содержат слишком много деталей, либо выполнены на микроконтроллерах фирмы Atmel, а я предпочитаю работать с микроконтроллерами фирмы Microchip.

Принципиальная схема

Схема разработанного устройства на микроконтроллере PIC16F873A-I SP изображена на рис. 1. Тактовую частоту задает кварцевый резонатор ZQ1 с частотой 8.192 МГц Отсчет базовых интервалов времени ведет встроенный в микроконтроллер восьмиразрядный таймер-счетчик TMR0.

Рис. 1. Принципиальная схема часов с таймером и термометром на микроконтроллере PIC16F873A.

Резисторы R1-R4 поддерживают высокий логический уровень ча входах RA1. RA3. RC1.

RC3 микроконтроллера, когда кнопки SB1-SB4 не нажаты Пятиразрядный семиэлементный светодиодный индикатор зеленого цвета свечения собран из двух: четырехразрядного HG1 и одноразрядного HG2.

Рис. 2. Вывод значений температуры на индикатор.

Рис. 3. Варианты вывода значений на цифровой индикатор.

Температуру измеряют широко известные датчики DS18B20, не требующие калибровки и с погрешностью измерения не более ±0,5 С в интервале температуры от -10 С до +85 С. Каждый из этих приборов имеет индивидуальным 64-разрядный двоичный код. Перед считыванием измеренных значений температуры микроконтроллер считывает коды датчиков и тем самым проверяет их наличие.

Если датчик отсутствует, неправильно подключен или неисправен, то вместо числового значения температуры на индикатор будут выведены два «минуса» (рис. 2). Таким же останется изображение на индикаторе некоторое время после включения устройства до получения первых отсчетов температуры Это не является признаком неисправности.

Детали и печатная плата

Датчик ВК1 располагается внутри устройства и измеряет температуру от + 10 С до +40 °С. Датчик ВК2 вынесен на улицу, он измеряет температуру от -40 °С до +40 °С. Длина проводов, соединяющих его с микроконтроллером, — до 12 м. Если в корпусе устройства нет достаточного числа вентиляционных отверстий. то датчик ВК1 рекомендуется также вынести за его пределы.

Информация отображается на индикаторе циклически: 10с — время (рис. З. а), 5 с — температура, измеренная в помещении датчиком ВК1 (рис. 3,6), 5 с — температура, измеренная на улице датчиком ВК2 (рис. З.в).

Каждую секунду микроконтроллер проверяет состояние входов RA1, RA3, RC1, RC3. Когда какая-либо из кнопок SB1-SB4 нажата, уровень на соответствующем входе становится низким.

Рис. 4. Печатная плата для схемы часов на микроконтроллере.

На рис. 4 показана печатная плата устройства. Все установленные на ней конденсаторы керамические: С1, С2 — с диэлектриком NP0, а C3 и С4 — с диэлектриком Y5V. Резисторы — МЯТ, С1-4 и их аналоги.

Транзистор КТ503А можно заменить другим кремниевым структуры n-p-n с максимальным постоянным током коллектора не менее 100 мА. Вместо светодиодов L-53SGD и L-53SRD/D подойдут и другие соответственно зеленого и красного цветов свечения. Реле К1 — WJ105-1А 5V 5А, его контакты рассчитаны на ток до 5 А, а обмотка при напряжении 5 В потребляет ток 90 мА.

Плата помещена в корпус G413 фирмы GAINTA С его лицевой стороны сделано окно для индикатора. В верхней панели просверлены отверстия для толкателей кнопок SB1-SB4 и для светодиодов. С тыльной стороны корпуса установлены гнезда, соединенные с контактами реле К1, а также предназначенные для подключения источника питания и датчика температуры ВК1.

Для установки точного времени нажимают на кнопку SB1. На индикатор выводятся цифры, соответствующие числу часов. Удерживая нажатой кнопку SB4. устанавливают нужное значение. Второй раз нажимают на кнопку SB1 На индикатор выводятся цифры, соответствующие числу минут Удерживая нажатой кнопку SB4, устанавливают нужное значение.

Третий раз нажимают на кнопку SB1. На индикатор выводятся цифры, соответствующие текущему числу секунд. Нажатием на кнопку SB4 это значение обнуляют. Четвертое нажатие на кнопку SB1 возвращает устройство в рабочий режим.

Предусмотрена возможность коррекции хода часов Для этого ровно через 6 часов после установки точного времени еще раз сверяют время с образцовым и определяют, на сколько секунд отстали или ушли вперед часы.

После этого нажимают на кнопку SB2 На индикаторе появляется надпись. показанная на рис. 5,а. Если часы отставали, то, нажав и удерживая кнопку SB4, вводят число секунд отставания. В противном случае (часы спешили) еще раз нажимают на кнопку SB2 Когда на индикаторе появится надпись, показанная на рис. 5,6 с помощью кнопки SB4 вводят число секунд, на которое часы ушли вперед Нажатием на кнопку SB2 возвращают устройство в рабочий режим. Введенное для корректировки число секунд сохраняется в EEPROM микроконтроллера.

Рис. 5. Надписи на индикаторе.

Рис. 6. Программирование таймера.

Таймер можно запрограммировать на выдержку максимум 900 мин. Чтобы задать ее продолжительность, нажимают на кнопку SB3. На индикаторе появляется надпись, показанная на рис.

6. После этого, нажав и удерживая кнопку SB1, вводят число сотен минут Затем кнопкой SB2 вводят число десятков, а кнопкой SB4 — число единиц минут выдержки. Еще одним нажатием на кнопку SB3 возвращают устройство в рабочий режим. Заданная продолжительность выдержки сохраняется в EEPROM микроконтроллера.

Запускают таймер в любой момент нажатием на кнопку SB4. При этом уровень на выходе RA5 микроконтроллера становится высоким, реле К1 срабатывает По истечении выдержки уровень вновь станет низким, а контакты реле К1 разомкнутся. Если необходимо разомкнуть их ранее запланированного времени, следует еще раз нажать на кнопку SB4.

Прошивка для микроконтроллера PIC16F873A — Скачать (14кБ).

П. Кожухин, г. Курган. Р-2010-05.

Литература:

  1. Ревич Ю. Часы с термометром и барометром. Р-2003-04, 05, 07.
  2. Суворов В. Часы-термометр. Р-2003-10.

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

Проэкт представляет собой часы с таймером, который может быть запрограммирован на включение и на выключение. Я начал его делать так как мне было лень включать и выключать каждый день аквариум. Не стал использовать уже готовые вещи по нескольким причинам — в том числе и потому что планирую добавить автоматическую систему для кормежки рыб.

Схема часов довольно проста, если не сказать очень проста. Главная часть, безусловно — программа на ассемблере. Для программирования я использовал Microchip´s MPASMP, а для рисования схемы — Eagle.

Часы имеют 4 кнопки для:

  • увеличения часов (1)
  • увеличения минут (2)
  • режима программирования включения (3)
  • режима программирования выключения (4)

Часы имеют 4 режима:

  • часы
  • программирование часов
  • программирование включения
  • программирование отключения

Новый режим устанавливается при нажатии на соответствующую кнопку. После того, как кнопка нажата или отпущена новый режим индицируется примерно в течение секунды символами ClOC, Prog, Pron, ProF соответственно. При нажатии кнопки (1) или (2) устанавливается режим программирования часов и часы (кнопка 1) или минуты (кнопка 2) будут увеличиватся каждую секунду. При нажатии кнопки (3) или (4) часы показывают время включения или отключения. Чтобы установить новое время включения/выключения — не отпуская кнопки (3) или (4) следует нажать кнопку (1) или (2). Если нажать вместе кнопки (3) и (4) секунды обнуляются и часы не идут до отпускания этих кнопок — это для установки точного времени. Защита от дребезга контактов — программная задержка на 16 миллисекунд (4 цикла) при нажатии и отпускании. 4 вывода PIC16F628 использованы для динамической индикации 7-сегментных индикаторов и сканирования клавиатуры. Программа работает по прерываниям. До вызова прерывания программа ничего не делает и может быть использована для других целей. Прерывания происходят каждые 4 миллисекунды.

Каждый цикл новый 7-сегментный индикатор подключается. Каждый раз, когда проходит секунда вызывается подпрограмма проверки времени включения/выключения реле.

Организовать индикацию прямо с микроконтроллера не хватает выводов, поэтому я использовал дополнительную микросхему — сдвиговый регистр CD4015. Реле и многие детали как транзисторы или диоды могут использованы практически любые того же классa. Я оставил свободными выводы RB0, RB1, RB2 для дальнейшего развития — подключения RS232 и так далее. Система автоматической кормежки большей частью механическая и может забрать много времени и будет добавлена позже.

Замечание: мне заметили что CD4015 имеет всего 1 ма выходной ток, так что для более яркой индикации можно использовать что-либо помощнее. я использовал то, что было под рукой в данный момент.

Скачать прошивку исходник и схему (59 Кб). Загрузок: 377

Автор статьи: Дмитрий Фитисов
Просмотров: 3805

Alex_EXE » PIC

АЦП очень полезная штука, но, к сожалению, она есть не во всех микроконтроллерах. Зато большинство МК оснащены аналоговыми компараторами. В этой статье я расскажу, как из аналогового компаратора микроконтроллера PIC16F628A можно сделать простенький АЦП.

Схема

Читать полностью »

Alex_EXE | 03.03.2011 | Микроконтроллеры |

Давно на сайте была выложена конструкция цифрового термометра с двумя датчиками DS18S20. Во время недавнего обновления той статьи была разработана прошивка работы контроллера с датчиками DS18B20.

Датчик DS18B20

В прошивку были внесены некоторые изменения. А именно расширения предела измеряемых температур, теперь он мереет от -55 до +128 градусов Цельсия, термодатчик используется по полной. Был удалён дробный разряд.

Читать полностью »

Alex_EXE | 01.03.2011 | Измерительная техника, Микроконтроллеры |

Попалась тут в руки одна очень старая мышка — ЕС1841А002. Не долго думая, решил подключить её к компьютеру.

Старая мышка и современный компьютер

Читать полностью »

Alex_EXE | 12.02.2011 | Сопряжение с ПК |

Прерывания – это очень полезная вещь в микроконтроллерах, она позволяет отвлечь контроллер от выполнения основной программы, на подпрограмму при срабатывании одного из прерываний. Прерывания могу быть как внешними: изменения уровня сигнал на одном из выводов или приход сообщения в USART … , так и внутренними: при переполнении таймера или совершения операции работы с внутренней EPROM памятью …

Читать полностью »

Alex_EXE | 04.02.2011 | Микроконтроллеры |

Во все микроконтроллерах есть своя энергонезависимая память, которая позволяет сохранить немного данных, когда контроллер выключен. В этой статье будет рассказано, как работать с EEPROM на примере PIC16F628A.

Читать полностью »

Alex_EXE | 25. 12.2010 | Микроконтроллеры |

Во многих конструкциях полезно знать текущее время, но не всегда есть возможность, да и если контроллер будет сильно загружен, то часы будут постоянно отставать или спешить, что не очень хорошо. Выходом может стать внешний готовый источник времени – часы реального времени — DS1307.

Фотография модуля

Часы состоят из микросхемы DS1307, кварца на 32,768Кгц, батарейки и 2-х подтягивающих резисторов на линии SDA и SLC. Благодаря батарейке они продолжают идти при отключении внешнего питания. Также у DS1307 есть свободные 56 байтов энергозависимой статической ОЗУ, которые можно использовать в своих целях.

Читать полностью »

Alex_EXE | 21.12.2010 | Микроконтроллеры |

Хотя COM порт в компьютерах и отжил свой срок, но в радиолюбительской практике он очень распространён, т.к. многие контроллеры оснащены UART и он является простым в программировании. Для отладки различных устройств с COM портом или списывание с них какой-либо диагностической информации требуется компьютер, но не всегда компьютер может быть под рукой, чтобы решить эту проблему был разработан портативный асинхронный COM терминал. Данное устройство компактно, имеет небольшой, но вместительный дисплей на 84 символа, от nokia 3310, и к нему можно подключать RS-232 или RS-485 интерфейсы, для ввода информации подходит почти любая PS/2 клавиатура (было проверено множество клавиатур, из проверенных не подружился только BTC’шными).

COM терминал

Читать полностью »

Alex_EXE | 21.12.2010 | Микроконтроллеры |

Простые часы будильник с двумя DS18B20 на PIC16F628A и PIC16F690



Простые часы будильник с двумя DS18B20 на PIC16F628A и PIC16F690Неактуально, рекомендую часы на 16F690

Часы PIC16F628 + будильник с 2 DS18B20. При подаче питания на схему происходит автоопрделение LED индикатора Анод или Катод. Датчики температуры DS18B20 в данной схеме могут работать как по трёх проводной схеме так и по двухпроводной (режим паразитного питания). При сробатывании будильника на 1/4сек на выводах 1,2,17 и 18 одновременно выстовляется высокий уровень, при этом мигает дисплей. Для схемы с общим анодом достаточно элемента 2И.
Функции отображения девайсом: выбор времени, секунд, температуры датчик №1, датчика №2, будильник. Выбор отображения информации выполняется однократным нажатием клавиши. Вход в настройки и переход между настройками выполняется при длительном удержании клавиши. Редактирование настроек — однократное нажатие. Переход по настройкам идёт по циклу: часы / минуты / секунды / датчик №1 / датчик №2 / будильник / коррекция хода часов(cr) / выбор попеременно-отображаемой информации(Lcd) / «выход». Автовыход через 63 сек.
Настройка датчиков температуры выполняется с каждым по отдельности. Входим в настройки первого датчика, подключаем его ногу управления к схеме и жмём кратковременно клавишу, должны появиться его показания. Переходим в настройки второго (длительно удержав клавишу), подключаем его ногу управления к схеме и жмём кратковременно клавишу, должны появиться его показания. Выходим из настроек и оба датчика подключаем к схеме. При этом в PIC-контроллер записывается уникальный серийный номер каждого из датчиков по которому и будет дальнейший их опрос.
Имеется функция попеременного отображения информации (Lcd). «Lcd0» — отображается выбранная вами функция. «Lcd1» — попеременно время и термодатчик №1. «Lcd2» — попеременно время и термодатчик №2. «Lcd3» — попеременно термодатчик №1 и термодатчик №2. «Lcd4» — по кругу время, термодатчик №1, термодатчик №2. Коррекция хода часов(cr) плюс минус одна единица соответствует плюс минус 1 сек за ~3 суток.
Схема: Питание схемы от 5В. Без транзистора автоопределение анод или катод. С транзистором менять программу. Третья нога PICa (pin данных DS) также задействована под дежурный режим, низкий уровень отключение LCD, высокий включение LCD. Поэтому датчики DS18b20 запитывать от линии +5V. Возможность работы схемы от батареек с переходом в режим энергосбережения (менее 1млА).
Прошивка и схема часы PIC16F628 + будильник с 2 DS18B20 — скачать в одном архиве new! 19.12.12.
Исходник (asm) и прошивка старого проекта термометра PIC16F628(A) — скачать в одном архиве
Частые проблемы: датчик DS врёт на +2С — т.к. подогревается от соседних деталей, вынести подальше.

Индикатор расположен со стороны печати дорожек.

Тестовый вариант. Продолжение проекта с расширенными возможностями часы + два термометра на PIC16F690A с DS18B20. Авторегулировка яркости по освещённости. На транзисторах с большими индикаторами ОА. В планах беспроводная температура улицы на PIC12F629.
Прошивка и схема часы PIC16F690 с 2 DS18B20 автояркость — скачать в одном архиве тест! 09.01.13.

[email protected]

Сайт создан в системе uCoz

Часы с общим анодом на pic16f628a.

Часы на микроконтроллере своими руками. Схема новых часов на PIC16F628A


Этот вариант часов сделан таким образом, чтобы максимально упростить схему, снизить энергопотребление, и в итоге получить прибор, который легко помещается в кармане. Выбрав миниатюрные аккумуляторы для питания схемы, SMD — монтаж и миниатюрный динамик (например от нерабочего мобильного телефона), Вы можете получить конструкцию, размером чуть больше спичечного коробка.
Применение сверхъяркого индикатора позволяет снизить ток, потребляемый схемой. Снижение тока потребления также достигается в режиме «LoFF» — индикатор погашен, при этом включена только мигающая точка младшего разряда часов.

Индикация
Регулируемая яркость индикаторов позволяет выбрать наиболее комфортное отображение показаний (и опять же снизить энергопотребление).
В часах реализовано 9 режимов индикации. Переход по режимам осуществляется с помощью кнопок «плюс» и «минус». Перед выводом на индикацию самих показаний, на индикаторы выводится короткая подсказка названия режима. Длительность вывода подсказки — одна секунда. Применение кратковременных подсказок позволило достичь хорошей эргономичности часов. При переходах по режимам отображения (которых получилось достаточно много, для такого простого прибора, как обычные часы) не возникает путаницы, и всегда понятно, какие именно показания выведены на индикатор.


Коррекция показаний, выведенных на индикатор включается при нажатии на кнопку «Коррекция». При этом кратковременная подсказка выводится на 1/4 секунды, после чего корректируемое значение начинает мигать с частотой 2 Гц. Корректируются показания кнопками «плюс» и «минус». При длительном нажатии на кнопку, включается режим автоповтора, с заданной частотой. Частоты автоповтора нажатия кнопки составляют: для часов, месяцев и дня недели — 4 Гц; для минут, года и яркости индикатора — 10 Гц; для корректирующего значения — 100 Гц.
Все откорректированные значения, кроме часов, минут и секунд, записываются в EEPROM и восстанавливаются после выключения — включении питания. Секунды при коррекции обнуляются. Из всех режимов, кроме часы-минуты, минуты-секунды и LoFF организован автоматический возврат. Если в течение 10 секунд ни одна из кнопок не нажата, то часы переходят в режим отображения часов — минут.
Нажатием на кнопку «Вкл/Выкл буд.» включается/выключается будильник. Включение будильника подтверждается коротким двухтональным звуком. При включенном будильнике светится точка в младшем разряде индикатора.
В режиме «Corr» на индикатор выведена корректирующая константа, начальное значение которой 5000 микросекунд в секунду. При отставании часов константу увеличиваем на величину отставания, вычисленное в микросекундах за одну секунду. Если часы спешат, то константу уменьшаем по тому же принципу. Предлагаю для повторения схему простых электронных часов с будильником, выполненные на типа PIC16F628A. Большим плюсом данных часов является светодиодный индикатор типа АЛС, для отображения времени. Лично мне порядком надоели всевозможные ЖКИ и хочется иметь возможность видеть время из любой точки комнаты в том числе в темноте, а не только прямо с хорошим освещением. Схема содержит минимум деталей и имеет отличную повторяемость. Часы испытаны на протяжении месяца, что показало их надежность и работоспособность. Думаю из всех схем в интернете, эта наиболее простая в сборке и запуске.

Принципиальная схема электронных часов с будильником на микроконтроллере:


Как видно из схемы часов, является единственной микросхемой, используемой в данном устройстве. Для задания тактовой частоты используется кварцевый резонатор на 4 МГц. Для отображения времени использованы индикаторы красного цвета с общим анодом, каждый индикатор состоит из двух цифр с десятичными точками. В случае использования пьезоизлучателя, конденсатор С1 — 100мкФ можно не ставить.

Можно применить любые индикаторы с общим анодом, лишь бы каждая цифра имела собственный анод. Чтоб электронные часы были хорошо видны в темноте и с большой дистанции — старайтесь выбрать АЛС-ки чем покрупнее.


Индикация в часах осуществляется динамически. В данный конкретный момент времени отображается лишь одна цифра, что позволяет значительно снизить потребление тока. Аноды каждой цифры управляются микроконтроллером PIC16F628A. Сегменты всех четырех цифр соединены вместе и через токоограничивающие резисторы R1 … R8 подключены к выводам порта МК. Поскольку засвечивание индикатора происходит очень быстро, мерцание цифр становится незаметным.


Для настройки минут, часов и будильника — используются кнопки без фиксации. В качестве выхода для сигнала будильника используется вывод 10, а в качестве усилителя — каскад на транзисторах VT1,2. Звукоизлучателем является пьезоэлемент типа ЗП. Для улучшения громкости вместо него можно поставить небольшой динамик.


Питаются часы от стабилизированного источника напряжением 5В. Можно и от батареек. В часах реализовано 9 режимов индикации. Переход по режимам осуществляется кнопками «+» и «-«. Перед выводом на индикацию самих показаний, на индикаторы выводится короткая подсказка названия режима. Длительность вывода подсказки — одна секунда.


Кнопкой «Коррекция» часы — будильник переводятся в режим настроек. При этом кратковременная подсказка выводится на пол секунды, после чего корректируемое значение начинает мигать. Коррекция показаний осуществляется кнопками «+» и «-«. При длительном нажатии на кнопку, включается режим автоповтора, с заданной частотой. Все значения, кроме часов, минут и секунд, записываются в EEPROM и восстанавливаются после выключения — включении питания.


Если в течение нескольких секунд ни одна из кнопок не нажата, то электронные часы переходят в режим отображения времени. Нажатием на кнопку «Вкл/Выкл» включается или выключается будильник, это действие подтверждается коротким звуком. При включенном будильнике светится точка в младшем разряде индикатора. Думал куда бы пристроить часы на кухне, и решил вмонтировать их прямо в газовую плиту:) Материал прислал in_sane.

Обсудить статью ЭЛЕКТРОННЫЕ ЧАСЫ БУДИЛЬНИК

Настольные и настенные часы с термометрами выполнены в корпусах от стрелочных часов. Часы и термометр изготовлены как отдельные, самостоятельные устройства.

Термометр описывать не буду, он выложен на этом же сайте . Схема, печатная плата и прошивка там есть, все без изменений.

Датчик температуры DS18B20 настольных часов выведен за окно на улицу. Провода изолированные 0,35мм, длиной примерно 10 метров

Часы собраны на одинарных 7-ми сегментных светодиодных индикаторах зеленого цвета. Размер цифры 14х25,4мм – хорошо различимы с любого уголка комнаты. Обратите внимание, что индикатор подключен без гасящих резисторов. Это связано с тем, что каждый сегмент состоит из двух соединенных последовательно светодиодов и номинальное напряжение 3,8 вольта. При динамической индикации токи не превышают допустимые.

Стабилизатор напряжения находится в вилке — адаптере. Он собран на 3 ваттном трансформаторе и высокочастотном преобразователе – стабилизаторе LM2575T-5.0 по стандартной схеме. Микросхема без радиатора, практически не греется. Разъём для блока питания 3,5мм. Кварц 4 МГц.

Транзисторы n-p-n любые маломощные. Кнопки 6×6 H=14/10мм припаяны со стороны проводников. Длина толкателя кнопок выбирается исходя из требований конструкции. При каждом нажатии на кнопку добавляется единичка. При удержании – счет ускоряется до разумной скорости.

Резисторы МЛТ – 0,25. R3 – R6 1-3 кОм.

Аккумуляторы: 4 штуки из GP- 170, или подобные. При отключении сетевого напряжения они питают только микроконтроллер.

Диоды желательно подобрать с наименьшим падением напряжения в прямом направлении.
Платы изготовлены из одностороннего фольгированного стеклотекстолита.
НЕХ файл, схема, печатки в папке №1.

Вариант 2: на одной плате

В этот корпус не помещались две платы: часов и термометра. Уменьшать размеры индикатора часов не хотелось.

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

НЕХ файл и схема термометра в папке № 2. Печатная плата там же.
Схема часов без всяких изменений взята из первого раздела.

Ниже вы можете скачать прошивки и печатные платы в формате HEX

Список радиоэлементов
ОбозначениеТипНоминалКоличествоПримечаниеМагазинМой блокнот
Вариант 1
МК PIC 8-бит

PIC16F628A

1В блокнот
VR1DC/DC импульсный конвертер

LM2575

1В блокнот
VT1-VT4Биполярный транзистор

КТ3102

4В блокнот
VD1, VD2, VD4Диод

Д310

3В блокнот
VD3Диод Шоттки

1N5819

1В блокнот
VS1Диодный мост

DB157

1В блокнот
С1, С2Конденсатор20 пФ2В блокнот
С3, С5Конденсатор0. 1 мкФ2В блокнот
С4330 мкФ 16 В1В блокнот
С6Электролитический конденсатор100 мкФ 35 В1В блокнот
R1, R2Резистор

10 кОм

2В блокнот
R3-R6Резистор

1 кОм

4В блокнот
R7, R10Резистор

100 Ом

2В блокнот
L1Катушка индуктивности330 мкГн1В блокнот
Tr1Трансформатор1В блокнот
F1Предохранитель100 мА1В блокнот
Батарея4. 8 В1В блокнот
HL1, HL2Светодиод2В блокнот
S1, S2Кнопка2В блокнот
Z1Кварц4 МГц1В блокнот
ИндикаторFYS10012BG211В блокнот
Вариант 2
МК PIC 8-бит

PIC16F628A

1В блокнот
VT1-VT4Биполярный транзистор

КТ3102

1В блокнот
С1, С2Конденсатор20 пФ2В блокнот
С3Конденсатор0. 1 мкФ1В блокнот
R1Резистор

4.7 кОм

1В блокнот
R2, R3, R5, R6Резистор

Часы с небольшим 4-х цифровым индикатором. Точка между часами и минутами мигает с частотой 0,5 секунд. Можно встроить в любой предмет: в настольный календарь, в радиоприемник, в автомобиль. Расчетная погрешность — 0,00002%. На практике — за полгода ни разу не было необходимости в коррекции.

Питание 4.5 — 5 вольт, ток до 70мА. Стабилизатор напряжения находится в вилке — адаптере. Он собран на 3 ваттном трансформаторе и высокочастотном преобразователе — стабилизаторе по стандартной схеме. Для авто, конечно, трансформатор не нужен. Микросхема без радиатора, практически не греется. Разъём для блока питания 3.5мм. Кварц 4 МГц. Транзисторы n-p-n любые маломощные.

Кнопки любые. Длина толкателя кнопок выбирается исходя из требований конструкции. Можно кнопки припаять и со стороны проводников. При каждом нажатии на кнопку добавляется единичка. При удержании — счет ускоряется до разумной скорости.

Резисторы МЛТ — 0,25. R7 — R14 300 — 360 Ом. R3 — R6 1-3 кОм. Аккумуляторы: 4 штуки из GP- 170, или подобные. При отключении сетевого напряжения они питают только микроконтроллер. 8 суток выдерживают точно, проверил. Диоды с наименьшим падением напряжения в прямом направлении. Платы изготовлены из одностороннего фольгированого стеклотекстолита.

До установки микроконтроллера в панель изготовленной платы, включите питание и замеряйте напряжение на 14 ножке панельки. Должно быть 4,5 — 4,8 вольт. На 5-ой ножке 0 вольт. Если вы не уверены в качестве изготовленной платы или в исправности деталей — проверьте устройство без микроконтроллера.

Делается это очень просто:

  • Вставьте перемычку из оголенного провода в панельку, 1 и 14 клемму. Это значит, что +4,5 вольт с первой ноги через резистор откроет транзистор VT 2 и катод индикатора единиц часов будет соединен с нулем.
  • Любой провод присоединить одним концом к +, а другим концом поочередно касаться клемм 6,7,8,9,10,11,12,13 панельки.
  • При этом наблюдать зажигающиеся сегменты и их соответствие схеме: + на 6-ой ножке — горит сегмент «g» и так далее.
  • Переставьте перемычку в 2 и 14 клеммы панельки. Проверьте все сегменты индикатора единиц минут.
  • Перемычка 18 и 14 — проверяются десятки часов, 17 и 14 — десятки минут.

Если что-то неправильно работает — исправляйте. Если все правильно — программируйте микроконтроллер и вставляйте, при отключенном питании, в панельку. НЕХ файл прилагается. Включайте питание и получайте готовые часы.

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

  • — 22,8 грн
  • — 10грн
  • FYQ 3641AS21 — 9,3грн
  • Панелька — 3грн
  • Кварц — 1,5грн

Источник: www. cxem.net


C этой схемой также часто просматривают:

Часы на микроконтроллере AVR с DS1307. Часы электронные светодиодные

Привет, geektimes! В первой части статьи были рассмотрены принципы получения точного времени на самодельных часах. Пойдем дальше, и рассмотрим, как и на чем это время лучше выводить.

Итак, у нас есть некая платформа (Arduino, Raspberry, PIC/AVR/STM-контроллер, etc), и стоит задача подключить к нему некую индикацию. Есть множество вариантов, которые мы и рассмотрим.

Сегментная индикация

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

Осторожно, траффик!

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

Есть 1001 статья как подключить светодиод к микроконтроллеру, гугл в помощь. Сложности начинаются тогда, когда мы захотим сделать большие часы — ведь смотреть на мелкий индикатор не особо удобно. Тогда нам нужны такие индикаторы (фото с eBay):

Они питаются от 12В, и напрямую от микроконтроллера просто не заработают. Тут нам в помощь приходит микросхема CD4511 , как раз для этого предназначенная. Она не только преобразует данные с 4-битной линии в нужные цифры, но и содержит встроенный транзисторный ключ для подачи напряжения на индикатор. Таким образом, нам в схеме нужно будет иметь «силовое» напряжение в 9-12В, и отдельный понижающий преобразователь (например L7805) для питания «логики» схемы.

Матричные индикаторы

По сути, это те же светодиоды, только в виде матрицы 8х8. Фото с eBay:

Продаются на eBay в виде одиночных модулей либо готовых блоков, например по 4 штуки. Управление ими весьма просто — на модулях уже распаяна микросхема MAX7219 , обеспечивающая их работу и подключение к микроконтроллеру с помощью всего лишь 5 проводов. Для Arduino есть много библиотек, желающие могут посмотреть код.
Плюсы: невысокая цена, хорошие углы обзора и яркость.
Минус: невысокое разрешение. Но для задачи вывода времени вполне достаточно.

ЖК-индикаторы

ЖК-индикаторы бывают графические и текстовые.

Графические дороже, однако позволяют выводить более разнообразную информацию (например график атмосферного давления). Текстовые дешевле, и с ними проще работать, они также позволяют выводить псевдографику — есть возможность загружать в дисплей пользовательские символы.

Работать с ЖК-индикатором из кода несложно, но есть определенный минус — индикатор требует много управляющих линий (от 7 до 12) от микроконтроллера, что неудобно. Поэтому китайцы придумали совместить ЖК-индикатор с i2c-контроллером, получилось в итоге очень удобно — для подключения достаточно всего 4х проводов (фото с eBay).


ЖК-индикаторы достаточно дешевые (если брать на еБее), крупные, их просто подключать, и можно выводить разнообразную информацию. Единственный минус это не очень большие углы обзора.

OLED-индикаторы

Являются улучшенным продолжением предыдущего варианта. Варьируются от маленьких и дешевых с диагональю 1.1″, до больших и дорогих. Фото с eBay.

Собственно, хороши всем кроме цены. Что касается мелких индикаторов, размером 0.9-1.1″, то (кроме изучения работы с i2c) какое-то практическое применение им найти сложно.

Газоразрядные индикаторы (ИН-14, ИН-18)

Эти индикаторы сейчас весьма популярны, видимо из-за «теплого лампового звука света» и оригинальности конструкции.


(фото с сайта nocrotec.com)

Схема их подключения несколько сложнее, т.к. эти индикаторы для зажигания используют напряжение в 170В. Преобразователь из 12В=>180В может быть сделан на микросхеме MAX771 . Для подачи напряжения на индикаторы используется советская микросхема К155ИД1 , которая специально для этого и была создана. Цена вопроса при самостоятельном изготовлении: около 500р за каждый индикатор и 100р за К155ИД1, все остальные детали, как писали в старых журналах, «дефицитными не являются». Основная сложность тут в том, что и ИН-хх, и К155ИД1, давно сняты с производства, и купить их можно разве что на радиорынках или в немногих специализированных магазинах.

С индикацией мы более-менее разобрались, осталось решить, какую аппаратную платформу лучше использовать. Тут есть несколько вариантов (самодельные я не рассматриваю, т.к. тем кто умеет развести плату и припаять процессор, эта статья не нужна).

Arduino

Самый простой вариант для начинающих. Готовая плата стоит недорого (около 10$ на eBay с бесплатной доставкой), имеет все необходимые разъемы для программирования. Фото с eBay:

Под Arduino есть огромное количество разных библиотек (например для тех же ЖК-экранов, модулей реального времени), Arduino аппаратно совместима с различными дополнительными модулями.
Главный минус: сложность отладки (только через консоль последовательного порта) и довольно-таки слабый по современным меркам процессор (2КБайт RAM и 16МГц).
Главный плюс: можно сделать много чего, практически не заморачиваясь с пайкой, покупкой программатора и разводкой плат, модули достаточно соединить друг с другом.

32-разрядные процессоры STM

Для тех кто захочет что-то помощнее, есть готовые платы с процессорами STM, например плата с STM32F103RBT6 и TFT-экраном. Фото с eBay:

Здесь мы уже имеем полноценную отладку в полноценной IDE (из всех разных мне больше понравилась Coocox IDE), однако понадобится отдельный программатор-отладчик ST-LINK с разъемом JTAG (цена вопроса 20-40$ на eBay). Как вариант, можно купить отладочную плату STM32F4Discovery, на которой этот программатор уже встроен, и его можно использовать отдельно.

Raspberry PI

И наконец, для тех кто хочет полной интеграции с современным миром, есть одноплатные компьютеры с Linux, всем уже наверное известные Raspberry PI. Фото с eBay:

Это полноценный компьютер с Linux, гигабайтом RAM и 4х-ядерным процессором на борту. С краю платы выведена панель из 40 пинов, позволяющая подключать различную периферию (пины доступны из кода, например на Python, не говоря о C/C++), есть также стандартный USB в виде 4х разъемов (можно подключить WiFi). Так же есть стандартный HDMI.
Мощности платы хватит к примеру, не только чтобы выводить время, но и чтобы держать HTTP-сервер для настройки параметров через web-интерфейс, подгружать прогноз погоды через интернет, и так далее. В общем, простор для полета фантазии большой.

С Raspberry (и процессорами STM32) есть одна единственная сложность — ее пины используют 3-вольтовую логику, а большинство внешних устройств (например ЖК-экраны) работают «по старинке» от 5В. Можно конечно подключить и так, в принципе заработает, но это не совсем правильный метод, да и испортить плату за 50$ как-то жалко. Правильный способ — использовать «logic level converter», который на eBay стоит всего 1-2$.
Фото с eBay:

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

ESP8266

Способ скорее экзотический, но довольно-таки перспективный в силу компактности и дешевизны решения. За совсем небольшие деньги (около 4-5$ на eBay) можно купить модуль ESP8266, содержащий процессор и WiFi на борту.
Фото с eBay:

Изначально такие модули предназначались как WiFi-мост для обмена по serial-порту, однако энтузиастами было написано множество альтернативных прошивок, позволяющих работать с датчиками, i2c-устройствами, PWM и пр. Гипотетически вполне возможно получать время от NTP-сервера и выводить его по i2c на дисплей. Для тех кто хочет подключить много различной периферии, есть специальные платы NodeMCU с большим числом выводов, цена вопроса около 500р (разумеется на eBay):

Единственный минус — ESP8266 имеет очень мало памяти RAM (в зависимости от прошивки, от 1 до 32КБайт), но задача от этого становится даже интересней. Модули ESP8266 используют 3-вольтовую логику, так что вышеприведенный конвертор уровней тут также пригодится.

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

Я в итоге остановился на использовании Raspberry PI с текстовым индикатором, настроенным на работу с псевдографикой (что вышло дешевле чем графический экран той же диагонали). Сфоткал экран настольных часов во время написания этой статьи.

Часы выводят точное время, взятое из Интернета, и погоду которая обновляется с Яндекса, все это написано на Python, и вполне работает уже несколько месяцев. Параллельно на часах запущен FTP-сервер, что позволяет (вкупе с пробросом портов на роутере) обновить на них прошивку не только из дома, но и из любого места где есть Интернет. Как бонус, ресурсов Raspberry в принципе хватит и для подключения камеры и/или микрофона с возможностью удаленного наблюдения за квартирой, или для управлением различными модулями/реле/датчиками. Можно добавить всякие «плюшки», типа светодиодной индикации о пришедшей почте, и так далее.

PS: Почему eBay?
Как можно было видеть, для всех девайсов приводились цены или фото с ебея. Почему так? К сожалению, наши магазины часто живут по принципу «за 1$ купил, за 3$ продал, на эти 2 процента и живу». В качестве простого примера, Arduino Uno R3 стоит (на момент написания статьи) 3600р в Петербурге, и 350р на eBay с бесплатной доставкой из Китая. Разница действительно на порядок, безо всяких литературных преувеличений. Да, придется подождать месяц чтобы забрать посылку на почте, но такая разница в цене думаю, того стоит. Но впрочем, если кому-то надо прямо сейчас и срочно, то наверно и в местных магазинах есть выбор, тут каждый решает сам.

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

Схема электрическая самодельных часов с термометром

Микроконтроллер PIC18F25K22 берёт на себя всю обработку данных и отсчёт времени, а на долю ULN2803A остаётся согласование его выходов со светодиодным индикатором. Небольшая микросхема DS1302 работает как таймер точных секундных сигналов, частота её стабилизирована стандартным кварцевым резонатором 32768 Гц. Это несколько усложняет конструкцию, зато вам не придётся постоянно подстраивать и корректировать время, которое будет неизбежно запаздывать или спешить, если обойтись случайным ненастроенным кварцевым резонатором на несколько МГц. Подобные часы скорее простая игрушка, чем качественный точный хронометр.

При необходимости, датчики температуры могут быть расположены далеко от основного блока — они соединяются с ним трёхпроводным кабелем. В нашем случае один температурный датчик установлен в блок, а другой расположен снаружи, на кабеле длинной около 50 см. Когда пробовали кабель 5 м, то тоже прекрасно функционировало.

Дисплей часов изготовлен из четырех больших светодиодных цифровых индикаторов. Первоначально они были с общим катодом, но изменены на общий анод в финальной версии. Вы можете ставить любые другие, потом просто подберёте токоограничительные резисторы R1-R7 исходя из требуемой яркости. Можно было разместить его на общей, с электронной частью часов, плате, но так гораздо универсальнее — вдруг вы захотите поставить очень большой LED индикатор, чтоб их было видно на дальнем расстоянии. Пример такой конструкции уличных часов есть тут.

Сама электроника запускается от 5 В, но для яркого свечения светодиодов необходимо использовать 12 В. Из сети, питание поступает через понижающий трансформатор адаптер на стабилизатор 7805 , который образует напряжение строго 5 В. Обратите внимание на небольшую зелёную цилиндрическую батарейку — она служит источником резервного питания, на случай пропадания сети 220 В. Её не обязательно брать на 5 В — достаточно литий-ионного или Ni-MH аккумулятора на 3,6 вольта.

Для корпуса можно задействовать различные материалы — дерево, пластик, металл, либо встроить всю конструкция самодельных часов в готовый промышленный, например от мультиметра, тюнера, радиоприёмника и так далее. Мы сделали из оргстекла, потому что оно легко обрабатывается, позволяет увидеть внутренности, чтоб все видели — эти часы собраны своими руками. И, главное, оно было в наличии:)

Здесь вы сможете найти все необходимые детали предлагаемой конструкции самодельных цифровых часов, в том числе схему, топологию печатной платы, прошивки PIC и

Светодиодные простые часы можно сделать на дешёвом контроллере PIC16F628A. Конечно, в магазинах полно различных электронных часов, но по функциям у них может или нехватать термометра, или будильника, или они не светятся в темноте. Да и вообще, иногда прото хочется что-то спаять сам, а не покупать готовое. Чтобы увеличить рисунок схемы — клац.

В предлагаемых часах есть календарь. В нём два варианта отображения даты — месяц цифрой или слогом, всё это настрайвается после ввода даты переключением дальше кнопкой S1 во время отображения нужного параметра, термометр. есть прошивки под разные датчики. Смотрите устройство внутри корпуса:


Все знают, что кварцевые резонаторы не идеальные по точности, и в течение нескольких недель набегает погрешность. Для борьбы с этим делом, в часах предусмотрена корекция хода, которая устанавливается параметрами SH и SL . Подробнее:

SH=42 и SL=40 — это вперёд на 5 минут в сутки;
SH=46 и SL=40 — это назад на 3 минуты в сутки;
SH=40 и SL=40 — это вперёд на 2 минуты в сутки;
SH=45 и SL=40 — это назад на 1 минуту в сутки;
SH=44 и SL=С0 — это вперёд на 1 минуту в сутки;
SH=45 и SL=00 — это корекция отключена.

Таким образом можно добится идеальной точности. Хотя придётся несколько раз погонять коррекцию, пока выставите идеально. А теперь наглядно показывается работа электронных часов:

температура 29градусов цельсия

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

На фото прототип, собранный мной для отладки программы, которая будет управлять всем этим хозяйством. Вторая arduino nano в верхнем правом углу макетки не относится к проекту и торчит там просто так, внимание на нее можно не обращать.

Немного о принципе работы: ардуино берет данные у таймера DS323, перерабатывает их, определяет уровень освещенности с помощью фоторезистора, затем все посылает на MAX7219, а она в свою очередь зажигает нужные сегменты с нужной яркостью. Так же с помощью трех кнопок можно выставить год, месяц, день, и время по желанию. На фото индикаторы отображают время и температуру, которая взята с цифрового термодатчика

Основная сложность в моем случае — это то, что 2.7 дюймовые индикаторы с общим анодом, и их надо было во первых как то подружить с max7219, которая заточена под индикаторы с общим катодом, а во вторых решить проблему с их питанием, так как им нужно 7,2 вольта для свечения, чего одна max7219 обеспечить не может. Попросив помощи на одном форуме я получил таки ответ.

Решение на скриншоте:


К выходам сегментов из max7219 цепляется микросхемка , которая инвертирует сигнал, а к каждому выводу, который должен подключаться к общему катоду дисплея цепляется схемка из трех транзисторов, которые так же инвертируют его сигнал и повышают напряжение. Таким образом мы получаем возможность подключить к max7219 дисплеи с общим анодом и напряжением питания более 5 вольт

Для теста подключил один индикатор, все работает, ничего не дымит

Начинаем собирать.

Схему решил разделить на 2 части из-за огромного количества перемычек в разведенном моими кривыми лапками варианте, где все было на одной плате. Часы будут состоять из блока дисплея и блока питания и управления. Последний было решено собрать первым. Эстетов и бывалых радиолюбителей прошу не падать в обморок из-за жестокого обращения с деталями. Покупать принтер ради ЛУТа нет никакого желания, поэтому делаю по старинке — тренируюсь на бумажке, сверлю отверстия по шаблону, рисую маркером дорожки, затем травлю.

Принцип крепления индикаторов оставил тот же, как и на .

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

Процесс разметки



Затем с помощью шаблона сверлим отверстия в нужных местах и примеряем все компоненты. Все встало безупречно.

Рисуем дорожки и травим.


купание в хлорном железе

Готово!
плата управления:


плата индикации:


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

Вот готовые платы. На плате управления имеется посадочное место для ардуино нано, часов, а так же выходы для подключения к плате дисплея и датчики (фоторезистор для автояркости и цифровой термометр ds18s20) и блок питания на с регулировкой выходного напряжения (для больших семисегментников) и для питания часов и ардуино, на плате индикации находятся посадочные гнезда для дисплеев, панельки для max2719 и uln2003a, решение для питания четырех больших семисегментников и куча перемычек.


плата управления сзади

Плата индикации сзади:

Ужасный монтаж смд:


Запуск

После припаивания всех шлейфов, кнопок и датчиков пришло время все это включить. Первый запуск выявил несколько проблем. Не светился последний большой индикатор, а остальные светились тускло. С первой проблемой расправился пропаиванием ножки смд-транзистора, со второй — регулировкой напряжения, выдаваемого lm317.
ОНО ЖИВОЕ!

Данные часы собранны на хорошо известном комплекте микросхем — К176ИЕ18 (двоичный счетчик для часов с генератором сигнала звонка),

К176ИЕ13 (счетчик для часов с будильником) и К176ИД2 (преобразователь двоичного кода в семисегментный)

При включении питания в счетчик часов, минут и в регистр памяти будильника микросхемы U2 автоматически записываются нули. Для установки

времени следует нажать кнопку S4 (Time Set) и придерживая ее нажать кнопку S3 (Hour) — для установки часов или S2 (Min) — для установки

минут. При этом показания соответствующих индикаторов начнут изменяться с частотой 2 Гц от 00 до 59 и далее снова 00. В момент перехода

от 59 к 00 показания счетчика часов увеличатся на единицу. Установка времени будильника происходит так же, только придерживать нужно

кнопку S5 (Alarm Set). После установки времени срабатывания будильника нужно нажать кнопку S1 для включения будильника (контакты

замкнуты). Кнопка S6 (Reset) служит для принудительного сброса индикаторов минут в 00 при настройке. Светодиоды D3 и D4 играют роль

разделительных точек, мигающих с частотой 1 Hz. Цифровые индикаторы на схеме расположены в правильном порядке, т.е. сначала идут

индикаторы часов, две разделительные точки (светодиоды D3 и D4) и индикаторы минут.

В часах использовались резисторы R6-R12 и R14-R16 ваттностью 0,25W остальные — 0,125W. Кварцевый резонатор XTAL1 на частоту 32 768Hz —

обычный часовой, Транзисторы КТ315А можно заменить на любые маломощные кремниевые соответствующей структуры, КТ815А — на транзисторы

средней мощности со статическим коэффициентом передачи тока базы не менее 40, диоды — любые кремниевые маломощные. Пищалка BZ1

динамическая, без встроенного генератора, сопротивление обмотки 45 Om. Кнопка S1 естественно с фиксацией.

Индикаторы использованы TOS-5163AG зеленого свечения, можно применить любые другие индикаторы с общим катодом, не уменьшая при этом

сопротивление резисторов R6-R12. На рисунке Вы можете наблюдать распиновку данного индикатора, выводы показаны условно, т.к. представлен

вид сверху.

После сборки часов, возможно, нужно будет подстроить частоту кварцевого генератора. Точнее всего это можно сделать, контролируя цифровым

частотомером период колебаний 1 с на выводе 4 микросхемы U1. Настройка генератора по ходу часов потребует значительно большей затраты

времени. Возможно, придется также подстроить яркость свечения светодиодов D3 и D4 подбором сопротивления резистора R5, чтобы все

светилось равномерно ярко. Потребляемый часами ток не превышает 180 мА.

Часы питаются от обычного блока питания, собранного на плюсовом микросхемном стабилизаторе 7809 с выходным напряжением +9V и током 1,5A.

Разработка часов на микроконтроллере PIC16F84 курсовая по радиоэлектронике

Министерство образования Российской Федерации Северокавказский Государственный Технический Университет Кафедра электроники и микроэлектроники КУРСОВОЙ ПРОЕКТ По предмету : Микропроцессорные системы управления и диагностики На тему «Разработка часов на микроконтроллере PIC16F84 » Выполнил: студент 5 курса группы УПЭ-991 Козидубов Е. Н Принял: Якушев В.М. Ставрополь 2002 Задание Разработать часы реального времени на микроконтроллере PIC16F84, программное обеспечения для него на языке ассемблер, рассмотреть вопросы программирования микроконтроллера. Напряжение пипания устройства 5В +/-1В Частота тактового генератора МК 4 Мгц Количество отображаемых цифр на идикаторе 4 Количество кнопок управления 2 Единицы измерения времени Часы Минуты Секунды 1.Разработка структурной схемы устройства Структурная схема электронных часов на микропроцессоре приведена на рисунке 1. Она состоит из 4 основных блоков. Тактовый генератор предназначен для генерации прямоугольных импульсов частотой 4 Мгц для тактирования микропроцессора и программируемого таймера . Микропроцес- Рисунок 1. Структурная схема устройства сорный блок состоит из микропроцессора, постоянного и оперативного запоминающего устройств предназначен для управления всеми другими блоками часов. Он осуществляет обработку прерывания полученного от таймера предварительно делает его установку на нужное значение, готовит данные полученные от таймера, выводит значение на индикатор и считывает значение с клавиатуры. Контроллер клавиатуры и дисплея предназначен для дешифрации значений полученных от микропроцессора и усиления сигналов для индикатора также осуществляет предварительную обработку сигналов полученных от клавиатуры. Дисплей предназначен для вывода реального времени в графическом виде понятном для человека. Клавиатура электронных часов служит для ввода управляющих сигналов таких как установка режима индикации дисплея и установка времени. 2.Выбор элементной базы Данное устройство может быть выполнено на разной элементной базе включая микросхемы серии 155,176,561 также различные микропроцессорные комплекты 580,1816,1830 и на специализированных микросхемах например 1901 что предпочтительней с экономической точки зрения т.к в их состав входят контроллер клавиатуры и дисплея тактовый генератор, устройство управления, таймер и многое другое необходимое для электронных часов. В данной работе в учебных целях это устройство будет разработано на микроконтроллере фирмы Microchip.inc. PIC16F84 относится к семейству КМОП микроконтроллеров. Отличается тем, что имеет внутреннее 1K x 14 бит EEPROM для программ, 8-битовые данные и 64байт EEPROM памяти данных. При этом отличаются низкой стоимостью и высокой производительностью. Все команды состоят из одного слова (14 бит шириной) и исполняются за один цикл (400 нс при 10 МГц), кроме команд перехода, которые выполняются за два цикла (800 нс). PIC16F84 имеет прерывание, срабатывающее от четырех источников, и восьмиуровневый аппаратный стек. Периферия включает в себя 8-битный таймер/счетчик с 8- битным программируемым предварительным делителем (фактически 16 — битный таймер) и 13 линий двунаправленного ввода/вывода. Высокая нагрузочная способность (25 мА макс. втекающий ток, 20 мА макс. вытекающий ток) линий ввода/вывода упрощают внешние драйверы и, тем самым, уменьшается общая стоимость системы. Разработки на базе контроллеров PIC16F84 поддерживается ассемблером, программным симулятором, внутрисхемным эмулятором (только фирмы Microchip) и программатором. Серия PIC16F84 подходит для широкого спектра приложений от схем высокоскоростного управления автомобильными и электрическими двигателями до экономичных удаленных приемопередатчиков, показывающих приборов и связных процессоров. Наличие ПЗУ позволяет подстраивать параметры в прикладных программах (коды передатчика, скорости двигателя, частоты приемника и т.д.). Малые размеры корпусов, как для обычного, так и для поверхностного монтажа, делает эту серию микроконтроллеров пригодной для портативных приложений. Низкая цена, экономичность, быстродействие, простота использования и гибкость ввода/вывода делает PIC16F84 привлекательным даже в тех областях, где ранее не применялись микроконтроллеры. Например, таймеры, замена жесткой логики в больших системах, сопроцессоры. Cледует добавить, что встроенный автомат программирования EEPROM кристалла PIC16F84 позволяет легко подстраивать программу и данные под конкретные требования даже после завершения ассемблирования и тестирования. Эта возможность может быть использована как для тиражирования, так и для занесения калибровочных данных уже после окончательного тестирования. Структурная схема микроконтроллера приведена на рисунке 2. Рисунок 2. Структурная схема микроконтроллера PIC16F84 Архитектура основана на концепции раздельных шин и областей памяти для данных и для команд (Гарвардская архитектура). Шина данных и память данных (ОЗУ) — имеют ширину 8 бит, а программная шина и программная память (ПЗУ) имеют ширину 14 бит. Такая концепция обеспечивает простую, но мощную систему команд, разработанную так, что битовые, байтовые и регистровые операции работают с высокой скоростью и с перекрытием по времени выборок команд и циклов выполнения. 14- битовая ширина программной памяти обеспечивает выборку 14-битовой команды в один цикл. Двухступенчатый конвейер обеспечивает одновременную выборку и исполнение команды. Все команды выполняются за один цикл, исключая команды переходов. В PIC16F84 программная память объемом 1К х 14 расположена внутри кристалла. Исполняемая программа может находиться только во встроенном ПЗУ. Условно графическое обозначение микроконтроллера приведено на рисунке 3. Программный код, который записан в кристалл, может быть защищен от считывания при помощи установки бита защиты (CP) в слове конфигурации в ноль. Содержимое программы не может быть прочитано так, что с ним можно было бы работать. Кроме того, при установленном бите защиты становится невозможным изменять программу. То-же относится и к содержимому памяти данных EEPROM. Если установлена защита, то бит CP можно стереть только вместе с содержимым кристалла. Сначала будет стерта EEPROM программная память и память данных и в последнюю очередь бит защиты кода CP. Кристалл PIC16C84 имеет четыре слова, расположенные по адресу (2000h-2003h) Они предназначены для хранения идентификационного кода (ID) пользователя, контрольной суммы или другой информации. Как и слово конфигурации, они могут быть прочитаны или записаны только с помощью программатора. Доступа по программе к ним нет. Если кристалл защищен, пользователю рекомендуется использовать для идентификации только младшие семь бит каждого ID слова, а в старший бит записывать `0`. Тогда ID слова можно будет прочитать даже в защищенном варианте. Вход в режим SLEEP осуществляется командой SLEEP. По этой команде, если WDT разрешен, то он сбрасывается и начинает счет времени, бит «PD» в регистре статуса (f3) сбрасывается, бит «TO» устанавливается, а встроенный генератор выключается. Порты ввода/вывода сохраняют состояние, которое они имели до входа в режим SLEEP. Для снижения потребляемого тока в этом режиме, ножки на вывод должны иметь такие значения, чтобы не протекал ток между кристаллом и внешними цепями. Ножки на ввод должны быть соединены внешними резисторами с высоким или низким уровнем, чтобы избежать токов переключения, вызываемых плавающими высокоомными Номинальная выдержка WDT составляет 18 мс (без использования делителя). Она зависит от температуры, напряжения питания, от особенностей типов микросхем. Если требуются большие задержки, то к WDT может быть подключен встроенный делитель с коэффициентом деления до 1:128; который программируется путем записи в регистр OPTION. Здесь могут быть реализованы выдержки до 2.5 секунд. Команды «CLRWDT» и «SLEEP» обнуляют WDT и делитель, если он подключен к WDT. Это запускает выдержку времени сначала и предотвращает на некоторое время выработку сигнала сброс. Если сигнал сброса от WDT все же произошел, то одновременно обнуляется бит «TO» в регистре статуса (f3). В приложениях с высоким уровнем помех, содержимое регистра OPTION подвержено сбою. Поэтому регистр OPTION должен обновляться через равные промежутки времени. Следует учесть, что наихудшей комбинацией является: Vdd=min, температура=max и max коэффициент деления делителя,- это приводит к самой большой выдержке времени, она может достигать нескольких секунд. Также в устройстве будет использован цифро-буквенный индикатор с высотой цифр 7,5 мм из семи сегментов с децимальной точкой АЛС324А, его графическое изображение приведено на рисунке 4. 3.Разработка схемы электрической принципиальной Применение микроконтроллеров PIC16F84 приводит к резкому уменьшению размеров устройства потребляемой мощности и количества используемых элементов. При разработке устройств на микроконтроллерах разработчику электронной схемы необходимо выбрать частоту тактового генератора для поставленной задачи и следить чтобы максимальная нагрузка на порты ввода вывода не превышала допустимую. Кристаллы PIC16F84 могут работать с четырьмя типами встроенных генераторов. Пользователь может запрограммировать два конфигурационных бита (FOSC1 и FOSC0) для выбора одного из четырех режимов: RC, LP, XT, HS. Кристаллы PIC16… могут также тактироваться и от внешних источников. Генератор, построенный на кварцевых или керамических резонаторах, требует периода стабилизации после включения питания. Для этого, встроенный таймер запуска генератора держит устройство в состоянии сброса примерно 18 мс после того, как сигнал на /MCLR ножке кристалла достигнет уровня логической единицы. Таким образом, внешняя цепочка RC , связанная с ножкой /MCLR во многих случаях не требуется. Встроенные генераторы работоспособны при определенных номиналах питающего напряжения: Vdd OSC mode Max Freq 2..3V RC 2 MHz LP 200 kHz 3..6V RC, XT 4 MHz LP 200 kHz 4,5..5,5 HS 10 MHz При частотах ниже 500 кГц, внутренний генератор может генерировать сбойный импульс на гармониках, когда переключается бит 0 порта A. Этого не происходит при использовании внешнего генератора или при встроенном RC генераторе. PIC16F84-XT, -HS или -LP требуют подключения кварцевого или керамического резонатора к выводам OSC1 и OSC2. Маркировка следующая: XT — стандартный кварцевый генератор, HS — высокочастотный кварцевый генератор, LP — низкочастотный генератор для экономичных приложений. Резистор Rs может потребоваться для генератора «HS», особенно при частотах ниже 20 МГц для гашения гармоник. Он также может потребоваться в режиме XT с резонатором типа AT strip-cut. Необходимые значения конденсаторов для разных частот приведены в таблице. Более высокая емкость будет увеличивать стабильность генератора, но также будет увеличивать время запуска. Значения приведены для ориентировки. В режимах HS и XT, чтобы избежать гармоник может потребоваться последовательный резистор Rs. Таблица Выбор конденсатора для кварцевого генератора Тип генератора Часто та Конденсато р С1 Конденсато р С2 LP 32 КГц 30 пФ 30 — 50 пф 100 15 пф 15 пФ КГц 200 КГц 0- 15 пФ 0 — 15 пФ XT 100 КГц 15 — 30 пФ 200 — 300 пФ 200 КГц 15- 30 пФ 100 — 200 пФ 455 КГц 15 — 30 пФ 15 -100 пФ 1 МГц 15 — 30 пФ 15 — 30 пФ 2 МГц 15 пФ 15 пФ 4МГц 15 пФ 15 пФ HS 4 МГц 15 пФ 15 пФ 10 МГц 15пФ 15 пФ Ввод информации для управления электронными часами осуществляется через 2 кнопки подключенных к портам RB0 и RA0 микроконтроллера. Схема подключения показана на рисунке 6. Меры по предотвращению дребезга контактов могут реализоватся програмным метадом. Сопротивление резисторов выбирается из расчета протикания наименьшего тока необходимого для фиксации логической 1 на входах микрокантроллера при неактивных позициях кнопок и в данном случае составляют 10 Ком. Рисунок 6 . Подключение клавиатуры управления Рисунок 7. Схема подключения устройства индикации Также в устройстве присутствует блок индикации состоящий из 4-х индикаторов АЛС324А которые управляются микропроцессором через токоограничивающие резисторы R4…R10 номеналом 180 ом. Индикация осуществляется динамическим способом т.е вывод осуществляется по порядку 1,2,3,4 — индикатор по 10мс на каждый индикатор. Схема подключения индикаторов показана на рисунке 7. Электрическая принципиальная схема устройства приведена на чертеже 1. return ;Выход из процедуры обработки прерывания ;**************************************************************** org 0x10 segment ; Таблица преобразования DEC -> семисегментный код. CLRF PCLATH ADDWF PCL, F dt 07E, b’00001100′, 0B6, 09E, 0CC, 0DA, 0FA, 00E, 0FE, 0DE Data1 ;*************десятки CLRF PCLATH ADDWF PCL, F ;0 1 2 3 4 5 6 7 8 9 dt 0,0,0,0,0,0,0,0,0,0 dt 1,1,1,1,1,1,1,1,1,1 dt 2,2,2,2,2,2,2,2,2,2 dt 3,3,3,3,3,3,3,3,3,3 dt 4,4,4,4,4,4,4,4,4,4 dt 5,5,5,5,5,5,5,5,5,5 Data2 ;***********единицы CLRF PCLATH ADDWF PCL, F ;0 1 2 3 4 5 6 7 8 9 dt 0,1,2,3,4,5,6,7,8,9 ;0 dt 0,1,2,3,4,5,6,7,8,9 ;10 dt 0,1,2,3,4,5,6,7,8,9 ;20 dt 0,1,2,3,4,5,6,7,8,9 ;30 dt 0,1,2,3,4,5,6,7,8,9 ;40 dt 0,1,2,3,4,5,6,7,8,9 ;50 ; Программные регистры: skan1 equ 20 ;рег хранения RB1,2 clok1 equ 21 ; хранение часов sek equ 22 ;регистр хранения секунд min equ 23 ;регистр хранения минут cl_k equ 24 Dig_x equ 25 ; Значение X0:00 для индикации. Dig_y equ 26 ; Значение 0X:00 для индикации. Dig_z equ 27 ; Значение 00:X0 для индикации. Dig_exp equ 28 ; Значение 00:0X для индикации. cnt1 equ 29 ;переменная исп для задержки времени cnt2 equ 2A ;переменная исп для задержки времени cnt_r equ 2B ;переменная исп для задержки времени temp equ 2C clok2 equ 2D temp1 equ 2E n1 equ 2f n2 equ 30 Start ; Начальная инициализация. clrw bsf STATUS,RP0 ; Обращение к банку 1. clrf PORTA ; Обнулить порт А. clrf PORTB ; Обнулить порт В. movlw b’00010000′ movwf TRISA ; RA0 — RA3 выходы, RA4 вход. movlw b’00000001′ movwf TRISB ; RB1 — RB7 выходы.RB0 вход movlw b’00000101′ ;коэффициен предделителя 64 movwf OPTION_REG bcf STATUS,RP0 ; Обращение к банку 0. movlw b’10100000′ movwf INTCON clrf min clrf sek clrf cl_k movlw 0 movwf TMR0 movlw 01 ; Для контроля дисплея movwf Dig_x movlw 02 ; загрузить во все регистры индикации 8. movwf Dig_y movlw 03 movwf Dig_z movlw 04 movwf Dig_exp movlw .131 movwf clok1 movwf TMR0 movlw .1 movwf temp1 Start1 ; Основной цикл программы. movlw 19 ; Установить счетчик циклов индикации. movwf cnt_r loop1 clrwdt call refresh ;индикаторы. decfsz cnt_r, f goto loop1 ;***присвоение значения регистрам индикации в зависимости от режима ;индикации****** clrwdt btfss temp1,0 call Temp_min btfsc temp1,0 call Temp_clk ;******присвоение значения регистрам индикации movf n1,0 call Data1 movwf Dig_x movf n1,0 call Data2 movwf Dig_y movf n2,0 call Data1 movwf Dig_z clrwdt movf n2,0 call Data2 movwf Dig_exp ;********клавишы установки режима индикации и времени******* call Delay btfss PORTA,4 ;сканируем клавишу установки режима RA4 вывод 3 incf temp1,1 ;прибавляем к темпу 1 btfss PORTB,0 ;клавиша установки времени RB0 вывод 6 call Min_clk goto Start1 ;************************************************************ Temp_min movf min,0 movwf n1 movf sek,0 movwf n2 return ;************************************************************ Temp_clk movf cl_k,0 movwf n1 movf min,0 movwf n2 return ;****************выбор прибавить минуты(0) или часы(1)*********** Min_clk clrwdt btfss temp1,0 incf min,1 btfsc temp1,0 incf cl_k ;*******проверка 60 мин 24 часа***************** movf min,0 sublw . 60 btfsc STATUS,Z clrf min movf cl_k,0 sublw .24 5.Программирование микроконтроллера Конструкция представляет из себя очень простое и дешевое устройство для программирования и последующего чтения внутренней памяти PIC контроллеров типа PIC16C84 /83, PIC16F84 /83, PIC16CE625 /624/623. В отличие от многих аналогичных конструкций, программатор допускает внутрисхемное программирование. При разработке за основу была взята схема , рекомендуемая фирмой «Microchip» . Программатор питается от источника напряжением 12…13v с током до 100ma и подключается к порту LPT1 персонального компьютера. Управляющая программа разрабатывалась для MS DOS, поэтому при работе в среде «Windows» для соблюдения необходимых временных соотношений при программировании ее необходимо запускать в режиме эмуляции MS DOS. Хотя сама программа прекрасно работает и в оконном режиме, попытка программирования в этом случае ни к чему хорошему не приведет. Алгоритм программирования большинства PIC контроллеров одинаков, поэтому не составит труда расширить их номенклатуру. Интерфейс программы прост и интуитивно понятен. Схема электрическая принципиальная приведена на чертеже.Протокол работы микросхемы при программировании рассмотрен в диаграммых на рисунке 9, вывод данных из микроконтроллера и рисунке 10 ввод данных в микроконтроллер. PIC16F84 может быть запрограммирован в готовом изделии по последовательному каналу. Это реализовано с помощью двух линий тактового сигнала и данных, ка также трех других линий: питание , земля, напряжение программирование . Это позволяет производить платы с незапрограммированными устройствами и программировать микроконтроллер непосредственно перед поставкой продукции. Это также позволяет снабжеть устройство самым свежим программным обеспечением или настраивать программное обеспечение для кристалла. Устройство входит в режим программирования Удержанием низкого уровня на выводах RB6, RB7 во время перехода сигнала на выводе MCLR/Vpp из нижнего уровня в высокий. После этого RB6 становится тактовым сигналом, а RB7-данными программирования. После входа в режим программирования можно послать 6-ти битную команду. В зависимостии от нее можно записать или считать 14-битные данные. Заключение По полученному заданию была проделана работа в полном объеме, разработаны электронные часы на микроконтроллере, написана программа для него рассмотрены вопросы программирования МК. При выполнении данной работы был получен ценный опыт разработки подобных устройств получены навыки в разработке програм на языке ассемблер также был закреплены знания полученные на занятиях.

Параметры часов микроконтроллера PIC

Г. Ширер из Центра лазерных исследований свободных электронов Университета Вандербильта Нашвилл, Теннесси говорит:

Есть несколько основных методов обеспечения часов для микроконтроллера. Микроконтроллер имеет внутренний генератор и два контакта. на 16F84 (контакты 15 и 16) для подключения стандарта частоты для Часы. Микроконтроллеры 16F84 доступны с диапазоном частот DC — 4 МГц и DC — версии 10 МГц. Номер чипа имеет суффикс / 04 или / 10. Версия 16F84A способна работать от постоянного тока до 20 МГц, однако это версия в настоящее время недоступна.

Разница в стоимости между единицами небольшая и при небольших количествах, наверное, лучше было бы купить версию с самой высокой тактовой частотой, которая доступен. Для больших количеств было бы разумно выбрать наименьшее тактовая частота, комфортно отвечающая требованиям приложения, поскольку экономия затрат увеличивается с увеличением количества. Частотные характеристики указаны только гарантия производителя.В курсе экспериментов по разгону (работа микроконтроллера с частотой выше указанной) микроконтроллеры с приемлемыми результатами. Это было бы хорошо для экспериментов, но было бы не считается хорошей конструкторской практикой

Наименее точным методом было бы подключение RC (резистивно-конденсаторной) сети. к контакту 15. Режим RC можно использовать, когда синхронизация не является критической проблемой. например, когда два входа имеют высокий уровень, желаемый выход становится высоким. Время константа RC-сети определяет частоту, где

т = R * C
 

а также

f = 1 / T

t = время в секундах
R = сопротивление в Ом
C = емкость в фарадах
f = частота в герцах
 

Если вы планируете использовать стандартный метод частоты RC, рекомендуется номиналы резистора должны оставаться в пределах от 5 до 100 кОм, что потребует емкость конденсатора примерно 20 пФ.Сопротивления <= 2,2 кОм могут вызвать осциллятор станет нестабильным или вообще остановится. Чрезвычайно высокое сопротивление например, 1 мегабайт может привести к чрезмерной чувствительности генератора к шуму, влажность и протечка.

Недорогие резисторы и конденсаторы не имеют допусков, обеспечивающих точная тактовая частота, достаточная для измерения времени, передачи или получение серийной информации и других измерений времени или критических по времени Приложения. Стандартные резисторы ватт обычно имеют допуск 1%, а керамические конденсаторы будут иметь допуск примерно 5%.RC компоненты, имеющие достаточный допуск для последовательной связи, будут быть значительно дороже, чем другие варианты, доступные в качестве хорошего эталон частоты.

Кристаллы кварца имеют чрезвычайно высокий допуск, который измеряется частями. на миллион (PPM). Однако кристаллы кварца стоят несколько долларов за штуку. обеспечивают высочайшую точность. Наряду с кристаллом два конденсатора потребуется примерно 22 пФ (см. список ниже). Я рекомендую использование монолитных керамических конденсаторов для этой работы, так как они намного меньше и более стабильный, чем обычная версия с керамическим диском.Используя эту опцию, можно стоит почти столько же, сколько и сам микроконтроллер. Если бы вы строили цифровые часы или измеритель емкости, кристалл кварца будет компонентом выбора.

Microchip рекомендует следующие номиналы конденсаторов для кварцевых генераторов. Более высокая емкость увеличит стабильность генератора, но также увеличить время запуска. Библиотека целевой микросхемы JAL установит режим предохранителя правильно для выбранной частоты. Однако помните, что выбор частоты, отличной от 4 МГц или 10 МГц, вызовет синхронизацию и задержку проблемы, поскольку JAL вычисляет эти значения на основе стандартных тактовых частот.

Режим Частота Емкость

LP 23 кГц 68 - 100 пФ
LP 200 кГц 15 - 33 пФ
XT 100 кГц 100 - 150 пФ
XT 2 МГц 15-33 пФ
XT 4 МГц 15-33 пФ
HS 4 МГц 15 - 33 пФ
HS 10 МГц 15 - 33 пФ
 

Третий и, на мой взгляд, лучший вариант для общего пользования — керамический. резонатор. Допуск для керамического резонатора составляет примерно 0,5%, что более чем подходит для всех, кроме самого критического измерения времени Приложения.Помните также, что деление тактовой частоты также делит терпимость в то же время. Керамическим резонаторам также требуются конденсаторы. как кристаллы кварца. Для всех намерений и целей микроконтроллер выполняет не знаю разницы между керамическим резонатором и кристаллом кварца. Более того, доступны версии керамических резонаторов, которые имеют встроенные конденсаторы и стоят всего на копейки больше, чем версия без конденсаторы. Лучше всего то, что любая версия стоит менее одного доллара.

Ниже приводится список керамических резонаторов, которые я использовал в экспериментах. Я провел. Обратите внимание, что резонаторы 20 МГц предназначены для использования с 16F877. Микроконтроллер.

Частота Производитель Номер детали Конденсаторы

4 МГц Murata Erie CSA4.00MG без выхода
4 МГц Panasonic EFO-MN4004A4 без выхода
4 МГц Panasonic EFO-MC4004A4 W
10 МГц Murata Erie CSA10.00MG без выхода
10 МГц Panasonic EFO-MN1005B4 W / O
10 МГц Panasonic EFO-MC1005B4 W
10 МГц ECS, Inc.ЗТА-10.00МТ БЕЗ
10 МГц ECS, Inc ZTT-10.00MT W
20 МГц ECS, Inc. ZTA-20.00MX011 без выхода
20 МГц ECS, Inc. ZTT-20.00MT W
 

Для керамических резонаторов без конденсаторов я успешно использовал 22 пФ для резонаторов 4 и 10 МГц. Microchip рекомендует 15 — 33 пФ и установка предохранителя режима на XT для 4 МГц и HS для резонаторов 10 МГц. Все резонаторов, перечисленных выше, составляют + — 0,5%.

Это следствие закона Мерфи. «Осцилляторы усиливаются.Усилители колеблются ».

.

Все о часах для PIC


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

Поскольку часы так важны, микроконтроллеры PIC предлагают широкий спектр опций на выбор для ваших собственных приложений. У вас могут быть часы, которые работают быстро, когда многое должно произойти за короткий промежуток времени, или часы, которые потребляют незначительное количество энергии для установок с батарейным питанием. Возможно, для вас важна синхронизация PIC со стабильными часами реального времени. Фактически, для типичного PIC существует восемь или более вариантов тактовой частоты.

Однако, если вы возьмете таблицу и попытаетесь отсортировать все возможности, вы быстро пожалеете о старой фразе: «За деревьями не видно леса.«Таблицы данных для PIC состоят из сотен страниц и не обязательно организованы для лучшего обучения. И, конечно же, время от времени возникает ошибка, из-за которой новичку становится еще труднее освоиться.

Как человек, посвятивший всю свою сознательную жизнь преподаванию, я всегда интуитивно ценил важность хорошо организованной презентации. Вы начинаете с «леса» и только потом подходите к «деревьям». Вот что мы сделаем здесь — сначала будем иметь в виду общую картину, а затем заняться деталями, когда они, наконец, понадобятся.

Итак, если в прошлом вы были встревожены тем, насколько сложными кажутся параметры часов для PIC, подпишитесь сейчас и посмотрите, как правильный подход может иметь большое значение. Чтобы превратить это в процесс активного обучения, мы завершим несколько реальных экспериментов, которые вы можете провести на макетной плате. К концу нашего совместного сеанса вы должны быть готовы начать уверенно использовать часы PIC.

Основные частоты

Для большей конкретики я остановлюсь на PIC16F88, который является одним из самых популярных микроконтроллеров среди домашних мастеров.Однако другие PIC будут иметь многие из тех же опций — даже меньшие восьмиконтактные микросхемы.

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

А пока давайте сосредоточимся на основных часах, которые нам нужны для большинства проектов. См. Рисунок 1 , на котором показано, что доступно.

РИСУНОК 1. Восемь режимов для основных часов.


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

Добавив немного больше деталей, ветви дерева снова разделяются, показывая восемь отдельных режимов. Каждому из них присвоено сокращенное название Microchip. Их стоит изучить сейчас, чтобы впоследствии упростить чтение таблицы. Давайте просканируем эти конкретные режимы слева направо. Первый — INTRC, что означает внутренний RC-генератор.Работающий на частоте около 31 кГц, это низкоскоростное устройство, встроенное в PIC. Хотя это довольно медленно по любым стандартам, у него есть то преимущество, что он прост и потребляет очень мало тока.

Следующий режим — INTOSC. Как и INTRC, он является внутренним (не требует внешних компонентов), но может работать на семи различных скоростях вплоть до 8 МГц. В некоторых PIC INTRC и INTOSC действительно независимы, но не в PIC16F88, который мы изучаем. По этой причине в таблице данных авторы иногда используют INTRC для обозначения только INTRC, а в других случаях для обозначения INTRC или INTOSC.Это только усугубляет путаницу, поэтому здесь я буду хранить имена отдельно.

В любом из этих режимов линию порта A.6 можно настроить так, чтобы она следила за часами, разделенными на четыре, если это необходимо. Это обозначается символом φ / 4 — читается как «фи, деленная на четыре». Используйте этот выход, если вы хотите синхронизировать какое-то внешнее устройство с микроконтроллером. Если вам интересно, в даташите этот режим называется INTIO1. В противном случае вы можете дополнительно освободить контакт A.6 для обычного цифрового ввода / вывода, называемого режимом INTIO2.

Переходя к режимам внешнего RC, первый называется просто RC.В этом случае внешний резистор и конденсатор на выводе A.7 запускают работу. Предполагая, что источник питания +5 В, резистор должен находиться в диапазоне от 3 кОм до 100 кОм, а емкость должна быть больше 20 пФ. При наименьших значениях максимальная частота составляет около 4 МГц. Как мы видели с внутренними часами — при желании — A.6 можно заставить следовать φ / 4 (это режим RC) или же быть бесплатным для обычного использования (это RCIO). Между прочим, резистор может быть потенциометром, подключенным как реостат, который даст вам переменные часы.

Кристаллы и керамические резонаторы привлекательны тем, что они намного более точны как в краткосрочной, так и в долгосрочной перспективе, а также в отношении допусков и температуры. Здесь есть три режима. Первый, LP, что означает малое энергопотребление, предназначен для использования с кварцевым камертоном 32,768 кГц. Они обычно появляются в наручных часах и часах реального времени. Кристалл и связанные с ним нагрузочные конденсаторы подключаются к контактам A.6 и A.7. Следующий режим, называемый XT, аналогичен, но предназначен для использования с более высокочастотными кристаллами и резонаторами примерно до 4 МГц.Последний режим — HS — обозначает высокую скорость — и необходим для кристаллов или резонаторов, работающих на частотах выше 4 МГц. Просто чтобы вы знали, верхний предел для PIC16F88 составляет 20 МГц. Что интересно в этих трех режимах, так это то, что микросхема автоматически выбирает правильный коэффициент усиления внутреннего драйвера для кристалла в зависимости от того, указываете ли вы LP, XT или HS.

Последний режим — ECIO, который просто позволяет вам подавать внешний тактовый сигнал на вывод A.7. Это может происходить от любой схемы часов, которая выдает прямоугольные импульсы, колеблющиеся от земли до напряжения питания.

Забегая немного вперед к экспериментам, Рисунок 6 показывает задействованное оборудование. Мы увидим, как включить любой из этих восьми режимов буквально через мгновение, но сначала давайте взглянем на параметры вторичных часов.

Вторичные часы

На рисунке 2 показана ветвящаяся древовидная диаграмма для доступных вторичных часов. Напомним, что при определенных обстоятельствах любой из них может выполнять функции основных часов. В таблице данных рекомендуется сгруппировать их по категориям RC_RUN и SEC_RUN, но обе указывают на вторичную синхронизацию.

РИСУНОК 2. Три режима для вторичных часов.


Есть два варианта RC_RUN. Могут использоваться внутренние часы INTRC или INTOSC, описанные ранее; единственная разница в скорости колебаний.

Или, при желании, вы можете присоединить кристалл 32,768 кГц и нагрузочные конденсаторы к B.6 и B.7. Что в этом такого крутого, так это то, что кристалл часов всегда работает — даже когда вы переводите чип в так называемый спящий режим.Этот режим, обозначенный как T1OSC, идеально подходит для приложений часов реального времени. (Обычно PIC отключает неиспользуемые часы при переходе в спящий режим).

Обратите внимание, что первичные тактовые частоты используют A.6 и A.7 в различных комбинациях, а вторичные тактовые частоты — нет — по крайней мере, для PIC16F88. Схема на Рис. 7 (для одного из предстоящих экспериментов) показывает, что задействовано.

На этом мы закончили обзор первичных и вторичных часов. Почему бы не потратить несколько минут на то, чтобы изучить Рисунки 1, и 2, еще раз, чтобы действительно зафиксировать различия и детали в своем уме, прежде чем продолжить.

Как сделать свой выбор

Итак, вы определились, какие часы вам нужны. А как бы вы выразили свои пожелания КВС? Ответ кроется в битах конфигурации и трех специальных регистрах. Биты конфигурации устанавливаются во время фазы записи (мигания или программирования), в то время как биты регистра доступны во время выполнения. Вот сенсация.

На рисунке 3 показаны два набора битов конфигурации в PIC16F88. (У более простых PIC есть только один набор.) Да, здесь много всего, но когда дело доходит до настройки часов, нас беспокоит лишь небольшая часть. Например, три бита, обозначенные FOSC, обозначают первичный генератор, как описано ранее. Другими словами, они устанавливают поведение по умолчанию при включении питания.

РИСУНОК 3. Конфигурационные биты устанавливаются при записи PIC.


Во втором наборе битов конфигурации вы найдете два, которые управляют тем, что произойдет, когда вы переключитесь с первичных на вторичные часы или наоборот.Мы сохраним это для следующего раздела.

После запуска программы вы можете управлять часами (или часами) различными способами, изменяя регистры OSCON, OSCTUNE и T1CON. Они показаны на рис. 4 . Давайте вдумаемся в подробности.

РИСУНОК 4. Эти регистры можно изменять во время выполнения.


Возможно, наиболее важными битами в OSCON являются те, которые помечены как IRCF, что означает частоту внутреннего RC-генератора. Как следует из названия, эти биты выбирают желаемую тактовую частоту внутреннего генератора (ов).Далее идут два бита, помеченные SCS, обозначающие выбор системных часов. Здесь вы можете выбрать использование основных или дополнительных часов. Неудивительно, что регистр OSCTUNE позволяет точно настроить тактовую частоту INTRC или INTOSC. (На некоторых PIC затрагивается только INTOSC.) Все, что нужно, — это шестибитное дополнительное число до двух. Отрицательные числа замедляют ход часов, а положительные — ускоряют. Возможна настройка в диапазоне ± 12,5%.

Регистр T1CON занимается управлением таймером 1, который обычно синхронизируется внешним 32.Кристалл 768 кГц, который также может выполнять двойную функцию как системные часы. Вы, возможно, помните это как режим T1OSC из Рисунок 2 . Важным флагом здесь является T1OSCEN, который включает кварцевый генератор Таймера 1.

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

Переключение часов

Может наступить день, когда вы захотите выйти за рамки простого включения основных часов и позволить им делать свое дело.Если да, то вам нужно немного узнать о переключении часов. Рисунок 5 дает общую картину. По сути, вы можете вручную переключаться между основными и дополнительными часами или делать это автоматически при определенных условиях.

РИСУНОК 5. Часы можно переключать между первичным и вторичным режимами.


Чтобы вручную переключиться с одного на другой, вы вернетесь к Рис. 4 , и вам просто нужно изменить несколько битов в трех описанных здесь регистрах.Например, чтобы перейти с INTRC на INTOSC, вы должны настроить биты с IRCF0 до IRCF2 по мере необходимости. Или, чтобы перейти от кварцевого генератора, скажем, к INTOSC, перейдите к SCS0 и SCS1, которые позволяют переключаться с первичного на вторичный. Вы уловили идею; переключение осцилляторов вручную — это всего лишь вопрос битрейта в вашей программе.

А как насчет автоматических переключений? Что ж, есть две ситуации, когда одни часы заменяют другие. Первый — это отказоустойчивый механизм.Представьте, что вы разрабатываете схему для работы в критических условиях, например, в медицине или при мониторинге промышленной безопасности. Если бы первичный генератор был, например, кристаллом, и он по какой-то причине вышел из строя, то PIC просто остановился бы. Нехорошо! С дополнительными часами в крыльях микросхема могла переключаться на нее почти без проблем и продолжать работать до тех пор, пока исходная неисправность не будет устранена. Как показано на рис. 5 , функция отказоустойчивости может проверять наличие проблем с любым из четырех режимов кристалла (LP, XT, HS или T1OSC).Он активируется битом FCMEN в CONFIG2.

Если важно избежать задержек, то может оказаться полезным двухскоростной пробуждение. Вот основная идея. Предположим, вы управляете схемой на кристалле. Как вы, наверное, знаете, кварцевым генераторам требуется мгновение или два, чтобы нагреться. PIC понимает это и терпеливо ждет немного, прежде чем позволить часам начать передавать инструкции по конвейеру. Другими словами, ваш проект просто сидит без дела несколько мгновений.С другой стороны, внутренние генераторы INTRC и INTOSC по существу включаются мгновенно. Так почему бы не выбрать один из них в качестве дополнительных часов?

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

Когда это нужно? Как указывалось ранее, PIC поддерживают команду сна.При выполнении энергоемкий компонент отключается, и микросхема простаивает с очень низким током. В частности, любой кристалл, используемый в качестве основных часов, останавливается. Различные сигналы, такие как сброс, прерывание или что-то, называемое сторожевым таймером, могут снова разбудить микросхему. Если вы хотите мгновенного действия, пока кристалл набирает обороты, подумайте об только что описанном двухскоростном пробуждении. Чтобы включить этот ответ, перейдите к биту IESO в CONFIG2.

Эксперименты

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

Чтобы по-настоящему закрепить то, что вы узнали, вам предлагается попробовать дюжину экспериментов пекаря, описанных на боковой панели ниже. Вы будете буквально учиться на практике. На рисунках 6 и 7 показана настройка оборудования, в то время как программное обеспечение PIC16F88 обслуживается исходным кодом, доступным в файлах загрузки по ссылке на статью.Программы написаны на бесплатном языке Great Cow Basic с открытым исходным кодом, но легко переносятся на PICBasic и другие языки. В каждом эксперименте исходный код включает множество комментариев, которые помогут вам, а также описывает, что делать, чтобы интерпретировать результаты.

Попробуйте и убедитесь сами, что синхронизация PIC далеко не так ужасна, как вы когда-то могли подумать! NV


Файл загрузки для этой статьи содержит исходный код для 13 экспериментов с использованием распространенного и недорогого микроконтроллера PIC16F88.В упражнениях демонстрируются все различные режимы часов. Программы хорошо документированы и содержат инструкции о том, как их настроить и что искать. Аппаратное обеспечение для экспериментов с 1 по 12 изображено на рис. 6 , а на рис. 7 показывает, что необходимо для эксперимента 13.

РИСУНОК 6. Вот детали оборудования для основных часов.


В экспериментах 2, 4 и 6 используйте осциллограф или частотомер для контроля φ / 4.Во всех случаях мигает светодиод, чтобы ПОС чем-то занялся.

РИСУНОК 7. В режиме T1OSC в качестве временной оси используется кварцевый резонатор.


Список экспериментов

ПЕРЕКЛЮЧАТЕЛЬ
# Иллюстрированный элемент Исходный код
1 INTRC, A.6 бесплатно INTRC.GCB
2 INTRC, A.6 следует за φ / 4 INTRC.GCB
3 INTOSC, А.6 бесплатно INTOSC.GCB
4 INTOSC, A.6 следует φ / 4 INTOSC.GCB
5 RCIO, A.6 свободный RC-RCIO.GCB
6 RC, A.6 следует за φ / 4 RC-RCIO.GCB
7 LP, низкое энергопотребление, кристалл 32,768 кГц LP.GCB
8 XT, кристалл средней мощности 4 МГц XT.GCB
9 HS, высокая скорость 19.6608 МГц кристалл HS.GCB
10 ECIO, таймер 555 внешние часы ECIO.GCB
11 Отказоустойчивый, дерните кристалл и посмотрите, как INTOSC захватывает FAILSAFE.GCB
12 Переключение с вторичного на первичный при сбросе.GCB
13 T1OSC как вторичные часы T1OSC.GCB
Режим внешнего тактового генератора

— Справка разработчика

Внешний тактовый генератор Режим позволяет микроконтроллеру PIC ® работать от внешнего генерируемого сигнала логического уровня, и этот сигнал используется в качестве источника системного синхросигнала.Когда выбран этот режим, сигнал подается на вывод OSC1. Вывод OSC2 затем доступен для синхронизации того же синхросигнала или для использования в качестве вывода ввода-вывода общего назначения. Системные часы всегда обозначаются как Fosc в таблицах данных микроконтроллера PIC ® . Тактовая частота команд выводится из Fosc через делитель, чтобы обеспечить тактовую частоту команд Fosc / 4.

Тактовая частота команд может быть экспортирована через вывод OSC2, если бит CLKOUTEN установлен в слове конфигурации (показано в разделе ниже).

В режиме EC есть три режима мощности на выбор. Режим EC выбирается в регистре конфигурации. Три режима включают:

  • ECH — режим повышенной мощности, 4–32 МГц
  • ECM — режим средней мощности, 0,5 МГц — 4 МГц
  • ECL — режим пониженного энергопотребления, менее 0,5 МГц

Таймер запуска осциллятора (OST) — это задержка, встроенная в устройство микроконтроллера PIC ® , чтобы позволить генератору стабилизироваться. OST воспринимает или считает 1024 колебания от кристалла или резонатора до вывода OSC1.

OST отключен, когда выбран режим EC. Следовательно, нет задержки в работе после сброса при включении питания (POR) или выхода из спящего режима. Поскольку микроконтроллер PIC ® полностью статичен, остановка входа внешнего тактового сигнала при сохранении питания приведет к остановке устройства с сохранением всех данных. После перезапуска внешних часов устройство возобновит работу, как если бы не прошло времени.

Внешний RC-генератор выбирается битами Fosc в регистре конфигурации.

CLKOUTEN Бит также находится в регистре конфигурации и обычно в том же регистре, что и биты Fosc.

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


Clock Switching — Справка разработчика

Источник системных часов можно переключать между внутренним и внешним источником с помощью управляющих битов в регистре OSCCON.Это позволяет устройству микроконтроллера PIC ® управлять скоростью работы, а также может помочь в снижении мощности. Более медленный генератор потребляет меньше тока, чем генератор с более высокой скоростью. Во время нормальной работы может потребоваться более высокая скорость, но когда приложение менее активно, более медленный генератор может справиться с задачами обработки. Это снизит энергопотребление. Доступны различные варианты сна для очень низкого энергопотребления, но это часто необходимо для поддержания непрерывной работы во время сна.Во время работы в спящем режиме может потребоваться более низкая скорость генератора.

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

Примечание: Переключение часов — это операция, управляемая программным приложением, а не автоматическая операция. Другие функции переключения часов, такие как Fail Safe Clock Monitor и Two Speed ​​Start-Up, представляют собой функции автоматического переключения часов, которые не влияют на настройки переключения часов.

Режим переключения часов управляется битами SCS в регистре OSCCON. Эти биты можно изменить с помощью программного обеспечения во время выполнения, чтобы изменить источник синхронизации.

Когда биты SCS = 00 , системные часы переключаются на источник синхронизации, выбранный битами Fosc в регистре конфигурации. Это может быть внутренний генератор , внешний кристалл / резонатор или внешние часы .

Когда биты SCS = 01 , системные часы переключаются на вторичный осциллятор, который является внешним 32.Кристалл 768 кГц, который управляет Timer1 Peripheral . Внешний тактовый кристалл — это дополнительный источник тактовой частоты, который должен быть частью проектной схемы Timer1.

Когда биты SCS = 10 или 11 , то системные часы переключаются на Internal Oscillator независимо от настроек битов конфигурации Fosc. Биты IRCF регистра OSCCON будут выбирать частоту внутреннего генератора.

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

Статус Fosc

Бит OSTS указывает состояние генератора, выбранного настройками бита конфигурации Fosc.После сброса внутренний генератор INTOSC может управлять устройством, в то время как выбор Fosc завершает его задержку запуска или даже задержку таймера включения питания . Проверка бита OSTS укажет, какой генератор управляет устройством.


Тактовый генератор

— MikroElektronika

3.10 Тактовый генератор

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

Внешний генератор установлен внутри микроконтроллера и подключен к контактам OSC1 и OSC2.Он называется «внешним», потому что он основан на внешней схеме для тактового сигнала и стабилизации частоты, такой как автономный генератор, кварцевый кристалл, керамический резонатор или цепь резистор-конденсатор. Режим генератора выбирается битами байтов, называемыми словом конфигурации, отправляемыми во время программирования. Внутренний генератор состоит из двух отдельных внутренних генераторов: HFINTOSC — это высокочастотный внутренний генератор, работающий на частоте 8 МГц. Микроконтроллер может использовать источник тактовых импульсов, сгенерированный на этой частоте или после деления на предварительный делитель.LFINTOSC — это низкочастотный внутренний генератор, работающий на частоте 31 кГц. Его источники синхронизации используются для синхронизации watch-dog и включения питания , но он также может использоваться в качестве источника синхронизации для работы всего микроконтроллера. Системные часы можно выбрать между внешним или внутренним источником синхронизации с помощью бита выбора системных часов (SCS) в регистре OSCCON.

Регистр OSCCON

Регистр OSCCON управляет параметрами выбора системных часов и частоты.Он содержит следующие биты: биты выбора частоты (IRCF2, IRCF1, IRCF0), биты состояния частоты (HTS, LTS), биты управления системными часами (OSTA, SCS). IRCF2-0 — Биты выбора частоты внутреннего генератора. Скорость делителя зависит от комбинации этих трех битов. Тактовая частота внутреннего генератора определяется аналогично.
IRCF2 IRCF1 IRCF0 ЧАСТОТА OSC.
1 1 1 8 МГц HFINTOSC
1 1 0 4 МГц HFINTOSC
1 0 1 2 МГц HFINTOSC
1 0 0 1 МГц HFINTOSC
0 1 1 500 кГц HFINTOSC
0 1 0 250 кГц HFINTOSC
0 0 1 125 кГц HFINTOSC
0 0 0 31 кГц LFINTOSC
OSTS — Бит состояния тайм-аута запуска генератора указывает, какой источник синхронизации используется в настоящее время.Это только для чтения.
  • 1 — Используется внешний тактовый генератор.
  • 0 — Используется один из внутренних тактовых генераторов (HFINTOSC или LFINTOSC).
HTS — HFINTOSC Бит состояния (8 МГц — 125 кГц) указывает, стабильно ли работает высокочастотный внутренний генератор.
  • 1 — HFINTOSC работает стабильно.
  • 0 — HFINTOSC нестабилен.
LTS — LFINTOSC Стабильный бит (31 кГц) указывает, стабильно ли работает низкочастотный внутренний генератор.
  • 1 — LFINTOSC работает стабильно.
  • 0 — LFINTOSC нестабилен.
SCS — бит выбора системных часов определяет, какой генератор будет использоваться в качестве источника синхронизации.
  • 1 — Внутренний генератор используется для системных часов.
  • 0 — Внешний генератор используется для системных часов. Режим генератора устанавливается битами в Config Word , записанными в память микроконтроллера в процессе программирования.

РЕЖИМЫ ВНЕШНИХ ЧАСОВ

Внешний генератор может быть настроен для работы в одном из нескольких режимов, что позволяет ему работать на разных скоростях и использовать разные компоненты для стабилизации частоты.Режим работы выбирается в процессе записи программы в микроконтроллер. Прежде всего, необходимо активировать программу на ПК, чтобы использовать ее для программирования. В данном случае это программа PICflash . Щелкните поле осциллятора и выберите один осциллятор из выпадающего списка. Соответствующие биты будут установлены автоматически, становясь частью нескольких байтов, которые вместе образуют слово конфигурации . В процессе программирования микроконтроллера эти байты слова конфигурации записываются в ПЗУ микроконтроллера и сохраняются в специальных регистрах, которые недоступны пользователю.На основе этих битов микроконтроллер «знает», что делать, хотя в программе это явно не указано. Режим работы выбирается после процесса написания и компиляции программы.
ВНЕШНИЙ ОСЦИЛЛЯТОР В РЕЖИМЕ ЕС
В режиме внешней синхронизации (EC) в качестве источника синхронизации используется внешний генератор. Максимальная частота этих часов ограничена 20 МГц. Преимущества внешнего генератора при настройке на работу в режиме EC:
  • Независимый внешний источник синхронизации подключен к входу OSC1, и OSC2 доступен как универсальный вход / выход;
  • Есть возможность синхронизировать работу микроконтроллера с остальной бортовой электроникой;
  • В этом режиме микроконтроллер начинает работу сразу после включения питания.Для стабилизации частоты не требуется временной задержки; и
  • Временное отключение внешнего источника синхронизации приводит к прекращению работы устройства с сохранением всех данных. После перезапуска внешних часов устройство продолжает работу, как будто ничего не произошло.
ВНЕШНИЙ ОСЦИЛЛЯТОР В РЕЖИМЕ LP, XT ИЛИ HS
В режимах LP, XT и HS в качестве источника синхронизации используется внешний генератор, частота которого определяется кварцевым кристаллом или керамическими резонаторами, подключенными к контактам OSC1 и OSC2.В зависимости от характеристик используемого компонента выберите один из следующих режимов:
  • Режим LP — (Низкое энергопотребление) используется только для низкочастотного кварцевого кристалла. Этот режим предназначен для работы только с кристаллами 32,768 кГц, обычно встроенными в кварцевые часы. Их легко узнать по небольшим размерам и специфической цилиндрической форме. Потребление тока — наименьшее из трех режимов.
  • Режим XT используется для кристаллов кварца промежуточной частоты до 8 МГц.Текущее потребление является средним из трех режимов.
  • Режим HS — (High Speed) используется для высокочастотных кристаллов кварца с частотой более 8 МГц. Потребление тока является самым высоким из трех режимов.
КЕРАМИЧЕСКИЕ РЕЗОНАТОРЫ В РЕЖИМЕ XT ИЛИ HS
Керамические резонаторы по своим характеристикам похожи на кристаллы кварца и поэтому подключаются таким же образом. В отличие от кристаллов кварца они дешевле, а содержащие их генераторы имеют несколько худшие характеристики.Они используются для тактовых частот от 100 кГц до 20 МГц.
ВНЕШНИЙ ОСЦИЛЛЯТОР В РЕЖИМЕ RC И RCIO
Конечно, есть много преимуществ в использовании элементов для стабилизации частоты, но иногда они действительно не нужны. В большинстве случаев генератор может работать на частотах, которые точно не определены, поэтому встраивание таких элементов является пустой тратой денег. Самым простым и дешевым решением в таких ситуациях является использование одного резистора и одного конденсатора для работы генератора.Есть два режима:

Режим RC. Когда внешний генератор настроен для работы в режиме RC, вывод OSC1 должен быть подключен к цепи RC, как показано на рисунке справа. Вывод OSC2 выводит частоту RC-генератора, деленную на 4. Этот сигнал может использоваться для калибровки, синхронизации или других требований приложения.

Режим RCIO. Аналогичным образом RC-цепь подключается к выводу OSC1. На этот раз доступный вывод OSC2 используется как дополнительный вывод ввода-вывода общего назначения.

В обоих случаях рекомендуется использовать компоненты, показанные на рисунке. Частота такого осциллятора рассчитывается по формуле f = 1 / T, в которой:
  • f = частота [Гц];
  • T = R * C = постоянная времени [с];
  • R = сопротивление резистора [Ом]; и
  • C = емкость конденсатора [Ф].

РЕЖИМЫ ВНУТРЕННИХ ЧАСОВ

Схема внутреннего генератора состоит из двух отдельных генераторов, которые могут быть выбраны в качестве источника системных часов: Генератор HFINTOSC откалиброван на заводе и работает на частоте 8 МГц.Его частота может быть установлена ​​пользователем через программное обеспечение с помощью битов регистра OSCTUNE. Генератор LFINTOSC не откалиброван на заводе и работает на частоте 31 кГц. Как и внешний генератор, внутренний также может работать в нескольких режимах. Режим работы выбирается так же, как и с внешним генератором — битами регистра Config Word . Другими словами, все выполняется в программном обеспечении ПК до записи программы в микроконтроллер.

ВНУТРЕННИЙ ОСЦИЛЛЯТОР В РЕЖИМЕ INTOSC В этом режиме вывод OSC1 доступен как универсальный ввод / вывод, а вывод OSC2 выводит выбранную частоту внутреннего генератора, деленную на 4.

ВНУТРЕННИЙ ОСЦИЛЛЯТОР В РЕЖИМЕ INTOSCIO В этом режиме оба контакта доступны как входы / выходы общего назначения.

НАСТРОЙКИ ВНУТРЕННЕГО ОСЦИЛЛЯТОРА

Внутренний генератор состоит из двух отдельных цепей. 1. Высокочастотный внутренний генератор HFINTOSC подключен к постделителю (делителю частоты).Он откалиброван на заводе и работает на частоте 8 МГц. Используя постскейлер, этот осциллятор может выводить источники тактовой частоты на одной из семи частот. Выбор частоты выполняется в программном обеспечении с помощью выводов IRCF2, IRCF1 и IRCF0 регистра OSCCON. HFINTOSC включается путем выбора одной из семи частот (от 8 МГц до 125 кГц) и установки бита источника системной синхронизации (SCS) в регистре OSCCON. Как видно на рисунке ниже, все выполняется с использованием битов регистра OSCCON.2. Низкочастотный генератор LFINTOSC не откалиброван и работает на частоте 31 кГц. Он включается путем выбора этой частоты (биты регистра OSCCON) и установки бита SCS того же регистра.

РЕЖИМ ЗАПУСКА ДВУХСКОРОСТНЫХ ЧАСОВ

Двухскоростной режим запуска часов используется для обеспечения дополнительной экономии энергии, когда микроконтроллер работает в спящем режиме. О чем это все? При настройке на работу в режиме LP, XT или HS внешний генератор будет отключаться при переходе в режим сна , чтобы снизить общее энергопотребление устройства.Когда условия для пробуждения выполнены, микроконтроллер не сразу начнет работать, потому что он должен ждать, пока частота тактового сигнала не станет стабильной. Такая задержка длится ровно 1024 импульса, после чего микроконтроллер переходит к выполнению программы. Обычно бывает, что выполняется всего несколько инструкций, прежде чем микроконтроллер возвращается в спящий режим . Это означает, что большая часть времени, а также большая часть энергии, получаемой от батарей, тратится впустую. Проблема решается использованием внутреннего генератора для выполнения программы во время подсчета этих 1024 импульсов.Как только частота внешнего генератора станет стабильной, он автоматически возьмет на себя «ведущую роль». Весь процесс активируется установкой одного бита конфигурационного слова. Для программирования микроконтроллера необходимо в программном обеспечении выбрать опцию Int-Ext Switchover .

БЕЗОПАСНЫЙ МОНИТОР ЧАСОВ

Как следует из названия, Fail-Safe Clock Monitor (FSCM) контролирует работу внешнего генератора и позволяет микроконтроллеру продолжить выполнение программы, даже если по какой-либо причине внешний генератор выходит из строя.В этом случае его роль берет на себя внутренний генератор. Монитор отказобезопасных часов обнаруживает отказ, сравнивая внутренние и внешние источники синхронизации. Если для появления тактовых импульсов внешнего генератора требуется более 2 мс, источник тактовых импульсов будет автоматически переключен. Таким образом, внутренний генератор продолжит работу, управляемую битами регистра OSCCON. Когда бит OSFIE регистра PIE2 установлен, будет сгенерировано прерывание. Системные часы будут поступать от внутренних часов до тех пор, пока устройство не перезапустит внешний генератор и не переключится обратно на внешнюю работу.Точно так же этот модуль активируется путем изменения слова конфигурации непосредственно перед запуском процесса программирования микросхемы. На этот раз это можно сделать, выбрав опцию Fail-Safe Clock Monitor.

Регистр OSCTUNE

Изменения в регистре OSCTUNE влияют на частоту HFINTOSC, но не на частоту LFINTOSC. Во время работы нет индикации того, что произошел сдвиг частоты. TUN4 — TUN0 Биты настройки частоты. Комбинируя эти пять битов, частота генератора 8 МГц сдвигается.Таким образом, частоты, полученные его делением на постделитель, тоже смещаются.
TUN4 ТУН3 ТУН2 ТУН1 TUN0 ЧАСТОТА
0 1 1 1 1 Максимальный
0 1 1 1 0
0 1 1 0 1
0 0 0 0 1
0 0 0 0 0 после калибровки
1 1 1 1 1
1 0 0 1 0
1 0 0 0 1
1 0 0 0 0 Минимальный
EEPROM — это отдельный сегмент памяти, а не часть памяти программ (ROM) или памяти данных (RAM).Несмотря на то, что к этим ячейкам памяти нелегко и быстро получить доступ, как к другим регистрам, их назначение незаменимо, поскольку данные EEPROM постоянно сохраняются даже после отключения питания и могут быть изменены в любой момент. Эти исключительные особенности делают каждый байт EEPROM ценным.

Аналоговые часы с использованием OLED и микроконтроллера PIC



Мы собираемся построить этот проект в среде моделирования Proteus и использовать микроконтроллер PIC18F. Что касается программных компонентов, нам потребуются библиотека I2C, библиотека OLED и библиотека DS1307 RTC.
Если вы следите за моими блогами, то, возможно, знаете, что эти три библиотеки уже доступны и хорошо протестированы. Ниже приведены ссылки на предыдущие сообщения, на которые вы можете ссылаться, если хотите.
Дисплей OLED I2C с использованием микроконтроллера Microchip PIC
Часы реального времени (DS1307) Взаимодействие с микроконтроллером PIC
( Все мои новые проекты будут на GitHub, и я также пытаюсь перенести все предыдущие проекты на GitHub, чтобы их можно было поддерживать хорошо. )

Ниже приведены шаги по созданию аналоговых часов.

  • Создайте маленький круг с очень маленьким радиусом, например 1
  • Создайте большой круг с большим радиусом, но не превышайте размер экрана.
  • Make Hour Ticks
    • У нас 12 часов и 360 градусов, что означает, что 1 час равен 30 градусам.
    • Мы будем использовать цикл for с шагом 30 градусов, чтобы рисовать маленькие линии, представляющие отметки для каждой часовой позиции. Это делается функцией draw_clock_face .
    • draw_clock_face Функция использует формулы синуса и косинуса для рисования 12 меток длиной 5 в каждой часовой позиции.
  • Отображение часов, минут и секундных стрелок
    • Отображение времени с помощью стрелок очень похоже на отображение меток.
    • Часовая стрелка должна быть очень маленькой, минутная — средней, а секундная — самой длинной.
  • Данные из RTC считываются и преобразуются в десятичный формат из формата BCD, и эти данные передаются функции display_time.
  • Выполнение этой функции посекундно приведет к анимационному эффекту перемещения секундной стрелки часов.
  • В проекте мы назвали это на 500 мс, причина этого — цифровые часы, так как мы хотели отображать мигание двоеточия, которое длится полсекунды.
Ниже приведен код, который можно загрузить или клонировать с моей страницы GitHub ( щелкните здесь ).
Ниже приведена ссылка на видео моделирования.


В случае сомнений свяжитесь с нами.

Использование DS1307 с микроконтроллером PIC

Аннотация: Это примечание по применению предназначено для демонстрации приложения, использующего часы реального времени (RTC) DS1307 с микроконтроллером Microchip PIC. Пример программного обеспечения включает в себя основные рабочие процедуры. Схема прикладной схемы прилагается.

Обсуждение

В этой заметке по применению показано, как использовать часы реального времени (RTC) DS1307 с микроконтроллером Microchip PIC16F628.

Пример кода, написанный на ассемблерном коде, включает в себя процедуру для чтения времени и даты из RTC и процедуру для записи данных о времени и дате в RTC из пользовательских записей.

Эксплуатация

Программа использует два вывода порта общего назначения на микроконтроллере для связи с DS1307 через последовательный интерфейс I²C. Внутренний UART микроконтроллера управляет двумя выводами порта, которые подключены к линейному драйверу / приемнику DS232. Пользовательские входы и выходные данные из программы передаются через интерфейс RS-232 из программы эмулятора терминала на ПК в микроконтроллер. Линия входа RS-232 DTR управляет входом сброса микроконтроллера.

Микроконтроллер в этом примере — PIC16F628.Для получения информации о микроконтроллере, используемом в этой заметке по применению, включая доступные инструменты программирования, посетите веб-сайт Microchip.

Программное обеспечение показано на рис. 1 . Схема цепи показана на Рисунок 2 .


Скачать (TXT, 10kB)
Рисунок 1. Листинг программы


Более подробное изображение (PDF, 126kB)
Рисунок 2. Схематическое изображение схемы DS1307, используемой с микроконтроллером PIC.

©, Maxim Integrated Products, Inc.
Содержимое этой веб-страницы защищено законами об авторских правах США и зарубежных стран. Для запросов на копирование этого контента свяжитесь с нами.
ПРИЛОЖЕНИЕ 3921:
ПРИМЕЧАНИЕ ПО ПРИМЕНЕНИЮ 3921, г. AN3921, AN 3921, г. APP3921, Appnote3921, Appnote 3921

maxim_web: en / products / digital / rtc

maxim_web: en / products / digital / rtc

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *