Home Статьи Технический уголок Маяк на AVR – новый подход в действии
Маяк на AVR – новый подход в действии PDF Печать E-mail
Автор: Dmitry A. Gorokh   
25.07.2012 23:36
Индекс материала
Маяк на AVR – новый подход в действии
Страница 2
Страница 3
Все страницы

Введение

Бесспорно, что степень любого успеха на QRP всецело зависит от прохождения и мастерства радиолюбителя. И, если мастерство приходит с опытом, то «капризы» прохождения нам неподвластны. Мы можем лишь в той или иной степени наблюдать за обстановкой или давать прогнозы. Существует множество способов наблюдения за ионосферой и прохождением радиоволн. Одним из древних и популярных способов является наблюдение за работой радиомаяков. Действительно, маяки имеют небольшую мощность, работают круглосуточно или по расписанию, и показывают фактическую обстановку в эфире в данное время. С другой стороны, эффективность маяков целиком определяется их количеством.
 
Традиционно схемы радиолюбительских маяков мало отличаются от схем передатчиков. Некоторые радиолюбители даже временно используют для этого свои трансиверы. А такая известная сеть маяков, как NCDXF Beacon Project использует фирменные трансиверы и специальные контроллеры. Несомненно, что контроллер для маяка необходим, и он обязательно будет содержать микропроцессор или микроконтроллер. Кроме этого, контроллер может еще управлять синтезатором передатчика и(или) регулировать мощность в антенне. Все эти задачи очень простые и большую часть времени контроллер простаивает. Более рациональный и дешевый подход – это максимально упростить аппаратную часть и нагрузить программную. Оказывается, что в схемах с процессором/микроконтроллером достаточной производительности можно даже полностью отказаться от аппаратного гетеродина (XCO, VCO, DDS, PLL) и реализовать генерацию стабильной высокой частоты непосредственно в микроконтроллере ценой увеличения вычислительной нагрузки и использованием аналоговых фильтров. В традиционных схемах гетеродинов и так присутствуют фильтры, а нагрузка на процессор может быть сведена к минимуму, если в нем имеется режим DMA.

Краткое описание подхода

 Суть нового метода, который заслуживает отдельного описания, заключается в том, что, используя аппаратные периферийные ресурсы (SPI, UART, I2S) и последовательность бит, подготовленных по специальному алгоритму, можно получить на выходе процессора непрерывный сигнал, частотой и фазой которого можно программно управлять. После фильтрации выходного цифрового сигнала в аналоговом фильтре можно выделить аналоговый ВЧ сигнал, стабильность которого определяется кварцевым генератором микроконтроллера, а шаг перестройки – процессорными ресурсами, и может составлять от долей герц до единиц мегагерц. Этот принцип основан на цифровом синтезе сигналов (DDS), но без традиционного АЦП на выходе. Также как и в DDS, тут используется фазовый регистр нужной длины, а выходная последовательность формируется только значением старшего бита фазового регистра (подробности метода будут опубликованы в отдельной статье). Замечательным фактом является то, что нет необходимости каждый раз просчитывать очередной бит последовательности. Достаточно один раз просчитать полный период всей последовательности, сохранить ее в постоянной памяти, и выдавать наружу через периферию байт за байтом. Немаловажно и то, что период последовательности всегда ограничен, является степенью двойки и не превышает 2N, где N– разрядность фазового регистра. Это позволяет «упаковывать» последовательность в байты, слова, двойные слова, и удобно хранить и вынимать их из памяти.

 В этой статье описаны две схемы маяка на простом и дешевом 8-битном микроконтроллере AVR от фирмы Atmel, в котором реализован описанный выше метод цифрового программного гетеродина. Основные функции маяка – это формирование телеграфных знаков заданной скорости для заданного текста. Они занимают очень малую долю процессорного времени и потому здесь есть возможность отказаться от внешнего ВЧ генератора несущей и формировать ее в микроконтроллере. Для расчета последовательности, которую следует записать в память микроконтроллера, используется простая утилита на языке Си. Исходными данными для нее являются опорная частота в Гц (20 МГц / 2 = 10 000 000 Гц, см. константу FREQ_OSC) и выходная частота маяка в Гц (FREQ_OUT). Результатом работы утилиты будет последовательность байт, которую затем надо перенести в исходный проект AVR маяка, по образцу отформатировать массив байт, и перекомпилировать весь проект. Для удобства выбора последовательностей, утилита выводит сразу несколько их, по возрастанию инкремента фазы (M), также показывается период последовательности (длина массива в байтах). В данной версии AVR маяка поддерживаются последовательности длиной до 256 байт (2048 бит). Принципиально не существует ограничений, чтобы снять это условие в новых версиях AVR маяка.

Простейший маяк на одной микросхеме


 На рис. 1 показана принципиальная схема маломощного маяка на диапазон 80 м, в котором используется всего лишь одна микросхема AVR микроконтроллера, необходимая «обвязка» к нему и аналоговый полосовой ВЧ фильтр. Схема питания максимально упрощена и предназначена для использования совместно с 6 В аккумулятором или батареей. Следует придерживаться указанных на схеме ограничений по напряжению питания. Если оно не превышает 5.5 В, то от использования диодов VD1, VD2 можно отказаться. Напряжение питания (без учета падения напряжения на диодах) не должно быть меньше 4.5 В!

beacon 1 small
Рис. 1. Простейший маяк
(нажмите для увеличения)

 С вывода 31 (TXD) DD1 поступает специально сформированная цифровая последовательность, которая через R1 и C4 поступает на контур L1C5, где происходит фильтрация сигнала и выделение несущей частоты. Для правильной работы маяка нужно обязательно настроить этот контур в резонанс, а также подобрать величину R1. Меньшие его значения дают большую мощность маяка ценой ухудшения спектральной чистоты сигнала и повышением потребляемого тока.

 На нагрузке 50 Ом при питании 6 В маяк развивает мощность до 2 мВт (+3 дБм). При этом потребляемый ток составляет 20-25 мА. Для программирования микроконтроллера предназначены 5 проводов SPI programming interface. Автор использует самодельный USB программатор AVR910.

Детали конструкции. В AVR маяке использованы SMD компоненты типоразмера 0805 и 0603. Маяк можно смонтировать на части универсальной печатной платы более мощного маяка (см. рис. 3, 4). Вместо ATmega88p (PicoPower) можно применить ATMega88PA или ATmega88. Допустимо использовать и другие AVR микроконтроллеры с аппаратным SPI, I2S (не путать с I2C), или USART, который работает в режиме SPI, но тогда потребуются изменения в программе и печатной плате. По возможности следует выбирать микроконтроллеры с возможно большей рабочей частотой. Катушка L1 намотана на кольцевом сердечнике T50-2 (Amidon, Micrometals) и содержит 42 витка. Отвод сделан от 10-го витка сверху по схеме и подбирается экспериментально. Катушка L2 намотана поверх L1 и содержит 5-15 витков; подбирается для согласования с конкретной нагрузкой.

Настройка заключается в проверке контрольным приемником на наличие телеграфных посылок на заданной частоте. Конденсатором C5 настраивают контур L1C5 в резонанс. Нужный текст для маяка указывается в исходном коде проекта AVR маяка. Параметры телеграфной манипуляции также устанавливаются в исходном коде. После всех изменений проект компилируется, а HEX-файл загружается в микроконтроллер.

Обновлено 17.08.2012 16:40
 

Комментарии   

 
0 #4 ur4mck 17.08.2012 16:38
Проект перенесен на sourceforge.net/projects/avrbeacon/
Все вопросы, новые версии и сообщения об ошибках теперь только через службы SourceForge.
Цитировать
 
 
0 #3 UU7JF 30.07.2012 12:52
Да, с памятью понятно, ATmega48 отличается только объемом памяти, а аппаратные интерфейсы такие же. Попробую простейший вариант, моща 2 мВт не так уж и мало. Единственно, поразбираюсь, чтоб в режиме QRSS3 запустить - 3 секунды длительность точки.
Цитировать
 
 
0 #2 ur4mck 30.07.2012 12:43
Виталик, ты все правильно увидел. RAM и FLASH используются не полностью. В ATmega88p 1 kБ RAM и 8 кБ FLASH. Можно попробовать под другие MCU, в том числе и ATmega48, надо только убедится, что аппаратный USART может работать в режиме "Master SPI Mode" (MSPIM). Этот режим выбран вместо родного SPI, т.к. в USART есть буффер, а в родном SPI - нет.
При замене MCU надо не забыть указать правильный ".include".
Последовательность, сгенерированная утилитой, соответствует заданной рабочей частоте (первая последовательно сть в списке). Утилита генерирует несколько последовательно стей по мере увеличения переменной M. Например, N = 4096 (размерность фазового регистра - 12 бит), а M = 1464 (фазовый инкремент), тогда при опорной частоте 10 МГц выходная частота будет равна 1464 / 4096 * 10 (МГц) = 3.57421875 МГц (приблизительно 3574.22 кГц). В версии 0.0.1 длина последовательно сти ограничена 256 байтами. Уже есть новая версия, в которой последовательно сть ограничена только размерами свободной FLASH. Вышлю тебе по e-mail.
Цитировать
 
 
+1 #1 UU7JF 30.07.2012 11:15
Дима, правильно ли я увидел, что RAM контроллера используется мало (не все 512 байт)? У меня просто есть ATmega48 и хочу понять, влезет ли в нее прошивка, там RAM только 256 байт и 4кБ флэш.
Второй вопрос - какую из сгенерированных утилитой последовательно стей выбирать для использования?
Цитировать