Программа частотомер: Программа частотомер

Содержание

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

На базе аудио устройств компьютера, создаются виртуальные измерительные устройства. Такие как виртуальный частотомер, вирутальный осциллограф, виртуальный спектрометр. Устройства подключаются к микрофонному или линейному входу звуковой карты, измерение сигнала осуществляется микросхемой АЦП. Частота (ширина) сигнала зависит от частоты дискретизации аудиокарты, чаще всего 22кГц. Было рассмотрено нескольких программ инструментов Frequency Counter 1.01, Simple Audio Spectrum Analyzer, Music Tuner v1.2 и OSZI v1.0


Рис. 1. Микрофон с поддержкой High Definition Audio

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

В моем случае разрядность 16 бит, частота дискретизации 96000Гц рис. 1 т.е. на канал приходится максимальная частота 48кГц. Для согласования уровней входного сигнала нужен небольшой адаптер на рис. 2. Адаптер фильтрует и сглаживает принимаемый сигнал. На аудио джек 3,5мм контакт 1, подается измеряемый сигнал. Необходимо контролировать напряжение входного сигнала — безопасным для данного адаптера входное напряжение до 9В, оптимальный диапазон от 1 до 2.5В. Для высокого напряжения требуется разработка иной схемы адаптера, «трансформаторные» варианты. Схема гальванически не развязана, поэтому соблюдайте полярность, минус к минусу, плюс к стороне с конденсатором.


Рис. 2. Схема адаптера для вирутального: частотомера; осциллографа; спектрометра

Виртуальные устройства

Frequency Counter 1.01 100кб. Программа для измерения частоты рис. 3.
Работает сразу, позволяет призводить измерение без настроек. Отображается частота максимального по амплитуде сигнала. Слабые сигналы не учитываются.


Рис. 3. Вирутальный частотомер Frequency Counter 1.01

Самой удобной программой имхо является Simple Audio Spectrum Analyzer 150кб — спектральный анализатор.
Диапазон измеряемого спектра от 0 до 22кГц. Измерение осуществляется после включения кнопки «Start». Градурированая шкала спектра (частота и амплитуда сигнала) регулируемая.


Рис. 4. Виртуальный спектрометр Simple Audio Spectrum Analyzer

Можно подробно рассмотреть кол-во сигналов. К примеру произведено измерение генератора на микросхеме К155ЛА3. Видна основная частота, а также её гармоники. Легко определимы количество, частота всех сигналов и их амплитуда рис. 5.


Рис. 5. Спектр сигнала

Music Tuner v1.2 144кб- анализатор аудиосигнала рис. 6. Не указал при измерении точных данных по частоте, но осциллограф отобразил график сигнала.


Рис. 6. виртуальный частотомер и осциллограф Music Tuner v1.2

OSZI v1.0 780кб — виртуальный осциллограф. Довольно шустрая программа, но часто зависает на ОС Windows VISTA.


Рис. 7. Виртуальный осциллограф OSZI v1.0

Есть возможность выбора входного устройства — либо микрофон, либо линейный вход. Осциллограф двухканальный. Настройки каждого канала индивидуальные. Частоту сигнала можно определить с помощью мышки установив контрольные точки на пики 2-х соседних сигналов.


Рис. 8. График измерения сигнала OSZI v1.0

 

Есть также множество других программ. Например генераторы сигналов Discrete Acoustics Lab 392кб.

В целом на базе ПК любой сможет создать свои виртуальные инструменты. Единственное ограничение таких устройств — низкая частота дискретизации звуковой карты, из-за которых цифровые измерения заканчиваются на частотах 48кГц. Имхо для любого радиолюбителя в простых задачах пригодятся такие виртуальные помощники.

 

2009. Art!P

Частотомер на микроконтроллере КР1830ВЕ31

Важной особенностью частотомера является то, что в нем можно использовать кварцевый резонатор на любую самую «экзотическую» частоту в диапазоне 5…12 Мгц. Оптимальным, на мой взгляд, является значение 6…8 Мгц. Длительность интервала измерения определяется двумя константами — К1 и К2. Программа построена таким образом, что допускает многократную коррекцию этих значений.

Для наладки крайне желательно иметь возможность воспользоваться заводским поверенным частотомером. Вначале нужно измерить частоту генерации кварца в данной схеме. Для этого образцовый частотомер подключают через конденсатор 2-3 пф к выводу 18 или 19 DD1 (C3 — в среднем положении). Это можно сделать без ПЗУ, т.к. кварцевый генератор запускается при подаче питания независимо от программы. В крайнем случае, при отсутствии образцового прибора, можно принять для расчета значение частоты генерации кварца от 1кгц (для кварца 6мгц) до 5кгц (для кварца 12мгц) выше того, что на нем написано. Например, для кварца 8мгц при расчете следует принять частоту генерации около 8002000гц.

Затем задаемся значением К1 в пределах от 8 до 16 и рассчитываем К2.

К2 = 7 + 65536 * (K1) — f/12 , где f — частота используемого кварца, Гц.

К2 может принимать значение от 0 до 65535, а К1 — от 1 до 255. Если K2 получается отрицательным или больше 65535, задаемся другим значением K1 и повторяем расчет. И так до тех пор, пока не получится значение K2 в пределах от 0 до 65535. Полученные значения K1 и K2 по правилам математики переводим в шестнадцатиричную форму. K2 следует округлить до ближайшего нечетного значения.

Именно нечетного!

В авторском варианте для f=6144600 Гц К2= 12245= 2FD5H, К1=8. Константа К1 хранится в ячейке 01B1H, старший байт К2 — в ячейке 01B2H, младший байт К2 — в 01B3H. Увеличение K2 на 1 приведет к уменьшению показаний прибора на 10 — 20 гц для измеряемой частоты около 10 мгц (или на 1 — 2 гц для частоты 1 мгц). После запуска и наладки прибора следует провести измерение частоты какого-либо генератора и сравнить показания с образцовым частотомером. Это измерение следует проводить на частоте не менее 10 мгц. Если не удастся добиться одинаковых показаний вращением C3, придется скорректировать значения констант К1 и К2. При использовании однократно программируемых ПЗУ следует «забить» ячейки 01B1H, 01B2H, 01B3H нулями, а значения К1 и К2 записать, начиная с ячейки 01B4H в последовательности, указанной выше. Эту операцию можно проводить многократно.

Частотомер можно использовать не только по прямому назначению, но и как… Новогодний сувенир. Темп выполнения программы «Новогодний сувенир» определяется константой K3, хранящейся в ячейке 075AH для варианта программы с внешним ПЗУ К573РФ5. В программе для микроконтроллера с встроенным ПЗУ К3 хранится в ячейке 045AH. Она рассчитывается по эмпирической формуле:

K3 = 13,3 * F, где F — частота используемого кварца, МГЦ.

Особой точности здесь не требуется, вычисленное значение следует округлить до целого числа и перевести в шестнадцатиричную форму. Например, для F=12мгц K3=0A0H, для 10мгц — 085H, а для 6,144мгц — 052H. В ячейках 075BH и 075CH для варианта с внешним ПЗУ или 045BH и 045CH для встроенного ПЗУ записан в двоично-десятичной форме наступающий Новый год. Информацию в трех перечисленных ячейках можно корректировать, «забивая» их нулями и записывая новые значения в последующих. Важно только соблюдать порядок — K3, затем 2 старшие цифры года и 2 младшие цифры года. Допустимо корректировать только год, оставляя K3 неизменной.

При использовании частотомера по прямому назначению данная программа никак себя не проявляет и запускается, только если включить питание при нажатой кнопке «dF». На индикаторе в этом случае появляется год, записанный в ПЗУ. Если удерживать кнопку нажатой более 2сек, начинается счет лет — 1997, затем 1998 и т. д. Дождавшись нужной даты следует отпустить кнопку, после этого запускается программа, выводящая на индикатор несколько последовательно сменяющих друг друга динамичных картинок.

Каких? Сделайте — увидите!

Несмотря на то, что с момента разработки прибора прошло много лет, интерес к нему не ослабевает. В частности, вы можете загрузить чертеж платы СВЧ делителя для него и вариант платы для светодиодных индикаторов. Все это разработано радиолюбителями в формате Sprint Layout 3.0 и 4.0.

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

Программа (ch3.zip)

Установка для поверки аналоговых и цифровых частотомеров У5023М

Частотный диапазон номинального значения напряжения выходного сигнала синусоидальной формы в диапазоне от 10 В до 400 В (низкочастотный выход)

  

                                                                           

 

от 20 Гц до 20 кГц

Частотный диапазон фиксированного напряжения амплитудой 1 В выходного сигнала прямоугольной формы (высокочастотный выход)

 

 

от 20 Гц до 100 МГц

Пределы допускаемой относительной погрешности по низкочастотному выходу при задании частоты выходного сигнала в диапазоне от 20 Гц до 20 кГц

 

Пределы допускаемой относительной погрешности по высокочастотному выходу при задании частоты выходного сигнала в диапазоне:

            от 20 Гц до 25 кГц

            от 25 кГц до 100 МГц

 

 

±10-5

 

 

 

 

 

 

±10-5

±10-8

 

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

 

 

 

 

±1

 

Время установления рабочего режима, мин

 

Напряжение питания, В

 

1,5

 

220±22

 

Частота питающей сети, Гц

50±5

Потребляемая мощность, Вт, не более

 

200

Максимальное значение выходной мощности на активное сопротивление нагрузки, Вт, не более:

 

Габаритные размеры (длина х ширина х высота), мм, не более

 

Масса, кг, не более

 

Рабочие условия эксплуатации:

-температура окружающего воздуха, °С

-относительная влажность воздуха при 35 ºС, %, не более

-атмосферное давления, кПа

 

 

40

 

 

 

500 × 400 × 200

 

25

 

 

от 15 до 25

80

 

от 84 до 106,7

Средняя наработка на отказ, ч, не менее

 

Время восстановления работоспособности установки, ч, не более

 

Средний срок службы, лет, не менее  

10 000

 

24

 

 

10

Цифровой частотомер на базе ПЭВМ и опыты с ним

Майер Роберт Валерьевич
Глазовский государственный педагогический институт им. В.Г.Короленко
доктор педагогических наук, профессор кафедры физики и дидактики физики ГГПИ

Mayer Robert Valerievich
FSBEI of HPE “The Glazov Korolenko State Pedagogical Institute”
doctor of pedagogical sciences, associate professor

Библиографическая ссылка на статью:
Майер Р.В. Цифровой частотомер на базе ПЭВМ и опыты с ним // Современные научные исследования и инновации. 2014. № 10. Ч. 1 [Электронный ресурс]. URL: https://web.snauka.ru/issues/2014/10/37391 (дата обращения: 23.10.2021).

1. Использование компьютера для измерения частоты

Иногда в учебных экспериментах возникает необходимость периодического (через 1 – 30 с) измерения частоты сигнала. Эта задача может быть успешно решена с помощью ПЭВМ [1 – 5]. Для этого электрические колебания с помощью формирователя импульсов преобразуют в цифровой сигнал, и получившуюся последовательность лог. 0 и лог. 1 заводят в компьютер, например, через LPT–порт (25 вывод – общий, один из выводов 10 – 17 – для ввода сигнала). При использовании ПЭВМ типа Celeron с операционной системой Windows 98 частота поступающих импульсов может быть определена с помощью программы ПР–1, написанной на языке QBasic. На ее основе может быть написана аналогичную программу на языке Pascal или Delphi. В литературе [1, 2, 5] описаны и другие способы сопряжения внешнего устройства с компьютером через последовательный порт или USB–порт и рассмотрены соответствующие программы, обрабатывающие поступающие сигналы. В результате этого ПЭВМ превращается в цифровой частотомер, который позволяет выполнить различные учебные опыты [3; 4, с. 92–116].

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

Опыт 1.2. Частотная модуляция. Порт компьютера соединяют с RC–генератором прямоугольных импульсов, частота которого может изменяться при замыкании и размыкании тумблера. Другой вариант опыта предусматривает использование генератора звуковой частоты, к выходу которого подключен формирователь прямоугольных импульсов. Программу следует отредактировать так, чтобы на экран выводилась последовательность 0 и 1, где 0 соответствует низкой частоте входного сигнала, а 1 – более высокой частоте.

 

Опыт 1.3. Изучение датчика координаты. К компьютеру подключают RC–генератор, вырабатывающий последовательность прямоугольных импульсов, частота которых зависит от сопротивления резистивного датчика координаты. Запускают программу. Поворачивая подвижный контакт резистора, наблюдают получающийся график зависимости координаты от времени. Можно изменить программу так, чтобы она через заданное время выводила координату движка резистора в числовом виде.

Опыт 1.4. Подключение термодатчика. Если вместо датчика координаты к генератору импульсов подключить терморезистор (например, типа ММТ–12), то при его нагревании частота импульсов будет увеличиваться. Представленная выше программа позволяет получить график зависимости температуры терморезистора от времени.

 2. Изучение передачи ЧМ сигнала по каналу связи

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

Опыт 2.1. Передача информации по проводной линии связи. Два одинаковых компьютера соединяют двумя проводниками, на принимающем запускают программу, декодирующую сообщение, на передающем компьютере – программу, кодирующую сообщение. Общий провод соединяет 25 вывод LPT–порта ПЭВМ 1 с 25 выводом LPT– порта ПЭВМ 2. Сигнальный провод соединяет 3 вывод LPT– порта ПЭВМ 1 с 11 выводом LPT– порта ПЭВМ 2 (рис. 1.1).

При запуске программы–кодера на ПЭВМ 1, она запрашивает передаваемое сообщение (строка символов 0 и 1), затем последовательно перебирает символ за символом, осуществляя частотно–импульсное кодирование, так что на соответствующем выводе LPT–порта появляются импульсы напряжения изменяющейся частоты. Допустим, символу “1″ соответствуют импульсы частотой , символу “0″ – импульсы частотой , а если сообщение не передается, то на выходе – логический 0. Программу–декодер на ПЭВМ 2 запускают раньше начала сеанса связи, она должна осуществлять декодирование поступающих сигналов. После окончания передачи сообщения программа–декодер должна перейти в режим ожидания до начала следующего сеанса связи.

Опыт 2.2. Передача информации по оптическому каналу связи. Для осуществления передачи сообщений с помощью оптической связи к LPT–порту передающей ПЭВМ 1 через схему сопряжения 2 подключают полупроводниковый лазер–указку 3. Его луч должен попадать на фотодиод 4, соединенный через формирователь сигнала 5 с LPT–портом принимающей ПЭВМ 6 (рис. 1.2). Сначала запускают программу–декодер, принимающая ПЭВМ 2 находится в режиме ожидания. Затем запускают программу–кодер на ПЭВМ 1 и с помощью клавиатуры набирают сообщение в виде последовательности 0 и 1. ПЭВМ 1 осуществляет кодирование, и вырабатывает последовательность импульсов изменяющейся частоты. Лазер выдает световые вспышки, периодически освещая фотодиод. ПЭВМ 2 декодирует сообщение и выводит его на экран. Можно предусмотреть передачу сообщений на русском языке, для этого программа–кодер сначала должна закодировать каждую из 32 букв пятью битами 0 или 1, а уже потом получившуюся последовательность 0 и 1 использовать для частотно–импульсной модуляции свечения лазера.

3. Изучение электрических машин с помощью цифрового тахометра

Изучение электрических машин требует снятия их скоростных характеристик, что требует одновременного измерения токов, напряжений и т.д., а также определения частоты вращения ротора. Экспериментальная установка  (рис. 2.1) для изучения электрических машин состоит из асинхронного двигателя 1, вал которого соединен с валом машины постоянного тока 3. На валу установлен диск 2 с прорезями по краю, вблизи него – оптодатчик 4, соединенный через параллельный LPT–порт с персональной ЭВМ. Трехфазный асинхронный двигатель типа ЭАО – 31П подключен к регулируемому источнику переменного напряжения (ЛАТРу) или постоянного напряжения и используется в качестве двигателя или индукционного тормоза. Машина постоянного тока (двигатель от пылесоса) может иметь независимое, параллельное или последовательное возбуждение. Она в различных опытах используется в качестве двигателя, генератора или индукционного тормоза. Оптодатчик состоит из светодиода и фотодиода, расположенных напротив друг друга; между ними находится диск с прорезями. На ПЭВМ запускают программу на языка Pascal, которая определяет время одного оборота вала и вычисляет скорость его вращения.

Опыт 3.1. Изучение зависимости частоты ротора АД от механического момента на валу. АД подключают к ЛАТРУ, а МПТ используют в качестве генератора с независимым возбуждением. Через обмотку возбуждения МПТ пропускают постоянный ток 0,5 – 1 А, к якорю в качестве нагрузки подключают реостат и амперметр с вольтметром. МПТ работает в режиме индукционного тормоза, создаваемый ею тормозящий момент пропорционален току якоря и частоте вращения ротора, который измеряют с помощью ПЭВМ. При постоянной скорости ротора вращающий момент равен тормозящему. На АД подают 90 В и, изменяя сопротивление нагрузки в цепи якоря МПТ, снимают зависимость частоты вращения ротора АД от механического момента на валу (рис. 2.2).

Опыт 3.2. Изучение зависимости частоты вращения ротора АД от потребляемого тока. Проводят аналогичный эксперимент, плавно увеличивая механическую нагрузку на валу путем уменьшения сопротивления цепи якоря МПТ, одновременно измеряя частоту вращения ротора. Снимают зависимость n = f(I_ад). При этом уменьшение частоты вращения ротора АД сопровождается ростом потребляемого тока (рис. 2.3).

Опыт 3.3. Изучение зависимости частоты вращения ротора МПТ в режиме генератора от тока якоря при последовательном возбуждении. Якорь и обмотку возбуждения МПТ соединяют последовательно с реостатом и амперметром и подключают к источнику постоянного напряжения (рис 2.1). Обмотку АД подключают к регулируемому источнику постоянного тока, АД работает в режиме индукционного тормоза. Включают МПТ (в качестве двигателя), пропуская через него ток 1 А. Регулируя напряжение питания АД, плавно увеличивают тормозящий момент, действующий на вал со стороны АД. Снимают зависимость n = f(I_я). При уменьшении частоты вращения ротора МПТ ток возрастает (рис. 2.4).

Опыт 3.4. Изучение зависимости частоты вращения ротора АД нагруженного на МПТ в качестве генератора с независимым возбуждением и постоянной нагрузкой, от напряжения питания АД. Через обмотку возбуждения МПТ пропускают ток возбуждения, к обмотке якоря подключают нагрузку 10 ом. Плавно увеличивая напряжение питания АД, измеряют частоту вращения ротора. Снимают зависимость n = f(U_ад).

Опыт 3.5. Изучение зависимости частоты вращения ротора МПТ в режиме двигателя (последовательное возбуждение) от напряжения питания. Обмотку возбуждения МПТ соединяют последовательно с якорем и через реостат подключают к источнику постоянного напряжения. Изменяя напряжение питания, контролируемое вольтметром, с помощью оптодатчика, подключенного к ПЭВМ, определяют частоту вращения ротора, и снимают соответствующую характеристику n = f(U_мпт).

Опыт 3.6. Изучение зависимости частоты вращения ротора МПТ в режиме двигателя от тока возбуждения. Подключают МПТ к источнику постоянного напряжения, используя параллельную схему возбуждения. Последовательно обмотке возбуждения и якорю МПТ включают реостаты с амперметрами, обе ветви подсоединяют к выпрямителю. Подают напряжение и, изменяя реостатом ток возбуждения, измеряют с помощью ПЭВМ частоту вращения ротора при различных токах возбуждения. Снимают зависимость n = f(I_в).

Опыт 3.7. Изучение зависимости частоты вращения ротора от времени при переходном электро–механическом процессе. Включают двигатель (АД или МПТ) и ждут, пока его скорость не достигнет постоянного значения. Запускают программу, вычисляющую скорость ротора и строящую график ее зависимости от времени. Резко изменяют напряжение питание двигателя (или индукционного тормоза), на экране получается график зависимости скорости от времени. Система переходит из одного установившегося состояния динамического равновесия в другое. Скорость вращения ротора, плавно изменяясь, постепенно приближается к новому предельному значению.

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


Библиографический список
  1. Ан П. Сопряжение ПК с внешними устройствами. – М.: ДМК Пресс, 2001. – 320 с.
  2. Магда Ю.С. Компьютер в домашней лаборатории. – М.: ДМК Пресс, 2008. – 200 с.
  3. Майер Р.В. Информационные технологии и физическое образование. – Глазов: ГГПИ, 2006. – 64 c. (http://maier-rv.glazov.net)
  4. Майер Р.В. Как стать компьютерным гением или книга о информационных системах и технологиях. – Глазов: ГГПИ, 2008. – 2004 c.
  5. Матаев Г.Г. Компьютерная лаборатория в вузе и школе: Учебное пособие. – М.: Горячая линия–Телеком, 2004. – 440 с.


Количество просмотров публикации: Please wait

Все статьи автора «Майер Роберт Валерьевич»

Частотомер — схема приставки к компьютеру на Attiny2313

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

Технические характеристики частотомера – приставки:

  • Предельная частота измерения — 128 МГц,
  • Шаг измерения — 4 Гц,
  • Входное сопротивление — более 100 Ом,
  • Чувствительность — 300 мВ,
  • Период обновления результатов — 0,5 сек. 

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

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

Непродолжительной подачей лог.0 на вход R двоичного счётчика DD1, микроконтроллер сбрасывает его, а после этого, отправив сигнал лог.1 на входе ЕР, запускает его работу. Далее как уже было сказано, микроконтроллер считает импульсы с выхода старшего разряда (вывод 11) счётчика в течение 0,5 сек.

Программа «Частотомер IRDA» обеспечивает обмен данными между компьютером и схемой частотомера. Сигналы данных на ПК следуют с порта PD6 (вывод 11) Attiny2313. Линия порта РВ1 (вывод 13) предназначена для сигналов синхронизации следующие от ПК.

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

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

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

Hantek 2000 — осциллограф 3 в 1

Портативный USB осциллограф, 2 канала, 40 МГц….

Прошить микроконтроллер Attiny2313 можно как простым LPT-программатором, так и USB программатором. Фьюзы (для CodeVisionAVR) при программировании необходимо выставить следующим образом:

 

Чтобы частотомер мог обмениваться данными с компьютером через порт IRDA, последний должен быть правильно сконфигурирован. Для этого в BIOS компьютера активируют данный порт, указывая в настройках «FULL DUPLEX», а так же сигналы «ТХ» и «RX» необходимо отметить как не инвертированные.

В операционной системе Windows в «Диспетчер устройств» выделяют драйвер для «Устройства ИК связи» далее «Последовательный кабель с использованием протокола ИК связи (IrDA)» далее (стандартный инфракрасный порт).

Скачать прошивку (1,1 MiB, скачано: 1 837)

Источник: Радио, 12/2011

Самодельный частотомер на ATTINY2313. Самодельный частотомер на ATTINY2313 Делитель частоты 1 10 на attiny2313

Частотомер на микроконтроллере 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МГц, делитель тактовой частоты не включён.

Последнее время мне очень часто требуется измерять частоту, уж очень много электронных проектов я делаю и поэтому появилось нужда в измерительном приборе — частотомере. Покупать данный прибор — я ещё школьник в 8 классе учусь а такая техника очень дорогая для меня. Сильно большие частоты мне измерять пока нет необходимости, хотя в скором времени возможно будет нужно. И поэтому я решил сделать свой частотомер своими руками! Стремясь к минимализму за основу взял AVR микроконтроллер ATtiny2313 и ЖКИ 16*1. Набросал проект в , написал прошивку и нарисовал принципиальную схему:

Собственно ничего сложного, всё очень просто. Собрал всё на бредборде, кто не знает это — макетная плата с механическими контактами. Проверил, работает! Вот фото отчёт:

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

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

Самое главное это хорошо и качественно припаять микроконтроллер, ведь он в SOIC корпусе.

Не проблема, и мельче паяли! Главное не переборщить припоя и не жалеть канифоли.

Запаиваем остальные детальки, вот что получилось:

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

После сборки прошиваем микроконтроллер, я прошивал с помощью программы программатором . Вот фьюз биты:

Подключить программатор к микроконтроллеру можно проводками, подключить их к разъёму для ЖКИ:

А reset припаять:

Распиновку подключения программатора к микроконтроллера не привожу, я думаю вы её знаете. После прошивки и установки фьюз-битов, устанавливаем ЖКИ и подаём питание на устройство:

Заработало, отлично! Теперь устанавливаем устройство в корпус:

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

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

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

ATtiny2313-20PU

1 В блокнот
C1, C2 Конденсатор 22 пФ 2 В блокнот
С3 Конденсатор 0.1 мкФ 1 В блокнот
R1 Резистор

1 кОм

1 В блокнот
R2 Резистор

4.7 кОм

1 В блокнот
R3 Резистор

20 Ом

1 В блокнот
LCD ЖК индикатор 16*1 Wh2601A 1 С совместимым HD44780 контроллером В блокнот
Z1 Кварц 16 МГц 1 В блокнот
Вход Разьём PBS-40 1

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

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

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

Выполняемые микроконтроллером задачи просты и очевидны: подсчет количества импульсов на входе за 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).

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

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

В общем случае на вход прибора может подаваться сигнал любой формы с амплитудой 0 … 5 В, а не только прямоугольные импульсы. Можно подавать синусоидальный или треугольный сигнал; импульс определяется по спадающему фронту на уровне 0.8 В. Обратите внимание: вход частотомера не защищен от высокого напряжения и не подтянут к питанию, это вход с высоким сопротивлением, не нагружающим исследуемую цепь. Диапазон измерений может быть расширен до 100 МГц с разрешением 10 Гц, если применить на входе соответствующий высокоскоростной делитель частоты.

Дисплей

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

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

Двухсторонняя печатная плата имеет размеры 109 × 23 мм. В бесплатной версии среды проектирования печатных плат Eagle в библиотеке компонентов отсутствуют семисегментные светодиодные индикаторы, поэтому они были нарисованы автором вручную. Как видно на фотографиях (Рисунки 5, 6, 7) авторского варианта печатной платы, дополнительно необходимо выполнить несколько соединений монтажным проводом. Одно соединение на лицевой стороне платы — питание на вывод Vcc микроконтроллера (через отверстие в плате). Еще два соединения на нижней стороне платы, которые используются для подключения выводов сегмента десятичной точки индикаторов в 4 и 7 разряде через резисторы 330 Ом на «землю». Для внутрисхемного программирования микроконтроллера автор использовал 6-выводный разъем (на схеме это разъем изображен в виде составного JP3 и JP4), расположенный в верхней части печатной платы. Этот разъем не обязательно припаивать к плате, микроконтроллер можно запрограммировать любым доступным способом.

Загрузки

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

Особенностью первой схемы частотомера на микроконтроллере 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, при слабом сигнале необходимо добавить усилитель.

Цифровой частотомер | Научно-инновационный портал СФУ

Перевод названия: DIGITAL FREQUENCY METER

Тип публикации: патент

Год издания: 1991

Аннотация:

<ru-page-number num=»0001″ /> <ru-paragraph-column num=»01″ /> <ru-paragraph-line num=»0015″ x=»295″ y=»1796″ />Изобретение относится к элек- трорадиоизмерительной технике и предназначено для измерения частоты<ru-paragraph-line num=»0018″ x=»291″ y=»1957″ /> и периода гармонического или импульсного<ru-paragraph-line num=»0019″ x=»289″ y=»2000″ /> сигналов. Цель изобретения<ru-paragraph-line num=»0020″ x=»291″ y=»2057″ /> — повышение точности и расширение<ru-paragraph-line num=»0021″ x=»289″ y=»2100″ /> частотного диапазона. Входной<ru-paragraph-line num=»0022″ x=»291″ y=»2150″ /> сигнал преобразуется формирователем<ru-paragraph-line num=»0023″ x=»291″ y=»2197″ />. 3. Квантующие импульсы формируются<ru-paragraph-line num=»0024″ x=»288″ y=»2245″ /> формирователем 2, на вход которого подается сигнал с частотой<ru-paragraph-line num=»0026″ x=»292″ y=»2345″ /> квантования от генератора 1 образцовой<ru-paragraph-column num=»02″ /><ru-paragraph-line num=»0027″ x=»1315″ y=»1096″ /> частоты импульса с формирователя<ru-paragraph-line num=»0028″ x=»1315″ y=»1146″ /> 3. Через элемент 6 совпаде ния сигнал поступает на блок формирования<ru-paragraph-line num=»0030″ x=»1312″ y=»1244″ /> весовых коэффициентов, содержащий<ru-paragraph-line num=»0031″ x=»1310″ y=»1295″ /> вычитающий счетчик, сумматор<ru-paragraph-line num=»0032″ x=»1311″ y=»1344″ /> и регистр памяти. Элемент 6 совпадения открывается импульсом выхода D-триггера 4. Импульс начальной<ru-paragraph-line num=»0035″ x=»1310″ y=»1495″ /> установки осуществляет сброс регистра<ru-paragraph-line num=»0036″ x=»1310″ y=»1553″ /> памяти и счетчика импульсов накапливающего сумматора 8, а также вычитающего счетчика. После открытия элемента 6 совпадения устанавливается<ru-paragraph-line num=»0040″ x=»1308″ y=»1750″ /> единичный потенциал на D-входе D-триггера 5. Код накопленного в накапливающем<ru-paragraph-line num=»0042″ x=»1306″ y=»1848″ /> сумматоре 8 поступает на блок 9 индикации. Импульс конца измерения формируется блоком 10 формирования<ru-paragraph-line num=»0047″ x=»1303″ y=»2007″ /> импульса конца измерения. Вход синхронизации накапливающего сумматора 8 соединен с выходом элемента<ru-paragraph-line num=»0050″ x=»1300″ y=»2149″ /> совпадения. Накапливающий сумматор 8 содержит также сумматор, первый вход которого соединен с первым<ru-paragraph-line num=»0053″ x=»1300″ y=»2296″ /> входом блока 7 формирования весовых<ru-paragraph-line num=»0055″ x=»1300″ y=»2346″ /> коэффициентов. 3 ил. а « (Л сэ со с& J 00 ОЭ<img src=»/get_item_image.asp?id=40581672&img=00000001.TIF»>

Ссылки на полный текст

ПРОСТОЙ ЧАСТОТОМЕР

ПРОСТОЙ ЧАСТОТОМЕР

ПРОСТОЙ ЧАСТОТОМЕР
(2010-2018)

KLIK HIER VOOR DE NEDERLANDSE VERSIE


Частотомер. Программа написана на языке программирования Python.
Поэтому его легко адаптировать к вашим требованиям.

Простой частотомер для ПК со звуковой картой
Никаких примитивных частотомеров со светодиодами! Выкинь их! Мы заменяем эти простые частотомеры настоящим дисплеем на ПК.Это выглядит намного лучше, не так примитивно, да и оборудование проще, всего 1 микросхема! И частота намного проще, удобнее и точнее!
Идея очень проста и применяется чаще. Мы делим РЧ-сигнал с помощью предделителя на звуковые частоты. Этот звуковой сигнал подключается к звуковой карте ПК, и мы измеряем звуковую частоту. Затем эта частота умножается на значение предделителя, и … у нас действительно есть частота RF!
Когда вы нажимаете «Стоп», то текущие настройки сохраняются в файле «Недавние.jpg «и загружается при следующем запуске программы.


Фурнитура, коробка очень простая.

Принцип измерения и точность
Частотомер считает в течение определенного времени количество периодов. Этот частотомер работает иначе. От определенного количества периодов отмеряется точное время.
Разрешение этого измерения времени зависит от частоты дискретизации звуковой карты. Разрешение измерения времени составляет плюс-минус 1 отсчет.Но добавив один дополнительный резистор и один дополнительный конденсатор, точность можно повысить в 20 раз! И с коротким временем измерения 0,2 секунды, которое вы хотите использовать для настройки приемника, у нас все еще есть хорошая точность.


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

Уловка для повышения точности
С прямоугольным сигналом от прескалера мы не знаем, где именно между двумя аудиосэмплами звуковой карты происходит пересечение нуля.Первая выборка всегда +5 вольт, а следующая — 0 вольт. Таким образом, точность измерения времени всегда составляет плюс-минус 1 отсчет. Но когда мы могли вычислить, где именно проходит нулевой переход между двумя отсчетами, мы также можем проводить измерения с помощью долей отсчетов, и тогда точность измерения времени станет намного лучше! И это возможно! Когда наклон уменьшается с помощью RC-цепи, у нас также есть информация об амплитуде, и тогда мы можем определить, в каком месте между обоими отсчетами происходит пересечение нуля! Если U2 меньше U1, то переход через нуль ближе к S3, чем к S2.А с соотношением U1: U2 мы можем точно вычислить, где находится переход через нуль!


Предделитель частоты до не менее 30 МГц со встроенным эталоном частоты.
С дополнительным предделителем вы можете расширить диапазон до нескольких ГГц.

большая диаграмма

Оборудование
На входе вы найдете ограничитель для предотвращения поломки. Он состоит из резистора R1 на 1 кОм и двух диодов, соединенных встречно параллельно. Когда S1 находится в нижнем положении, РЧ-сигнал поступает на вход 74HC4060.Эта ИС делит РЧ-сигнал на 4096 до звуковой частоты. На выходе 74HC4060 вы можете найти RC-цепь 10 кОм и 10 нФ для уменьшения крутизны. И сеть резисторов 22 кОм и 1 кОм ослабляет уровень звука, так что звуковая карта не перегружается.
Два резистора по 1 МОм предназначены для правильной настройки постоянного тока на входе. Конденсатор 10 нФ фильтрует переменную составляющую. В противном случае возникает обратная связь, которая снижает усиление на низких частотах.
Когда S1 находится в верхнем положении, 74HC4060 действительно работает как кварцевый генератор, а затем у вас есть опорная частота для калибровки звуковой карты.Конечно, также можно использовать другой кристалл. Вам не нужно настраивать частоту. Моя копия имеет частоту 4095,754 кГц, и я ввожу эту частоту во время калибровки.
Схема питается через порт USB. Сходите в магазин за дешевым USB-кабелем, отрежьте нужный штекер, найдите нужные провода, и у вас действительно есть источник питания на 5 вольт. Поскольку напряжение питания составляет 5 вольт, вы также можете использовать более доступный 74HCT4060 вместо 74HC4060. В схеме есть дополнительный выход для калибровочного сигнала 4 кГц / 5 В для простого осциллографа, работающего со звуковой картой.
Частота
(МГц)
Чувствительность
с R1 = 120
(мВ RMS)
Чувствительность
с R1 = 1k
(мВ RMS)
0,03
0,1
1
10
20
30
50
80
100
120
15
10
3
10
25
30
100
150
200
500
15
10
5
20
50
100
300
1000


Чувствительность простого предделителя.

Точность
Тесты проводились с использованием внутреннего звукового модуля ноутбука и простого внешнего аудиоустройства USB. Калибровочный сигнал 1 МГц исходит от заблокированного модуля GPS.
Внутренний звуковой модуль выдал отклонение +20 Гц. Аудиоустройство USB имело отклонение -75 Гц.
После калибровки измеренные значения колебались от 1 до 2 Гц. Это проверяется временем измерения 1 секунда.

Настройка звукового модуля
Установите для частоты дискретизации значение по умолчанию вашей операционной системы.Обычно это 44100 выборок в секунду.
Вы можете подключить предделитель к линейному входу или к микрофонному входу звуковой карты. Когда вы используете микрофонный вход, вы должны отключить дополнительное усиление на 20 дБ. Отрегулируйте входной уровень так, чтобы этот уровень был значительно ниже максимального 100%, например 5% -20%. С помощью мыши вы можете регулировать громкость звукового модуля. Как это сделать, зависит от используемого звукового модуля, вашей операционной системы и ее версии.

Калибровка
Есть две возможности для калибровки:
Возможность 1 : Выберите «Предварительный делитель» и введите вручную значение предварительного делителя.
Значение предварительного делителя должно быть выбрано так, чтобы отображалось точное значение частоты. Так что не 4096, а например 4096.0235.
Возможность 2 : Подключите частотомер к опорной частоте и выполните измерение с длительным временем измерения 5 секунд.
Нажмите «Стоп», чтобы остановить измерение. Выберите «Предварительный делитель», но нажмите «Отмена» вместо того, чтобы ввести значение предварительного делителя.
Ответьте на вопрос «Калибровка с измеренной частотой», указав «да», и введите опорную частоту в Гц. Точное значение предварительного делителя рассчитывается автоматически. Вы можете сохранить его вместе с другими настройками, такими как частота смещения. Для калибровки, конечно, вы можете использовать встроенный кварцевый генератор предварительного делителя частоты.

Другие приложения
Многие любительские схемы имеют стабилизатор частоты (например, Huff & Puff), с помощью которого сигнал VFO уже делится с помощью предварительного делителя частоты (например, 74HC4060) на звуковые частоты.Единственное, что вам нужно добавить, это простая RC-сеть, состоящая из 3 резисторов, 1 конденсатора и кабеля с вилкой. Частоту ПЧ можно запрограммировать как смещение частоты, и у нас есть очень хороший дисплей частоты. Очень часто ПК уже подключен к ресиверу для декодирования цифровых режимов. В этом случае очень удобен переключатель «аудиовыход» или «выход предварительного делителя».


ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

Перед использованием этой программы вам необходимо установить Python.Это очень просто. Но сначала прочтите что-нибудь о Python, щелкнув следующую ссылку:

ЧТО ТАКОЕ PYTHON И КАК УСТАНОВИТЬ PYTHON

Поскольку исходный код Python написан в ASCII, очень просто изменить программу в соответствии с вашими требованиями. Подумайте, например, о размере экрана, цветах и ​​т. Д.

Требуемая версия Python:

Необходимые внешние модули (пакеты сайтов для правильной версии Python!):
Загрузите здесь программу счетчика частоты Python, щелкнув ссылку ниже:

Индекс PA2OHH

Алгоритм частотомера.Часть 2: Как подсчитать элементы в массивах… | Кеннет Янг

Pt 2: Как подсчитывать элементы в массивах с помощью объектов JavaScript

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

// Проверяем, можно ли превратить строку в палиндром
 // Палиндром   - это слово, написанное в обратном направлении, читается так же 
// Проверяем, возможно ли преобразовать строку в палиндром // Вход
// str: любая строка

// Выход
// логическое значение, true, если вы можете преобразовать строку в палиндром

// Примеры
// racecar => true
// ice => false
// madam => true
// aaabb => true
// abc => false

Ключевое отличие здесь в том, что мы не определяем, является ли строка палиндромом, а определяет ли она CAN в один.

Подумав немного, я подумал о характеристиках слов-палиндромов. Мне запомнилось одно: нечетное количество букв есть одно или нет.

В таком случае мы можем перефразировать вопрос. Его можно превратить в «Есть ли нечетные буквы одна или нет?»

Чтобы ответить на этот вопрос, нам нужно посчитать количество каждой буквы в строке. Проще сказать, чем сделать!

Один из наиболее распространенных способов подсчета элементов в массиве выглядит примерно так:

ТРАДИЦИОННЫЙ ПОДХОД

Подсчет с переменными

GIF этого подхода здесь:

Проблема здесь в том, что он учитывает только один тип букв, .Мы не знаем, какие буквы будут внутри строки. Мы могли бы просто сделать счетчик для каждой буквы от a до z (смеется) и проверять внутри if для каждой возможной буквы. Но это будет WET-код. СУХОЙ код — лучший способ.

Знакомство с объектами. Опять таки.

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

Хранение счетчиков внутри объектов позволяет нам создавать счетчики динамически по мере прохождения каждого элемента в массиве.Код выглядит примерно так:

ПОДХОД СЧЕТЧИКА ЧАСТОТ

Подсчет с помощью объектов

Я фанат визуального показа кода, а не объяснения его в тексте, поэтому вот гифка о том, как это работает:

Этот последний GIF показывает объект который возвращается: {«m»: 2, «a»: 2, «d»: 1}

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

Решение

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

Выполнение быстрых измерений с помощью частотомера

Вы можете настроить современный частотомер на выполнение сотен показаний в секунду, что может быть полезно для характеристики сигнала, который изменяется во времени. Имейте в виду, что частотомеры оптимизированы для измерения стабильного или медленно меняющегося сигнала.Также помните, что для получения точных показаний лучше сделать одно хорошее показание, чем пытаться усреднить множество показаний. Ниже приведены шаги по настройке частотомера для самых быстрых измерений. В качестве примеров можно использовать команды SCPI частотомеров Keysight 53131A, 53132A и 53181A.

Совет 1. Установите счетчик в известное состояние.

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

 * RST ‘Обнулить счетчик,
           ‘Очистите счетчик и интерфейс
* CLS ‘Очистить регистры ошибок и состояния
* SRE 0 ‘Очистить регистр разрешения запроса на обслуживание
* ESE 0 ‘Очистить регистр включения статуса события
‘Предустановленные регистры включения и переходные фильтры
: STATus: PRESet 

Совет 2: Установите выходной формат в соответствии с типом данных, используемым в приборе.

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

: FORMAT ASCII ‘Данные в формате ASCII 

Совет 3. Убедитесь, что все операции пост-обработки и печати отключены.

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

: CALC: MATH: СОСТОЯНИЕ ВЫКЛЮЧЕНО
: CALC2: LIM: СОСТОЯНИЕ ВЫКЛЮЧЕНО
: CALC3: AVER: СОСТОЯНИЕ ВЫКЛЮЧЕНО
: HCOPY: ПРОДОЛЖЕНИЕ ВЫКЛ.
: ROSC: SOUR INT
: ROSC: EXT: ПРОВЕРИТЬ
‘Отключить автоматическую калибровку интерполятора
: DIAG: CAL: INT: AUTO OFF
‘Отключить дисплей
: DISP: ВКЛЮЧИТЬ ВЫКЛ. 

Совет 4: Сообщите счетчику ожидаемую частоту.

53131A, 53132A и 53181A могут оптимизировать свою конфигурацию в зависимости от измеряемой частоты. Для более быстрых измерений используйте команду «FREQ: EXP1. », чтобы сообщить счетчику ожидаемую частоту. Фактический измеряемый сигнал должен находиться в пределах 10% от значения, которое вы указываете в команде

.
: FUNC "FREQ 1" ‘Измерение частоты
: FREQ: EXP1 10000000 ‘Установить ожидаемую частоту 

Совет 5: Установите уровень срабатывания.

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

: СОБЫТИЕ1: УРОВЕНЬ 0 ‘Установите уровень запуска на 0 В 

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

Если в приборах используется двухуровневый запуск, перед считыванием показаний должны быть выполнены оба условия запуска.Для 53131A, 53132A и 53181A установка немедленного состояния спускового рычага будет соответствовать первому уровню запуска. Вы можете установить запускающее событие на запрос на чтение с помощью «* DDT # 15FETC?» команда. Использование этого условия триггера устраняет необходимость посылать триггер шины или FETCH? команда для каждого чтения.

 * ДДТ № 15FETC? ‘Уменьшить количество байтов
                                ‘Переброшен автобусом 
 "Немедленная постановка на охрану"
: FREQ: ARM: STAR: SOUR IMM 
: FREQ: ARM: STOP: SOUR TIM 

Вы также можете загрузить программу на Visual Basic, чтобы настроить счетчик на самые быстрые показания.Программа Visual Basic допускает несколько различных типов запуска и настраивает счетчик для работы в самом быстром из возможных режимов для каждого режима запуска. Чтобы получить максимально быстрые показания, выберите параметр, который устанавливает для триггера запуска и остановки значение НЕМЕДЛЕННЫЙ.

bjorng / avr-frequency-counter: Программное обеспечение частотомера для микроконтроллера Atmel ATTiny84A.

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

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

Мои требования и как их удовлетворить

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

Очевидный способ подсчитать частоту — это подсчитать количество событий. в течение фиксированного периода времени (например, одну секунду), а затем разделите количество событий по длительности периода времени. Но для низкого частоты время должно быть большим, чтобы достичь хорошего разрешения. Для Например, если период времени составляет одну секунду, пока мы измеряем сигнал с частотой около 1 Гц, измеренная частота может быть 0, 1 или 2, в зависимости от того, как события попадают в наше измерение период.Поэтому для низких частот нам потребуются длительные периоды измерения. (несколько минут).

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

Часы, которые мы используем для измерения времени, — это частота процессора, деленная на 64 или 312,5 кГц. Мы продолжаем использовать обратный счет и выше. 312,5 кГц. Чтобы получить 4 значащих цифры, мы выбираем количество событий достаточно велико, чтобы продолжительность период будет не менее 10000 тактов.

Настройка оборудования

Программное обеспечение написано для Atmel ATtiny84A. Он должен работать без модификаций на ATtiny44A.

ATtiny84A должен работать на частоте 20 МГц (что означает, что он должен быть питается от источника питания 5В).Если вы выберете работу на более низкой тактовой частоте, , вероятно, будет работать , если вы измените значение ЧАСЫ в Makefile (но не тестировался мной).

Измеряемый сигнал должен быть прямоугольной формы от 0 В до 5 В, и быть подключенным как к выводу 5 (INT0 / PB2), так и к выводу 9 (PA4 / T1). Пока ты можно подключать внешние сигналы напрямую к этим контактам, я рекомендую какая-то защита входа и преобразование сигнала, как минимум 74HC14 (инвертирующий буфер с триггером Шмитта).

Дисплей представляет собой DOGM 081. Он состоит из одной строки по 8 символов. Код для управления дисплеем находится в конце main.c. Если вы хотите использовать какой-то другой дисплей, вам просто нужно предоставить альтернативу реализации для функций lcd_init () , ldc_home () и lcd_putc () .

Дисплей должен быть подключен к режиму SPI (см. Техническое описание). В контакты должны быть подключены следующим образом:

  • PA0 согласно SI
  • PA1 по CLK
  • PA2 по CSB
  • PA3 по RS

Список литературы

Похоже, что Hewlett-Packard впервые предложила концепцию взаимного подсчет.

Hermetic Word Частотомер Расширенная версия

Настраиваемая программа для подсчета слов и фраз для нескольких файлов для Windows

Если хотите, можете пропустить это руководство пользователя и просто прочитать обзор Softpedia.

Hermetic Word Frequency Counter Advanced Version сканирует один или несколько файлов MS Word DOCX или текстовых или текстовых файлов, включая файлы HTML и XML, закодированные через ANSI или UTF-8, и подсчитывает количество появлений различных слов во всех файлах вместе (необязательно игнорируя общие слова, такие как и это ).Таким образом, это также программа поиска слов по нескольким файлам. Можно точно указать, что считается словом (например, слова с дефисами или цифрами или без них). Найденные слова и фразы могут быть перечислены в алфавитном порядке или по частоте, с отображением ранга и частоты встречаемости для каждого.


Это программное обеспечение поставляется в двух версиях: Hermetic Word Frequency Counter (WFC) и Hermetic Word Frequency Counter Advanced Version (WFCA). Это две отдельные программы.Основное отличие состоит в том, что WFC считает слова только в отдельных файлах DOCX, текстовых и текстовых (включая файлы HTML и XML), тогда как WFCA считает слова и фразы в нескольких файлах (в нескольких папках) за одну операцию. Если вам нужно подсчитывать слова только в одном файле за раз, тогда WFC — это то, что вам нужно. (Щелкните по этой ссылке, чтобы перейти на страницу WFC.) Если у вас много файлов или вы хотите подсчитать фразы или вам нужно больше опций и функций для слов и фраз), тогда вам понадобится WFCA (так что читайте дальше).

Теоретически нет ограничений на размер входного файла или количество слов в нем, но на практике (из-за необходимого времени обработки) существует ограничение около 10 МБ для текстовых файлов (и текстовых файлов, таких как XML и HTML-файлы). Также существует ограничение около 10 МБ на количество текста в файле MS Word DOCX (хотя файл DOCX может быть больше, если он содержит много изображений). Для файла DOCX учитываются только слова в теле документа, а не слова в сносках или концевых сносках.

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

Эта программа считает слова и фразы в файлах MS Word DOCX (но не в файлах Word DOC), а также в текстовых и текстовых файлах (включая файлы HTML и XML). Он не работает напрямую с двоичными файлами (кроме файлов DOCX), такими как файлы PDF; такие файлы можно обрабатывать, если их можно преобразовать в файлы DOCX или в текстовые файлы (см. «Сканируемые файлы» в руководстве пользователя для базовой версии).



Чтобы открыть отдельный файл для подсчета слов или фраз, выберите опцию Single File и нажмите кнопку Single File .Чтобы подсчитать слова или фразы в нескольких файлах в определенной папке, выберите параметр «Папка » и нажмите кнопку «Папка ». После настройки параметров работы нажмите соответствующую кнопку Count . Ниже приведен снимок экрана, показывающий результаты подсчета слов во всех файлах .htm в папке и ее подпапках (регистр не имеет значения):
Если отмечено поле «Отключить» (в той же строке, что и «Выходной файл»), то вывод осуществляется только в текстовое поле, а не в файл.

Щелкните здесь, чтобы увидеть снимок экрана, на котором показаны относительные частоты (а не абсолютные частоты).

Вот скриншот, показывающий результат подсчета всех фраз от 4 до 8 слов в файле DOCX размером 21,46 КБ, содержащем 13,70 фактического текста:


«Размер файла» — это размер файла DOCX; «Текст» — это размер текста в этом файле. В случае большого файла DOCX первый может быть меньше второго, потому что текст в файле DOCX сжимается.

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


Отличия от базовой версии

Ниже приведены некоторые (но не все) функции расширенной версии (WFCA), которых нет в базовой версии (WFC):

Возможность:

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

И, новый в версии 26.07, возможность фильтровать найденные фразы, чтобы отображать только фразы, содержащие указанные слова.

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


Панель «Настройки»

Вот как выглядит панель «Настройки» в расширенной версии:

Флажки «Преобразовать множественное число английских слов в единственное число» и «Игнорировать слова, в которых встречается меньше (или больше) N вхождений» применимы только при подсчете слов, но не при подсчете фраз.

Значение по умолчанию для фразы не должно выходить за рамки… это все, кроме «запятой» и «конца строки». Если ваш документ состоит из фраз, разделенных запятыми, установите флажок «запятая». Такой текст не следует смешивать с текстом, в котором фраза заканчивается знаком конца строки, точки или двойной кавычки.




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

Пробная версия: Для ознакомления можно загрузить копию программы установки Hermetic Word Frequency Counter Advanced версии . Щелкните следующую ссылку для получения дополнительной информации: Скачать Hermetic Word Frequency Counter Advanced
Цена и заказ: Пользовательская лицензия доступна на срок 3 месяца или без ограничения по времени («бессрочная» лицензия).Цены на каждый тип лицензии указаны в разделе «Приобретение пользовательской лицензии». Ключ активации необходим для того, чтобы пробная версия была полностью функциональной, и его можно получить сразу (или вскоре после) вашей покупки. Возврат: Возврат будет осуществлен незамедлительно в течение 30 дней после покупки, если программное обеспечение не работает должным образом.

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

Обновление базовой версии: Предыдущий покупатель бессрочной пользовательской лицензии для Hermetic Word Frequency Counter может перейти на бессрочную пользовательскую лицензию для Расширенной версии (WFCA), заплатив 34,95 доллара. Чтобы приобрести обновление, перейдите на страницу покупки для WFCA (не для WFC), нажмите кнопку Comecero , чтобы перейти к форме заказа, и введите upgrade-to-wfca в качестве кода скидки (затем нажмите «Применить» ‘).Обратите внимание, что это доступно только в том случае, если для бессрочной пользовательской лицензии на Hermetic Word Frequency Counter уже было куплено .


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

Звуковые карты Звуковые инструменты и игрушки

Звуковые карты Звуковые инструменты и игрушки


от W.A. SteerPhD


Стандартные мультимедийные аудиоустройства ПК предлагают очень малоиспользуемый потенциал для как научные, так и просто забавные проекты.Представляю готовый экспериментальный программный частотомер / инструментальный тюнер на основе звуковой карты, спектр в реальном времени анализатор и генератор синусоидальных сигналов, все для использования на частотах до 20 кГц. Я также обрисовал в общих чертах некоторые попытки охарактеризовать частотную характеристику и резонансы громкоговорителя и микрофонной системы — с целью создания цифрового фильтр, чтобы удалить самые серьезные недостатки, и прогрессировать с помощью «акустического радара».

Содержание

Стандартная звуковая карта ПК (или звуковой чипсет) включает, среди прочего, аналого-цифровой преобразователь (АЦП) для преобразования внешних звуковых сигналов в цифровые биты и цифро-аналоговый преобразователь (ЦАП) для преобразования цифровые биты обратно в звуковые сигналы.В общем, оба двухканальные (стерео), с разрешением 16 бит и частотой дискретизации 44,1 кГц. Моно операция, 8-битное разрешение и более низкие частоты дискретизации 22,05 кГц, 11,025 кГц являются обычно доступны, когда низкое разрешение / пропускная способность / скорость передачи данных приемлемо. Пока ваша звуковая карта является «полнодуплексной» (большинство из них) и драйвер настроен для его включения (проверьте), вы можете использовать АЦП и ЦАП для одновременно вводить и выводить звуки — хотя обычно вам нужно оба с одинаковой частотой дискретизации. Для программиста Windows API обеспечивает простой программный интерфейс для оборудования.

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

Примечание к загрузке апплета

Я не считаю эти апплеты полностью «законченными» или «отлаженными». Они вполне могут выдавать неожиданные ошибки, из-за которых апплет преждевременно прекратить

Апплеты не требуют особой установки , не трогают ваш реестр Windows, amd не будет устанавливать какие-либо библиотеки DLL. Просто скачайте .EXE и запустите их. Для всех требуется Windows95 или новее.

Выберите или введите частоту (от 1 до 22050 Гц), амплитуду (от 1 до 32767), выберите левый или правый канал для вывода. Нажмите «воспроизвести звук», чтобы получить импульс продолжительностью в одну секунду, или ‘start-‘ и ‘stop sound’ для непрерывного управления звуком (до предела 10 часов!). Ползунок громкости должен дублировать регулятор громкости волны на вашем звуковой выход микшерный пульт. Если звук играет, то меняется (кроме Громкости слайдер) не будет слышен, пока звук не будет остановлен и перезапущен.

Скачать: siggen.exe Эта версия заменена
Скачать: SigGen_1v3.exe Новая версия 1.3 , доступна с мая 2011 года. Поддерживает несколько звуковых карт и лучше соответствует звуковым моделям Windows Vista / 7.

Специальная аудиометрическая версия

Это ветвь разработки от штатного генератора сигналов, с возможностью установки амплитуды звуков, пропорциональные порогу слышимости, как функция частоты, и настроить уровень сигнала в децибелах. Эта версия больше подходит для измерений. человеческого слуха, чем в стандартной версии.См. Пункт меню «О программе» апплета для получения дополнительной информации.
Скачать: SigGen_Audiometric_1v3.exe

Загружая эти файлы, вы соглашаетесь стандартный отказ от ответственности.

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

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

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

Новая версия программы 1.3, ниже, действительно исправляет ранее возникшую проблему с ошибками деления на ноль!

Загрузить: tuner1v3.exe [от 20 июля 2005 г., выпущен в марте 2012 г.]
Загружая этот файл, вы соглашаетесь стандартный отказ от ответственности.

Нота на равномерно темперированной гамме
f = 440 נ 2 ( n /12)

где f — в герцах, а n — целое число, как показано ниже:

   0 1 2 3 4 5 6 7 8 9 10 11
   A A # B C C # D D # E F F # G G #
 
до n , прибавьте число, кратное 12, чтобы получить более высокие октавы, или вычтите кратное из 12 для нижних октав.

Тахометр вариант

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

Поскольку он измеряет фактическое время одного (или нескольких) полных сигналов, а не просто «считает» циклы в пределах периода измерения, вы можете получить точные результаты даже при подсчете только небольшого количества импульсов.Я снизил частоту дискретизации до 22050 Гц и удвоил длину буфера, поэтому период дискретизации теперь в 4 раза больше, чем у обычного частотомера. Вероятно, 4 Гц — это абсолютная минимальная скорость (120 об / мин для 2 имп / оборот), которая даст значимый выход, хотя я бы рекомендовал вам использовать только 8 Гц (240 об / мин для 2 имп / оборот) или выше.

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

Скачать: RevCounter1v3.exe
Загружая этот файл, вы соглашаетесь стандартный отказ от ответственности.

Экспериментируя с быстрыми преобразованиями Фурье (БПФ) на протяжении многих лет, я понял, что могу совместить эту процедуру с отбором звука разделы кода для создания анализатора спектра звука в реальном времени.

Как и другие программы на этой странице, он использует вывод Панель микшера «Запись» в качестве входа.

Аудио дискретизируется с частотой 44,1 кГц с разрешением 16 бит.

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

В течение многих лет я хотел создать программу для измерения АЧХ компьютерной акустической микрофонной системы.Когда при работе с акустическим радаром (см. ниже) возникли проблемы, которые я поставил вплоть до резонансов и очень неплоского отклика — так что этот анализ программа не могла больше ждать!

Пример сюжета:

Конфигурация теста:

  • Набор микросхем материнской платы OPL3-SA (регулировка низких и высоких частот на одну ступень от минимума)
  • Колонки Altec Lansing ACS90 (без сабвуфера)
  • Мультимедийный микрофон других производителей (с переключателем громкости в среднем положении — II)
  • Микрофон расположен примерно в 5 мм перед центром динамика

Верхний (темно-зеленый) график представляет выходной сигнал; 9-тактный косинусоидальные синусоидальные всплески с частотой 20 Гц, 25 Гц, 31 Гц, 40 Гц ,..,20 кГц (три тонов на октаву). Всплески разделены периодом молчания того же продолжительность как предыдущая вспышка. Горизонтальный масштаб меняется динамически поперек экрана, чтобы все серии были одинаковой ширины!

Средняя, ​​синяя и красная кривая представляет полученный сигнал, снова на линейная шкала амплитуд. Цвет синий там, где ожидался звук, и красный там, где его не было (в выведенных периодах тишины). Возникают « красные » звуки в первую очередь из-за резонансов в микрофоне или динамике — но может также могут быть вызваны фоновым шумом в комнате или электрическими помехами.

На нижнем графике в логарифмической шкале (децибел) показана амплитуда принятый сигнал после соответствующей фильтрации полосы пропускания (зеленая кривая). В красная кривая ниже показывает амплитуду принятого сигнала, отфильтрованного аналогичным образом, в периоды «тишины» — из-за фоновых звуков и т. д. значение этого следа с долей скепсиса! Это показывает некоторую симпатию с резонансами 2-4 кГц и 8 кГц, очевидными в красном / синем принимаемом сигнале участок. Пик на частоте 50 Гц вызван перехватом электроэнергии в сети переменного тока.

Идеи для будущего развития:

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

Программа также запускалась с настройками управления звуком для внутренней петлевой проверки.Это показало, что электрический отклик был ровным с точностью до 3 дБ по всей длине волны. диапазон от 20 Гц до 20 кГц — но только тогда, когда звуковая карта контролирует низкие и высокие частоты были установлены на одну ступень выше минимума (по шкале от 1 до 7). С элементами управления в их среднем положении был отчетливый провал на 6 дБ в частоте отклик около 1-2 кГц — область между ними, на которую влияет тон контролирует !!!

Из-за своего экспериментального характера эта программа недоступна для скачать.

Примечание об обозначении децибел
Децибелы используются для цитирования отношений амплитуд сигнала:

дБ = 20 נ log 10 (A / A ref )

Коэффициент 6 дБ соответствует двукратному изменению амплитуды сигнала, таким образом, вы получаете 6 дБ «динамического диапазона» для каждого бита вашего АЦП / ЦАП.Следовательно 16-битная звуковая карта (или обычный компакт-диск) имеет собственный максимальный динамический диапазон 6 дБ נ 16 бит = 96 дБ. Более специализированный высший качественные звуковые карты предлагают 24-битную дискретизацию и, таким образом, 144 дБ динамического диапазона — превышает слуховую систему человека!

Графики этой программы используют максимально достижимую амплитуду (32768) как опорная точка (0 дБ).

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

Звуковые волны распространяются со скоростью примерно 330 метров в секунду в воздухе в помещении. температура. Если бы мы поместили микрофон рядом с динамиком лицом к стену на расстоянии 5 метров, затем заставил динамик «щелкнуть», микрофон практически сразу слышу один щелчок (прямой звук), затем — эхо от стены 25/330 = 0,0303 секунды спустя ( множитель два возникает, потому что звук должен пройти к стене и обратно , совершив всего 10 метров пути).
[Вы можете хлопнуть в ладоши перед большой внешней стеной, чтобы проверить это.]

На практике «клики» не так хороши: среди прочих проблем они могут быть трудно отличить от фонового шума. Что повсеместно используется в радиолокационные системы — это псевдослучайная битовая последовательность (PRBS) — в случае звука, шипящий шум, содержащий все частоты (до определенного предела), со специальным свойством, что он коррелирует (сопоставляет) только сам с собой в нулевые временные сдвиги (или период цикла последовательности, который может легко сделать очень долго). Если у вас несколько эхо, полученная последовательность будет немного соответствовать времени, соответствующему каждому эхо, но не совсем между.

Я написал программу, чтобы озвучить PRBS и сопоставить полученный сигнал от микрофон. Это действительно сработало (вроде как), и вы могли видеть эффект объектов размещены на расстоянии до метра от динамика / микрофона — но даже без отражающий объект, прямая корреляция не оказалась «чистой».


Прямая корреляция для микрофона 3 дюйма перед динамиком

Проблема заключалась в том, что резонансы в динамике и микрофоне вызывали звуковые волны на определенных частотах должны преобладать.Единая частота будет коррелировать с самим собой через временные интервалы, кратные период T каждого цикла. Мои «множественные размышления» были разделены около 0,0003 секунды (0,3 миллисекунды), что указывает на резонанс системы при около 3,3 кГц (1 / 0,0003 = 3333 Гц). Там есть также свидетельство резонанса примерно вдвое большей частоты.


Ранний эхо-график

С микрофоном и динамиком рядом, а твердый предмет удерживается примерно на 0,3 м. перед динамиком / микрофоном виден график выше.А также сильные прямые пик, есть второй пик эхо-сигнала (легко различимый в колебании после первого пика) примерно через 1,6 миллисекунды. Это указывает на разница расстояний в оба конца 330 נ 0,0016 = 0,53 м, расстояние до объекта 0,53 / 2 = 0,26 м. Небольшая недооценка можно объяснить небольшим, но немаловажным расстоянием между микрофонами и динамик!

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

Когда звук проходит через внутренний шлейф (чисто электрический, настоящих акустических волн нет) получается следующая картина — хороший представление «дельта-функции Кронекера».


Корреляция для внутренней петли (частотная характеристика плоская -3 дБ 20 Гц — 20 кГц) Шип идет на вниз, на , а не вверх, потому что какой-то дизайнер получил инвертирующий усилитель в петлевой тракт!

Но если регуляторы низких и высоких частот звуковой карты «средние» позиции (которые мы установили ранее, оставляют провал на 6 дБ в область 1-2кГц — см. выше) картина такая, как показано ниже.


Корреляция для внутренней петлевой проверки (регуляторы низких и высоких частот в «средних» положениях). Мгновенный выброс (темно-зеленый) вызван избытком высоких частот (высоких частот). отклика, а более длительное колебание (синий) вызвано избыточной низкочастотной (басовой) характеристикой.

Фактически, то, что показывает корреляционная функция, фактически является импульсный отклик системы.

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

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


Другие проекты частотного анализа

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

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


Еще в начале 2001 года я сказал:
«Думаю, можно сжимать записи речи до скорости 1000 бит / с или меньше, и по-прежнему сохраняйте звучание «естественным» … хотя это потребует некоторой работы! »

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

Я все еще, особенно в последние несколько недель (до 19 ноября 2001 г.), работает над подготовкой к решению этой задачи.


Последняя программа для анализа речи. Красная и зеленая полоса вверху показывает пиковая и среднеквадратичная амплитуда файла звукового образца как функция времени (всего около 4 секунд). Волнистые линии шкалы серого — это частотный спектр. график зависимости от времени; один пиксель представляет прибл. 43 Гц по вертикали и 1/86 второй по горизонтали. Желтый график — это также частотный спектр в зависимости от времени, но сжатые по логарифмической шкале частот. Зеленая волнистая линия на в самом низу показано отслеживание основной частоты во времени, а красная линия, наложенная на основной график частоты / времени, представляет третья гармоника обнаруженной основной гармоники.

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

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

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



Создано: Январь 2001
Последнее изменение: 14 августа 2015 г.

Источник: http://www.techmind.org/audio/
© 2001-2015 Уильям Эндрю Стир
[email protected]
Пример режима счетчика

STM32 — частотомер с модулем таймера

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


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

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

★ Ознакомьтесь с полным списком комплектов полного курса

Некоторое чрезвычайно полезное тестовое оборудование для поиска и устранения неисправностей:

Раскрытие информации для аффилированных лиц: когда вы нажимаете на ссылки в этом разделе и совершаете покупку, это может привести к тому, что этот сайт заработает комиссию.Партнерские программы и присоединения включают, помимо прочего, партнерскую сеть eBay (EPN) и Amazon.com.


STM32 Counter Mode LAB Предисловие

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

1 Режим прямого подсчета

В режиме прямого подсчета счетчик ведет отсчет от 0 до значения автоперезагрузки (содержимое регистра TIMx_ARR), затем перезапускается с 0 и генерирует событие переполнения счетчика. Событие обновления может генерироваться при каждом переполнении счетчика или путем установки бита UG в регистре TIMx_EGR (программно или с помощью контроллера подчиненного режима).

2 Режим обратного счета

В режиме обратного счета счетчик ведет отсчет от значения автоперезагрузки (содержимого регистра TIMx_ARR) до 0, затем перезапускается со значения автоперезагрузки и генерирует опустошение счетчика мероприятие.Событие обновления может генерироваться при каждом опустошении счетчика или путем установки бита UG в регистре TIMx_EGR (программно или с помощью контроллера режима ведомого).

3 Режим с выравниванием по центру (вверх / вниз)

В режиме с выравниванием по центру счетчик ведет отсчет от 0 до значения автоперезагрузки (содержимое регистра TIMx_ARR) — 1, генерирует событие переполнения счетчика, затем отсчитывает от значения автоперезагрузки до 1 и генерирует событие потери значимости счетчика. Затем он возобновляет отсчет с 0.В этом режиме бит направления (DIR из регистра TIMx_CR1) не может быть записан. Он обновляется аппаратно и показывает текущее направление счетчика.


STM32 Counter LAB9 Objectives

3 -целевой таймер (TIM2) для работы в режиме счетчика
  • Установите значение Preload на 20, чтобы счетчик переполнялся после 20 тиков и генерировал прерывание
  • Установите вход таймера Вывод GPIO
  • Настройте модуль USART1 для печати тиков счетчика значение для его мониторинга
  • Распечатайте специальное сообщение в подпрограмме ISR (событие переполнения счетчика), чтобы проверить правильность выполнения и обработки прерывания.

  • Таймер STM32 — режим счетчика LAB Config.

    Шаг 1: Откройте CubeMX и создайте новый проект

    Шаг 2: Выберите целевой MCU и дважды щелкните его имя

    Шаг 3: Настройте Таймер 2 Периферийное устройство для работы в режиме счетчика6

    9 что теперь источником синхронизации является внешний вывод (входной вывод таймера 2 ETR2), который, как вы можете видеть, выделен как A0 . Мы также можем настроить цифровой фильтр для этого входного канала, чтобы исключить шум из-за дребезга переключателя.Значение фильтра может варьироваться от 0 до 15. И, наконец, что не менее важно, выбор фронта для счетчика. Я хочу, чтобы счетчик считал каждый нарастающий фронт входного контакта.

    Я также включу функцию автоматической перезагрузки и установлю верхний предел счета на 20 «значение предварительной нагрузки». Теперь, когда счетчик считает 20 тиков, он переполняется и генерирует сигнал прерывания!

    Шаг 4: Включение сигнала прерывания от таймера на вкладке NVIC

    Шаг 5: Настройка модуля USART1 для работы в асинхронном режиме со скоростью 9600 бит / с

    Шаг 6: установка внешнего источника 9000 RCC

    Шаг 7: перейдите к настройке часов

    Шаг 8: Установите системные часы на 72 МГц или как хотите

    Шаг 9: Назовите и сгенерируйте код инициализации проекта для CubeIDE или IDE Вы Использование

    Затем откройте проект в IDE, которую вы используете.И перейдите в файл main.c. Итак, мы можем начать писать код приложения и взглянуть на код инициализации, сгенерированный инструментом STM32 CubeMX.


    Код приложения в CubeIDE

    Вот сгенерированный код инициализации в файле main.c

    LAB Number 9
    LAB Title Counter Mode — Basic Digital Counter

    1

    2

    3

    4

    000 4

    000

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    000 23

    24

    #include «main.h «

    TIM_HandleTypeDef htim2;

    UART_HandleTypeDef huart1;

    void SystemClock_Config (void); 9_0006

    static_MX_GPT_MX_GPT_

    static_

    static_ void);

    int main (void)

    {

    HAL_Init ();

    SystemClock_Config ();

    MX_GPIO_Init ();

    MX_TIM2_Init ();

    MX_TIM2_Init 9000_Init ();

    (1)

    {

    }

    }

    Теперь приложение, которое мы сейчас разрабатываем, должно многократно считывать счетчик тиков Timer2 и выводить vlaue через UART1 в виде строки на терминал для мониторинг.И когда оно достигает 20, срабатывает прерывание. И это тот же сигнал прерывания, что и в предыдущем руководстве, и у него будет та же функция обработчика.

    Итак, откройте файл stm32f1xx_it.c, чтобы найти обработчик прерывания таймера, которым является функция TIM2_IRQHandler (). Наведите указатель мыши на функцию HAL_TIM_IRQHandler () и щелкните правой кнопкой мыши, чтобы перейти к ее реализации.

    void TIM2_IRQHandler (void)

    {

    HAL_TIM_IRQHandler (& htim2);

    }

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

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    000 9002

    900 HAL_TIM_IRQHandler (TIM_HandleTypeDef * htim)

    {

    // Другой таймер прерывает события..

    // ..

    // ..

    // ..

    / * событие обновления TIM * /

    if (__HAL_TIM_GET_FLAG (htim, TIM_FLAG_UPDATE)! = RESET)

    {

    9000_T htim, TIM_IT_UPDATE)! = RESET)

    {

    __HAL_TIM_CLEAR_IT (htim, TIM_IT_UPDATE);

    #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)

    htim-> PeriodElapsedCallback (htim);

    #else

    HAL_TIM_PeriodElapsedCallback (htim);

    #endif / * USE_HAL_TIM_REGISTER_CALLBACKS * /

    }

    }

    //..

    // ..

    // Другие события прерывания таймера ..

    }

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

    Полный код лаборатории (main.в)

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11 140006000

    0002 11

    000

    000

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    28

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    #include «main.h «

    TIM_HandleTypeDef htim2;

    UART_HandleTypeDef huart1;

    uint8_t END_MSG [35] =» Достигнуто переполнение! Сброс счетчика! \ N \ r «;

    void SystemClock_Config (void);

    static void MX_GPIO_Init (void);

    static void MX_TIM2_Init (void);

    static void MX_USART1_Uid int main (void)

    {

    uint8_t MSG [20] = {‘\ 0’};

    uint16_t CounterTicks = 0;

    HAL_Init ();

    SystemClock_Config ();

    SystemClock_Config ();

    MX_TIM2_Init ();

    MX_USART1_UART_Init ();

    HAL_TIM_Base_Start_IT (& htim2);

    в то время как (1)

    Ticks CN

    =

    9Tick6 = счетчик

    9Tick6 // Распечатать счетчик тиков через UART1

    sprintf (MSG, «Ticks =% d \ n \ r», CounterTicks);

    HAL_UART_Transmit (& huart1, MSG, sizeof (MSG), 100);

    HAL_Delay (100) ;

    }

    }

    // Обработчик ISR переполнения счетчика

    void HAL_TIM_PeriodElapsedCallback (TIM_HandleTypeDef * htim)

    {

    HAL_UART_Gart size1, END_MSGu,

    }

    Создайте и запрограммируйте код и давайте протестируем результаты!

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

    HAL_TIM_Base_Start_IT (& htim2);


    Прототипирование и тестирование

    Step0: См. Схему и распиновку Blue Pill Board

    Step1: Подключите порт ST-Link к контактам USB На плате

    Шаг 2: Нажмите кнопку «Отладка», чтобы скомпилировать код, перенести его на плату и начать сеанс отладки

    Шаг 3. Вы можете остановить сеанс отладки или продолжить.Но вам нужно перезапустить MCU один раз, чтобы запустить новое приложение в процессе загрузки.

    Скачать CounterMode LAB9 Project

    Результаты для этой лаборатории

    Тестовая плата

    Кнопка -> A0

    USART1 -> USB-TTL Pins

    Видео

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


    Счетчик частоты STM32 — LAB10

    Модуль таймера в режиме счетчика
    Номер лаборатории 10
    Название лаборатории
    • Настройте TIM2 в качестве счетчика и подключите его входной контакт к источнику сигнала
    • Установите TIM3 в качестве таймера измерения, и он должен переполняться каждые 50 мсек (или любой интервал времени по вашему выбору)
    • Подсчитайте, сколько часов циклов в ISR TIM3, считывая тики счетчика TIM2 и умножая это значение на 20, вы получите фактическую частоту сигнала.
    • Настройте USART1 в асинхронном режиме со скоростью передачи = 9600 бит / с
    • Распечатайте вычисленную частоту на терминал последовательного порта


    Проект счетчика частоты STM32 LAB

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

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

    Шаг 1: Откройте CubeMX и создайте новый проект

    Шаг 2: Выберите целевой MCU и дважды щелкните его имя

    Шаг 3: Настройте таймер 2 для работы в режиме счетчика

    Шаг Периферийное устройство Timer3 для работы в режиме таймера (Tout = 0,05 сек)

    F CLK составляет 72 МГц, я буду использовать предделитель 100.Итак, вычисляя значение регистра предварительной загрузки. Получается 36000. Поэтому запишем это значение во вкладке конфигураций.

    Включите прерывания Timer3 на вкладке управления NVIC.

    Шаг 5: Настройте модуль USART1 для работы в асинхронном режиме со скоростью 9600 бит / с

    Шаг 6: Установите внешний источник синхронизации RCC

    Шаг 7: перейдите к конфигурации часов

    Шаг 8: Установите системные часы Быть 72 МГц

    Шаг 9: Назовите и сгенерируйте код инициализации проекта для CubeIDE или IDE, которую вы используете

    Вот код приложения для этой лаборатории

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    0002 43

    «главный.H»

    uint32_t gu32_CounterTicks = 0x00;

    uint32_t gu32_Freq = 0x00;

    uint8_t gu8_MSG [40] = { ‘\ 0’};

    TIM_HandleTypeDef htim2;

    TIM_HandleTypeDef htim3;

    UART_HandleTypeDef huart1;

    void SystemClock_Config (void);

    static void MX_GPIO_Init (void);

    static void MX_TIM2_Init (void);

    static void MX_TIM3_Init (void);

    static void

    int main (void)

    {

    HAL_Init ();

    SystemClock_Config ();

    MX_GPIO_Init ();

    MX_TIM2_Init ();

    MX_TIM2_Init ();

    MX_TIM3_Init ();

    MX_TIM3_Init () ;

    HAL_TIM_Base_Start_IT (& htim3);

    , а (1)

    {

    }

    }

    void HAL_TIM_PeriodElapsedCallback (TIM_HandleTypeDef * htim)

    {

    if (htim-> Instance == TIM3)

    {

    gu32_CounterTicks = TIM2-> CNT;

    gu32_Freq = gu32_CounterTicks * 20;

    sprintf (gu8_MSG, «Частота =% d Гц \ n \ r», gu32_Freq);

    HAL_UART_Transmit (& huart1, gu8_MSG, sizeof (gu8_MSG), 100);

    TIM3-> CNT = 0;

    TIM2-> CNT = 0;

    }

    }

    Скачать проект частотомера LAB10

    Полученные сообщения UART могут быть декодированы DSO

    Как вы можете видеть на моем экране DSO, декодированное сообщение показывает 2020 Гц для сигнала 2 кГц, что довольно близко.

    Результирующие сообщения UART на терминале последовательного порта (тестовое видео)

    Мои комментарии к этим результатам лабораторной работы

    Ошибка (дрейф) в измерении частоты составляет почти 1% от фактического ценить. Это не постоянная фиксированная ставка, поэтому мы можем легко компенсировать ее в коде. А также характер ошибки предполагает, что она повторяется и может происходить по нескольким причинам. Прежде всего, прерывание таймера (каждые 50 мсек) — это асинхронный сигнал.Он поступает не синхронно с входным сигналом, поэтому следует ожидать небольшого отклонения в измерениях.

    Другой момент — задержка прерывания также может способствовать небольшому увеличению количества тактов. И очистка обоих TIM2,3 в конце ISR может немного помочь. Фактически мы можем устранить этот процент ошибок с помощью некоторых калибровок. Однако у этой техники есть и будет много ограничений. Период таймера (50 мсек) определяет минимально допустимый входной сигнал, который может быть обнаружен и измерен.

    Оставить комментарий

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