Частотомер до 16 мгц на микроконтроллере

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

» Схемы » Измерения · Применение микроконтроллеров

17-05-2013

В статье мы рассмотрим конструкцию простого частотомера на микроконтроллере 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. Вид нижней стороны печатной платы.

Загрузки

Принципиальная схема и рисунок печтаной платы, исходный код и прошивки микроконтроллера – скачать

mdiy.pl

Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Фрагменты обсуждения: Полный вариант обсуждения »
  • Очень заинтересовала эта схема, а есть ли у кого печатная плата в lay или протеус?
  • И ещё такой вопрос подскажите новичку, я смогу взять кварц и подключить его ли бо же уже в устройстве ка кто мерять? Где выходы что бы мерять?
  • Для тех кто ИГЛ ставить не хочет, специально ПДФ дан, что, с него слабо отутужить? Если хочется что-то изменить, то не сложная ,ведь, платка, заодно и тренинг… “Le_Fleurs. И ещё такой вопрос подскажите новичку, я смогу взять кварц и подключить его ли бо же уже в устройстве ка кто мерять? Где выходы что бы мерять?” Нет. Но можно для проверки кварцев собрать простенький генератор, а вот его частоту и мерять
  • ” Однако не забывайте, что величина импульсного тока для каждого вывода микроконтроллера не должна превышать 40 мА” и не забывайте как автор, что не нужно через любую ногу питания пропускать больше 100мА.
  • Зачем строить частотомер на AVR, когда таймеры PICов с предделителем считают до 60 мегагерц?
  • на схеме 1 индикатор это крайний справа или крайний слева ?
  • Так подписано, DIS1, DIS2 … ниже скрин с модели
  • По схеме 1 индикатор соответствует первому разряду, т.е. если мы смотрим на печатную плату с установленными индикаторами (Рисунок 1 в статье), то это крайний с права индикатор (микроконтроллер тоже с права, но на нижнем слое печатной платы)…
  • извиняюсь за еще один тупой вопрос, но какие фьюзы? пробовал выставить только тактирование от внешнего кварца, измеряет не так как должен.
  • Fuse-биты пока не трогаем, поставили от внешнего кварца – хорошо. Смотрим первые строчки исходника программы МК. Какой кварц используете? Либо используем готовую прошивку из архива, если есть таковая под ваш кварц. Если нет, то указываем частоту кварца в исходнике, а также вычисляем константу: частота кварца/1024 и прописываем ее значение в исходнике. Компилируем, прошиваем микроконтроллер, смотрим что получилось. Также не забываем о возможности подстройки с помощью подстроечного конденсатора, но тут понадобиться осциллограф. Теперь смотрим Fuse-биты. Если мк был в заводской конфигурации, то помимо настройки на внешний кварц, я так думаю еще необходимо выключить делить тактовой частоты на 8 (CKDIV8).
  • Я бы сделал следующие установки Fuse-битов – Low byte: FF; High byte DF; Ext: FF. И кстати, есть версия этого измерителя на двухстрочном ЖК индикаторе, схема и прошивка, печатной платы нет (она в принципе и не нужна в этом случае)…
Полный вариант обсуждения »

При перепечатке материалов с сайта прямая ссылка на РадиоЛоцман обязательна.

Приглашаем авторов статей и переводов к публикации материалов на страницах сайта.

Источник: https://www.rlocman.ru/shem/schematics.html?di=148352

Частотомер на PIC16F628 своими руками | Мастер Винтик. Всё своими руками!

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

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

Один из таких несложных наборов я недорого приобрёл на сайте китайского магазина здесь: GEARBEST.com

Набор содержит:

  •  1 x PCB board (печатная плата);
  •  1 x микроконтроллер PIC16F628A;
  •  9 x 1 кОм резистор;
  •  2 x 10 кОм резистор;
  •  1 x 100 кОм резистор;
  •  4 x диоды;
  •  3 x транзисторы S9014, 7550, S9018;
  •  4 x конденсаторы;
  •  1 x переменный конденсатор;
  •  1 x кнопка;
  •  1 x DC разъём;
  •  1 x 20МГц кварц;
  •  5 x цифровые индикаторы.

Описание частотомера

  • Диапазон измеряемых частот: от 1 Гц до 50 МГц;
  • Позволяет измерять частоты кварцевых резонаторов;
  • Точность разрешение 5 (например 0,0050 кГц; 4,5765 МГц; 11,059 МГц);
  • Автоматическое переключение диапазонов измерения частоты;
  • Режим энергосбережения (если нет изменения показаний частоты — автоматически выключается дисплей и на короткое время включается;
  • Для питания Вы можете использовать интерфейс USB или внешний источник питания от 5 до 9 В;
  • Потребляемый ток в режиме ожидания — 11 мА

Схема содержит небольшое количество элементов. Установка проста — все компоненты впаиваются согласно надписям на печатной плате.

Мелкие радиодетали, разъемы и т.п. упакованы в небольшие пакетики с защелкой. Индикаторы, микросхема и её панелька для исключения повреждений ножек вставлены в пенопласт.

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

Напряжение на выводах микроконтроллера

(измерения мультиметром)

  1. 4,0
  2. 4,0
  3. 0,3
  4. 5,0
  5. 0,98
  6. 0,98
  7. 0,98
  8. 0,98
  9. 0,98
  10. 0,98
  11. 5
  12. 1,26
  13. 2,13
  14. 4
  15. 4,12
Читайте также:  Резисторы, ток и напряжение

Генератор для проверки кварцев

Приступаем к сборке

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

Ну и вид на весь набор в полностью разложенном виде.

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

Я начинал сборку с установки пассивных элементов: резисторов, конденсаторов и разъёмов. При монтаже резисторов следует немного узнать об их цветовой маркировке из предыдущей статьи.

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

Конденсаторы маркируются также как и резисторы. Первые две цифры — число, третья цифра — количество нулей после числа. Получившийся результат равен емкости в пикофарадах. Но на этой плате есть конденсаторы, не попадающие под эту маркировку, это номиналы 1, 3 и 22 пФ.

Они маркируются просто указанием емкости так как емкость меньше 100 пФ, т.е. меньше трехзначного числа.

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

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

Немного рассмотрим такой компонент, как —  подстроечный конденсатор. Это конденсатор, ёмкость которого можно изменять в небольших пределах (обычно 10-50пФ). Это элемент тоже неполярный, но иногда имеет значение как его впаивать.

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

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

Разъемы — сложная часть в плане пайки. Сложная не точностью или малогабаритностью компонента, а наоборот, иногда место пайки тяжело прогреть, плохо облуживается. Потому нужно ножки разъёмов дополнительно почистить и облудить.

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

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

Длительность пайки каждой ножки не должна превышать 2 сек! Между пайками ножек должно пройти не менее 3 сек на остывание.

Ну вот собственно и всё!

Теперь осталось смыть остатки канифоли щёткой со спиртом.

Теперь красивее

Источник: http://www.MasterVintik.ru/chastotomer-na-pic16f628-svoimi-rukami/

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

   Очень полезный и несложный прибор, который просто незаменим в творческой лаборатории радиолюбителя, можно сделать на МК 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

Частотомер 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

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

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

Основные характеристики частотомера: диапазон измерения частоты – от 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

Многофункциональный частотомер на PIC16F84A

Частотомер на PIC16F84A , с изменением времени измерения (0,1; 1 и 10 с),

диапазон измерения частоты от 0,1 Гц.. далее в статье подробней

После собранного мной простого  частотомера на PIC 16F628A . Попалась мне на глаза схема еще одного частотомера на PIC16F84A (спасибо пользователю Seal с радиокота) . По своим параметрам этот частотомер гораздо интересней, при этом он также очень простой.

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

Питается прибор от батареи типа “Крона” (воз­можно использование внешнего источ­ника напряжением 7… 16 В), потребляе­мый ток — 10…12 мА.

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

Схема

Цена младшего разряда — 10,1 или 0,1 Гц соответственно. При вре­мени измерения 0,1; 1 и 10 с макси­мально на ЖКИ может отображаться семь, восемь или девять разрядов, т. е. максимальное отображаемое значение равно соответственно 99,999.99, 99,999.999 или 99,999.999.9 МГц.

После сборки схемы остается только откалибровать по образцовому генератору, частоту кварцевого генератора конденсатором С10 (рис.1)

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

На транзисторах VT1 и VT2 собрано буферное устройство, а на транзисторе VT3 – входной формирователь. Входное сопротивление буферного устройства – около 500 ком.

Схема буферного устройства приведена на рисунке:(подробней на http://progcode.narod.ru  )

Соедините правый по схеме вывод резистора R11 с точкой соединения 2-го и 3-го выводов ПИКа, и Вы получите ЧМ/ЦШ с входным сопротивлением около 500 ком.

Автор этого многофункционального частотомера  А. ШАРЫПОВ, г. Владимир. 

Источник материала Радио, 2002, №  10,

Архив статьи здесь Frec.rar

Печатная плата с буферным устройством без автоотключения.

Печатная плата от пользователя Seal с автоотключением.

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

В архив добавлены: Правленные Исходник (ASM) и Прошивка (HEX), комилятор (PIC-MPASM), кодовые таблицы контроллеров HD44780 (En-Ru) и ST7066U (En-Jp), фото дисплея с английским шрифтом.
Размер архива ~1.3M 

You have no rights to post comments.
Недостаточно прав для комментирования

Источник: http://sxem.org/2-vse-stati/24-izmereniya/50-mnogofunktsionalnyj-chastotomer-na-pic16f84a

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

ПодробностиКатегория: МикроконтроллерыОпубликовано 18.06.2016 10:30Автор: AdminПросмотров: 1169

В данной статье описан простой частотомер на микроконтроллере Atmega16, который может измерять частоту с точностью до 1% , максимальное значение измеряемой частоты 40 МГц. Данного предела измерения вполне достаточно для настройки и отладки некоторых самодельных устройств.

Схема частотомера на микроконтроллере

Основой частотомера, так сказать его сердцем является микроконтроллер Atmega16, тактирование осуществляется с частотой 8 МГц от внутреннего RC генератора. О тактировании микроконтроллера было сказано раннее.

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

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

Измерение осуществляется при помощи “щупа” W1 который подключается к входу микроконтроллер PB0 и через счетчик-делитель на вход PB1.

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

Выводы с E1 по E4 включают разряды, вывод E1 включает младший разряд (крайний справа).

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

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

Как происходит измерения частоты 

Как известно частота – это количество колебаний совершаемых за единицу времени. Максимальную частоту которую может измерить Atmega16 не модет быть больше тактовой поделенной на 2.5.

У нас микроконтроллер с тактовой частотой в 8 МГц, если мы напрямую будем подключать то мы сможем измерять частоту до 3.2 МГц.

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

Алгоритм микроконтроллера, измеряет исходную частоту которая напрямую поступае на вход (Fo) и частоту которая идет с делителя (Fd).

Программа под микроконтроллер

  • код сделан таким образом что вывод на индикатор осуществляется в кГц. К примеру значение 324.3 – означает 325.3 кГц, 4000 – означает 4 МГц;
  • для подсчета входных импульсов используется таймер/счетчик 0;
  • для подсчета входных импульсов после делителя используется таймер/счетчик 1;
  • таймер/счетчик настроен с предварительным делителем 1024. Он вызывает алгоритм вычисления и выбора частоты с периодом T=1024*256/Fcpu;

в программе есть константа и именем factor, они инициализируется  в начале программы и ее присваивается значение 31.78581, она калибруется путем измерения эталонной частоты которая вычисляется по формуле:

factor=Fcpu/(1024*256)=8e6(1024*256)=30.51757

По умолчанию микроконтроллер Atmega16 настроен на работу от внутреннего генератора с частотой 1 МГц. Для нормальной работы программы нам необходимо установить частоту в 8 МГц, делается ето при помоши последовательного программатора путем устанвоки Fuse битов CKSEL3..0 в значение 0100. Выставив биты таким образом мы тем самым изменяем частоту тактирования микроконтроллера на 8 МГц.

Исходники устройства

Источник: http://www.radio-magic.ru/microcontrollers/382-chastotomer-na-mikrokontrollere

Частотомер-тестер кварцев на 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

Ссылка на основную публикацию
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}