Радиостанция на 144 МГЦ или как из ничего сделать что-нибудь... (часть 2)


Гимаев Сергей, RW9UAO

Начало эпопеи смотрите здесь: "Радиостанция на 144 Мгц..."

Блок - схема р. станции:

рисовать

где: БУ - блок управления; КН - кнопки; ИНД - блок индикации; СЧ - синтезатор частоты; ГУН - генератор управляемый напряжением; TX - выходной каскад передатчика; RX - приемник; МУ - микрофонный усилитель; УНЧ - выходной усилитель НЧ.

Не маловажный вопрос: как запрограммировать процессор и, главное, чем? Конечно, имеется в виду микроконтроллер. Дальнейшее будет касаться только семейства AVR от Atmel, хотя она выпускает и другие микроконтроллеры (типа 8051 Intel, только имеющих на кристалле всякие ЦАПы и пр. девайсы или мощнейшие 16/32 разрядные RISC - процессоры в FPGA исполнении, которые в домашних условиях паять нереально).

Во-первых, вам потребуется знание технического английского языка или хотя-бы приличный словарь. Для начала сольем с сайта (www.atmel.com, www.atmel.ru), раздел datashits (даташиты бесплатные, кроме бумажных), объем 1,4 Мбайт) описание самого дешевого микроконтроллера AT90S1200, цена на него в г. Новосибирске 120 рублей (наверно тогда на AT90S8515 цена будет 851 рубль :), шучу, обещали в пределах 200 рублей). Процессор приобретал самый дешевый специально, чтобы отладить ядро программы в железе нужны многократные исправления в программе и, соответственно, перезапись FLASH, а количество циклов все-таки ограничено. Хотя, жмотиться не стоило. Описания в формате PDF. Просмотрщик можно слить на большинстве сайтов или с компашки, называется Adobe Acrobat Reader, версия 4.0 весит 5 Мбайт. Программа бесплатная. Почитаем, подумаем, и сольем описания от более емких микроконтроллеров, например AT90S8515.

Характеристики микроконтроллеров:

Микроконтроллер

Объем FLASH

Объем SRAM

Объем EEPROM

Порты

AT90S1200

1 Кбайт

0 байт

64 байт

7+8 бит

AT90S2313

2 Кбайт

128 байт

128 байт

7+8 бит

AT90S4414

4 Кбайт

256 байт

256 байт

4 х 8 бит

AT90S8515

8 Кбайт

512 байт

512 байт

4 х 8 бит

Да, FLASH держит гарантировано 1`000 циклов записи, EEPROM 100`000 циклов записи.

Затем сольем описание ассмеблерных команд (мнемоники) (Instruction_set, объем 1,2 Мбайт), т.е. какая команда что делает. Это описание должно быть под рукой.

Затем сольем программу для виртуального моделирования процессов (AVR Studio, объем 3 Мбайт), в нее встроен ассемблер, копмилятор. Универсальная вещь. Очень рекомендуется изучить примеры программирования и построения систем, которые лежат на сайте производителя и в каталоге Appnotes после установки AVR Studio. Программа бесплатная.

Затем сольем программу - программатор, для того чтобы зашить программу во FLASH память процессора и данные в EEPROM. На www.atmel.com (на www.atmel.ru тоже есть) есть программа ISP. Но, почему-то она не захотела работать :(, пришлось воспользоваться программой AVReal (брал на http://www.chat.ru/~avreal/av114r6.zip, 30 килобайт, как я понял, бесплатная). Но она тоже не смогла нормально работать с моим экземпляром процессора (у меня все не как у людей). Хотя все правльно шьется/читается. Программатор состоит из 5 проводов и разъема, схема в архиве с программой. Э, орел! Не надо разъемы на горячую дергать, LPT порт сожжешь, питание отключать хотя-бы от устройства с процессором. Подсказка: а что если запитать от компьютера, там и 5 вольт есть, и 12 вольт и даже двуполярка.

Фирма Atmel выпускает CD-ROM с программами, даташитами и кучей примеров и прочих описаний, стоит он около 200 рублей, но я это только слышал, сам не видел его никогда. Ну русском сайте Atmel есть информация по этому CD-ROM, но какая-то мутная.

Вот. Как программировать? Сначала стираем FLASH, затем пишем в нее новый my_programm.hex и my_data.hex, EEPROM стирать не нужно, только запишите туда данные, он сам перед этим сотрется. Затем запустим верификацию.

Теперь подумаем, о аппаратном обеспечении, что на какую ногу вешать. Схема не приводится, она простая - лень рисовать, а сканировать рисунок от руки на бумажке стыдно. Вот описание по выводам.

1

RESET, сброс процессора, идет на программатор, можно повесить электролитический конденсатор на 10 мкф на массу

2

D0, кнопка “TX”, сюда же впаян катод диода

3

D1, кнопка “UP”, сюда же впаян катод диода

4

XT2, Кварцевый резонатор

5

XT1, Кварцевый резонатор или внешние тактовые испульсы

6

INT0/D2, вход прерывания, сюда подключены аноды клавиатурных диодов

7

D3, кнопка “DOWN”, сюда же впаян катод диода

8

D4, кнопка “SCAN”, сюда же впаян катод диода

9

D5, кнопка “MEM”, сюда же впаян катод диода

10

GND, земля

11

D6, вход шумоподавителя

12

AIN0/B0, у меня не задействован, можно что-нибудь повесить, потом

13

AIN1/B1, тактовые импульсы для дисплея

14

B2, сигнал записи для синтезатора

15

B3, тактовые импульсы для синтезатора

16

B4, данные для синтезатора и дисплея

17

MOSI/B5, подключение программатора, у меня не задействован

18

MISO/B6, подключение программатора, у меня не задействован

19

SCK/B7, подключение программатора, у меня не задействован

20

V+, напряжение питания

Кнопки замыкаются на массу. Кварцевый резонатор с конденсаторами обвязки и провода для ISP подключены по схемам приведенным в фирменной документации. Тактовые импульсы можно снимать с генератора в синтезаторе, но учтите рабочую частоту AVR, они работают либо до 4 МГц (AT90S????-4??), либо до 12 МГц (AT90S????-12??). Кстати, шины данных и стробирования индикатора и синтезатора можно объеденить, т.к. перезапись информации во внутренний регистр синтезатора производится по специальному выводу. Т.е. при нехватке выводов порта вешаем все в кучу, выводим информацию в синтезатор, защелкиваем, а потом пихаем данные на дисплей. Схема блока управления (процессор), ладно, уговорили:

рисовать

Ну чтож, настал самый ответственный момент: написание программы, язык - ассмеблер. Итак: выведем данные на индикатор, выведем данные на дисплей и заснем выключив тактовый генератор. Это чтобы процессор сканируя клавиатуру/индикатор не создавал лишний шум. Когда мы нажмем на кнопку низкий уровень через диод попадет на вход прерывания, процессор проснется и начнет исполнять процедуру обработки внешнего прерывания. В ней посмотрим какая кнопка нажата и сделаем что-то, например, увеличим частоту на один шаг. Затем выведем новые данные в синтезатор и на дисплей. Все, вернем управление основной программе, она снова усыпит процессор. Не забудьте, что при переходе с приема на передачу нужно изменить коэффциент деления синтезатора на значение равное промежуточной частоте (ПЧ у меня равна 10,7 МГц), индикацию можно не трогать и процессор можно не усыплять. Подробнее читайте исходник, самый минимум был написан и отлажен буквально за два дня. Отладка программы производится на компьютере (AVR Studio, если будут вопросы по ней, пишите, подумаем).

Интерфейс. Программа на текущий момент поддерживает: только кнопки “шаг вверх”, “шаг вниз” при шаге 25 КГц. В будущем: включение/выключение репитерного разноса, причем как -600 КГц, так и +600 Кгц; индикация уменьшения/увеличения частоты работе на передачу с разносом; сканирование вверх или вниз по частоте, по каналам памяти (выбор по кнопке “UP”, “DOWN”, остановка по открытию шумоподавителя); запись/чтение ячеек памяти; валкодер, переключение сеток. Но, боюсь, все в 1 килобайт не поместится. Ну и совсем уже для крутости: прямой набор частоты на 10-ти кнопочной клавиатуре.

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

Это был первый вариант. А вот второй. Подключить синтезатор к LPT порту вместо процессора. Схема нужна? Что слабо придумать? Ладно, у меня вот так было при отладке синтезатора:

Нога LPT

Куда в синтезаторе

2. D0

данные

3. D1

строб

4. D2

импульс перезаписи

Ничего не согласовывал, все уровни получились ТТЛ. Ну и маленькая програмка на ассемблере, которая выводит данные и выходит в ДОС. Можно продвинуться дальше, нарисовать виртуальную панель управления и завести на LPTшник сигнал шумоподавителя для остановки сканирования, ну я такую цель не преследовал. Но вполне реально, берите DOS, Windows, OS/2, *NUX и пишите под нее, можете даже аудиотракт звуковой карты использовать в качестве микрофоного / выходного усилителя. Чем черт не шутит, глядишь и русский WinRadio появится, но я этим (пока) заниматься не буду.

исходник отладочной программы с комментариями

Экранировать все-таки желательно и кварц ставить нечетный (типа 3,698 Мгц), а то при сканировани возникнет куча пораженок, ведь при сканировании процессор активен. Есть такая мысль: приемник и ПЧ - НЧ тракт с одной стороны, с другой стороны ГУН и выходной каскад передатчика (у меня КТ610, 200 мВт), а процессор и индикация с кнопками на передней панели р. станции. Вот только непонятно куда поставить синтезатор, с одной стороны не нужны длинные провода, а с другой стороны помеха от его кварца. Есть такая мысль: синтезатор расположить около ГУН, а кварц греть в металлической коробочке с пенопластовым наполнением. И все это упихать в корпус от китайской магнитолы, или автомобильной СиБи-шной р. станции.

Индикация с последовательным вводом информации на трех 561ИР2. ИР-ки приклеены к индикатору, все соединения проводами. Индикатор с общим плюсом при всех зажженых элементах (`888) потребляет 60 мА при питании 5 вольт. Сам индикатор подключен к питанию через токоограничительный резитор на +5 вольт, но при желании (или недостаточной яркости) можно повесить на +9 или даже +12 вольт. Следите за выходными токами микросхем (5 мА на вывод), хоть RA9UCN (Владимир, Мариинск) и клянется, что все работает, но мне как-то не по себе от троекратной перегрузки в его конструкции. Для справки: RA9UWD (Игорь, Яя) питал индикаторы от 6 вольт и грел ИР-ки до 70 градусов, ничего не выгорело. ИР-ки питаются у меня от +5 вольт. Если критично энергопоребление, можно модифицировать программу, чтобы через 5 - 6 секунд после изменения показаний тушила индикацию. Чтобы зажечь элемент нужно вывести логический “0”, чтобы не зажигать - логический “1” и простробировать. 8 импульсов на каждую цифру, так как индикаторы 7-ми разрядные, оставшийся разряд старшей микросхемы повесим на “`”, оставшиеся два свободных можно повесить индикацию разноса (на этом китайском индикаторе куча светящихся точек, они в магнитоле диапазон указывали). Если честно, то для индикации достаточно 2 ИР-ок: апостроф (144/145) вешается на свободный вывод старшей цифры, последняя цифра “5” или “0”, через диоды вешается на свободный вывод средней микросхемы. Или можно номер канала индицировать, их всего 80. Ну это если с ИР2 совсем напряг. Если у индикатора общий вывод садится на массу - не беда, проинвертируем поток данных, можно аппаратно, а проще в программе перешить знакогенератор (один хрен он в EEPROM хранится). После вывода информации на индикатор о нем можно забыть. Скорость вывода - до 2 МГц, быстрее 561ИР2 начинают сбоить. Один товарищ обещает подарить ЖКИ с контроллером, однако я его поставлю. Схема индикации:

рисовать

Кстати о питании: синтезатор, блок управления - 5 вольт (КРЕН5, можно повесить на каждый блок, сейчас есть в малогабаритном исполнении, ну прям как КТ209); приемник, микрофонный усилитель (половина К157УЛ?, динамический микрофон), ГУН - 9 вольт (буржуйский КРЕН); выходной каскад передатчика (на одном транзисторе :), УНЧ (К174УН14) - 13,8 вольт.

Маленькое замечание по оконечнику. Первый транзистор после ГУНа можно запитать от +9 вольт, а следующие каскады от +12 вольт. Модуляция частотная (или немножко фазовая), транзисторы, естественно, работают в режиме С.

Кнопки любые 4 штуки, хорошо подходят буржуйские малогабаритные от той-же китайской магнитолы. Можно использовать механический вал-кодер, есть крутящиеся свободно, а есть переключатели с четко ограниченным углом поворота ручки. Такие стоят на дешевых СиБи-шных станциях. Возможно потом поставлю оптический вал-кодер из мышки.

И, не смотря на заверения RA9UWD (Яя, Игорь), использование простого (не термокомпенсированного) кварца в синтезаторе не привело к заметному уходу частоты при комнатной температуре (около +20 град. С). Конечно, если поднести горячий паяльник к кварцевому резонатору, то частота убегала на 100 - 120 герц (кварц на 10 Мгц был выдран из дохлого контроллера HDD) на частоте 145 Мгц. Кстати, Alinco-DJ191 убегает аналогично если из теплой квартиры (около +20 град. С) выходишь на улицу (-35 град. С). Это не очень заметно на слух при работе голосом. Если стабильность нужна больше (работа цифрой), то можно поставить кварц с подогревом в вакууме, использующийся в синтезаторе “Маяка”, но прийдется пересчитать коэффициенты деления (там кварц на 2 Мгц). Или посмотреть как сделано в “Ангаре”, там и термокомпенсация и супер стабилизация питания.

SMD резисторы и блокировочные емкости брал с контроллера с дохлого CD-ROM. Надписи можно расшифровывать, а можно и Ц-шкой померить. Резистор в цепи питания микросхемы (вывод ?) ставить обязательно! Он нужен для устранения тиристорного эффекта. Микросхема использована в стандартном включении, SMD исполнение. Если на вывод ? повесить светодиод, то при пошаговой трассировке отладочной программы было видно, что за данные вываливаются из регистра синтезатора. На первом прогоне там “0”, а при последующих выгоняется предыдущая информация. Схема синтезатора:

рисовать

ГУН от “Маяка” в металлическом корпусе, залитом пенопластом. RA9UWD (Яя, Игорь) будет делать свой ГУН, он хочет в кварцованную мобильную “Виолу” поставить однокристальный синтезатор и блок управления на AVR (возможно тоже опубликуем). ГУНов делать лучше два для уменьшения фазового шума (см. описание 1015ПЛ2 там заявлена крутизна перестройки 1 Мгц на вольт). Каждый ГУН перестраивается в пределах 2 МГц: 144 - 146 МГц и 133,3 - 135,3 МГц. Для примера в Alinco-DJ191 один ГУН перекрывает 174 - 130 = 44 МГц!! Да плюс еще первая ПЧ 21 Мгц, итого 21 + 44 = 65 МГц т.е. 20 МГц на вольт или я чего-то не понимаю? Да даже 20 Мгц при 3 вольтах питания это уже много. На “Маяковских” ГУНах напряжение болтается на глазах (мерил цифровой Ц-шкой), а что же тогда у Алинки? Я вообще не понимаю почему :) оно все же работает. Схема ГУН от “Маяка”:

Схема

Сами ГУНы собраны на транзисторах VT1 и VT2 (генератор с общим затвором), через С11 и С12 они нагружены на R10. С которого сигнал через буфер на VT4 подается на выходные усилители VT6 (сигнал идет на приемник и выходной каскад усилителя мощности) и VT7 (сигнал идет на вход микросхемы синтезатора). На транзисторах VT3 и VT5 сделана комутация ГУН, т.е. один работает на прием, другой на передачу. Детали: С1, С2, С4, С6, С13, С18, С19, С20, С21 - 1500 пф, С3, С5 - 3,6 пф, С7, С9 - 3,3 пф, С8, С10 - 15 пф, С11, С12 - 1 пф, С14, С15 - 12 пф, С16 - 22 пф, С17 - 10 пф. R1, R7, R8, R10, R13, R16, R18 - 15 кОм R2 - 56 Ом, R3, R4 - 2,2 кОм, R5, R6, R12, R20 - 470 Ом, R9 - 150 Ом, R11 - 1 кОм, R14 - 10 кОм, R15 - 3,9 кОм, R17 - 4,7 кОм, R19 - 180 Ом, R21 - 330 Ом. Варикапы - КВ109, VT1, VT2, VT4 - КП307, VT3, VT5 - КТ315, VT6, VT7 - КТ399.

Для примера дана схема ГУН от Alinco-DJ191 (VCO - voltage controlled oscilator, генератор управляемый напряжением):

Схема

На Q301 собственно сам генератор, Q302 буферный усилитель, роль Q303 мне неясна, очевидно перетягивает ГУН на другой диапазон шунтируя L303 через С307 на массу. Т.к. емкость С307 (0,001 мкф) на ВЧ является блокировочной.

Печатные платы изготавливались типа макеток: один блок - одна плата. Стеклотекстолит - односторонний. Ну лень мне их перерисовывать, сканировать... К тому-же есть мысль объеденить платы блока управления и синтезатора.

73!


aka Monster.MonsterGroup(R)(tm)

Ой, блин! Однако будет еще и третья часть и четвертая. Приемник, выходной каскад, и НЧ тракт, а также список литературы ;) Так, а описания от микросхем и как найти наминал SMD резюков надо? А еще есть заказ на блок управления синтезатором “Маяка” на одной чипе (+ две ИР-ки на вывод к-та деления и ИР-ки на индикацию), а не на 3 как у уважемого (мной, по крайней мере) RA9UCN. А еще... УКВ трансивер 144 + 430 в одном стакане, но это пока секрет :) А вообще все разработки ведуться параллельно.