Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Измерение частоты и длительности импульса



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

1. Принцип измерения

В основе измерителя лежит счетчик с логическим ключом.


(1)

Nx=tn*FF (2)

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

Этот принцип измерения реализуется во всех измерителях частоты и длительности.

2. Программный счет внешних импульсов

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

mCount = 0;

WHILE (!mFlag1s); // ждем начала

mFlag1s = 0; //сброс флага

WHILE (!mFlag1s)

{While (mPin); //ждем «1»

WHILE (!mPin); //ждем «0»

mCount++; //инкремент

}

mFlag1s = 0;

ToBufInd(mCount); //индикация

Программа написана для х51.

3. Использование внешнего прерывания при счете импульсов

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

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

4. Счет внешних импульсов при помощи таймера

Внутренний таймер большинства процессоров может считать кроме тактовых импульсов и внешние импульсы. Например, в семействе х51 есть специальный бит C/T, если он равен 0, то включен ражим таймера - счет внутренних тактовых импульсов, если 1 - включении счет внешних импульсов по альтернативному внешнему выводу. Этого бита в других процессорах нет, но есть другие средства, например, в AVR. Каждый таймер имеет предделитель, который позволяет или остановить таймер, или грубо задать частоту делителя. Делается это про помощи битов ClockSelect. Таких битов 3. То есть, есть 8 комбинаций. Причем последний 2 комбинации позволяют подключить не вход таймера внешний сигнал от альтернативного выхода в прямом или инверсном виде.

Счет импульсов нужен для измерения частоты. То есть на интервале в 1с. И мы должны для измерения частоты пустить в начале 1с таймер на счет внешних импульсов. И в конце 1с остановить таймер, прочитать и обработать результат.

5. Косвенное измерение частоты

Результат при измерении частоты получается через 1 с. Чтобы ускорить получение результата интервал времени можно выбрать меньший, например, 0.1 с, а количество импульсов за 0.1 с потом умножить на 10 и получим частоту. Однако при измерении низких частот, имеющих период, сравнимый с уменьшенным интервалом счета, получается большая погрешность. И в подобных случаях переходят к косвенному методу измерения частоты, основанному на формуле F=1/T. При этом результат получается значительно быстрее. Но процессор должен иметь вычислительные ресурсы, средства для операции деления. Причем деление должно быть многоразрядным, а это не всегда есть в процессоре.

Можно использовать в этом случае программные процедура многобайтового деления.

6. Программное измерение длительности импульсов

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

Опросы происходят через определенное время и заполняют длительность импульса подобно делениям мерной линейки. И поэтому программа для определения длительности импульсов заключается в выполнении следующих действий - ждем начала импульса, а потом начинаем счет количества опросов. Когда импульс закончился количество запросов будет пропорционально Tимп. То есть Тимп=Nx*tопр. Tопр можно определить анализируя ассемблерную программу или экспериментально.

Программа

mCountOpr = 0;

WHILE(!mPin); //ждем окончания импульса

WHILE (mPin); //ждем начала импульса

WHILE (mPin)

{ While (mPin)

mCountOpr++;

}

Вторая строчка нужна чтобы мы начали работу тогда когда импульса нет, чтобы не попать случайно на конец импульса. Если 1, то считаем и т.д.

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

7. Внешнее управление таймером в семействе х51

в х51 имеется режим внешнего управления подачей внутренних тактовых импульсов. Когда внешний сигнал пропускает или не пропускает внутренний импульсы на счетчик.

В этом случае происходит аппаратный счет тактовых импульсов, не программный, что не занимает процессор. Чтобы перевести таймер х51 в такой режим используется бит GATE. Если он равен 0, то внешний сигнал не влияет на счет. Если равен 1, то внешний сигнал начинает играть роль бита TR, который пропускает тактовые импульсы на счетчик.

Бит TR все равно используется. Он подает тактовые импульсы. А пропускаются они на счетчик за счет внешнего сигнала. Последовательность действий для измерений длительности импульса:

1. Обнулить регистры данных таймера

2. Задать режим 16-битного счета и установить бит GATE

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

8. Режим захвата для измерения периода импульса

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

Прим.: режим захвата может быть реализован для нескольких входных сигналов. Все зависит от кристалла. Даже в х51 есть такой режим.





Дата публикования: 2015-01-23; Прочитано: 1833 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...