Sfera-perm.ru

Сфера Пермь
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Что такое таймер со счетчиком

Суточный таймер Orbis Mini T. Схема подключения и настройка

Здравствуйте, уважаемые читатели и гости сайта «Заметки электрика».

В сегодняшней статье я расскажу Вам о назначении, схеме подключения и программировании механического (аналогового) суточного таймера Orbis Mini T QRD.

Всего у серии Mini T существуют три разновидности таймеров:

  • суточный «D» без резервного питания
  • суточный «QRD» с резервным питанием на 100 часов
  • недельный «QRS» с резервным питанием на 100 часов

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

Применение и назначение таймера

Механический (аналоговый) суточный таймер Mini T QRD можно применить для управления в программируемом интервале времени:

Список применения таймера можно перечислять до бесконечности.

Вот так он выглядит.

А это его габаритные размеры. По чертежу видно, что он достаточно компактный.

Ниже представлена таблица с его основными техническими характеристиками (из паспорта).

Основные характеристики таймера также можно увидеть на его упаковочной коробке (выделены желтым цветом) .

Установка, монтаж и крепление

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

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

В крепежной части расположены клеммные зажимы для подключения проводов.

Соединение основной части с крепежной выполнено в виде плоских разъемов.

Схема подключения таймера

Схема подключения суточного таймера Mini T QRD изображена прямо на его корпусе.

На выводы (4-5) должно быть всегда подано основное переменное напряжение 220 (В) для часового механизма. Кстати, он выполнен в виде шагового двигателя.

Таймер Mini T QRD может работать и без питающего (основного) напряжения, но не более 100 часов (см. технические характеристики).

Существует два варианта подключения таймера. Чтобы не вводить Вас в заблуждение я буду использовать один вариант, т.е. во всех примерах нагрузку я буду подключать на выводы (1-3). Таким образом, при поднятых вверх сегментах и совпадении индекса-метки на циферблате контакт (1-3) будет замыкаться.

Всего у таймера есть 3 режима работы (для моего варианта схемы):

  • автоматический (среднее положение) — замыкает контакты, согласно заданным сегментам
  • положение 1 — контакт (1-3) всегда разомкнут
  • положение 0 — контакт (1-3) всегда замкнут

Настройка и программирование. Пример 1

Давайте разберемся, как произвести настройку и программирование суточного таймера Orbis Mini T QRD на самом простом примере.

Нам нужно, чтобы таймер ежедневно в 21-00 включал прожектор наружного освещения двора, а выключал его только утром в 7-00.

Я понимаю, что для этих целей разумнее применить фотореле для освещения

1. Сначала установим текущее время по стрелкам таймера. Для этого необходимо вращать циферблат по часовой стрелке до текущего времени. В моем примере текущее время составляет 19-10.

2. Ставим переключатель режимов таймера в положение «Автоматический».

3. Всего на циферблате суточного таймера Mini T QRD находится 96 сегментов:

  • один сегмент соответствует 15 минутам
  • два сегмента — 30 минут
  • три сегмента — 45 минут
  • четыре сегмента — 60 минут или 1 час

Все 96 сегментов утоплены. Теперь нам нужно поднять все сегменты на циферблате, находящиеся между цифрой 21 и 7.

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

Вы можете собрать себе аналогичную схему, только вместо лампы накаливания подключить любую другую нагрузку. Только смотрите, чтобы нагрузка не превышала 16 (А) или 3,5 (кВт), иначе сгорят выходные контакты (1-3). Если нагрузка более 16 (А), то к выходным контактам таймера нужно подключить контактор, который и будет управлять более мощной нагрузкой — смотрите пример 2.

В итоге мы получим, что при совпадении метки-индекса с поднятым сегментом таймер замкнет свой контакт (1-3), а разомкнет его только утром в 7-00.

В период с 21-00 до 7-00 утра прожектор во дворе будет находиться во включенном состоянии. Что нам и нужно.

Смотрите видеоролик о принципе работы этой схемы:

Этот пример можно использовать в любых целях, как Вам захочется. Вот уехали Вы на выходные из дома. Для безопасности личного имущества и отпугивания не добросовестных граждан можно запрограммировать таймер включать светильник в комнате, например, с 22-00 до 01-00, вроде имитации нахождения кого-либо дома. При чем можно сделать несколько циклов включений и отключений.

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

Настройка и программирование. Пример 2

Рассмотрим еще один пример, но уже чуть сложнее.

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

Исполнительным механизмом для забора воздуха является асинхронный двигатель с короткозамкнутым ротором мощностью 0,4 (кВт), которым и будет управлять таймер через контактор или магнитный пускатель.

1. Аналогично предыдущему примеру, установим текущее время на таймере.

Читайте так же:
Мосэнергосбыт льгота ветеран труда при трехтарифном счетчике

2. Переключатель режимов работы суточного таймера ставим в положение «Автоматический».

3. Затем через равные промежутки по шкале поднимем необходимые сегменты вверх. Т.к. у таймера Mini T QRD переключаемое время одного сегмента составляет 15 минут, то нам нужно поднимать вверх сразу два сегмента.

В итоге мы получим, что при совпадении метки-индекса с двумя поднятыми сегментами таймер замкнет свой контакт (1-3) на время 30 минут.

Но нас это не устраивает, т.к. забор воздуха должен длиться не 30 минут, а 20. Поэтом в эту схему мы включаем дополнительно электронное реле времени ВЛ-56 (РВ-2), контакт которого (3-5) будет разрывать цепь на питание катушки контактора КМ ровно через 20 минут. Вот эта схема:

Там где нет возможности использовать суточный таймер Orbis Mini T QRD, то можно применить недельный Orbis Mini T QRS или же электронный ТЭ-15, который очень просто и легко программируется.

Недельный электронный таймер: краткая характеристика, функционал

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

Недельный таймер — краткая характеристика

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

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

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

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

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

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

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

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

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

Несколько слов о функционале недельных таймеров

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

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

Таймер-розетка является готовым устройством, не нужно выполнять подключений — достаточно просто вставить его в нужную розетку и задать желаемое время включения электроприборов. Такой вариант наиболее простой в реализации, так как не требует применения дополнительных устройств, выполнения работ по подключению. Но данный вариант ограничен по мощности, как правило, это 3000-3500 Вт, так как устройство рассчитано на включение в обычную бытовую розетку, допустимая нагрузка которой не превышает 16 А.

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

Еще ссылки по теме:

Второй вариант — недельный электронный таймер модульного типа, который устанавливается в электрический распределительный щиток на стандартную DIN-рейку. Контактная система данного устройства не рассчитана на коммутацию больших токов — обычно номинальный ток силовых контактов электронного таймера не более 16 А. Не смотря на одинаковую мощность, модульный электронный таймер имеет более широкий функционал, по сравнению с таймером, включаемым в розетку.

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

Читайте так же:
Как работает счетчик посетителей сайта

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

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

Режимы работы таймеров

Общие сведения

Любой микроконтроллер серии AVR содержит несколько встроен­ных таймеров. Причем по своему назначению их можно разделить на две категории. К первой категории относятся таймеры общего назначения. Вторую категорию составляет сторожевой таймер. Сторожевой таймер предназначен для автоматического перезапуска микроконтроллера в слу­чае «зависания» его программы.

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

Для каждой микросхемы нужен всего один сторожевой таймер. В любом микроконтроллере AVR такой таймер имеется.

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

По этой причине данные таймеры называют «таймеры/счетчики».В микросхемах AVR применяются как восьмиразрядные, так и шестнадцати­разрядные таймеры/счетчики. Их количество для разных микроконтрол­леров изменяется от одного до четырех. Точное количество таймеров/счет­чиков для каждой микросхемы серии AVR можно определить из табл. 3.1(графа «Таймеры 8/16 бит»). Все таймеры обозначаютсячислами от 0 до 3.

Пример. Timer/Counter0, Timer/Counter1 и т.д. В русскоязычной литературе их чаще именуют сокращенно Т0, Т1,Т2, ТЗ. Таймеры Т0 иТ2 в большин­стве микроконтроллероввосьмиразрядные. Таймеры Т1 и ТЗшестнадцатиразрядные. Таймер Т0 имеется в любой микросхеме AVR. Остальные добавляются по мере усложнения модели.

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

Счетный регистр восьмиразрядного таймера именуется TCNTx, где «х» — это номер таймера Для таймера Т0 регистр называется TCNT0. Для таймера Т2 — TCNT2. Шестнадцатиразрядные регистры именуются похожим обра­зом. Отличие в том, что каждый шестнадцатиразрядный счетный регистр для микроконтроллера представляет собой два регистра ввода-вывода.

Один предназначен для хранения старших битов числа, а второй — для хранения младших битов. К имени регистра старших разрядов добав­ляется буква Н, а для регистра младших разрядов добавляется буква L. Таким образом, счетный регистр таймера Т1 — это два регистра ввода-вывода: TCNT1H и TCNT1L. Счетный регистр таймера ТЗ — это два регистра TCNT3H и TCNT3L.

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

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

Режимы работы таймеров

Таймеры микроконтроллеров семейства AVR могут работать в несколь­ких режимах. Разные микроконтроллеры имеют разные наборы режимов для своих таймеров. Для выбора режимов работы существуют специаль­ные регистры — регистры управления таймерами. Для простых таймеров используется один регистр управления. Для более сложных — два реги­стра. Регистры управления таймером называются TCCRx (где «х» — номер таймера). Например, для таймера Т0 используется один регистр с именем TCCR0. Для управления таймером Т1 используется два регистра: TCCR1А и TCCR1B. При помощи регистров управления производится не только выбор соответствующего режима, но и более тонкая настройка таймера. Ниже перечислены все основные режимы работы таймера и их описание.

Режим Normal

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

Режим «Захват» (Capture)

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

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

Читайте так же:
Счетчик для вышивки крестом

Микроконтроллер должен одновременно запустить два этих процесса: подать напряжение на конденсатор; запустить таймер в режиме Capture.

Конденсатор начнет заряжаться, напряжение на нем при этом будет плавно расти. Одновременно счетчик таймера будет отсчитывать так­товые импульсы заданной частоты. В тот момент, когда напряжение на конденсаторе сравняется с опорным напряжением, логический уровень на выходе компаратора изменится на противоположный. По этому сиг­налу текущее значение счетного регистра запоминается в специальном регистре захвата.Имя этого регистра ICRx (для таймера Т0 это будет ICR0, для Tl — ICR1 и т. д.). Одновременно вырабатывается запрос на прерывание.

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

Режим «Сброс при совпадении» (СТС)

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

Регистры сравнения также имеют свои имена. Например, регистр совпадения таймера Т1 состоит из двух регистров: OCR1L и OCR1H. В ряде микроконтроллеров существуют два регистра совпадения. Так, во всех микроконтроллерах семейства «Tiny» существует два регистра совпадения для таймера Т1. Это регистры OCR1A и OCR1B. Два реги­стра совпадения для таймера Т1 имеет и микроконтроллер ATmega8x. Во втором случае как таймер, так и его регистры совпадения имеют шест­надцать разрядов.

Если регистр совпадения шестнадцатиразрядный, то физически он состоят из двух регистров ввода-вывода. Например,два регистра совпадения таймера Т1 микросхемы ATmega8x представляют собой четыре регистра ввода-вывода с именами OCR1AL, OCR1AH, OCR1BL, OCR1BH.

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

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

♦ сброс таймера (верно только для регистров совпадения OCR1 и OCR1A);

♦ изменение состояния одного из выводов микроконтроллера (верно для всех регистров).

Произойдет или не произойдет одно или оба события из вышепере­численных, определяется при настройке таймера.

Режим «Быстродействующий ШИМ» (Fast PWM)

Это полезно запомнить. ШИМ — расшифровывается как Широтно-Импульсная Модуляция. На английском это звучит как «Pulse Width Modulation» (PWM). Сигнал с ШИМ часто используется в устройствах управления.

Сигнал с ШИМ можно, например,использовать для регулировки ско­рости вращения электродвигателя постоянного тока. Для этого вместо постоянного напряжения на двигатель подается прямоугольное импульс­ное напряжение. Благодаря инерции двигателя импульсы сглаживаются, и двигатель вращается равномерно. Меняя скважность импульсов (то есть отношение периода импульсов к их длительности), можно изменять среднее напряжение, приложенное к двигателю и, тем самым, менять ско­рость его вращения.

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

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

Для формирования сигнала ШИМ используются те же самые регистры совпадения, которые работают и в режиме СТС. Формирование сигнала ШИМ может осуществляться несколькими разными способами. Работа таймера в режиме Fast PWM проиллюстрирована на рис. 3.5.

Сигнал с ШИМ формируется на специальном выходе микроконтрол­лера. На вход таймера подаются импульсы от системного генератора. Таймер находится в состоянии непрерывного счета. При переполнении таймера его содержимое сбрасывается в ноль, и счет начинается сна­чала. В режиме ШИМ переполнение таймера не вызывает прерываний. На рис. 3.5 это показано в виде пилообразной кривой, обозначенной как TCNTn. Кривая представляет собой зависимость содержимого счетного регистра от времени.

Содержимое счетного регистра непрерывно сравнивается с содер­жимым регистра совпадения. Пока число в регистре OCRn больше, чем число в счетном регистре таймера (TCNTn), напряжение на выходе ШИМ равно логической единице. Когда же в процессе счета содержимое счетного регистра TCNTn станет больше содержимого OCRn, на выходе ШИМ установится нулевой потенциал.

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

Если содержимое OCRn достигнет своего максимального значения, то импульсы на выходе ШИМ исчезнут, и там постоянно будет присут­ствовать логическая единица. При уменьшении числа в OCRn появятся импульсы малой скважности (длительность почти равна периоду). Если плавно уменьшать число в OCRn, то скважность будет плавно умень­шаться. Когда содержимое OCRn достигнет нуля, импульсы на выходе ШИМ также исчезнут, и там установится логический ноль.

Читайте так же:
Гостевой счетчик что это

Режим «ШИМ с точной фазой» (Phase Correct PWM)

Описанный в предыдущем разделе режим ШИМ имеет один недоста­ток. При изменении длительности импульсов меняется и их фаза. Центр каждого импульса как бы сдвигается во времени. При управлении элек­тродвигателем такое поведение фазы нежелательно. Поэтому в микро­контроллерах AVR предусмотрен еще один режим ШИМ. Это ШИМ с точной фазой. Принцип работы таймера в этом режиме изображен на рис. 3.6.

Отличие режима «Phase Correct PWM» от режима «Fast PWM» заклю­чается в режиме работы счетчика. Сначала счетчик считает так же, как и в предыдущем режиме (от каждого входного импульса его значение увеличивается на единицу). Достигнув своего максимального значения, счетчик не сбрасывается в ноль, а переключается в режим реверсивного счета.

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

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

Недостатком режима «Phase Correct PWM» можно считать в два раза меньшую частоту выходного сигнала. Это существенно уменьшает динамичность регулирования. Кроме того, при использовании внешних фильтров для преобразования импульсного сигнала ШИМ в аналоговый, схема с более низкой частотой потребует применения комплектующих с большими габаритами и массой.

Асинхронный режим

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

Дата добавления: 2017-10-09 ; просмотров: 5835 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ

Руководство по таймерам Arduino для начинающих

Платформа Arduino была первоначально спроектирована в 2005 году и первоначально предназначалась для того, чтобы люди, мало знакомые с электроникой и программированием, могли конструировать разнообразные электронные устройства. Но со временем она получила широкое распространение не только в кругах начинающих знакомиться с электроникой, но и среди профессионалов в сфере электроники.

В отличие от языков программирования для микроконтроллеров AVR, ARM, PIC, STM, в которых нужно хорошо представлять структуру этих микроконтроллеров, язык программирования для платформы Arduino исключительно простой и понятный. Достаточно легко понять, к примеру, как работают функции digitalWrite(), AnalogWrite(), Delay() и др. не вникая в суть машинного языка, который спрятан внутри них. Также не нужно вникать в суть различных регистров микроконтроллера, которые используются для управления этими процессами.

Но тем не менее, для лучшего понимания всех этих процессов, желательно все таки немного погрузиться внутрь этих процессов. К примеру, функция delay() используется для установки таймеров и битов регистров счета микроконтроллера AVR ATmega, являющегося основой платы Arduino.

В этой статье мы рассмотрим как без использования функции delay() управлять задержками в программе, непосредственно имея дело с регистрами микроконтроллера. Для этого мы будем использовать программную среду Arduino IDE. Мы будем устанавливать соответствующие биты регистра таймера и использовать прерывание переполнения таймера (Timer Overflow Interrupt) чтобы переключать (включать/выключать) состояние светодиода каждый раз когда происходит прерывание. Для контроля длительности задержки в схеме будут использоваться кнопки, с помощью которых можно будет изменять заранее загружаемое значение в биты таймера.

Что такое таймеры

Что же представляют собой таймеры в современной электронике? Фактически это определенный вид прерываний. Это простые часы, которые могут измерять длительность какого-нибудь события. Каждый микроконтроллер имеет встроенные часы (осциллятор), в плате Arduino Uno его роль выполняет кварцевый генератор, расположенный на плате, который работает на частоте 16 МГц. Частота влияет на скорость работы микроконтроллера. Чем выше частота, тем выше скорость работы. Таймер использует счетчик, который считает с определенной скоростью, зависящей от частоты осциллятора (кварцевого генератора). В плате Arduino Uno состояние счетчика увеличивается на 1 каждые 62 нано секунды (1/16000000 секунды). Фактически, это время за которое плата Arduino Uno переходит от одной инструкции к другой (то есть выполняет одну инструкцию).

Таймеры в Arduino Uno

В плате Arduino Uno используется три таймера:
Timer0: 8-битный таймер, используемый в таких функциях как delay(), millis().
Timer1: 16-битный таймер, используемый в библиотеке для управления серводвигателями.
Timer2: 8-битный таймер, используемый в функции tone().

Регистры таймеров в Arduino Uno

Для изменения конфигурации таймеров в плате Arduino Uno используются следующие регистры:

1. Timer/Counter Control Registers (TCCRnA/B) – управляющие регистры таймера/счетчика

Эти регистры содержат основные управляющие биты таймера и используются для управления предварительными делителями частоты (предделителями) таймера. Они также позволяют управлять режимом работы таймера с помощью битов WGM.

Читайте так же:
Блокинг генератор для счетчика гейгера

Формат этих регистров:

Предделитель (Prescaler)

Биты CS12, CS11, CS10 в регистре TCCR1B устанавливают коэффициент деления предделителя, то есть скорость часов таймера. В плате Arduino Uno можно установить коэффициент деления предделителя равный 1, 8, 64, 256, 1024.

2. Timer/Counter Register (TCNTn) – регистры таймера/счетчика

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

Формула для расчета заранее загружаемого значения (preloader value) для необходимого интервала времени (Time) в секундах выглядит следующим образом:

TCNTn = 65535 – (16×10 6 xTime in sec / Prescaler Value)

Откуда берется величина 16х10 6 ? Здесь все просто — это переведенная в Герцы частота кварцевого генератора 16 МГц.

Чтобы для таймера 1 (timer1) задать время равное 2 секундам, при коэффициент деления предделителя (Prescaler Value) равном 1024, получим:

TCNT1 = 65535 – (16×10 6 x2 / 1024) = 34285

Прерывания таймеров в Arduino

Прерывания таймеров являются видом программных прерываний. В Arduino присутствуют следующие виды прерываний таймеров.

Прерывания переполнения таймера (Timer Overflow Interrupt)

Это прерывание происходит всегда, когда значение счетчика достигает его максимального значения, например, для 16-битного счетчика это 65535. Соответственно, процедура обработки (обслуживания) прерывания (ISR) вызывается когда бит прерывания переполнения таймера установлен (enabled) в TOIEx присутствующем в регистре масок прерываний TIMSKx.

ISR Format:

Output Compare Register (OCRnA/B) – регистр сравнения выхода

Процедура обработки прерывания сравнения выхода (Output Compare Match Interrupt) вызывается при вызове функции TIMERx_COMPy_vect если установлен бит/флаг OCFxy в регистре TIFRx. Эта процедура обработки прерывания (ISR) становится доступной при помощи установки бита OCIExy, присутствующем в регистре маски прерываний TIMSKx.

Захват входа таймера (Timer Input Capture)

Процедура обработки этого прерывания вызывается если установлен бит/флаг ICFx в регистре флагов прерываний таймера (TIFRx — Timer Interrupt Flag Register). Эта процедура обработки прерываний становится доступной при установке бита ICIEx в регистре маски прерываний TIMSKx.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. ЖК дисплей 16х2 (купить на AliExpress).
  3. Резисторы 10 кОм (2 шт.) и 2,2 кОм (купить на AliExpress).
  4. Светодиод (любого цвета) (купить на AliExpress).
  5. Кнопка (2 шт.).
  6. Источник питания с напряжением 5 В.

Работа схемы

Схема устройства представлена на следующем рисунке.

Необходимые соединения между платой Arduino Uno и ЖК дисплеем 16х2 представлены в следующей таблице:

ЖК дисплей 16х2Arduino UNO
VSSGND
VDD+5V
V0к среднему контакту потенциометра для контроля контрастности ЖК дисплея
RS8
RWGND
E9
D410
D511
D612
D713
A+5V
KGND

Две кнопки через подтягивающие резисторы 10 кОм подключены к контактам 2 и 4 платы Arduino Uno, а светодиод подключен к контакту 7 Arduino через резистор 2,2 кОм.

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

Программирование таймеров в плате Arduino UNO

В этом проекте мы будем использовать прерывание переполнения таймера (Timer Overflow Interrupt) и использовать его для включения и выключения светодиода на определенные интервалы времени при помощи установки заранее определяемого значения (preloader value) регистра TCNT1 с помощью кнопок. Полный код программы будет приведен в конце статьи, здесь же рассмотрим его основные части.

Для отображения заранее определяемого значения используется ЖК дисплей, поэтому необходимо подключить библиотеку для работы с ним.

Анод светодиода подключен к контакту 7 платы Arduino, поэтому определим (инициализируем) его как ledPin.

#define ledPin 7

Затем сообщим плате Arduino к каким ее контактам подключен ЖК дисплей.

Установим заранее определенное значение (preloader value) равное 3035 – это будет соответствовать интервалу времени в 4 секунды. Формула для расчета этого значения приведена выше в статье.

float value = 3035;

Затем в функции void setup() установим режим работы ЖК дисплея 16х2 и высветим приветственное сообщение на нем на несколько секунд.

lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print(«ARDUINO TIMERS»);
delay(2000);
lcd.clear();

Затем контакт, к которому подключен светодиод, установим в режим вывода данных, а контакты, к которым подключены кнопки – в режим ввода данных.

pinMode(ledPin, OUTPUT);
pinMode(2,INPUT);
pinMode(4,INPUT);

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

Далее инициализируем Timer1.

TCCR1A = 0;
TCCR1B = 0;

Загрузим заранее определенное значение (3035) в TCNT1.

Затем установим коэффициент деления предделителя равный 1024 при помощи конфигурирования битов CS в регистре TCCR1B.

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

Теперь разрешим все прерывания.

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

ISR(TIMER1_OVF_vect)
<
TCNT1 = value;
digitalWrite(ledPin, digitalRead(ledPin) ^ 1);
>

В функции void loop() предварительно загружаемое значение увеличивается и уменьшается на 10 (инкрементируется и декрементируется) при помощи кнопок в схеме. Также это значение отображается на экране ЖК дисплея 16х2.

if(digitalRead(2) == HIGH)
<
value = value+10; //увеличиваем preload value
>
if(digitalRead(4)== HIGH)
<
value = value-10; //уменьшаем preload value
>
lcd.setCursor(0,0);
lcd.print(value);
>

Исходный код программы

Далее приведен полный текст программы. Работа нашего проекта продемонстрирована на видео, приведенном в конце статьи.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector