Генератор-частотомер на MSP430

Хочу предложить несложный, но очень полезный в радиолюбительской практике прибор. Он сочетает в себе генератор и частотомер.

Прибор имеет следующие характеристики:

Генератор:
генерируемая частота в низкочастотном диапазоне 0-15000 Гц с дискретностью 0.0005 Гц
генерируемая частота в высокочастотном диапазоне 0-4000000 Гц с дискретностью 0.03 Гц
амплитуда выходного сигнала 3В
Максимальный выходной ток 300мА
форма сигнала: синус треугольник меандр.

Частотомер:
измеряемый диапазон 0.01Гц-25МГц.
точность измерения в диапазоне 1Гц-1МГц 0.01Гц
точность измерения в диапазоне 1МГц-25МГц 1Гц
чувствительность не хуже 500мВ

В качестве ядра прибора выступает микроконтроллер MSP430F147 (может быть без проблем и изменения кода заменен на любой из следующих микроконтроллеров MSP430F133 MSP430F135 MSP430F148 MSP430F149). В качестве экрана используется экран от Nokia 1202 с программной реализацией интерфейса SPI. В роли генератора используется широко известный генератор прямого цифрового синтеза AD9833 от Analog Device. Контроллер использует два источника тактирования: от высокочастотного кварца на 8МГц и часового кварца 32768Гц. Благодаря возможности буферизирования тактовых частот на ногах ввода-вывода появляется возможность переключения тактовой частоты генератора AD9833, что позволяет получить низкочастотный генератор в высокой разрешающей способностью, так и высокочастотный генератор. Для увеличения выходной мощности генератора и увеличения амплитуды выходного сигнала используется операционный усилитель AD8397. Схема устройства приведена на рисунке.

Частотомер до 1МГц выполнен на хорошо себя зарекомендовавшем принципе временных ворот в котором начало и конец временных ворот формируются фронтами измеряемого сигнала. Точность в этом случае определяется точностью тактовой частоты. Наличие асинхронного таймера в контроллере позволяет измерять частоты выше тактовой. Хотя в даташите на микроконтроллер и указана максимальная частота на входе INCLK таймера 10МГц это дает основание предположить, что частота на входной ноге INCLK может быть асинхронна и выше тактовой. Дальнейшая проверка это подтвердила. Если в методе временных ворот частота оказалась выше 1МГЦ, то частотомер автоматически переключается на метод подсчета измеряемых импульсов за 1с. На экране это видно по обнуленным разрядам измеряемой частоты после запятой.

На рисунке показан принцип измерения частоты методом временных ворот формируемых входной частотой.


В микроконтроллере настраиваются два таймера. Один тактируется от высокочастотного кварца 8МГц, а второй тактируется от внешнего входа INCLK. Оба находятся в режиме стоп.
На первом этапе программа стоит пока на ножке INCLK высокий уровень. На втором этапе как лишь он сменяется низким уровнем то программ опять останавливается до появления фронта сигнала. (это необходимо для исключения ошибочного измерения в случае начала измерения например в середине входного импульса, таким образом захватывается именно фронт).После этого на третьем этапе включаются оба таймера в режиме счета с прерыванием. В прерываниях инкрементируются переменные для расширения разрядности счетчиков. После включения таймеров стартует задержка на 1 секунду. (величина задержки не критична, но естественно влияет на точность измерения)
После окончания задержки на этапе четыре и пять повторяется процедура ожидания фронта измеряемого сигнала. При его обнаружении счетчики переводятся в режим стоп. Измеряемая частота находится по формуле число импульсов измеряемой частоты*тактовую частоту/число импульсов тактовой частоты насчитанных за время задержки. Так как мы ловили фронты входного измеряемого сигнала то их число за период измерения всегда целое, а точность определяется точностью тактовой частоты. Этот принцип позволяет мерить как низкочастотные так и высокочастотные сигналы.

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

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

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

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

Управление прибором осуществляется от 4-х кнопок. Кнопки <- и -> осуществляют передвижение курсора по экрану. Кнопки вверх и вниз осуществляют изменение соответствующей позиции на которой установлен курсор. Текущий элемент выделяется инвертированным цветом. Частотный диапазон генератора переключается когда курсор стоит на символе LF (в случае низкочастотного генератора) или меняется на HF (в случае высокочастотного сигнала). Форма генерируемого сигнала меняется при нахождении курсора на символе меандра вверху справа (меняется на символ синуса или треугольника). Важно помнить, что хотя все позиции в выбираемой частоте генератора являются числами от 0 до 9, частота в режиме низкой частоты не может превышать 15кГц и 4МГц в режиме высокой частоты, что определяется требованиями генератора AD9833.

Настройка прибора заключается в следующем:
Так как величина частоты генератора AD9833 рассчитывается относительно тактовой и точность измерения частотомера тоже зависит от тактовой частоты, то необходимо измерить частоту высшего высокочастотного кварца и низкочастотного кварца на любом частотомере. Частоту можно взять с ножки тактирования генератора AD9833 в режиме генератора HF и LF. Эти частоты необходимо записать в программе.

Важно в опциях проекта IAR при компилировании выставить следующие настройки оптимизации


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

Плата на одностороннем текстолите. Плата для экрана тоже и распаяна на шлейф экрана.

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

МК MSP430MSP430F1351
MSP430F133, MSP430F147, MSP430F148, MSP430F149
Генератор прямого цифрового синтезаAD98331

Операционный усилительAD83971

Биполярный транзисторBFR93A1

Выпрямительный диод1N41482

Электролитический конденсатор1000 мкФ1

Электролитический конденсатор10 мкФ1

Конденсатор10 нФ2

Конденсатор10 пФ5

Резистор10 кОм5

Резистор470 Ом2

Резистор22 кОм1

Резистор100 Ом1

Резистор2.8 кОм1

Резистор15 кОм1

Резистор28 кОм1
X1
Часовой кварц32768Гц1
X2
Кварц8 МГц1

LCD-дисплейNokia 12021

Кнопка тактовая4
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

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

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