Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

Содержание

Простой частотомер до 200МГц на Arduino Nano. Схема. Пример реализации. Результаты испытаний и выводы. | Просто Радиолюбитель

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

Частотомер 200 МГц.

Частотомер 200 МГц.

Частотомер состоит из канала диапазонов до 20 МГц, канала до 200МГц (на 500ИЕ137), селектора каналов и делителей, измерителя на базе Arduino Nano, стабилизатора питания и селектора питания канала 200МГц.

Схема приведена на Рисунке 1. Файл в формате pdf по ссылке.

Рисунок 1. Схема частотомера.

Рисунок 1. Схема частотомера.

Технические характеристики:

  • Диапазон измеряемых частот: канал 1 – от 100 Гц до 20МГц, канал 2 – от 0.1МГц до 200МГц.
  • Амплитуда входного сигнала (синус): канал 1 – от 50 мВ до 10В, канал 2 – от 1В до 5В.
  • Сопротивление входа: канал 1 – не менее 900 кОм, канал 2 – 75 Ом.
  • Количество диапазонов – 6.
  • Напряжение питания: от 7.5В до 12В, 220 мА.
  • Габариты, мм: 105х125х50.
  • Отображение информации: LCD 8 знаков 2 строки, индикатор включенного канала измерения (подключение к Arduino).
Модули частотомера.

Модули частотомера.

Канал диапазона 20 МГц собран на транзисторах Q1-Q3. Особых требований к компонентам схемы нет, транзисторы использовались КП303А (в режиме истокового повторителя, слегка “придушен”), и ВС548А (большое количество в хозяйстве скопилось). Граничная частота усилителя получилась 38 МГц. Есть проблемы с прямоугольными импульсами на частотах ниже 300 Гц при подходе по уровню каскада Q3 к режиму ограничения (насыщения-отсечки). Настройка и более подробная информация в этой моей статье.

В качестве канала диапазона использовался конструктор делитель на 10 “Электроника ЦШ02”, пролежавший в ящике без дела долгое время. Почитать подробнее о конструкторе можно в этой моей статье.

Схема селектора и делителей обеспечивает три режима работы для каждого диапазона: без деления, деление на 2, деление на 4. Схема может быть изменена (можно собрать без мультиплексора, можно на счетчиках). Табличка с коэффициентами деления для ИЕ и ТМ2 есть в этой моей статье. С точки зрения применения логики, то ТТЛ уверенно работает до 20МГц. В таблице 1 (рисунок) приведены граничные частоты для разного типа логики.

Таблица 1. Сравнение типов ИМС (Радиоаматор 9.2001г.).

Таблица 1. Сравнение типов ИМС (Радиоаматор 9.2001г.).

На практике, используя логику 74AС* можно обойтись одним каналом (до 100МГц). Также следует заменить Q1,Q2 и Q3 на транзисторы с большей граничной частотой передачи. Можно применить специализированные делители частоты (например MC12080DG до 1 ГГц 10/20/40/80). В этом случае канал до 200МГц не нужен.

Питание частотомера организовано через гальванически развязанный источник постоянного тока не менее 200 мА напряжением не менее 7,5В. Большой ток потребления связан с применением счетчика 500ИЕ137, потребляющего около 90 мА при работе. В связи с этим в схеме организовано отключение питания канала 200 МГц при работе с каналом 20МГц.

Частотомер 200 МГц.

Частотомер 200 МГц.

В качестве измерителя используется Arduino Nano и библиотека FreqCount (мастер здесь). Листинг скетча практически полностью повторяет частотомер описанный в этой статье. Отличие в добавлении выбора диапазонов и переключения каналов, добавление управлением индикации включенного канала. Скетч лежит здесь (freq.7z, скетч freq.ino).

Конструктивно частотомер собран на макетной плате по технологии “белой нитки” (кто старый радиолюбитель, тот сразу поймет, для остальных – название от цвета провода мгтф 0,07). Плату разводить смысла не было – основная часть при модернизации осталась от предыдущего прибора. Входные разъемы – RCA (сейчас закидают шапками – на вч их применять не следует – скажу так, до 200МГц при отсутствии необходимости “собирать крохи” сигнала все нормально, до 20МГц – их основной рабочий диапазон с 30-х годов прошлого века, а по удобству эксплуатации равных нет (из копеечных). Корпус и элементы крепления – распечатаны на 3Д принтере. Радиатор стабилизатора – полоска меди.

Белая нитка.

Белая нитка.

Монтаж частотомера.

Монтаж частотомера.

Измерение – на генераторе 16020 кГц….

Измерение – на генераторе 16020 кГц….

Испытание частотомера производилось с использованием функционального генератора Agilent 81150A-001 (сразу оговорюсь, время использования генератора было крайне ограниченно, пустили в обеденный перерыв поработать). Генератор позволяет формировать частоты от 1 мкГц до 240МГц и провести испытание сигналом синусоидальной формы, и от 1 мкГц до 120МГц прямоугольной формы.

Синусоидальный сигнал:

  • Диапазон 5 МГц: во всем диапазоне чувствительность не ниже 50 мВ (генератор дает сигнал от 50 мВ). Максимальная частота измерения 6254 кГц. Минимальная частота измерения – 35 Гц. Время измерения – 10 сек. Стабильная работа во всем диапазоне входного напряжения.
  • Диапазон 10 МГц: во всем диапазоне чувствительность не ниже 50 мВ (генератор дает сигнал от 50 мВ). Максимальная частота измерения 12423кГц. Время измерения – 10 сек. Стабильная работа во всем диапазоне входного напряжения.
  • Диапазон 20 МГц: до 16 МГц чувствительность не менее 50 мВ, до максимальной точки измерения – 24 672 кГц чувствительность снижается до 70 мВ. Время измерения – 10 сек. Стабильная работа во всем диапазоне входного напряжения.
  • Диапазон 200 МГц: чувствительность от 0.92В до 1.1В плавно снижается с ростом частоты. Максимальная частота измерения – 231.23 МГц.

Прямоугольный импульс (меандр):

  • Диапазон 5 МГц: во всем диапазоне чувствительность не ниже 65 мВ (генератор дает сигнал от 50 мВ). Максимальная частота измерения 5974 кГц. Минимальная частота измерения – 42 Гц. Время измерения – 10 сек. Нестабильная работа в диапазоне входного напряжения от 2 до 3 В на частотах ниже 600Гц, решается включением аттенюатора.
  • Диапазон 10 МГц: во всем диапазоне чувствительность не ниже 65 мВ (генератор дает сигнал от 50 мВ). Максимальная частота измерения 11561кГц. Время измерения – 10 сек.
  • Диапазон 20 МГц: до 16 МГц чувствительность не менее 65 мВ, до максимальной точки измерения – 22458 кГц чувствительность снижается до 95 мВ. Время измерения – 10 сек.
  • Диапазон 200 МГц: чувствительность от 0.95В до 1.2В плавно снижается с ростом частоты до 120МГц (макс. для генератора). Максимальная частота измерения ограничена генератором (120МГц).

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

Arduino nano.

Arduino nano.

Выводы достаточно простые – прибор имеет право на жизнь и будет использоваться в дальнейшем. Не хватает простого индикатора уровня измеряемого сигнала, тем более, что вход АЦП свободен. Если у Вас есть схемы реализации пробника на ардуино, пишите. Второе – канал делителя на 10 (200МГц) просто просит входного усилителя-формирователя.

Частотомер 200 МГц.

Частотомер 200 МГц.

Спасибо за внимание, подписывайтесь, пишите комментарии, это помогает автору.

Мой блог о радио: https://sp8plus.blogspot.com/

Частотомер 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 для ЖК индикатора

 

Мой самодельный частотомер из китайского вещательного радиоприемника ECB EC-9708A

В давние времена я приобрел вот такой СВ-КВ-УКВ радиоприемник ECB EC-9708A

:

Достоинством такого приемника является его цифровая шкала частоты. Как оказалось, такое устройство легко превратить в весьма точный частотомер для диапазона десятков-сотен мегагерц!

Открутив несколько винтиков и отщелкнув защелки, можно открыть корпус приемника. Затем откручиваем еще винтики и снимаем плату. Итак, перед ними три части – задняя крышка с элементами питания (1), плата радиоприемника (2) и передняя крышка с платой индикации и частотомером(!) (3):

От платы индикации к плате собственно приемника идет группа из трех проводов, которые подписаны  ” AM“, “FM” и “FM.G“.

Нас интересует провод с подписью “FM” – он на плате приемника подпаян к дисковому конденсатору. Этот провод и является входным проводом частотомера – аккуратно (!) отпаиваем его от конденсатора, ведь радиоприемник еще пригодится:

Теперь включаем режим “FM” (УКВ), перемещая ползунок, и можно через конденсатор емкостью несколько пикофарад подключить его к источнику сигнала, частоту которого требуется измерить. Также можно проверить частоту сигнала радиопередатчика, расположив его антенну рядом с проводом от частотомера.

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

Я проверил работоспособность импровизированного частотомера, поднеся к нему передатчик с частотой сигнала 433,92 МГц:

Voi la 🙂 Как видим, отображается частота 423,3 МГц. Прибавляем 10,7 и получаем

423,3 + 10,7 = 434 МГц (отличие от 433,92 составляет 0,02 % !!!). Опыт преобразования приемника в частотомер оказался успешным!

Счетчик оказался кольцевым, т.е., например, показания приемника 998,0 МГц соответствуют частоте (998,0-1000) +10,7 = 8,7 МГц.

Самодельный частотомер на ATTINY2313. Самодельный частотомер на ATTINY2313 Простой частотомер на attiny2313 с динамической индикацией

Частотомер с хорошими характеристиками, позволяющий измерять частоты от 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 первый со стороны кварца. Этот коннектор необязателен и нужен только для программирования контроллера. Индикаторы должны припаиваться на некотором расстоянии от платы, чтобы можно было подлезть паяльником к выводам, припаиваемым с верхней стороны платы.

На разработку конструкции толкнуло прочитанное на форуме по DDS замечание, что должны бы существовать и другие высокочастотные делители кроме серий 193 и 500, а также своевременно увиденная схема нового синтезатора для FM2006. После экспериментов родился простой частотомер на микросхемах LMX 2306, ATtiny 2313 и знакосинтезирующим жидкокристаллическом индикаторе BC 1602 со следующими характеристиками:

  • Диапазон измеряемых частот от 300 Гц до 450 МГц
  • Чувствительность от 50 мВ до 200 мВ
  • Минимальный шаг измерения:
  • В диапазоне от 300 Гц до 4,5МГц 1 Гц
  • В диапазоне от 4,5 МГц до 80 МГц 25 Гц
  • В диапазоне от 80 МГц до 450 МГц 100 Гц
  • Время измерения 0,1 сек / 1 сек
  • Точность измерения не хуже 0,007%
  • Напряжение питания 9В…15В
  • Ток потребления (без подсветки индикатора) 20 мА

Описание и настройка схемы (рис. 1 ).

Сигнал со входа F поступает на усилительный каскад на транзисторе VT1 с которого расходится на программируемый высокочастотный делитель, входящий в состав микросхемы DD1, а также на движковый переключатель SA1, которым выбирается диапазон измерения (до 4,5МГц / выше 4,5 МГц). Далее сигнал дополнительно усиливается и поступает на микросхему DD2, которая выполняет счет частоты, вывод данных на ЖКИ и управление микросхемой DD1. Питание схемы обеспечивает стабилизатор DA1.

Переключателем SA2 выбирается время счета и соответственно точность измерения. Кнопкой SB1 проводят калибровку частотомера. Для этого на вход F подают образцовую частоту 1 МГц и нажав на SB1 удерживают ее до получения на дисплее ЖКИ показаний максимально близких к 1 МГц. В дальнейшем калибровку можно не проводить.

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

Цепочка D1, R5, R6, C7 совместно с каскадом на транзисторе VT2 расширяет выходящие с микросхемы DD1 импульсы. При подаче на вход F максимально возможной частоты, но не более 450 МГц, подбором резистора R5 добиваются устойчивых показаний ЖКИ (если осциллограф подключить к 9 ножке DD2 – должно быть что-то близкое к меандру). Конденсатор C7 в собранной нами конструкции переместился на коллектор VT2.

Разъем Prog служит для внутрисхемного программирования ATtiny 2313. Если же микросхема будет прошита в программаторе, то разъем не впаивается. Микросхему лучше установить в панельку.

Детали.

Постоянные резисторы и керамические конденсаторы типоразмера 0805 (поверхностный монтаж). Транзистор VT1 КТ368 заменим на КТ399, VT2 КТ368 – на менее высокочастотный КТ315 (с корректировкой платы). Микросхема DD2 ATtiny 2313-20 (с тактовой частотой до 20 МГц) в DIP корпусе установлена со стороны печатных проводников. DA1 (устанавливается также со стороны печати) – любой 5-ти вольтовый стабилизатор с током более 1 А, но если не использовать подсветку ЖКИ, то можно применить и слаботочный 78L05. Кварцевый резонатор Q1 – 11,0592 МГц в любом исполнении. Переключатели SA1 и SA2 – B1561(DPDT) или SS21 с длиной рычажка более 5 мм. Кнопка тактовая SB1 – TS-A1PS (TS-A2PS, TS-A3PS, TS-A4PS, TS-A6PS). Индикатор BC1602 или BC1601, BC1604, а также подобный с контроллером HD-44780 других фирм изготовителей. Проверять соответствие выводов обязательно! Диод VD2 1N4007 заменим на любой с подходящим рабочим током. Разъем питания – серии AUB 3,5 мм стерео или подобный с некоторой корректировкой платы. Для подачи питания используется любой маломощный сетевой адаптер с подходящим напряжением. Сигнал на плату подается по одножильному проводу диаметром примерно 0,8 мм и длиной 5-8 см.

Можно исключить из схемы C4, R4 и переключатель SA1, подключив C8 перемычкой к базе VT2. 6 ножка DD2 должна висеть в воздухе. В таком варианте нижней граничной частотой становится 1,5 МГц.

Печатная плата разведена в Sprint-Layout и изготовлена из одностороннего фольгированного стеклотекстолита (рис. 2 ).

Особенностью первой схемы частотомера на микроконтроллере AVR является то, что она работает вместе с компьютером и подсоединена к материнской плате через разъем IRDA. От этого же разъема конструкция получает питание. Вторая схема частотомера базируется на микроконтроллере Attiny2313 и способна измерять частоту до 10 мГц. Третья рассмотренная конструкция частотомера построена на базе легендарной платы Arduino, основа которой также микроконтроллер AVR.

Схема частотомера состоит из микропроцессора Attiny2313 и двоичного счетчика 74AC161. Входящий сигнал для усиления следует на транзистор VT1, затем с его коллекторного вывода он поступает на вход «С» двоичного счётчика. Контроль за работой счетчика закреплен за МК Attiny2313, который осуществляет обнуление, останавливает или запускает счет путем подачи управляющего сигнала на десятый вывод.


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

Частотомер на микроконтроллере AVR. Сигналы данных на компьютер идут с порта PD6 Attiny2313. Линия порта РВ1 используется для сигналов синхронизации следующие от компьютера.

В начальный момент времени МК генерирует стартовый импульс продолжительностью около 1,6 мкс после чего идет пауза. Программа время от времени обращается к порту 2F8H и при регистрации байта, инициирует передачу синхроимпульсов. Данные синхроимпульсы пойдут при отправке числа ноль в инфракрасный порт компьютера. Состав импульсов: Первый бит стартовый и 8 бит число ноль.

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

Так как скорости передачи и приёма одинаковы, это позволяет получить независимость от заданной скорости ИК порта компьютера.

Фъюзы для программы Ponyprog и сама прошивка доступна по зеленой ссылке чуть выше.

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

Плата Arduino генерирует точную односекундную временную основу для счетчика с помощью каскадирования двух таймеров timer0 и timer2. Связь между цифровыми входами 3 и 4 соединяет выход таймера 2 (250 Гц) со входом таймера 0. Программный код ожидает, когда выход таймера 0 станет положительным, и начинает отсчет частоты входного сигнала таймером 1. Timer1 – это 16-разрядный таймер, он переполняется при достижении значения 2 16 , после этого, изменяется значение регистра переполнения overF. В конце первой секунды записывается 16-разрядный регистр. Затем Arduino отправляет на ПК 6 байтов данных. Схема подключения к Arduino простая, и ее можно,посмотреть на фото ниже.

Сначала Arduino необходимо подсоединить к компьютеру, а только потом запустить приложение на Visual Basc 6. Приложение ищет Com-порт, отправляя байты и ожидает их обратное принятие. Это занимает пару секунд. Приложение должно быть обязательно отключено, в тот момент когда вы прошиваете плату через Arduino IDE. Частотный вход платы Ардуино представляет собой уровни сигнала TTL, при слабом сигнале необходимо добавить усилитель.

Построенный . Он позволяет измерять частоты до 10 МГц в четырех автоматически переключаемых диапазонах. Наименьший диапазон имеет разрешение 1 Гц.

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

  • Диапазон 1: 9,999 кГц, разрешение 1 Гц.
  • Диапазон 2: 99,99 кГц, разрешение до 10 Гц.
  • Диапазон 3: 999.9 кГц, разрешение до 100 Гц.
  • Диапазон 4: 9999 кГц, разрешение до 1 кГц.

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

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

Установка фьюзов (в PonyProg):

Частотомер на микроконтроллере ATtiny2313 . Схема отличается простотой и надежностью. Частотомер позволяет измерять частоты до 65 кГц. Программа для микроконтроллера написана на BascomAVR. Отображение частоты на дисплее 16*2. Напряжение питания устройства от 5 до 9 вольт.

Счет импульсов происходит путем подсчитывания импульсов по нарастающему фронту на ноге 9 (PD.5/T1 и вход таймера Timer1). Для защиты входа от перенапряжения включены два диода 1N4148 и резистор на 10кОм. Отображение происходит на любой дисплей 16*2 , но обязательно с контроллером HD44780 или аналогичным KS066.

Программа написана на бэйсике в среде BascomAVR. Демо версия имеет ограничение по размеру кода в 4 Кб, чего вполне достаточно. Скачать BascomAVR с официального сайта разработчика. В программе используются два таймера: таймер0 для отсчета фиксированных интервалов времени, в нашем случае 1 секунда(можно поэкспериментировать с этим значением), а таймер1 считает пришедшие импульсы за это время. Стоит отметить, что счет импульсов будет вестись только в том случае, если уровень сигнала на ноге 9 будет соответствовать уровню лог. “1” (порядка 3-5 вольт). Timer0 работает на частоте тактирования микроконтроллера т.е 8МГц, делитель тактовой частоты не включён.

Малогабаритный частотомер-цифровая шкала до 200 МГц с ЖКИ дисплеем – 21 Декабря 2014 – Блог

Малогабаритный частотомер-цифровая шкала до 200 МГц с ЖКИ дисплеем

автор: Игорь Максимов (E-mail: [email protected])

Частотомер имеет небольшие габариты 65х35х20 мм и легко помещается на ладони. Несмотря на это он работает в широком диапазоне частот от 0 до 200 МГц, а также может использоваться как цифровая шкала приёмника.

Основные технические параметры:

  • время измерения — 1/2 с
  • диапазоны измерения:
    • со входа 1 — 1…200 МГц (±1 кГц) или 1…30 МГц (±100 Гц)
    • со входа 2 — 1…4 МГц (±10 Гц)
    • со входа 3 — 0…1 МГц (±2 Гц)
  • Uвх min — 50 мВ
  • Uвх max — 5 В
  • Uпит — 7…15 В
  • Iпотр — 40 мА (Uпит = 9 В)

В режиме цифровой шкалы устройство работает с приемниками имеющими ПЧ: 455 кГц, 465 кГц, 500 кГц, 10695 кГц, 10700 кГц, 21000 кГц, 24000 кГц. Предусмотрен выбор +ПЧ или -ПЧ. Возможна индивидуальная прошивка под любые другие ПЧ.

Основу прибора составляет программируемый микроконтроллер AT90S1200-12SI фирмы ATMEL. Контроллер управляет ЖКИ дисплеем HT-1611 и в зависимости от установленных перемычек работает как частотомер или цифровая шкала. Для питания микросхем применяется стабилизатор напряжения 78L05, что обуславливает нижний предел питающего напряжения не ниже 7В. Если необходимо уменьшить нижний предел питающего напряжения вплоть до 5В, следует заменить стабилизатор 78L05 на LM2931Z5.
Для работы со входа 1 на частотах до 200 МГц используется высокочастотный делитель LB3500 фирмы SANYO, благодаря которому чувствительность в диапазоне 1…200 МГц не хуже 50 мВ.

При работе на низких частотах (вход 3) 0…1 МГц используется внутренний компаратор микроконтроллера, что обеспечивает высокую чувствительность и уменьшает габариты платы.

Все детали прибора умещаются на плате размером 65х35 мм. Микроконтроллер устанавливается со стороны печатных дорожек. ЖКИ дисплей впаивается в плату со стороны деталей. При этом высота прибора вместе с индикатором не превышает 20 мм.

 

Описание режимов работы:

  • Для работы со «Вх1» устанавливается перемычка Пр1.
  • Для работы со «Вх2» устанавливается перемычка Пр2.
  • Для выбора диапазона измерения используются контактные площадки (КП) 1 и 2, которые замыкаются на землю или оставляются свободными:
    1…200 МГц — КП1 и КП2 свободны;
    1…30 МГц — КП1 замкнут, КП2 свободен;
    1…4 МГц — КП1 свободен, КП2 замкнут;
    0…1 МГц — КП1 и КП2 замкнуты.
  • Для выбора ПЧ при работе в режиме цифровой шкалы используются КП 3,4,5,6, которые замыкаются на землю или оставляются свободными:
    +ПЧ — КП3 свободен;
    -ПЧ — КП3 замкнут;
    0 кГц — КП4 свободен, КП5 свободен, КП6 свободен;
    10700 кГц — КП4 замкнут, КП5 свободен КП6 свободен;
    455 кГц — КП4 свободен, КП5 замкнут, КП6 свободен;
    465 кГц — КП4 свободен, КП5 свободен, КП6 замкнут;
    500 кГц — КП4 замкнут, КП5 замкнут, КП6 свободен;
    10695 кГц — КП4 замкнут, КП5 свободен, КП6 замкнут;
    21000 кГц — КП4 свободен, КП5 замкнут, КП6 замкнут;
    24000 кГц — КП4 замкнут, КП5 замкнут, КП6 замкнут.

Скачать печатную плату в формате lay.

 

Прошивка к сожалению была утеряна. Если у кого есть – просьба прислать!

 

 

 

 

 

 

ВЧ-генератор в виде платы расширения к Arduino Uno — Сайт инженера Задорожного С.М.

Если возникла необходимость в источнике синусоидального сигнала высокой частоты, то может выручить предлагаемый ВЧ-генератор, выполненный в виде платы расширения к распространённому контроллеру Arduino Uno. Этот, как теперь называют подобные устройства, шилд (Arduino Shield), созданный на основе микросхемы синтезатора частоты с прямым цифровым синтезом выходного сигнала (Direct Digital Synthesis – DDS), вставляется прямо в плату контроллера Arduino Uno, исключая саму возможность ошибки при подключении подобных устройств проводами.

Фото 1. ВЧ-генератор, установленный в плату контроллера Arduino Uno.

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

Рис.1. Управление ВЧ-генератором и его выходной сигнал на USB-осциллографе.

Высокочастотный синусоидальный сигнал, сформированный DDS-генератором, выведен на установленный на плате генератора коаксиальный ВЧ-разъем через симметрирующий ВЧ-трансформатор (балун), чем обеспечивается согласование со стандартной 50-омной нагрузкой.

Фото 2. SMA-разъем и согласующий ВЧ-трансформатор на плате генератора.

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

Фото 3. ВЧ-генератор + USB-осциллограф + ноутбук = измерительный комплекс.

     Технические характеристики ВЧ-генератора

В таблице 1 приведены технические характеристики ВЧ-генератора с пояснениями. Некоторые из них разъяснены затем в тексте более подробно.

                    Таблица 1

Диапазон перестройки частотыот 100 кГц до 25 МГц
Рекомендуемый к использованию частотный диапазонот 150 кГц до 12,5 МГц
Уровень выходного сигнала (Rн=50 Ом) 10 dBm / 224 mV (RMS)
Неравномерность уровня выходного сигнала 1,2±2 dB
Регулировка уровня выходного сигналанет
Уровень 2-й и 3-й гармоник, не выше-55 dB
Уровень собственных шумов, не выше-80 dB
Амплитудная модуляциянет
Частотная модуляция 3да
Фазовая модуляция 3да

          1 – в рекомендуемом к использованию частотном диапазоне;
          2 – ниже приведен график с неравномерностью АЧХ;
          3 – цифровая манипуляция под управлением контроллера Arduino Uno.

На рис.2 представлена диаграмма с анализатора спектра, полученная при тестировании генератора на частоте 1 МГц.

Рис.2. Уровень сигнала, 2-й и 3-й гармоник и собственных шумов генератора (10 dBm/дел.).

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

     Схема ВЧ-генератора

Электрическую принципиальную схему представленного здесь генератора высокочастотного синусоидального сигнала, выполненного в виде платы расширения к контроллеру Arduino Uno, можно скачать в pdf-формате по ссылке в конце статьи.

Структурно схема высокочастотного генератора состоит из следующих друг за другом функциональных узлов:

  • DDS-синтезатора частоты на микросхеме AD9834B (D1) производства Analog Devices;
  • LC-фильтра нижних частот (L2. .L5/C11..C13) с частотой среза 25 МГц;
  • дифференциального усилителя сигнала высокой частоты на микросхеме AD8132ARZ производства Analog Devices, с симметричного выхода которого нормированный по амплитуде синусоидальный сигнал высокой частоты через согласующий симметрирующий ВЧ-трансформатор (balun) подаётся на выходной коаксиальный ВЧ-разъём типа SMA.

Схема включения микросхемы DDS-синтезатора AD9834B (D1) приведена на рис.3.

Рис.3. Микросхема DDS-синтезатора AD9834B в схеме ВЧ-генератора.

Сигнал тактовой частоты 50 МГц подаётся на вход MCLK (8) с кварцевого генератора G1. Для управления микросхемой DDS-синтезатора AD9834B используется последовательный интерфейс типа SPI. Остальные управляющие входы микросхемы выведены на свободные порты контроллера Arduino Uno. Эти управляющие входы могут быть задействованы при необходимости реализовать какие-либо дополнительные функции, такие как, например, частотная и/или фазовая модуляция (манипуляция) выходного сигнала. Таким образом практически все функциональные возможности DDS-синтезатора AD9834B могут быть использованы под управлением контроллера Arduino Uno с соответствующим программным обеспечением.

Парафазный выходной сигнал с выходов микросхемы IOUT (19) и IOUTB (20) через развязывающие конденсаторы C9 и C10 подаётся затем на вход LC-фильтра нижних частот, схема которого представлена на рис.4.

Рис.4. LC-фильтр нижних частот с частотой среза 25 МГц.

Частота среза представленного на рис.4 ФНЧ около 25 МГц, а затухание на тактовой частоте 50 МГц составляет не менее -40 дБ. Амплитудно-частотная характеристика LC-фильтра нижних частот на элементах L2..L5/C11..C13 представлена на рис.5.

Рис.5. Амплитудно-частотная характеристика LC-фильтра нижних частот.

С LC-фильтра нижних частот синусоидальный сигнал поступает на вход нормирующего усилителя высокой частоты на микросхеме AD8132ARZ (D2) как показано на рис.6.

Рис.6. Нормирующий УВЧ и согласование его симметричного выхода с несимметричной нагрузкой.

Для согласования симметричного выхода УВЧ с несимметричной нагрузкой генератора, подключаемой через коаксиальный разъём XS3, между УВЧ и разъёмом включен симметрирующий согласующий ВЧ-трансформатор — балун с соотношением импедансов на входе и выходе 4:1 (T1). Выходное сопротивление ВЧ-генератора во всём рекомендуемом к использованию частотном диапазоне составляет 50 Ом.

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

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

Как видно из представленной диаграммы, наиболее крутой завал уровня сигнала наблюдается при приближении к нижнему краю диапазона перестройки частоты сигнала ВЧ-генератора. Это обусловлено недостаточной индуктивностью обмоток согласующего ВЧ-трансформатора T1. В рекомендуемом к использованию диапазоне частот выходного сигнала неравномерность не превышает ±2 dB.

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

Программное обеспечение описанного выше ВЧ-генератора как платы расширения к контроллеру Arduino Uno состоит из двух частей: программы, которую необходимо записать в контроллер Arduino Uno и компьютерной программы пользовательского интерфейса. Обе программы можно свободно и бесплатно скачать по приведенным ниже ссылкам.

Для записи необходимого программного обеспечения в контроллер Arduino Uno необходимо скачать архивный файл AD9834-ctrl.zip и распаковать его с сохранением названия папки с файлами программы AD9834-ctrl. Затем открыть в среде программирования Arduino IDE файл из этой папки AD9834-ctrl.ino и запрограммировать свой контроллер Arduino Uno.

Программа пользовательского интерфейса, запускаемая на компьютере, написана на языке Java. Поэтому файл программы пользовательского интерфейса jDDSin.jar запускается на компьютере при условии, что на компьютере установлена виртуальная Java-машина (Java Virtual Machine). Как это сделать — подробно и неоднократно было описано на сайтах, посвященных созданию и использованию программного обеспечения на языке Java.

На рис.8 представлен вид окна запущенной программы пользовательского интерфейса.

Рис.8. Окно программы пользовательского интерфейса.

При подключении к компьютеру платы Arduino Uno, запрограммированной как было описано выше, и последующем запуске программы jDDSin, программа автоматически определяет виртуальный COM-порт, к которому подключен контроллер, устанавливает с контроллером связь и поддерживает с ним постоянный обмен информационными пакетами. Поэтому в программе отсутствует меню выбора COM-порта и его параметров. Достаточно подключить плату и запустить программу. Работу программного обеспечения можно проверить со своей платой Arduino Uno и без установленной платы расширения.

Управление частотой сигнала на выходе ВЧ-генератора при помощи программы пользовательского интерфейса, как видно, очень простое. Нажатие мышкой на кнопку «+1»/«-1» (или кнопки «↑» / «↓» на клавиатуре) увеличивает/уменьшает частоту сигнала на 1 Гц, 1 кГц или 1 МГц — в зависимости от выбора шага изменения частоты в правой панели «Step». Для быстрого ввода требуемого значения частоты нажмите на клавиатуре пробел и введите частоту в герцах.

©Задорожный Сергей Михайлович, 2019г.

Материалы к описанию:

См. также:

Как предсказать частоту и амплитуду продуктов первичного усечения кода фазы (PPT) в спектре выходного сигнала DDS-синтезатора (AN-1396 Application Note от Analog Devices в русском переводе).

Частотомер

Arduino с ЖК-дисплеем 16 × 2

Недавно у моего друга возникла проблема с ЭБУ его автомобиля, и ему потребовалось устройство для подсчета частоты. Решением стало устройство для определения частоты импульсов, излучаемых ЭБУ, по тахометру. Таким образом, устройство должно было иметь возможность считывать цифровые импульсы от 1 В до 5 В, которые затем интерпретируются цифровым выводом на Arduino как импульсы HIGH и LOW. Затем выводит частоту в Гц / кГц на ЖК-дисплей.

Аппаратное обеспечение

  • 1x 16×2 LCD SPI (не I2C)

Setup

Я купил ЖК-дисплей 16×2 и никогда ничего не делал с ним, так что пришло время.

ЖК-дисплей имел форму экрана, совместимого с Arduino Uno. Я прикрепил ЖК-дисплей к Arduino и подключил перемычку к аналоговому контакту A5. Я все еще использую цифровой ввод в моем коде, но поскольку почти все цифровые выводы были заняты ЖК-дисплеем, я решил использовать аналоговый вывод. Теперь устройство можно запитать через порт USB, контактный разъем или VIN. Здесь я использую VIN, так как у меня не было разъема, и я использовал питание от автомобиля (примерно 12–14 В).

Схема

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

Добавьте резистор 10 кОм между + v5 и GND. Подключите +12 В аккумулятора к контакту Arduino VIN, а GND аккумулятора к Arduino GND. Наконец, перемычка контакта A1 к источнику измеряемой частоты.

ПРИМЕЧАНИЕ: В моем случае и ECU, и Arduino были подключены к GND (на клемме GND батареи).

Скетч

Скетч довольно простой. Мы отобразим на экране 3 значения. Текущая частота, максимальная частота и минимальная частота обновляются каждую секунду.Мин. И макс. Сбрасываются каждые 5 минут. Мы используем LiquidCrystal.h который включен в установку Arduino IDE, поэтому вам не нужно ничего добавлять.

Ограничения

Мы протестировали устройство с помощью другого Arduino (что, вероятно, не лучший вариант) и обнаружили, что до 50 кГц устройство имело погрешность около +/- 3%, так что на самом деле это довольно хорошо. После 50 кГц ошибка начала расти и становилась неточной. Поэтому мы предлагаем использовать его только для частот ниже 50 кГц.

Как посчитать частоту с помощью Arduino · Один транзистор

Правильный способ подсчета частот от нескольких герц до 6 МГц с помощью платы Arduino. Настройте аппаратные таймеры и используйте прерывания. Добавьте дисплей и создайте недорогой частотомер.

Подсчет частоты с помощью Arduino казался легкой задачей. Но большинству людей нравится делать это простым, но неправильным способом: использовать pulseIn для измерения ширины импульса. Это ограничивает максимальную измеряемую частоту примерно до 50 кГц.Кроме того, функция производит выборку только одного цикла сигнала.

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

Это было сделано раньше, и хотя его было трудно найти, я обнаружил код, который может считать частоты до 8 МГц, если входной сигнал имеет рабочий цикл 50%.Единственным недостатком является то, что входной вывод частоты закреплен на цифровом выводе 5. Однако верхний диапазон не ограничивается лишь несколькими МГц. С помощью некоторого дополнительного оборудования (микросхема предварительного делителя частоты) частоты в сотни МГц могут быть измерены с достаточной точностью.

Аппаратное обеспечение очень простое: подключите любой дисплей к Arduino, но избегайте использования контакта 5. У вас его нет? Запишите измерения в последовательный порт. Единственное необходимое оборудование – это плата разработки AVR. Программное обеспечение – это самая большая проблема. Мой код основан на библиотеке, написанной Martin Nawrath , и коде, опубликованном Nick Gammon .

То, что вы видите на моей макетной плате на приведенной выше фотографии, – это плата, совместимая с Arduino Nano, и простой кварцевый генератор, построенный на старом шестнадцатеричном инверторе 74LS04.

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

Внешняя тактовая частота должна быть меньше половины системной тактовой частоты (fTn Следовательно, максимальная частота, которую вы можете рассчитывать с ATmega328 Arduino, составляет 16 / 2,5 = 6,4 МГц. Немного, но все же намного лучше, чем PulseIn. Я буду использовать Timer1 (который составляет 16 бит) для подсчета входных импульсов неизвестного сигнала. При входной частоте, скажем, максимальной 8 МГц, 16-битный регистр переполнится (достигнет максимального значения 65535) через 8,192 мс. Это слишком мало для низкочастотных сигналов. Разрешение таймера необходимо увеличить за счет счетчика переполнения. При каждом переполнении переменная счетчика будет увеличиваться (увеличивая разрешение таймера).Таким образом, Timer1 увеличивается на каждом нарастающем фронте, приложенном к выводу D5.

Таймер 2 сохранит… время. Это 8-битный таймер, но мы позволим ему считать только до 124 (это означает 125 «тактов»). Частота счета определяется установкой предварительного делителя на 128. При тактовой частоте 16 МГц плат Arduino Timer2 будет «тикать» с частотой 16 МГц / 128 = 125 кГц. Считайте 125 раз с частотой 125 кГц. Сколько времени прошло? Ну, 1 миллисекунда. Таймер 2 переполняется каждые 1 мс. Сколько раз он переполняется до того, как вычисляется частота Timer1, – это переменная, которую можно изменить, если хотите.Высокие частоты могут быть дискретизированы за короткие периоды, в то время как низкочастотные сигналы могут дискретизироваться за более длительный период времени для точного считывания. Значение по умолчанию для переменной samplingPeriod установлено на 200 мс. Мне удалось измерить с его помощью всего 50 Гц (период 20 мс) – засчитываются только 10 отсчетов.

Вот код (также на GitHub):

 // Частотомер Arduino от нескольких Гц до 6 МГц
// Один транзистор, 2018
//  https://www.onetransistor.eu/ 
//
// На основе:
// * Скетч частотомера Ника Гаммона (CC BY 3.0 AU)
//  http://www.gammon.com.au/timers 
// * Библиотека FreqCounter от Мартина Наврата (LGPL 2.1)
//  http://interface.khm.de/index.php/lab/interfaces-advanced/arduino-frequency-counter-library/ 

// здесь задаем период выборки (в миллисекундах):
беззнаковое int samplingPeriod = 200;

// Таймер 1 переполняет счетчик
изменчивое беззнаковое длинное переполнение1;

void init_Timer1 () {
 переполнение1 = 0; // сбросить счетчик переполнения

 // Устанавливаем регистры управления (см.  Таблицу)
 TCCR1A = 0; // нормальный режим работы
 TCCR1B = бит (CS12) | бит (CS11) | бит (CS10); // использовать внешний источник синхронизации

 TCNT1 = 0; // устанавливаем текущее значение таймера на 0

 TIMSK1 = бит (TOIE1); // разрешить прерывание при переполнении
}

ISR (TIMER1_OVF_vect) {
 overflow1 ++; // увеличиваем счетчик переполнения
}

// Таймер 2 переполняет счетчик
изменчивый беззнаковый int overflow2;

void init_Timer2 () {
 переполнение2 = 0; // сбросить счетчик переполнения

 GTCCR = бит (PSRASY); // сбросить предделители

 // Устанавливаем регистры управления (см. Таблицу)
 TCCR2A = бит (WGM21); // Режим CTC
 TCCR2B = бит (CS22) | бит (CS20); // предделитель установлен на 1/128, "тики" на 125 кГц
 OCR2A = 124; // считает от 0 до 124, затем запускает прерывание и сбрасывается;

 TCNT2 = 0; // устанавливаем текущее значение таймера на 0

 TIMSK2 = бит (OCIE2A); // разрешаем прерывание
}

// прерывание происходит через каждые 125 отсчетов / 125 кГц = 0.001 секунда = 1 мс
ISR (TIMER2_COMPA_vect) {
 if (++ overflow2  0 / samplingPeriod;

  Серийный  .print ("Частота:");
  Serial  .print ((длинное без знака) freqHz);
  Серийный номер  .println ("Гц");

 // сбрасываем таймеры
 TCNT1 = 0; переполнение1 = 0;
 TCNT2 = 0; переполнение2 = 0;
}

void setup () {
 // включить последовательный вывод
  Серийный номер .begin (115200);
  Serial  .println («Частотомер Arduino»);
  Серийный номер  .println ();

 // Отключить Timer0; millis () больше не будет работать
 TCCR0A = 0; TCCR0B = 0;

 // запускаем таймер 1 (частота счета)
 init_Timer1 ();
 init_Timer2 ();
}

void loop () {
 // здесь ничего; прерывания выполняют все
 // вы можете добавить пользовательский ввод, который изменяет период выборки
}
 

В отличие от проектов, на которых я основывал свой код, мой скетч выполняет непрерывный подсчет частоты и отображение после каждого периода выборки.Обратите внимание, что период дискретизации следует регулировать в зависимости от желаемого частотного диапазона. Это напрямую влияет на интервал обновления дисплея. Автоматический выбор диапазона также возможен путем увеличения периода выборки, если подсчитанных выборок мало, и наоборот. Этот код был разработан и протестирован только на ATmega328. У других микроконтроллеров могут быть другие регистры. Обязательно посетите форум Ника Гаммона, где он адаптирует аналогичный код для ATmega2560 и очень хорошо объясняет, как это работает.

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

Прецизионный частотомер Arduino 5 или 120 МГц поражает Kickstarter

Инженер-компьютерщик Тьери Генну из Франции создал новый совместимый с Arduino прецизионный частотомер 5 или 120 МГц. Вдохновением для платы Arduino было создание открытого, очень универсального частотомера, чтобы его можно было использовать для измерения самых разных сигналов. Он разработан таким образом, чтобы его можно было настраивать всеми возможными способами.

Ранние взносы спонсора теперь доступны для изобретательского проекта от примерно 46 до 35 фунтов стерлингов, предлагая значительную скидку примерно в 00000% от розничной цены, в то время как кампания краудфандинга продолжается. Если кампания по разработке платы для разработки Arduino на Kickstarter будет успешной и полная реализация будет проходить гладко, ожидается, что доставка по всему миру состоится примерно в феврале 2021 года. Чтобы узнать больше о проекте платы для разработки Arduino, просмотрите рекламный видеоролик ниже.

«На плате Freq_LF_HF используется знаменитый микроконтроллер AVR Atmega328p-AU. Это не новейшая модель ATMEL, но этот чип входит в стандартную комплектацию платы Arduino UNO v3.0. Это мощный микроконтроллер и очень маленький (TQFP-32). Это дает пользователям возможность пользоваться поддержкой сообщества Arduino и множеством программных библиотек. «

«Очень широкополосный, он может измерять частоты от менее 5 Гц до 5 МГц или 120 МГц, благодаря уникальной аппаратной и программной архитектуре.Низкочастотные сигналы (LF), высокочастотные сигналы (HF) и очень высокочастотные сигналы (VHF, на модели 120 МГц) обрабатываются отдельно, чтобы обеспечить полную точность во всем диапазоне ».

– Использует стандартный 16-символьный однострочный ЖК-дисплей для четкого представления частоты. ЖК-дисплей можно снять с платы и при необходимости установить на коробку.
– Может питаться от преобразователя переменного / постоянного тока 9 В или напрямую на контакты печатной платы или от батареи 9 В с адаптером, входящим в комплект.Он выдерживает напряжение от 7,5 до 12 вольт. Источник питания защищен плавким предохранителем.
– Он защищен от перенапряжения и пониженного напряжения. Доска будет показывать сообщения об ошибках.
– Сигнал может быть подан на плату через разъем BNC или заголовки печатной платы.
– Входное сопротивление 1 МОм.
– Вход сигнала защищен от электростатических разрядов диодом TVS с максимальной мощностью разряда до 600 Вт / 100 А (Внимание, речь идет только об электростатических разрядах! Пользователи никогда не должны пытаться измерять сигналы с напряжением выше 30 В от пика к пику!)
– Он имеет кнопку сброса для сброса AVR.

Амплитуда сигнала колеблется от 0,2 до 10 вольт (допустимо 30 вольт). Чтобы получить полный список всех доступных обещаний кампании, перспективных целей, дополнительных средств массовой информации и подробных спецификаций, перейдите на официальную страницу кампании краудфандинга совета разработчиков Arduino, перейдя по ссылке ниже.

Источник: Kickstarter

В рубриках: Оборудование, Главные новости

Последние предложения гаджетов


Раскрытие информации: Некоторые из наших статей содержат партнерские ссылки.Если вы покупаете что-то по одной из этих ссылок, Geeky Gadgets может получать партнерскую комиссию. Учить больше.

DIY простой измеритель частоты Arduino до 6,5 МГц

Диапазон измерения от нескольких герц до 6,5 мегагерц. Также доступны три временных интервала измерения – 0,1, 1 и 10 секунд. Если мы измеряем только прямоугольные сигналы, тогда нет необходимости в усилителе-формирователе, и сигнал подается непосредственно на цифровой вывод 5 от Arduino.
Код очень прост благодаря библиотеке FreqCount, которую вы также можете скачать ниже.

Этот проект спонсировался NextPCB. Вы можете помочь мне, проверив их по одной из этих ссылок:
Всего 7 долларов для заказа SMT:
https://www.nextpcb.com/?code=Mirko
Производитель надежных многослойных плат:
https: // www. nextpcb.com
Платы для печатных плат, 10 шт. бесплатно:
https://www.nextpcb.com/pcb-quote?act=1
20% скидка – Заказы на печатные платы:
https: // www.nextpcb.com/pcb-quote

Устройство очень простое и состоит из нескольких компонентов:

– Микроконтроллер Arduino Nano
– Плата усилителя формирования
– ЖК-дисплей
– Селектор формы входного сигнала
– Входной разъем
– и переключатель временного интервала: мы можем выбрать три интервала 0,1-1 и 10 секунд.

Как вы можете видеть на видео, прибор очень точен во всем диапазоне, и мы также можем откалибровать частотомер с помощью простой процедуры, описанной ниже:

В папке библиотек Arduino найдите библиотеку FreqCount,
в FreqCount.cpp найдите строки:
#if defined (TIMER_USE_TIMER2) && F_CPU == 12000000L
float right = count_output * 0.996155;
и замените их на:
#if defined (TIMER_USE_TIMER2) && F_CPU == 16000000L
float right = count_output * 1.000000;
, где 1.000000 – ваш коэффициент коррекции, коррекция
должна выполняться путем подачи 1 МГц на вход частотомера.
После изменения файла загрузите новый скетч на плату Arduino.

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

частотомер arduino


[adrotate banner = ”7 ″]

Вы могли поступить правильно. Что бы вы могли сделать из всего этого крутого, используя всего пару таких частей? Что ж, если бы вы сделали невероятно крошечный частотомер, это намного проще, чем вы думаете, давайте увеличим масштаб, и мы соберем его вместе.Давайте начнем с того, что подадим пять вольт с нашего Arduino на пятивольтовую шину и то же самое с землей от шины заземления к земле, прикрепим Arduino, теперь давайте подключим наш OLED VCC к нашей шине 5 вольт и землю к нашей земле. Реальный SCL до 5 и SDA до 4, так что почти все наши подключения выполняются менее чем за пару минут. Больше подключений, давайте возьмем еще один раунд снизу здесь, потому что нам нужно что-то, к чему прикрепить наш сигнал, и мы собираемся прочитать сигнал: контакт Digital 5, поэтому я просто собираюсь воткнуть это туда, чтобы что мы можем положить на него зажимы из крокодиловой кожи, вот и все: давайте проверим код, потом вернемся и поиграем здесь.Код для счетчика частоты макросов Arduino. Вот примечания. Сигнал должен быть логическим, ровным. Высокое напряжение пять вольт, низкое, нулевое входное напряжение может быть только на d5, и вы не сможете использовать аналоговый прямо на три, девять, десять или одиннадцать. Итак, эта библиотека, которую мы используем, здесь часто используется точка подсчета ручьев, h, здесь есть ссылка, по которой вы можете найти ее от того парня, чьи родители дали ему фантастическое имя для установки указанной библиотеки.

Вам нужно перейти к эскизу, включить библиотеку, управляемую библиотеку, подождать, пока вещь выполнит свои обязанности, и ввести здесь, привет, я печатаю.Спасибо, вот и увидите. Чертова учетная запись, теперь есть еще и урод-майор, который, если вы смотрите на сигналы ниже убийцы. Итак, ваш выбор. Хорошо, у нас есть три провода, которые нам нужны, потому что мы используем квадрат C для нашей крышки, Adafruit SSD 1306, который является драйвером для нашего OLED и частого счетчика уродов, о котором мы только что говорили, этого драйвера OLED требуется сброс OLED, он находится на контакте 4, который является бла-бла-бла по умолчанию, тогда мы собираемся создать экземпляр библиотеки Adafruit SSD 1306, называемый дисплеем, с использованием аргумента.Oled reset, затем мы переходим к настройке, с которой собираемся начать. Дисплей с командным дисплеем начинался с SSD 13, который с шестью переключателями VCC, что представляет собой некую черную магию, которую сделала леди ADA, вот ключ, если вы не используете Adafruit OLED. Вероятно, это будет ваш шестнадцатеричный адрес. Ох, x3, посмотрите, есть ли у вас новый OLED, который вы купили из далекой страны, и он не работает. Попробуйте добавить это в свою настройку, тогда на дисплее отобразится логотип Adafruit Baskin. Достаточно греющаяся слава леди АДА очистит дисплей, и мы начнем наш счетчик здесь, внизу, в основном цикле программы.

Мы просто говорим, что если доступен счетчик частот, делайте все это. Что ж, сначала мы создадим число с плавающей запятой, называемое count, и оно будет заполнено тем, что указано в частоте чтения. Теперь это будет ваш счет, мы собираемся создать число с плавающей запятой, называемое периодом периода, которое является инверсией счетчика, а затем мы всегда очищаем отображение, мы собираемся установить размер текста на 1, потому что мы отображаем здесь много дерьма отображать цвет текста sec На белый, потому что это единственный доступный цвет, курсор в верхнем левом углу будет печатать наш заголовок, пропустить строку, затем будет печатать заголовок для строки, который представляет собой частоту и некоторые пробелы, поэтому все выровняется красиво и Purdy, а затем отобразит количество отпечатков, которое является нашей частотой, сразу после этого будет отображаться частота в герцах.Итак, если у нас 50, килогерц, вы увидите пятьдесят тысяч герц, если мы будем в пять, чтобы вы увидели, пять миллионов герц, отображаемых на дисплее, хорошо, на нашем герце – это линия печати. Итак, мы опустили черту. Затем мы отображаем период печати, который является нашим следующим расчетом, и печатаем период, умноженный на 1000, что превращает его в миллисекунды. Мы отображаем миллисекунды, а затем показываем все, что есть в буфере, и все, давайте поиграемся с этим. Хорошо, у меня есть функция, генератор все в порядке, настроен и работает.Ты можешь видеть. Мы выводим прямоугольную волну 5 вольт на 10 килогерц, поэтому давайте возьмем несколько разъемов и подключим их к нашей Arduino.

Извините за то, что это могло быть немного грубой поездкой, хорошо, прежде всего, давайте включим Arduino, так как код уже загружен туда. У нас есть всплеск Adafruit Industries и частотомер. Видите ли, это мерцание целиком создается камерой. Когда вы смотрите на это в реальной жизни, мерцания нет, поэтому я прикрепляю сюда наш заземляющий провод, а наш частотный контакт здесь и там, вы видите, что у нас частота 10000 Гц и 0.Период 1 миллисекунда. Так что, если я настроюсь, будет 80000 криков, удерживаемых на неправильном канале. Попробуй еще раз, там 80000, и у нас просто все работает очень хорошо. Вот что я сделал. Я синхронизировал это, чтобы уменьшить масштаб там не будет. Мы, когда я переключился на канал 2, это рука на руку. Мы идем так, чтобы на экране осциллографа в нашем сигнале был канал 2, и если мы откроем главное окно, мы увидим, что у нас есть период и наша частота, и все очень хорошо сочетается с тем, что у нас есть. Так как насчет этого? Очень и очень просто! Частотомер Arduino очень маленький, я имею в виду, если мы посмотрим на размер этой штуки.Вся эта штука от одного конца до другого составляет два и три четверти дюйма, или примерно 7 сантиметров заряда батареи. Поместите его в небольшой пластиковый футляр, и вы получите самый маленький портативный частотомер в мире. Мне это нравится, я считаю, что это довольно круто.


[adrotate banner = ”1 ″]

[mam_video id = jCkrgSbVNBs]

[adrotate banner = ”2 ″]

[mam_tag id = 3540]

[adrotate banner = ”3 ″]

[adrotate banner = ”4 ″]

[adrotate banner = ”5 ″]

👋 Хотите привнести в свои проекты управление жестами в стиле Тони Старка? Узнайте, как использовать платы MKR WiFi 1010 и Nano 33 BLE Sense с поддержкой BLE, используя библиотеку ArduinoBLE.

Ардуин-йо-хо-хо! Популярный на ярмарке пиратский корабль – это увлекательный способ исследовать колебания маятника. Вы спросите, как весело? Получите доступ к предварительной версии нашего научного набора Physics Lab и убедитесь в этом сами: http://bit.ly/2oC6L0Q

🔬 Теперь, когда вы промокли, погрузитесь в комплект и наслаждайтесь всеми девятью экспериментами. Закажите сегодня: http://bit.ly/2MnQ7fr

RT @RuntimeProjects: Частотомер Arduino с ЖК-дисплеем 16 × 2 – #IoT #Arduino # esp8266 https: // t.co / LVLrVi16GO

https://t.co/LVLrVi16GO
Частотомер Arduino с ЖК-дисплеем 16 × 2 – #IoT #Arduino # esp8266 https://t.co/LVLrVi16GO

https://t.co/LVLrVi16GO

20130706blog.ted2



20130706blog.ted



[adrotate banner = ”6 ″]

Частотомер

Arduino – www.HOAGLUN.com

Я хотел возиться со сборкой частотомера с PIC или Arduino. Итак, сегодня вечером я подумал, смогу ли я что-нибудь сделать за час или два.

Используя моего хорошего друга «Google», я нашел несколько примеров:
http://interface.khm.de/index.php/lab/experiments/arduino-frequency-counter-library/
http: //www.arduino. cc / cgi-bin / yabb2 / YaBB.pl? num = 1231326297
http://www.swharden.com/blog/2011-03-14-frequency-counter-finished/

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

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

Это показывает 3,40774 МГц или 3,407,740 кГц

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

Диапазон, кажется, составляет около 8 МГц, что, вероятно, составляет 50% от тактовой частоты Arduino Uno, равной 16 МГц. Мне нужно будет немного изучить это, чтобы увидеть, что я могу сделать, не прибегая к микросхеме предварительного делителя частоты.

Таким образом, на то, чтобы это заработало, потребовалось около 2 часов, и большая часть этого была выяснением того, где находится исходный код библиотеки в Интернете. Детали были простыми, конденсатором 100 нФ, резистором 470 кОм и 1 кОм и транзистором PN2222 NPN.

Следующие шаги:

  • Покопайтесь в библиотеке, чтобы понять, как подсчитывается синусоидальная волна и синхронизация гейта
  • Поймите, насколько я могу масштабировать это без использования делителя или предварительного делителя
  • Добавить предварительный делитель
Это Было бы интересно получить это для покрытия от 1 МГц до 60 МГц и отформатировать данные для ЖК-дисплея, чтобы это мог быть автономный проект.

73 de NG0R

Частотомер Arduino – WA5BDU.COM

Частотомер Arduino от WA5BDU

Введение

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

Несколько лет назад я хотел разработать и запрограммировать частотомер, который можно было бы встроить в приемопередатчик и выдавать частоту по Морзе. В основном я перешел с PIC на Arduino, но я узнал, что микроконтроллеры AVR семейства ATMega от Arduino не могут выполнять высокоскоростной подсчет частоты напрямую, как это может делать PIC. PIC12F683, который я использовал, имеет интерфейс предварительного делителя частоты, который работает независимо от его внутренних часов и может регистрировать счетчики на частотах более 100 МГц и, по моему опыту, до 140 МГц.Это описано в моем блоге по ссылке ниже:


http://wa5bdu.blogspot.com/2017/11/pic-frequency-counter-with-morse-output.html


Когда я делал домашнее задание для этого проекта, один любитель мне посоветовал попробовать 32-разрядный счетчик 74LV8154 в качестве внешнего интерфейса для Arduino. Это выглядело интересно, поэтому я принял к сведению.

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

32-битный счетчик 74LV8154

Это отличный чип для этой цели. Он имеет 32-битный счетчик, поэтому он может перейти на 4.29E9 перед переходом. 32-битное число считывается из четырех регистров с использованием 8 выделенных контактов. Выбор того, какой из четырех регистров поставить на контакты, осуществляется с помощью четырех выделенных контактов: GAL, GAU, GBL, GBU, что означает A-нижний, A-верхний, B-нижний, B-верхний.(Счетчик можно разделить на два 16-битных счетчика «A» и «B», но здесь мы используем их как один большой 32-битный счетчик.)

Подсчет продолжается, когда –CCLR имеет значение HIGH, и останавливается, когда счетчики сбрасываются до нуля, когда значение LOW. Итак, задача состоит в том, чтобы установить –CCLR HIGH на точное время (в данном случае около 1 секунды) и прочитать счет в конце.

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

Для 32-битного счетчика контакты 1 (CLKA) и 2 (CLKB) связаны вместе, и туда подключается сигнал для подсчета. Микросхема работает при напряжении питания 5 В постоянного тока, поэтому входной сигнал должен быть примерно на уровне ТТЛ.

В техпаспорте прямо не указана максимальная частота, но я считаю на ней 50,125 МГц.

HEF4521B, 24-каскадный делитель с кварцевым генератором

Это микросхема, которая генерирует сигнал временной развертки приблизительно в 1 секунду.На самом деле я сначала сделал версию, в которой не использовалась внешняя временная развертка кристалла, но вместо этого я позволял Arduino генерировать ее с прерыванием по таймеру. Он работал довольно хорошо, но при измерении сигнала 7 МГц в последней цифре было колебание от 5 до 10 Гц. Я хотел добиться большей стабильности.

Я подумал об использовании кристалла 32 768 Гц, который используется в часах и часах, но я не думал, что это может дать желаемую стабильность. Я выбрал кристалл 4,096 МГц из своей корзины для запчастей. Это не точная степень двойки, поэтому я не могу получить точную временную развертку в 1 секунду, но это нормально, поскольку фактическое значение заложено в программном обеспечении.23 равно 8 388 608. Это дает мне выходной сигнал 0,48828 Гц с периодом 2,048 секунды и максимальным временем 1,024 секунды.

В таблице данных приведены значения компонентов для кристаллов 50 кГц и 500 кГц. Я не был уверен, может ли он перейти на 4 МГц, и испытывал трудности, пока не заметил, что в дополнение к контактам Vdd и Vss есть также контакты Vdd1 и Vss1, которым требуется питание. Ни мощности, ни колебаний. Я придерживался рекомендуемых значений для резисторов и конденсаторов, за исключением того, что сделал последовательный резистор 3 к3 Ом вместо 47 кОм, рекомендованного для 500 кГц.

Больше особо нечего сказать об этой микросхеме. Это дает большую гибкость при выборе кристалла, имея выходы для Q18 – Q24.

Логика и сложение

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

Естественно, есть пара сложностей. Я хочу, чтобы по окончании периода подсчета активировал RCLK, который переведет счет в регистры. Но для этого требуется переход от низкого уровня к высокому, и в конце периода счета часы переходят от высокого уровня к низкому. Я надеялся избежать добавления каких-либо дополнительных микросхем для выполнения разных функций, без NAND, NOR или инверторных пакетов, если это возможно. Поэтому я использовал один транзистор в качестве инвертора, который вы видите на схеме. Его выход – –CLOCK или «NOT CLOCK», что на 180 градусов не совпадает по фазе с CLOCK, и он используется для запуска RCLK.

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

Чтобы справиться с этим, у меня есть Arduino задерживать низкий сигнал до –CCLR с помощью одной из своих линий ввода / вывода.Но мне не нужна какая-либо программная задержка на другом конце, где –CCLR принимает высокий уровень, поэтому я хочу, чтобы сигнал был «активирован» до того, как наступит переход. Это функция двух диодов, которую, я думаю, вы бы назвали логическим элементом И отрицательной логики. Оба сигнала должны быть низкими, чтобы низкий уровень достиг –CCCR.

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

Я надеюсь, что все имело смысл.

Одиночная версия ИС

В этой версии HEF4521B и связанные с ним компоненты, а также инвертор опущены, а сигналы синхронизации и фиксации предоставляются Arduino.Я публикую отдельный исходный код для этой версии, поскольку он работает достаточно хорошо, чтобы быть полезным и упрощающим оборудование. Линия ввода-вывода Arduino D6 идет на вывод RCLK, а линия D7 – на –CCLR.

Отображение вывода

Поскольку моим первоначальным намерением было собирать данные с течением времени для построения графика, я печатаю частоту на последовательный порт с интервалом в одну секунду. Обратите внимание, что на Arduino вы можете включить последовательный монитор, нажав Control-Shift-M и увидеть этот вывод.В версии без кристаллической временной развертки я пытался количественно оценить количество «джиттера», которое я получаю из-за неопределенностей программного обеспечения. Мне нужно отклонение от среднего, а не от некоторого абсолютного значения, поэтому я сохраняю среднее значение последних десяти отсчетов и отображаю отклонение каждого показания от этого среднего. Вот теперь он смотрит на сигнал 50,125 МГц:

частота: 50124948 Среднее10: 50124948 Отклонение: 0
частота: 50124948 Среднее10: 50124948 Отклонение: 0
частота: 50124948 Среднее10: 50124948 Отклонение: 0
частота: 50124948 Среднее10: 50124948 Отклонение: 0
частота: 50124948 Среднее10: 50124948 Отклонение: 0
частота: 50124948 Среднее10: 50124948 Отклонение: 0
частота: 50124948 Среднее10: 50124948 Отклонение: 0

Так что это довольно солидно.Обычно на цифре Герца есть, по крайней мере, небольшая отметка.

Вот результат, сделанный для версии с синхронизацией, взятой из Arduino, с учетом сигнала 7,150 МГц:

частота: 7149968 Среднее10: 7149966 Отклонение: 6
частота: 7149965 Среднее10: 7149967 Отклонение: 1
частота: 7149967 Среднее10: 7149967 Отклонение: -2
частота: 7149965 Среднее10: 7149967 Отклонение: 0
частота: 7149972 Среднее10: 7149966 Отклонение: -1
частота: 7149968 Среднее 10: 7149967 Отклонение: 5

Я предполагаю, что на 50 МГц отклонения были бы примерно в семь раз больше.Итак … это было неплохо, но добавление кристаллической временной шкалы того стоило.

Незавершенные прочие вещи :

I: Другие варианты вывода

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

Я думаю, что моим первым шагом в этом направлении было бы добавление вывода на языке Морзе, например вывода типа AFA (звуковое оповещение о частоте) моего счетчика PIC. Я бы хотел, чтобы кнопка сообщала Arduino, когда говорить.Я близок к тому, чтобы это сработало.

II: Другие варианты временной развертки и калибровки

Развертка в одну секунду хороша тем, что дает разрешение в 1 Гц. Но измерение 0,1 секунды тоже было бы неплохо, поскольку оно обновлялось бы в десять раз быстрее. Поскольку я имею дело со степенью двойки, я, вероятно, выберу измерения с точностью до 1/8 секунды. Затем я просто умножаю свои счета на восемь и обрабатываю как обычно.

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

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

Кроме того, моя математическая корректировка в программном обеспечении требует, чтобы я использовал математику с плавающей запятой. Числа слишком велики даже для длинных целых чисел без знака. Но с плавающей запятой разрешение ограничено чем-то выше одной части в 1E7. Хорошим решением было бы иметь кристалл, который делит ровно 1 секунду, с триммером. Тогда я смогу полностью избежать математических исправлений программного обеспечения. Обновление: у меня их 4.Кристаллы 194304 МГц, которые должны выполнять эту работу.

IV: Формирование и усиление входного сигнала.

В настоящее время я использую счетчик с входными сигналами не менее пары вольт p-p на входе. Для увеличения чувствительности обычно используется какой-то усилитель с ограничителем / квадратором. Один из моего счетчика PIC, сделанный из одного логического элемента NAND, дал мне чувствительность в диапазоне от 35 до 180 мВ между пиками. Возьмем одну секцию пакета ворот NAND 74HC00.С одним затвором соедините входы вместе и пропустите их через конденсатор емкостью 0,1 мкФ. Подключите резистор 22 кОм между выходом и входом. Это простое решение, которое отлично работает.

Ссылка на исходный код для версии с кварцевой шкалой времени:

http://www.

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

Ваш адрес email не будет опубликован.