Частотомер на avr

Частотомер 1 Гц – 10 МГц на AVR

Частотомер с хорошими характеристиками, позволяющий измерять частоты от 1Гц до 10 МГц (9,999,999) с разрешением в 1 Гц во всем диапазоне. Идеален для функиональных генераторов, цифровых шкал или как отдельное устройство. Дешев и легок в изготовлении, собран из доступных деталей, имет небольшой размер и может быть смонтирован на панели многих устройств.

Схема состоит из семи 7-сегментных индикаторов, AVR ATtiny2313 и нескольких транзисторов и резисторов. AVR делает всю работу, и дополнительные микросхемы не нужны. Микроконтроллер считает количество импульсов, пришедших на его вход за 1 секунду и отображает это число.

Сама важная вещь – это очень точный таймер, и он реализован на 16-битном Timer1 в режиме CTC. Второе, 8-битный счетчик работает как Counter0 и считает импульсы на входе T0. Каждые 256 импульсов он вызывает прерывание, в котором программа увеличивает множитель.

Когда мы получаем 1-секундное прерывание , содержимое множителя умножается на  256 (сдвиг влево на 8 бит). Остаток импульсов, которые посчитал счетчик записывается в регистр и добавляется к результату умножения. Это значение затем разбивается на отдельные цифры, которые отображаются на индикаторах.

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

Разрешение и точность:
Точность зависит от тактового генератора. Кварц должен быть хорошего качества и иметь как можно меньший ppm (допуск). Будет лучше, если частота будет кратна 1024, например, 16 МГц или 22.1184 МГц.

Для измерения частоты до 10 МГц,  надо использовать кварц не меньше, чем на 21 МГц, например, 22.1184 МГц. Частотомер может измерять частоту до 47% от частоты собственного кварца.

Если есть хороший промышленный частотомер, то можно откалибровать схему добавлением подстроечного конденсатора (1пФ-10пФ) между одним из выводов кварца и землей, и подстроить частоту в соответствии с показаниями промушленного частотомера.

В архиве с исходниками есть несколько вариантов под разные кварцы, но вы можете скомпилировать свой вариант. 

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

В устройстве нет защиты от превышения входного напряжения выше 5 вольт.

Устройство имеет высокоомный вход и не нагружает тестируемую схему – вы даже можете измерить частоту переменного тока в сети 220 вольт, прикоснувшись ко входу пальцем. Частотомер может быть переделан для измерения частоты до 100 МГц с шагом 10 Гц  путем добавления на вход быстродействующего делителя.

Дисплей:
Использовано семь семисегментных индикаторов с общим анодом в режиме динамической индикации.

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

По умолчанию сопротивление резисторов 100 Ом. Незначащие нули гасятся програмно. Значения обновляются каждую секунду.

Печатная плата:
Двусторонняя печатная плата размером 109mm x 23mm – к сожалению, 7 индикаторов не влезли в рабочее пространство бесплатной версии Eagle, поэтому они нарисованы от руки. На плате нужно сделать 3 соединения проводом – первое – соединение питания и вывода VCC контроллера – это соединение показано на слое silkscreen.

Два других соединяют десятичные точки индикаторов с резисторами на 330 Ом расположенными на слое bottom. Сверху платы расположен коннектор Atmel ISP-6. Контакт 1 первый со стороны кварца. Этот коннектор необязателен и нужен только для программирования контроллера.

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

СКАЧАТЬ – .BAS исходник и скомпилированная версия 1.1; Проект Eagle 6.4.0 и PDF версия 1.1

СКАЧАТЬ – .BAS исходник и скомпилированная версия 1.1 для ЖК индикатора; Проект Eagle 6.4.0 и PDF версия 1.1 для ЖК индикатора

Источник: http://micpic.ru/home/avr-projects/77-chastotomer-1-gts-10-mgts-na-avr.html

Частотомер на AVR

Источник: https://pro-radio.ru/controllers/5978-6

Данный прибор предназначен для измерения частоты в пределах 0-9999 Гц, но при использовании делителя частоты на входе этот диапазон соответствующим образом расширяется.

Максимальное входное напряжение – 3V, при условии, что отсутствует дополнительный делитель напряжения, минимальное 0,15V, так же при условии что он отсутствует.

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

Схема прибора относительно простая и изображена ниже:

В основе схемы –  8-ми битный микроконтроллер производства фирмы Atmel, Atmega8A-PU. Для тактирования ядра микроконтроллера применен генератор с внешним кварцевым резонатором. Выбор такого генератора обусловлен требованиями к стабильности частоты последнего.

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

Входной узел выполнен на элементах R2, D1, D2, C3, R3, R4, R1, Q1. Этот узел обеспечивает усиление/ограничение сигналов, поступающих на его вход (резистор и диоды на входе частотомера ограничивают входной сигнал, транзистор отвечает за усиление сигнала до ТТЛ уровня). Печатная плата устройства так же не сложная.

Она изготавливается из одностороннего фольгированного материала (изначально планировалось сделать из двухстороннего, но в наличии его не нашлось, поэтому остановился на односторонней). Топология платы представлена ниже.

Что касается программы для микроконтроллера, то она была разработана в среде Flowcode (файл проекта прилагается). Для подсчета импульсов я использовал прерывания по входу INT0 микроконтроллера, а для ограничения времени счета – прерывания таймера TMR0.

Так как на этом таймере стоит предделитель с коэффициентом деления 1/256 (в силу того что он восьмиразрядный), то расчет частоты прерываний производится так:Fпрер.=F ген.÷256÷поргр. дел.  В своей конструкции я выбрал частоту прерываний в 200 Гц. Как я уже писал выше, частоту измерения можно увеличить. Для этого нужно лишь ограничить время измерения.

Это делается посредством изменения числа 200 на 2(время измерения не 1с а 10мс, граничная частота 99 999Гц), в коде, как показано на рисунке в исходнике на С.

Для программирования микроконтроллера я использовал параллельный программатор. Как видите, в моей конструкции вывод внешнего сброса используется как обычный порт. Если у вас нет параллельного программатора, то вот вариант схемы, где используется порт D микроконтроллера, и необходимость в использовании пина RESET как обычного порта вывода отпадает.

Вот пример выставления фузов в программе PonyProg2000:

Вот схема варианта частотомера с использование RESET по прямому назначению:

А так же вот топология платы для второго варианта схемы:

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

В данной схеме нет дефицитных деталей, но список замен и аналогов все же перечислю. Так микроконтроллер Atmega8A-PU  можно заменить на аналогичный Atmega8-16PU (кстати, последний более предпочтителен). Резисторы можно взять на мощность 0,125 Вт, за исключением  R2, его лучше взять на 0,5 Вт.

Конденсаторы – для генератора дисковые, керамические, а для входного блока – любой, подходящий по параметрам. Транзистор можно заменить на отечественный КТ3102 (как показали опыты у КТ315 слишком мал коэффициент передачи тока h21Э). Светодиодный индикатор можно взять любой, подходящий по размерам (а они не критичны).

 Кварцевый резонатор использован на частоту 3267800Гц (3,2768МГц).

Фотографии готового устройства показаны ниже.

На первом фото видно резистор, который подключен к питу RESET МК (остался с проверки второй прошивки, со сбросом).

Прикрепленные файлы:

  • проект_частотомер.rar (88 Кб)

Источник: http://shemopedia.ru/chastotomer-na-avr.html

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

Заново просматривал теорию по поводу метода захвата, изложеную GM, на electronix.ru. Немогу понять почему число подсчитываемых импульсов входной частоты М точное число, а N гуляет +/-1. У меня полуячается что гуляют оба.
Вот теория, от GM:

ИЗМЕРЕНИЕ ЧАСТОТЫ С ПОМОЩЬЮ АВР МИКРОКОНТРОЛЛЕРА

1) Введём определенияFо – сигнал опорной частоты,То – период опорной частоты, То=1/Fо,Fx – входной сигнал (меандр) неизвестной частоты, подлежащей измерению,Тх – период входной частоты, Тх=1/Fx,Тизм – период измерения входной частоты,N – количество импульсов опорной частоты за время измерения,

M – количество импульсов входной частоты за время измерения.

2) Формула вычисления частоты Fx = Fо*М/N (поскольку очевидно, что То*N=Тх*М за Тизм).

3) Формула для Fx применима как к варианту с “воротами”, так и к варианту со схемой захвата. При использовании схемы захвата М является точным числом, а N “гуляет” в пределах (-1,+1). При использовании “ворот” N является точным числом, а М “гуляет” в пределах (-1,+1).

Вот всё, что нам нужно знать из теории для измерения частоты.

4) Применим наши знания на практике. Выберем период измерения Тизм примерно равным одной секунде. (Примерно потому, что Тизм должен быть ТОЧНО кратен М*Тх). Пусть Fx=170 кГц, а Fо=16МГц. Тогда М=170000, а N=16000000.

Вычислим частоту по нашей формуле Fxвыч = Fо*М/N=16000000*170000/16000000=170000 Гц.Вычислим погрешность метода. Не буду вас мучить выводом соответствующей формулы с помощью частных дифференциалов, кто захочет пусть сам потренируется, скажу только, что относительная погрешность будет суммой модулей относительных погрешностей отдельных составляющих.

Ну и ещё упростим задачу, приняв ΔFo/Fo =0 (На самом деле, кратковременная нестабильность кварцевой опоры порядка 10^(-8) или лучше).

Итак, Fx = Fо*М/(N±1)=170000±0.010625 Гц. Что нам и требовалось показать. Относительная погрешность составит 6*10^(-8). Можно добавить 10^(-8) нестабильности опоры, если требуется уточнить погрешность. Кстати, для варианта с “воротами” Fx = Fо*(М±1)/N=170000±1 Гц, как и было сказано.

5) Перейдём теперь к реализации алгоритма на микроконтроллере. В принципе, всё и так уже ясно, просто поставим точки над ϊ и чёрточки на t(. Сколько нам нужно захватов таймера, чтобы вычислить частоту? Два – один для захвата начала секундного интервала, и второй для захвата конца того же интервала. Пусть захват работает по прерыванию. При захвате, т.е.

при положительном фронте импульса входной частоты, содержимое таймера перепишется в регистр ICR.

Прекрасно, в этом же прерывании запомним в регистрах или в памяти два числа – количество импульсов Мнач и Nнач, запрещаем прерывание и выходим из него (замечу в скобках, схема захвата “молотит” по-прежнему, но прерывания запрещены), оно нам понадобится только через секунду, займёмся другими делами, скажем, расчетом частоты предыдущего цикла.

Через примерно секунду работы (или вынужденного безделья, можно по таймеру) ОПЯТЬ разрешаем прерывания от схемы захвата. Как только оно произойдёт, опять запоминаем два числа – количество импульсов Мкон и Nкон, запрещаем прерывание по захвату и выходим из него, вычисляем М=Мкон-Мнач, N=Nкон-Nнач.

Вот так это всё и работает. Я, конечно многого не упомянул. Все переменные для расчета должны быть соответствующей разрядности, как минимум 32, умножение надо делать до деления, чтобы не потерять точность, вычисление частоты можно вести непрерывно, достаточно просто после вычисления частоты переписать переменные Мнач=Мкон, Nнач=Nкон. Обязателен учёт переполнения таймеров.

   Очень полезный и несложный прибор, который просто незаменим в творческой лаборатории радиолюбителя, можно сделать на МК PIC16F628A. Для измерения частот до 30 Мгц и предназначен данный цифровой частотомер на распространённой микросхеме-контроллере PIC16F628A. Его принципиальная схема состоит из базового модуля, с подключенным к его счетному входу входным формирователем. Схема частотомера приведена на рисунке ниже:   Данный измерительный прибор может использоваться в двух режимах – цифровая шкала и измеритель частоты. При включении питания, частотомер переходит в тот режим, в котором он работало до последнего выключения питания. Если это был режим частотомера – в левом разряде индикатора высветится режим частотомера “F.”. Так-же в младшем разряде индикатора высветится “0”. Частотомер автоматически перейдет в режим измерения частоты и будет находиться в режиме ожидания. При подаче на вход какого-то сигнала, признак режима частотомера “F.” гасится и индикатор отобразит значение измеряемой частоты в килогерцах.Схема входного формирователя частотомера – цифровой шкалы, приведена на рисунке:   Если на момент включения питания, на входе частотомера присутствует измеряемый сигнал, то, после включения питания, признак работы частотомера “F.”, высветится в течение 1-й секунды, а затем погаснет.Для того чтобы перейти на время измерения 0,1 сек. или 10 сек., необходимо нажать либо кнопку № 1, либо одновременно нажать кнопку № 1 и кнопку № 2 соответственно (см. раскладку клавиатуры для режима частотомера), затем дождаться изменения положения десятичной точки, после чего отпустить кнопку (кнопки). Если после этого необходимо вернуться к времени измерения 1 сек., то необходимо нажать кнопку № 2 и дождаться изменения положения десятичной точки, после чего отпустить кнопку. Для любого времени измерения десятичная точка отмечает килогерцы.   Раскладка клавиатуры режима частотомераКнопки Время измерения ПоясненияКнопка № 1 0,1 сек. Переход на время измерения 0,1 сек.Кнопка № 2 1 сек. Переход на время измерения 1 сек.Кнопка № 1 +кнопка № 2 10 сек. Переход на время измерения 10 сек. (кнопки нажимаются одновременно)   Если перед выключением питания происходила работа в режиме цифровой шкалы, то при следующем включении питания будет установлен именно этот режим, а внутри режима цифровой шкалы будет установлен именно тот подрежим (“минус ПЧ” или “плюс ПЧ”), в котором происходила работа до последнего выключения питания. Признаки подрежимов цифровой шкалы (“L.” или “H.” соответственно) будут постоянно высвечиваться в левом разряде индикатора. При отсутствии сигнала на входе цифровой шкалы, индикатор будет показывать значение записанной в память контроллера промежуточной частоты, а при его наличии – результат вычитания или сложения частоты сигнала, присутствующего на входе цифровой шкалы, и значения промежуточной частоты, записанной в энергонезависимую память PIC контроллера.   Режим цифровой шкалы имеет 4 подрежима.- При нажатии на кнопку № 1 происходит переход в подрежим “минус ПЧ”.- При этом, в левом разряде индикатора, высветится признак подрежима “L.”.- При нажатии на кнопку № 2 происходит переход в подрежим “плюс ПЧ”.- При этом, в левом разряде индикатора, высветится признак подрежима “H.”.   В процессе “прошивки” контроллера, в его энергонезависимую память записывается значение промежуточной частоты = 5,5 мГц., но потом может будет самостоятельно записать в нее любое значение и использовать ее в качестве промежуточной. Для этого надо подать на вход ЦШ внешний сигнал с частотой, которая далее будет использоваться в качестве промежуточной. Проконтролировать значение этой частоты можно, перейдя в режим частотомера.   Раскладка клавиатуры режима цифровой шкалы:Кнопки Время измерения ПоясненияКнопка № 1 “минус ПЧ” Промежуточная частота вычитается изизмеряемой частотыКнопка № 2 “плюс ПЧ” Промежуточная частота суммируется сизмеряемой частотойКнопка № 1 +кнопка № 2 Установка ПЧ Запись в оперативную память значенияизмеряемой частоты (ПЧ)Повторно:Кнопка № 1 +кнопка № 2 Запись ПЧ Копирование значения измеряемой частоты из оперативной памяти в энергонезависимую с целью дальнейшего ее использования в качестве промежуточной   При смене режима работы, меняется раскладка клавиатуры. Если кнопка № 1 находится в нажатом состоянии меньше определенного времени, то переключения в другой режим не происходит и кнопка № 1 может либо устанавливать время измерения 0,1 сек. (в режиме частотомера), либо включать подрежим “минус ПЧ” (в режиме цифровой шкалы). Если этот порог превышен, происходит переключение в другой режим. Величина этого порога – около 4 сек., и этот интервал времени отсчитывается с момента окончания цикла счета, приходящегося на момент нажатия кнопки № 1.    Снизить энергопотребление схемы частотомера можно, увеличив номиналы резисторов, соединяющих выводы порта В с индикатором. В своей конструкции использовал 9-разрядный светодиодный индикатор от советского телефона с АОН, с общим катодом и красным цветом свечения. В моем частотомере, кроме питания от сети, имеется также и батарейное питание (аккумуляторы). Печатная плата устройства приведена на рисунке:   Прошивки для микроконтроллера PIC16F84A, а также полный текст статьи Цифровой частотомер на контроллере качаем тут. Схему испытал – ZU77.

Не забудьте поделиться с друзьями

Это тоже полезно посмотреть:

В статье речь идет о том, как отремонтировать пластмассовый китайский электрочайник. 

Источник: http://el-shema.ru/publ/izmerenija/chastotomer_na_mikrokontrollere/8-1-0-21

Цифровой частотомер на микроконтроллере

Главная особенность частотомера – простота и экономичность.

Основные характеристики частотомера: диапазон измерения частоты – от 0,1 Гц до 60 МГц ; порог чувствительности по входному напряжению – от 0,08 до 0,15 В (значение амплитуды); минимальная фиксируемая частотомером величина частоты синусоидального сигнала – 2 Гц (амплитудой 0,15 В); максимальная амплитуда входного сигнала – 3 В. 

В качестве источника питания применена батарея “Крона” либо внешний источника питания с напряжением от 7 до 16 В, ток потребления составляет 10…12 мА.

В частотомере есть возможность изменения времени измерения (0,1; 1 и 10 с), умножение показаний на 1000 (при применении внешнего делителя частоты), удержание показаний, запись предыдущего значения частоты в энергонезависимую память и возможность последующего считывания.

Рис. Принципиальная схема частотомера

Основа частотомера – микроконтроллер PIC16F84A, который осуществляет счет импульсов внешнего сигнала, обработку полученных значений и вывод результатов измерения на LCD. В функции микроконтроллера также входят опрос кнопок (SB1-SB4) и управление питанием частотомера.

Кнопка SB1 предназначена для включения и выключения частотомера. После подключения батареи питания частотомер находится  в выключенном состоянии. При нажатии на кнопку SB1 напряжение питания через диод VD1 поступает на интегральный стабилизатор напряжения DA1, а с его выхода – на входной каскад: транзистор VT3, микроконтроллер DА2 и индикатор LCD.

Потом на выводе 1 (A2) микроконтроллера возникает высокий логический уровень, что приводит к открыванию транзисторов VT1 и VT2. Затем микроконтроллер ждет отпускания кнопки SB1 (контролируя сигнал на выводе 6). После размыкания кнопки SB1, напряжение питания подается на вход стабилизатора DA1 через открытый транзистор VT1 и начинается измерение частоты.

Во время удержания SB1 на экране индикатора  отображается надписи “ЧАСТОТОМЕР” и “ВЕРСИЯ: 1.00”.

При вторичном нажатии на кнопку SB1, напряжение питания поступает на вывод 6 (B0) микроконтроллера, который после этого ожидает размыкания кнопки SB1, и когда это произойдет, устанавливает низкий логический уровень на выводе 1 (A2). В итоге транзисторы VT1, VT2 закрываются,  частотомер обесточивается.

Если в режиме замера на индикаторе появляются  нулевые показания в течение приблизительно 3 мин, микроконтроллер устанавливает низкий логический уровень на выводе 1 (A2), таким образом, отключая   от источника питания.

Время измерения, выбранное кнопкой SB2 (0,1; 1 или 10 с), показывается  в правой части нижней строки индикатора. Цена младшего разряда – 10, 1 или 0,1 Гц соответственно. При времени измерения 0,1; 1 и 10 с максимально на LCD может отображаться семь, восемь или девять разрядов, т. е. наибольшее отображаемое значение равно соответственно 99,999.99, 99,999.999 или 99,999.999.9 МГц.

Нажатием кнопки SB3 показания частоты умножают на 1000. Это необходимо  для считывания показаний при использовании внешнего делителя на 1000. Этот коэффициент умножения (“х1” или “х1000”) отображается в середине нижней строки.

Для удержания  показания, нажимают кнопку SB4 (“Память”). При этом на LCD фиксируется значение той частоты, которое было в момент нажатия кнопки.

Его можно сохранить в энергонезависимой памяти микроконтроллера, воспользовавшись кнопкой SB2, функция которой в этом случае – “Запомнить”.

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

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

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

В качестве VT1, VT2 в частотомере можно использовать произвольные транзисторы указанных на схеме серий. Стабилизатор 78L05  заменим на КР1157ЕН502А, LM2931Z.

Прошивка

Источник: http://shemu.ru/cifrovueshemu/232-hz-metr

Частотомер 1 Гц – 10 МГц на микроконтроллере AVR

В статье мы рассмотрим конструкцию простого частотомера на микроконтроллере Atmel AVR, имеющего диапазон измерений от 1 Гц до 10 МГц с разрешением 1 Гц (Рисунок 1).

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

В схеме прибора используются довольно распространенные компоненты.

Рисунок 1. Внешний вид частотомера на микроконтроллере AVR.

Конструктивно прибор состоит из дисплея, образованного семью 7-сегментными светодиодными индикаторами, микроконтроллера ATtiny2313 и нескольких транзисторов и резисторов. Микроконтроллер выполняет все необходимые функции, поэтому применение каких-либо дополнительных микросхем не требуется.

Принципиальная схема прибора достаточно проста и изображена на Рисунке 2. Проект в формате Eagle (принципиальная схема и печатная плата) доступен для скачивания в секции загрузок.

Рисунок 2. Принципиальная схема частотомера на микроконтроллере AVR.

Выполняемые микроконтроллером задачи просты и очевидны: подсчет количества импульсов на входе за 1 секунду и отображение результата на 7-разрядном индикаторе.

Самый важный момент здесь – это точность задающего генератора (временная база), которая обеспечивается встроенным 16-разрядным таймером Timer1 в режиме очистки по совпадению (CTC mode). Второй, 8-разрядный, таймер-счетчик работает в режиме подсчета количества импульсов на своем входе T0.

Каждые 256 импульсов вызывают прерывание, обработчик которого инкрементирует значение коэффициента. Когда с помощью 16-разрядного таймера достигается длительность 1 с, происходит прерывание, но в этом случае в обработчике прерывания коэффициент умножается на 256 (сдвиг влево на 8 бит).

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

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

Разрешение и точность измерений

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

Наилучшим выбором будет резонатор, частота которого делится на 1024, например 16 МГц или 22.1184 МГц. Чтобы получить диапазон измерения до 10 МГц необходимо использовать кварцевый резонатор на частоту 21 МГц и выше (для 16 МГц, как на схеме, диапазон измерений становится немного ниже 8 МГц). Кварцевый резонатор на частоту 22.

1184 МГц идеально подходит для нашего прибора, однако приобретение именно такого с минимальной погрешностью для многих радиолюбителей будет сложной задачей.

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

Рисунок 3. Установленный на плате подстроечный конденсатор для калибровки частоты кварцевого резонатора 25 МГц.
Рисунок 4. Калибровка и сравнение результатов измерения частоты осциллографом и частотомером на AVR микроконтроллере.

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

Входной сигнал

В общем случае на вход прибора может подаваться сигнал любой формы с амплитудой 0 … 5 В, а не только прямоугольные импульсы. Можно подавать синусоидальный или треугольный сигнал; импульс определяется по спадающему фронту на уровне 0.8 В.

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

Диапазон измерений может быть расширен до 100 МГц с разрешением 10 Гц, если применить на входе соответствующий высокоскоростной делитель частоты.

Дисплей

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

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

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

Печатная плата

Двухсторонняя печатная плата имеет размеры 109 × 23 мм. В бесплатной версии среды проектирования печатных плат Eagle в библиотеке компонентов отсутствуют семисегментные светодиодные индикаторы, поэтому они были нарисованы автором вручную.

Как видно на фотографиях (Рисунки 5, 6, 7) авторского варианта печатной платы, дополнительно необходимо выполнить несколько соединений монтажным проводом. Одно соединение на лицевой стороне платы – питание на вывод Vcc микроконтроллера (через отверстие в плате).

Еще два соединения на нижней стороне платы, которые используются для подключения выводов сегмента десятичной точки индикаторов в 4 и 7 разряде через резисторы 330 Ом на «землю».

Для внутрисхемного программирования микроконтроллера автор использовал 6-выводный разъем (на схеме это разъем изображен в виде составного JP3 и JP4), расположенный в верхней части печатной платы. Этот разъем не обязательно припаивать к плате, микроконтроллер можно запрограммировать любым доступным способом.

Рисунок 5. Расположение светодиодных индикаторов и транзисторных ключей на плате. Видна перемычка монтажным проводом для подачи питания на микроконтроллер.
Рисунок 6. Микроконтроллер Attiny2313, разъем внутрисхемного программирования и перемычки для подключения выводов сегмента десятичной точки индикатора.
Рисунок 7. Вид нижней стороны печатной платы.

АРХИВ:Скачать

Раздел: [Измерительная техника]

Источник: http://2zv.ru/article/4860-chastotomer-1-gc—10-mgc-na-mikrokontrollere-avr

Частотомер-тестер кварцев на atmega8

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

Не раз случалось такое, что собираешь устройство, программируешь микроконтроллер, записываешь фьюзы, чтобы он тактировался от внешнего кварца и всё – после записи фьюзов программатор перестаёт видеть МК.

Причина – “битый” кварц, реже – “глючный” микроконтроллер (или заботливо перемаркированый китайцами с добавлением, например, буквы “А” на конце). И таких неисправных кварцев мне попадалось до 5% из партии.

Кстати, достаточно известный китайский набор частотомера с тестером кварцев на PIC-микроконтроллере и светодиодном дисплее с Алиэкспресса мне категорически не понравился, т.к. часто вместо частоты показывал то ли погоду в Зимбабве, то ли частоты “неинтересных” гармоник (ну или это мне не повезло).

Есть достаточно старый проект частотомера на ATMEGA8 и символьном дисплее 16×2. Предел измерения – до 40..50МГц с погрешностью менее 1%. Такой точности обычно более, чем достаточно.

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

Теоретически, если заменить микроконтроллер на ATMEGA48/88, то можно поставить кварц на 20 МГц и тогда максимальная измеряемая частота может быть увеличена до ~80 МГц (естественно, для этого придётся пересобрать прошивку).

Прибор имеет 9 режимов измерения:

  1. Измерение частоты с предделителем на 16, время измерения – 0.25 сек, результат в Гц.
  2. Измерение частоты без предделителя, время измерения – 0.25 сек, результат в Гц.
  3. Измерение периода следования импульсов и вычисление частоты на его основе, результат в 0.01 Гц.
  4. Изменение циклов в минуту (без предделителя), вычисляемых по измеренному периоду, результат в rpm.
  5. Измерение длительности полного цикла, результат в микросекундах.
  6. Измерение длительности высокого полупериода, результат в микросекундах.
  7. Измерение длительности низкого полупериода, результат в микросекундах .
  8. Длительность высокого полупериода в процентах.
  9. Длительность низкого полупериода в процентах.

Схема

Исходная схема прибора была доработана следующим образом (схема кликабельна):

  1. Добавлен альтернативный входной формирователь (блок Analog-1), схема найдена на просторах интернета (к сожалению, не смог определить первоисточник). Имеет вход для проверки кварцевых резонаторов (работает с кварцами от 1МГц до 40МГц). Исходный входной формирователь тоже сохранён (блок Analog-2) и разведён на печатной плате, но распаять можно только один из этих формирователей.
  2. Переменный резистор выбора режимов заменён на более долговечный энкодер
  3. Питается прибор от USB. На вход добавлены LC-фильтр помех и предохранитель
  4. RS232 и преобразователь MAX232 из схемы убраны, вместо них добавлен разъём для подключения преобразователя USB-UART для связи с ПК (если захочется управлять прибором с ПК)
  5. Вольтметр 0..5В из исходной схемы также убран, т.к., учитывая обилие дешёвых китайских мультиметров, смысла в нём не видится никакого.

Аналоговый входной сигнал поступает на усилитель, а затем на формирователь на основе триггер Шмитта 74HCT132. Далее, этот сигнал подаётся на вход микроконтроллера непосредственно, либо через делитель на 16, выполненный на 74HCT93. Делитель этот управляется сигналом от пина PC5: высокий уровень на пине отключает предделитель, низкий уровень, соответственно, включает деление на 16.

Микроконтроллер подключён по типовой схеме и тактируется от кварцевого резонатора 16 МГц. Кстати, о кварце – его качество (точность, термостабильность) целиком определяет точность прибора. Т.е., возникает проблема добычи эталонного кварца (ну или точное измерение его частоты с последующим введением поправки в вычислении). Но об этом чуть позже..

Я не стал разводить на плате разъём ISP-программатора, т.к. микросхема всё равно стоит на панели, а для обновления прошивки можно использовать загрузчик. Неиспользуемые выводы микроконтроллера разведены так, что в будущем к ним можно было что-нибудь подключить.

Например, джампер для активации того же bootloader-а. Или термодатчик, чтобы в будущем учитывать температурное изменение частоты кварцевого резонатора. Или ещё что-нибудь. Все выводы от miniUSB-разъёма также разведены на плате.

Это сделано для того, чтобы можно было легко установить USB-UART-преобразователь внутри прибора (если он будет нужен).

Сборка

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

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

Плата в сборе:

К сожалению, на изготовленных платах обнаружилось пара ошибок. Первая – в формирователе Analog-1 – вывод резистора R15 (470 Ом) висит в воздухе. Исправить можно просверлив рядом отверстие и прокинув небольшую перемычку как показано на фото. Как вариант, можно кинуть провод через одно из свободных отверстий чтобы не сверлить новые.

Вторая ошибка – пропущено соединение между выводом 5 микросхем 74hct132 и выводом 2 микросхемы 74hct93, для исправления надо кинуть проводок как на фото:

Использование прибора

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

РежимИзмеряемая величинаМетодФормат отображения
1.Frequency (16) Частота Подсчёт с предделителем на 16 F=99,999,999 Hz
2.Frequency Частота Подсчёт без предделителем f=9,999,999 Hz
3.Time HL, f Частота Длительность периода v= 9,999.999 Hz
4.Time HL, rpm Изменений в минуту Длительность периода u= 9,999,999 rpm
5.Time HL, us Длительность периода следования Длительность периода t=99,999,999 us
6.Time H Длительность “высокой” части периода Длительность периода h=99,999,999 us
7.Time L Длительность “низкой” части периода Длительность периода l=99,999,999 us
8.PW ratio H Доля “высокой” части периода Длительность периода P=100.0%
9.PW ratio L Доля “низкой” части периода Длительность периода p=100,0%

В режиме тестера кварцев прибор успешно работал с разными резонаторами от 4 МГц до 27МГц. С часовыми кварцами генератор, увы, совсем не запускается, для них придётся делать отдельную приблуду.

Корпус

Корпус для частотомера был распечатан на 3D-принтере, для чего спроектирована 3D-моделька. Верхняя часть состоит из двух деталей – основы и части для дисплея.

Отверстия на лицевой панели вырезаны не да конца – умышленно оставлен один слой пластика (0.35мм). Это сделано для того, чтобы заливка лицевой поверхности была равномерной, без обводных контуров вокруг отверстий.

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

Сам корпус также был обработан ацетоном (прошёлся пару раз кисточкой).

На фрагменте под дисплей также намечено прямоугольное отверстие для 3-пинового разъёма цифрового входа. Да, вообще, этот разъём должен быть 2-пиновый, но тогда было бы не понятно, где у него “земля”, а где вход.

Чтобы не делать пояснительных надписей на лицевой панели, добавлен третий контакт. Так получаятся, что то вход по центру, земля – по краям, запомнить просто. Либо, как вариант, сюда можно вывести напряжение +5В.

Например, для приставки-измерятора частоты часовых кварцев.

Архив с 3D-моделями можно скачать в конце статьи. Для нижней части корпуса есть дополнительный вариант с тонкими термостенками по периметру, чтобы основная модель медленнее остывала, для предотвращения загибания пластика по углам при печати ABS-ом. В архиве так же есть файл модель стойки для крепления дисплея к печатнйо плате.

Собранное устройство в корпусе выглядит так (вставлен кварц на 20 МГц):

Точность прибора

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

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

Все точные кварцы будут использованы в критичном оборудовании, менее точные – в менее критичном оборудовании, а весь оставшийся “мусор” с максимальным отклонением частоты будет распродан где-нибудь на Алиэкспрессе по 50 рублей за ведро.

Кроме точности частоты, не меньшее значение имеет её термостабильность. Если температура в помещении в течение года может изменятсья в диапазоне около 15°С, то и частота резонатора может значительно “уплывать”.

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

Но как быть, если нет ни первого, ни второго? Тут мне видится такое решение: вместо эталонного источника частоты можно использовать системные часы компьютера.

Если часы синхронизируются по протоколу NTP, а в версии 4 этот протокол способен обеспечить точность до 10 мс (1/100 с) при работе через Интернет (и до 0.2 мс и лучше внутри локальных сетей). Имея такой точный источник времени, можно написать прошивку, реализующие часы для частотомера.

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

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

Излишки печатных плат есть в магазине сайта.

Файлы

Схема частотомера в PDF
Модель корпуса
Исходник и прошивка

Источник: http://trolsoft.ru/ru/sch/f-meter

Простой частотомер до 40 МГц на микроконтроллере ATmega16

Рис.1. Принципиальная схема прибора

Частотомер собран на макетной плате, основой является микроконтроллер ATmega16 компании Atmel, источником тактовой частоты является внутренний RC осциллятор 8 МГц (это необходимо помнить при программировании микроконтроллера).

Дополнительно, во входной части используется 4-битный счетчик 74HC191 в качестве делителя измеряемой частоты на 16 до подачи ее на вход микроконтроллера.

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

Вход прибора (щуп) – точка W1, которая напрямую подключена к порту микроконтроллера PB0 и, через делитель, к порту PB1.

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

Схема расположения и назначение выводов примененного индикатора изображена на рисунке 2.

Рис.2. Расположение и назначение выводов примененного 4 разрядного светодиодного индикатора.

Выводы E1…E4 используются для включения соответствующих разрядов (E1 – для включения правого младшего разряда).

Каждая линия ввода/вывода микроконтроллера ATmega16 может обеспечить выходной ток до 40 мА, поэтому нам нет необходимости использовать транзисторы и сигналы управления дисплеем (E1…E4) подключены непосредственно к порту микроконтроллера.

Коннектор для внутрисхемного программирования микроконтроллера J1. После сборки и программирования микроконтроллера Вам потребуется калибровка прибора, настройка некоторых переменных (например, для увеличения яркости дисплея, уменьшения мерцания дисплея). Другими словами Вам потребуется обновление ПО микроконтроллера, и поэтому указанный коннектор необходимо установить на плату.

Алгоритм измерения частоты

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

Максимальная частота, которая может быть обработана счетчиком микроконтроллера ATmega16, не может превышать тактовую частоту, деленную на 2.5. Обозначим максимальную частоту – Fmax. Тактовая частота для нашего микроконтроллера – 8 МГц, следовательно напрямую мы можем измерять сигналы с частотой до 3.

2 МГц. Для измерения частоты выше этого уровня мы используем 4-битный счетчик в качестве делителя входной частоты. Теперь мы можем измерять частоты в 16 раз превышающие Fmax, но здесь накладывается ограничение со стороны счетчика 74191 и фактическая максимальная измеряемая частота не превышает 40 МГц.

Алгоритм, который был разработан, проводит измерение оригинальной (входной) частоты (обозначим Fo) и частоты получаемой с делителя (обозначим Fd). Пока соблюдается условие, что частота меньше Fmax выполняется условие:

Fo = 16 ? Fd;

Но по мере приближении Fo к Fmax, все больше импульсов должны быть обработаны и выражение выше примет вид:

Fo < 16 ? Fd;

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

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

Алгоритм суммарно изображен на диаграмме (рис. 3)

Рис.3 Алгоритм работы частотомера на микроконтроллере

Программное обеспечение микроконтроллера

Исходный код программы микроконтроллера снабжен подробными комментариями, но некоторые моменты требуют отдельного разъяснения:

  • код разработан так, что измеренное значение отображается на индикаторе в «кГц». Например, если Вы видите на дисплее значение «325.8» – это означает 325.8 кГц, значение «3983» – это 3983 кГц (или 3.983 МГц).
  • Таймер/счетчик 0 микроконтроллера используется для подсчета входных импульсов напрямую;
  • Таймер/счетчик 1 микроконтроллера используется для подсчета входных импульсов после делителя на 16;
  • Таймер/счетчик 2 сконфигурирован как таймер с предварительным делителем на 1024 (частота CPU делится на 1024). Используется для вызова алгоритма вычисления и выбора частоты каждый период T таймера. В нашем проекте Т = 1024 ? 256/Fcpu.
  • Константа «factor», определенная в начале программы значением «31.78581», должна быть откалибрована измерением эталонной частоты. Вычисляется по выражению:

factor = Fcpu/(1024?256)=8.E6/(1024)=30.51757

Функция Anti-Flickering (устранение мерцания индикатора) довольна сложна, но очень эффективна, особенно при измерении непостоянных частот. Данная функция полностью избавляет индикатор от быстрого переключения между различными значениями, продолжая отображать точное значение, и быстро изменяет показания, если измеренная частота действительно изменилась.

Примечание

Микроконтроллер ATmega16 поставляется с заводскими установками, при которых настроен на работу от внутреннего RC осциллятора 1 МГц. Необходимо с помощью последовательного программатора установить Fuse-биты CKSEL3..0 в значение «0100», что соответствует включению внутреннего RC осциллятора 8 МГц.

Исходный код программы микроконтроллера, скомпилированный hex-файл для прошивки
скачать

ikalogic.com

На английском языке: 40 MHz Frequency meter on ATmega16

Перевод: Vadim по заказу РадиоЛоцман

Источник: http://elektro-shemi.ru/prostoj_chastotomer_do_40_mgc_na_mikrokontrollere_atmega16.html

Простой цифровой частотомер

Схема очень простого цифрового частотомера на зарубежной элементной базе

Доброго дня уважаемые радиолюбители!
Приветствую вас на сайте “Радиолюбитель“

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

Схема частотомера:

Частотомер выполнен на измерительных счетчиках HFC4026BEY, микросхемах серии CD40 и семисегментных светодиодных индикаторах  с общим катодом HDSP-H211H. При напряжении источника питания 12 вольт частотомер может измерять частоту от 1 Гц до 10 МГц.

Микросхема HFC4026BEY является представителем высокоскоростной КМОП логики и содержит десятичный счетчик и дешифратор для семисегментного светодиодного индикатора с общим катодом. Входные импульсы подаются на вход “С”, который имеет триггер Шмитта, что позволяет значительно упростить схему входного формирователя импульсов.

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

Входной усилитель выполнен на транзисторе VT1 по схеме ключа. Он преобразует входной сигнал в импульсы произвольной формы. Прямоугольность импульсам придает триггер Шмитта, имеющийся на входе “С” микросхемы. Диоды VD1- VD4 ограничивают величину амплитуды входного сигнала. Генератор опорных сигналов выполнен на микросхеме CD4060B.

В случае использования кварцевого резонатора на частоту 32768 Гц с вывода 2 микросхемы снимается частота 4 Гц, которая поступает на схему управления состоящего из десятичного счетчика D2 и двух RS триггеров на микросхеме D3.

В случае использования резонатора на 16384 Гц ( с китайских будильников) частоту 4 Гц нужно будет снимать не со 2 вывода микросхемы, а с 1-го.

Микросхему CD4060B можно заменить другим аналогом типа хх4060 (например NJM4060). Микросхему CD4017B можно заменить также другим аналогом типа хх4017, либо отечественной микросхемой К561 ИЕ8, К176 ИЕ8.

Микросхема CD4001B прямой аналог наших микросхем К561ИЕ5, К176ИЕ5.  Микросхему HFC4026BEY можно заменить ее полным аналогом CD4026, но при этом максимальная измеряемая частота будет 2 МГц.

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

Источник: http://radio-stv.ru/radiolyubitelskie-shemyi/chastotomeryi-i-pristavki-k-nim/prostoy-tsifrovoy-chastotomer

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}