RadioRadar - Радиоэлектроника, даташиты, схемы

https://www.radioradar.net/radiofan/measuring_technics/combined_meter.html

Новые режимы в комбинированном измерительном приборе

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

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

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

Пример изображения на экране индикатора в режиме однократной развёртки логического анализатора показан на рис. 1.

Изображение на экране индикатора в режиме однократной развёртки логического анализатора

Рис. 1. Изображение на экране индикатора в режиме однократной развёртки логического анализатора

 

Из режима регулярной развёртки анализатора в этот режим входят нажатием на клавишу "5". В нём действуют следующие управляющие клавиши:

"4" - перемещение кадра влево (к началу буфера);

"5" - остановка перемещения по отсчётам сигнала;

"6" - перемещение кадра вправо (к концу буфера);

"О" - выбор шага перемещения (отсчёт или кадр);

"D" - выход из режима однократной развёртки.

Полное описание режима однократной развёртки не приводится, так как оно достаточно полно изложено в [2] применительно к осциллографу.

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

Его принцип прост. Один таймер-счётчик формирует измерительный интервал времени, второй подсчитывает импульсы входного сигналав течение этого интервала. Если длительность измерительного интервала 1 с, то накопленное за это время во втором счётчике число и есть частота сигнала в герцах. Однако на пути реализации этого метода есть сложности.

Во-первых, все таймеры-счётчики микроконтроллера семейства ATxmega [3] - 16-разрядные. Значит, максимальная корректно измеряемая таким счётчиком частота ограничена переполнением его счётного регистра и равна 216 - 1 = 65535 Гц. Этого явно мало, учитывая, что элементы микроконтроллера работоспособны до частоты 32 МГц.

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

Добиться увеличения максимальной измеряемой частоты без роста дискретности измерения можно только увеличением разрядности счётчика импульсов входного сигнала. Архитектура микроконтроллера ATxmega даёт такую возможность, позволяя соединять последовательно несколько таймеров-счётчиков. Чтобы получить 32-разрядный счётчик, достаточно объединить два 16-разрядных таймера-счётчика. Переполнение 32-разрядного счётчика за секунду может произойти лишь на частоте 2 - 1 = 4294967295 Гц, так что верхний предел измеряемой частоты в этом случае ограничен только частотными свойствами элементов микроконтроллера и равен 32 МГц.

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

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

Преодолеть эти сложности поможет имеющийся в микроконтроллерах семейства ATxmega замечательный инструмент - система событий [4]. С её помощью можно сформировать все необходимые для работы сигналы и транспортировать их от источника до приёмника с минимально возможной и, что очень важно, стабильной задержкой.

Функциональная схема реализованного в рассматриваемом приборе частотомера изображена на рис. 2. Аппаратура порта ввода-вывода позволяет анализировать состояние каждой его линии и генерировать события в случае их изменения. Например, формировать события по каждому нарастающему или спадающему перепаду входного сигнала. Таймеры-счётчики способны считать не только внутренние синхроимпульсы микроконтроллера, но и сигналы событий. Из этого становится понятным, как организован счёт импульсов входного сигнала.

Функциональная схема реализованного в рассматриваемом приборе частотомера

Рис. 2. Функциональная схема реализованного в рассматриваемом приборе частотомера

 

Сигнал подают на линию PF3, которая сконфигурирована как вход и генерирует события по нарастающим перепадам сигнала (по одному событию на каждый период). Таймер-счётчик TCC1 работает в режиме счётчика событий, доставляемых по каналу 3 маршрутизатора событий. Он же генерирует и отправляет в канал 4 маршрутизатора события переполнения (OVF) своего 16-разрядного счётного регистра. Их подсчитывает таймер-счётчик TCD1, настроенный на работу в режиме 16-разрядного счётчика событий, доставляемых по каналу 4.

Раз в секунду по сигналу окончания счётного интервала, формируемого таймером-счётчиком TCF0, настроенного на счёт импульсов синхронизатора микроконтроллера, программа "склеивает" результаты работы таймеров счётчиков TCC1 иTCD1 в одно 32-разрядное слово и присваивает его значение переменной. Затем она перезапускает все таймеры-счётчики, начиная новый цикл измерения частоты.

Основные характеристики в режиме измерения частоты

Измеряемая частота, Гц .................от    1  до 32·106

Дискретность отсчёта частоты, Гц..........................1

Длительность счётного интервала, с ...................... 1

Погрешность длительности счётного интервала, % ........±0,001

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

1. Неточность установки тактовой частоты микроконтроллера, в результате чего реальная длительность измерительного интервала отличается от одной секунды. У этой погрешности две составляющие: систематическая и случайная.

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

Случайная составляющая погрешности возникает вследствие флюктуации частоты тактового генератора. Факторов, её порождающих, довольно много. Это нестабильность и пульсации питающего напряжения, собственный шум элементов генератора, влияние температуры и пр. В приборах высокого класса для минимизации вредного воздействия подобных факторов применяется целый комплекс мер, вплоть до термостабилизации и виброзащиты тактового генератора. Однако погрешность этого вида можно только уменьшить, полностью избавиться от неё нельзя. В авторском экземпляре прибора она не превышает ± 0,001 %. Это значит, что частота 5 МГц измеряется с ошибкой ±50 Гц.

2. Погрешность дискретизации результата измерения. Она знакома всем, кто когда-либо имел дело с любым цифровым измерительным прибором. Происхождение этой погрешности поясняют графики на рис. 3. В зависимости от взаимного расположения на оси времени границ измерительного интервала и регистрируемых счётчиком перепадов измеряемого сигнала результат счёта может различаться на единицу. Например, в показанном на рисунке случае может быть сосчитано 6 или 7 импульсов при фактической частоте их повторения около 6,6 Гц (при длительности интервале счёта 1 с). Этот эффект сохраняется при любом соотношении измеряемой частоты и интервала счёта. При многократном повторении измерения младшая цифра его результата "скачет" на единицу от цикла к циклу. Относительная величина этой погрешности растёт обратно пропорционально измеряемой частоте. Например, частота около 100 Гц будет измерена со средней относительной погрешностью ±0,5 %. На частоте в несколько мегагерц и выше погрешностью дискретизации можно пренебречь. Здесь превалирует случайная составляющая длительности измерительного интервала.

Графики, поясняющие возникновение погрешности

Рис. 3. Графики, поясняющие возникновение погрешности

 

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

- линию PF3, на которую поступает входной сигнал, конфигурирует как вход, генерирующий события по нарастающим перепадам сигнала, а канал 3 маршрутизатора событий - на передачу сигналов об этих событиях:

Portf_pin3ctrl=1

Evsys_ch3mux=&B01111011

- настраивает таймер-счётчик TCF0 на генерацию измерительного интервала длительностью 1 с:

config Tcf0=Normal,Prescale=7

Tcf0_per=31249

- настраивает таймер-счётчик TCC1 на подсчёт событий, поступающих через канал 3 маршрутизатора от линии PF3:

config Tcc1=Normal

Tcc1_ctrla=&B00001011

Tcc1_ctrld=&B00001011

а канал 4 маршрутизатора - на передачу сигналов о переполнении таймера-счётчика TCC1 :

Evsys_ch4mux=&B11001000

- настраивает таймер-счётчик на подсчёт событий, поступающих из канала 4 маршрутизатора:

config Tcd1=Normal

Tcd1_ctrlа=&в00001100

Tcd1_ctrld=&в00011100

В результате таймеры-счётчики TCC1 и TCD1 образуют единый 32-разрядный счётчик. Теперь система готова к подсчёту периодов измеряемого сигнала. Более того, он уже ведётся, так как каждое из рассмотренных устройств начинает работать сразу после инициализации. Но чтобы получить правильный результат, необходимо в момент начала измерительного интервала начать подсчёт событий с нуля. Поэтому цикл измерения следует начинать с одновременного обнуления всех трёх участвующих в нём таймеров-счётчиков.

Особенно важно привязать к началу измерительного интервала (моменту перезапуска таймера TCF0) момент перезапуска работающего с наибольшей скоростью таймера-счётчика TCC1. Вопрос строгой привязки момента перезапуска таймера-счётчика TCD1 к началу измерительного интервала так остро не стоит. Первое событие, которое он должен будет сосчитать, произойдёт только при переполнении таймера-счётчика TCC1.

Хотя возможность одновременного перезапуска нескольких таймеров-счётчиков в микроконтроллере предусмотрена, но реализуется онатолько через систему событий. Использовать её в рассматриваемом случае не удаётся, так как таймер-счётчик TCC1 настроен на приём сигналов событий из канала 3 и принимать сигналы событий из других каналов без перенастройки не может. Поэтому подать таймерам-счётчикам команду перезапуска может только процессор, причём только поочерёдно.

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

Tcf0_ctrlfset=&B00001000

Tcc1_ctrlfset=&B00001000

Tcd1_ctrlfset=&B00001000

Bitwait Tcf0_intflags.0, Set

Evsys_ch3mux=&B00000000

Первые три строки этого фрагмента перезапускают таймеры-счётчики в порядке TCF0, TCC1, TCD1. Поэтому таймер-счётчик TCC1 начинает считать события не в момент начала измерительного интервала, отсчитываемого таймером-счётчиком TCF0, а с задержкой Δt1 относительно этого момента (рис. 4). Она равна продолжительности выполнения процессором операции перезагрузки таймера-счётчика TCC1. Следом с такой же задержкой процессор перезапускает таймер-счётчик TCD1, после чего начинает ждать момент окончания измерительного интервала. Когда этот момент наступит, таймер-счётчик TCF0 установит в нулевом разряде регистра TCF0_JNTFLAGS флаг запроса прерывания по переполнению.

Работа таймера-счётчика

Рис. 4. Принцип работа таймера-счётчика

 

Обнаружив этот флаг, процессор должен запретить таймеру-счётчику TCC1 дальнейший счёт событий (периодов измеряемого сигнала). Сделать это можно по-разному. В нашем случае последней операцией этапа измерения процессор просто отключает канал 3 маршрутизатора событий. На эту операцию ему требуется время Δt2  (рис. 4), в течение которого счёт периодов продолжается.

Если Δt2 ≠ Δt1 , реальная продолжительность счёта событий (измерения частоты) отличается на Δt- Δt1 от заданной длительности измерительного интервала, это порождает ещё одну составляющую погрешности измерения. Чтобы устранить её, необходимо сделать эти задержки равными. Однако в программе на языке высокого уровня (в том числе BASCOM AVR) определить точные значения их длительности затруднительно, поскольку программисту неизвестен алгоритм трансляции используемых конструкций языка в машинные команды. Поэтому в реальной программе фрагменты, выполняющие перезапуск таймера-счётчика TCC!, а также фиксирующие окончание измерительного интервала и останавливающие TCC!, написаны на языке ассемблера, причём приняты меры по обеспечению одинаковой длительности исполнения этих фрагментов. Этим достигается равенство Δt2 = Δt1 и, следовательно, равенство реальной длительности измерительного интервала заданной.

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

Прежде всего это отклонение нужно измерить. Для этого потребуется образцовый генератор сигнала частотой в несколько мегагерц или комплект из любого достаточно стабильного генератора и образцового частотомера. Сигнал генератора подают на гнёзда 8 и 3 (общий) разъёма X5 прибора.

Коды из прилагаемого к статье файла Osc-Volt-2_03.hex загружают в программную память микроконтроллера прибора. После включения прибор переводят в режим частотомера и измеряют им частоту образцового генератора. Измерение нужно повторить 10-20 раз, после чего вычислить среднее измеренное значение частоты Fизм. Поправочный коэффициент вычисляют по формуле

K = Fобр/Fизм ,

где Fобр - частота образцового генератора. Чтобы ввести коэффициент K в программу, в файле Osc-Volt-2_03.bas (исходном тексте программы) необходимо найти закомментированную строку

compensation: 'Temp2=Temp2*1.000004

Она обозначена меткой Compensation: для облегчения поиска. Её следует раскомментировать, а множитель 1.000004 (это значение справедливо для авторского экземпляра прибора) заменить найденным значением поправочного коэффициента K. После этого необходимо скомпилировать откорректированную программу и загрузить коды из полученного HEX-файла в программную память микроконтроллера.

Как уже было сказано, сигнал, частоту которого необходимо измерить, подают на гнездо 8 разъёма Х5 прибора, откуда он поступает на вход PF3 микроконтроллера. Понятно, что микроконтроллер способен правильно воспринять только такой сигнал, уровни которого соответствуют принятым в трёх- или пятивольтной логике. Для измерения частоты сигналов другой формы (например, синусоидальных) требуется дополнительный формирователь. Хорошие результаты даёт применение щупа-компаратора, описанного в [5]. Его можно подключить к разъёму Х5 прибора. Нужно только подать с платы А! прибора на свободное гнездо 2 этого разъёма напряжение +5 или +3,3 В для питания щупа (он работоспособен при любом из указанных значений напряжения). Подключают щуп по схеме, изображённой на рис. 5.

Схема подключения щупа

Рис. 5. Схема подключения щупа

 

Вид экрана индикатора прибора в режиме частотомера показан на рис. 6.

Вид экрана индикатора прибора в режиме частотомера

Рис. 6. Вид экрана индикатора прибора в режиме частотомера

 

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

"ОС" - в режим осциллографа;

"ЛА" - в режим логического анализатора;

"ГН" - в режим генератора сигналов.

Программу микроконтроллера можно скачать здесь.

Литература

1. Савченко А. Усовершенствование комбинированного прибора на базе микроконтроллера ATxmega. - Радио, 2015, № 3, с. 29-34.

2. Савченко А. Комбинированный прибор на базе микроконтроллера ATxmega. - Радио, 2014, № 4, с. 18-22; №5, с. 22-25.

3. Савченко А. Средства генерации, счёта импульсов и временных интервалов в ATxmega. - Радио, 2015, №8, с. 25-28.

4. Савченко А. Система событий микроконтроллеров ATxmega. - Радио, 2015, № 2, с. 24-27.

5. Нечаев И. Щуп-компаратор для частотомера. - Радио, 2014, № 7, с. 20.

Автор: А. Савченко, пос. Зеленоградский Московской обл.