![]() |
[09-2015] Новые режимы в комбинированном измерительном приборе
Новые режимы в комбинированном измерительном приборе А. САВЧЕНКО, пос. Зеленоградский Московской обл. В ходе эксплуатации комбинированного прибора [1] программа его микроконтроллера была значительно усовершенствована. Новая версия 2.03 этой программы предоставляет пользователю в дополнение к уже имеющимся режимы измерения частоты входного сигнала и однократной развёртки в логическом анализаторе. Новые функции реализованы чисто программным способом, в аппаратную часть прибора никаких изменений вносить не пришлось. Режим однократной развёртки был с самого начала предусмотрен в осциллографе прибора, однако автор не реализовал его в логическом анализаторе, хотя в нём он не менее полезен. В новой версии программы микроконтроллера это упущение исправлено. Теперь можно говорить, что логический анализатор, как и осциллограф прибора, имеет два режима работы развёртки: регулярный и однократный. Они практически идентичны за двумя исключениями. Во-первых, в логическом анализаторе не измеряется напряжение входного сигнала. Эта операция здесь не имеет смысла, поскольку исследуются сигналы стандартных логических уровней. Во-вторых, выводимая на экран дополнительная информация о положении информационного кадра на оси времени в режиме логического анализатора не накладывается на область осциллограмм и не мешает их наблюдению. Поэтому её выключение не реализовано за ненадобностью. Пример изображения на экране индикатора в режиме однократной развёртки логического анализатора показан на рис. 1. Из режима регулярной развёртки анализатора в этот режим входят нажатием на клавишу "5". В нём действуют следующие управляющие клавиши: "4" — перемещение кадра влево (к началу буфера); ”5" — остановка перемещения по отсчётам сигнала; "6" — перемещение кадра вправо (к концу буфера); "О" — выбор шага перемещения (отсчёт или кадр); "D" — выход из режима однократной развёртки. Полное описание режима однократной развёртки не приводится, так как оно достаточно полно изложено в [2] применительно к осциллографу. Что касается режима измерения частоты, то микроконтроллер семейства ATxmega позволяет реализовать несколько его вариантов. Наряду с классическим подсчётом числа периодов измеряемого сигнала за единицу времени, таймеры-счётчики этого микроконтроллера способны выполнять прямое измерение периода следования импульсов входного сигнала, что позволяет легко рассчитать частоту их следования. Достоинство этого метода — малое время измерения, однако приемлемая точность сохраняется лишь до частоты не выше нескольких десятков килогерц. В связи с этим измерение частоты сигнала в приборе производится упомянутым выше классическим методом. Его принцип прост. Один таймер-счётчик формирует измерительный интервал времени, второй подсчитывает импульсы входного сигнала в течение этого интервала. Если длительность измерительного интервала 1 с, то накопленное за это время во втором счётчике число и есть частота сигнала в герцах. Однако на пути реализации этого метода есть сложности. Во-первых, все таймеры-счётчики микроконтроллера семейства ATxmega [3] — 16-разрядные. Значит, максимальная корректно измеряемая таким счётчиком частота ограничена переполнением его счётного регистра и равна http://morepic.ru/images3/1_3355_8035.jpg. Этого явно мало, учитывая, что элементы микроконтроллера работоспособны до частоты 32 МГц. Самый простой путь увеличить максимальную измеряемую частоту — уменьшение измерительного интервала. Например, сокращение его в четыре раза приведёт к росту в четыре раза максимального значения измеряемой частоты. Одновременно во столько же раз вырастет дискретность её измерения, ведь каждый импульс будет "весить” в четыре раза больше. Поэтому такой путь нецелесообразен. Добиться увеличения максимальной измеряемой частоты без роста дискретности измерения можно только увеличением разрядности счётчика импульсов входного сигнала. Архитектура микроконтроллера ATxmega даёт такую возможность, позволяя соединять последовательно несколько таймеров-счётчиков. Чтобы получить 32-разряд-ный счётчик, достаточно объединить два 16-разрядных таймера-счётчика. Переполнение 32-разрядного счётчика за секунду может произойти лишь на частоте http://morepic.ru/images3/1_5952_2798.jpg, так что верхний предел измеряемой частоты в этом случае ограничен только частотными свойствами элементов микроконтроллера и равен 32 МГц. Во-вторых, необходимо "довести" входной сигнал от линии порта до таймера-счётчика и заставить последний считать импульсы в широком интервале частоты их следования. В-третьих, необходимо обеспечить строго синхронную работу всех участвующих в процессе счёта элементов микроконтроллера вне зависимости от работы других его узлов, чтобы избежать разного рода непрогнозируемых сбоев счёта. Преодолеть эти сложности поможет имеющийся в микроконтроллерах семейства ATxmega замечательный инструмент — система событий [4]. С её помощью можно сформировать все необходимые для работы сигналы и транспортировать их от источника до приёмника с минимально возможной и, что очень важно, стабильной задержкой. Функциональная схема реализованного в рассматриваемом приборе частотомера изображена на рис. 2. Аппаратура порта ввода—вывода позволяет анализировать состояние каждой его линии и генерировать события в случае их изменения. Например, формировать события по каждому нарастающему или спадающему перепаду входного сигнала. Таймеры-счётчики способны считать не только внутренние синхроимпульсы микроконтроллера, но и сигналы событий. Из этого становится понятным, как организован счёт импульсов входного сигнала. Сигнал подают на линию PF3, которая сконфигурирована как вход и генерирует события по нарастающим перепадам сигнала (по одному событию на каждый период). Таймер-счётчик ТСС1 работает в режиме счётчика событий, доставляемых по каналу 3 маршрутизатора событий. Он же генерирует и отправляет в канал 4 маршрутизатора события переполнения (OVF) своего 16-раз-рядного счётного регистра. Их подсчитывает таймер-счётчик TCD1, настроенный на работу в режиме 16-разрядно-го счётчика событий, доставляемых по каналу 4. Раз в секунду по сигналу окончания счётного интервала, формируемого таймером-счётчиком TCF0, настроенного на счёт импульсов синхронизатора микроконтроллера, программа "склеивает" результаты работы таймеров счётчиков ТСС1 HTCD1 в одно 32-разрядное слово и присваивает его значение переменной. Затем она перезапускает все таймеры-счётчики, начиная новый цикл измерения частоты. Основными источниками погрешности измерения частоты следует считать: 1. Неточность установки тактовой частоты микроконтроллера, в результате чего реальная длительность измерительного интервала отличается от одной секунды. У этой погрешности две составляющие: систематическая и случайная. Систематическая составляющая — результат неравенства фактического среднего значения тактовой частоты номинальному. Она носит постоянный характер, её можно скомпенсировать. О том, как это сделать, будет рассказано ниже. Случайная составляющая погрешности возникает вследствие флюктуации частоты тактового генератора. Факторов, её порождающих, довольно много. Это нестабильность и пульсации питающего напряжения, собственный шум элементов генератора, влияние температуры и пр. В приборах высокого класса для минимизации вредного воздействия подобных факторов применяется целый комплекс мер, вплоть до термостабилизации и виброзащиты тактового генератора. Однако погрешность этого вида можно только уменьшить, полностью избавиться от неё нельзя. В авторском экземпляре прибора она не превышает ± 0,001 %. Это значит, что частота 5 МГц измеряется с ошибкой ±50 Гц. 2. Погрешность дискретизации результата измерения. Она знакома всем, кто когда-либо имел дело с любым цифровым измерительным прибором. Происхождение этой погрешности поясняют графики на рис. 3. В зависимости от взаимного расположения на оси времени границ измерительного интервала и регистрируемых счётчиком перепадов измеряемого сигнала результат счёта может различаться на единицу. Например, в показанном на рисунке случае может быть сосчитано 6 или 7 импульсов при фактической частоте их повторения около 6,6 Гц (при длительности интервале счёта 1 с). Этот эффект сохраняется при любом соотношении измеряемой частоты и интервала счёта. При многократном повторении измерения младшая цифра его результата "скачет" на единицу от цикла к циклу. Относительная величина этой погрешности растёт обратно пропорционально измеряемой частоте. Например, частота около 100 Гц будет измерена со средней относительной погрешностью ±0,5 %. На частоте в несколько мегагерц и выше погрешностью дискретизации можно пренебречь. Здесь превалирует случайная составляющая длительности измерительного интервала. Блок программы, выполняющий измерение частоты, разработан, как и вся программа, в системе разработки программ BASCOM AVR. При входе в режим частотомера программа соответствующим образом настраивает элементы внутренней структуры микроконтроллера, участвующие в измерении частоты: — линию PF3, на которую поступает входной сигнал, конфигурирует как вход, генерирующий события по нарастающим перепадам сигнала, а канал 3 маршрутизатора событий — на передачу сигналов об этих событиях: — настраивает таймер-счётчик TCF0 на генерацию измерительного интервала длительностью 1 с: — настраивает таймер-счётчик ТСС1 на подсчёт событий, поступающих через канал 3 маршрутизатора от линии PF3: http://morepic.ru/images3/1_9878_4581.jpg а канал 4 маршрутизатора — на передачу сигналов о переполнении таймера-счётчика ТСС1: — настраивает таймер-счётчик на подсчёт событий, поступающих из канала 4 маршрутизатора: В результате таймеры-счётчики ТСС1 и TCD1 образуют единый 32-рарядный счётчик. Теперь система готова к подсчёту периодов измеряемого сигнала. Более того, он уже ведётся, так как каждое из рассмотренных устройств начинает работать сразу после инициализации. Но чтобы получить правильный результат, необходимо в момент начала измерительного интервала начать подсчёт событий с нуля. Поэтому цикл измерения следует начинать с одновременного обнуления всех трёх участвующих в нём таймеров-счётчиков. Особенно важно привязать к началу измерительного интервала (моменту перезапуска таймера TCF0) момент перезапуска работающего с наибольшей скоростью таймера-счётчика ТСС1. Вопрос строгой привязки момента перезапуска таймера-счётчика TCD1 к началу измерительного интервала так остро не стоит. Первое событие, которое он должен будет сосчитать, произойдёт только при переполнении таймера-счётчика ТСС1. Хотя возможность одновременного перезапуска нескольких таймеров-счётчиков в микроконтроллере предусмотрена, но реализуется она только через систему событий. Использовать её в рассматриваемом случае не удаётся, так как таймер-счётчик ТСС1 настроен на приём сигналов событий из канала 3 и принимать сигналы событий из других каналов без перенастройки не может. Поэтому подать таймерам-счётчикам команду перезапуска может только процессор, причём только поочерёдно. Цикл измерения частоты состоит из двух этапов: собственно измерения и формирования его результата. Этап измерения описывают следующие пять строк программы: Первые три строки этого фрагмента перезапускают таймеры-счётчики в порядке TCF0, ТСС1, TCD1. Поэтому таймер-счётчик ТСС1 начинает считать события не в момент начала измерительного интервала, отсчитываемого таймером-счётчиком TCF0, а с задержкой At, относительно этого момента (рис. 4). Она равна продолжительности выполнения процессором операции перезагрузки таймера-счётчика ТСС1. Следом с такой же задержкой процессор перезапускает таймер-счётчик TCD1, после чего начинает ждать момент окончания измерительного интервала. Когда этот момент наступит, таймер-счётчик TCF0 установит в нулевом разряде регистра TCF0JNTFLAGS флаг запроса прерывания по переполнению. Обнаружив этот флаг, процессор должен запретить таймеру-счётчику ТСС1 дальнейший счёт событий (периодов измеряемого сигнала). Сделать это можно по-разному. В нашем случае последней операцией этапа измерения процессор просто отключает канал 3 маршрутизатора событий. На эту операцию ему требуется время At2 (рис. 4), в течение которого счёт периодов продолжается. Если http://morepic.ru/images3/1_5659_6991.jpg реальная продолжительность счёта событий (измерения частоты) отличается на http://morepic.ru/images3/1_4625_8667.jpg, от заданной длительности измерительного интервала, это порождает ещё одну составляющую погрешности измерения. Чтобы устранить её, необходимо сделать эти задержки равными. Однако в программе на языке высокого уровня (в том числе BASCOM AVR) определить точные значения их длительности затруднительно, поскольку программисту неизвестен алгоритм трансляции используемых конструкций языка в машинные команды. Поэтому в реальной программе фрагменты, выполняющие перезапуск таймера-счётчика ТСС1, а также фиксирующие окончание измерительного интервала и останавливающие ТСС1, написаны на языке ассемблера, причём приняты меры по обеспечению одинаковой длительности исполнения этих фрагментов. Этим достигается равенство http://morepic.ru/images3/1_4625_8667.jpg, и, следовательно, равенство реальной длительности измерительного интервала заданной. Далее рассмотрим реализованный в приборе способ устранения систематической погрешности, связанной с неравенством тактовой частоты микроконтроллера номинальному значению. Как отмечалось выше, следствие такого несоответствия — отклонение длительности измерительного интервала от требуемого значения 1 с и пропорциональное ему отклонение измеренного значения частоты от фактического. Прежде всего это отклонение нужно измерить. Для этого потребуется образцовый генератор сигнала частотой в несколько мегагерц или комплект из любого достаточно стабильного генератора и образцового частотомера. Сигнал генератора подают на гнёзда 8 и 3 (общий) разъёма Х5 прибора. Коды из прилагаемого к статье файла Osc-Volt-2_03.hex загружают в программную память микроконтроллера прибора. После включения прибор переводят в режим частотомера и измеряют им частоту образцового генератора. Измерение нужно повторить 10—20 раз, после чего вычислить среднее измеренное значение частоты FM3M. Поправочный коэффициент вычисляют по формуле Она обозначена меткой Compensation: для облегчения поиска. Её следует раскомментировать, а множитель 1.000004 (это значение справедливо для авторского экземпляра прибора) заменить найденным значением поправочного коэффициента К. После этого необходимо скомпилировать откорректированную программу и загрузить коды из полученного НЕХ-файла в программную память микроконтроллера. Как уже было сказано, сигнал, частоту которого необходимо измерить, подают на гнездо 8 разъёма Х5 прибора, откуда он поступает на вход PF3 микроконтроллера. Понятно, что микроконтроллер способен правильно воспринять только такой сигнал, уровни которого соответствуют принятым в трёх- или пятивольтной логике. Для измерения частоты сигналов другой формы (например, синусоидальных) требуется дополнительный формирователь. Хорошие результаты даёт применение щупа-компаратора, описанного в [5]. Его можно подключить к разъёму Х5 прибора. Нужно только подать с платы А1 прибора на свободное гнездо 2 этого разъёма напряжение +5 или +3,3 В для питания щупа (он работоспособен при любом из указанных значений напряжения). Подключают щуп по схеме, изображённой на рис. 5. Вид экрана индикатора прибора в режиме частотомера показан на рис. 6. В этот режим входят из регулярного режима логического анализатора нажатием на клавишу "ЛА". Переключают прибор из режима частотомера в другие режимы нажатиями на следующие клавиши: "ОС" — в режим осциллографа; "ЛА" — в режим логического анализатора; "ГН" — в режим генератора сигналов. ЛИТЕРАТУРА 1. Савченко А. Усовершенствование комбинированного прибора на базе микроконтроллера ATxmega. — Радио, 2015, N2 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. |
| Часовой пояс GMT +3, время: 12:55. |
Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot