Статья №17

 

     В  данной  статье  мы  постараемся  ещё  раз  осветить  такие  темы, как  создание  подпрограмм  и  работа  по  шине  I2C  в  Bascom.

     В  качестве  примера  приведём  проект  синтезатора  высокой  частоты  для  связного  приёмника, работающего  в  диапазоне  10 м  (28 – 29,7 МГц).

     Сам  приёмник  выполнен  на  достаточно  популярной  микросхеме  МС3362.  Данная  микросхема  представляет  собой  полный  приёмный  тракт  с  двойным  преобразованием  частоты  для  узкополосной  ЧМ  связи.  Однако  нас  будет  интересовать  два  независимых  узла:  первый - смеситель  с  перестраиваемым  варикапом  гетеродином  и  усилителем  первой  промежуточной  частоты  (ПЧ)  и  второй - смеситель  с  гетеродином, поскольку  эти  узлы  наиболее  часто  применяются  в  коротковолновых  конструкциях. Следует  отметить, что  оба  гетеродина  имеют  выходы  через  эмиттерные  повторители, т.е.  допускают  подключение  цифровой  шкалы, что  в  значительной  степени  облегчает  нашу  задачу.

     Структурная  схема  МС3362  с  нужными  нам  узлами  приведена  на  Рис.1. Отметим  также, что  микросхема  имеет  высокие  технические  характеристики. Параметры  первого  смесителя  при  применении  внутреннего   гетеродина  нормированы  до  частоты  190 МГц, поэтому  мы  будем  использовать  его  для  построения  синтезатора в  качестве  генератора, управляемого  напряжением  (ГУН).

Рис. 1 - Структурная  схема  МС3362

   

    Принципиальная  схема  приёмника  приведена  на  Рис.2. Сигнал  с  антенны,  прошедший  диапазонный  полосовой  фильтр  L1, L2, C14-C16, L3, L4  поступает  на  вход  первого  смесителя  МС3362 вывод  24, второй  его  вход  (вывод 1)  соединён  с  общим  проводом  по  высокой  частоте. С  выхода  первого  усилителя  промежуточной   частоты  (УПЧ1)  вывод 19  сигнал  ПЧ  проходит  через  четырёх - резонаторный  лестничный  фильтр  на  частоту  4,33 МГц  с  полосой  пропускания  2,4 КГц. С  выхода  фильтра  сигнал  поступает  на  второй  смеситель  (вывод 17). На  второй  вывод  этого  смесителя  (вывод 18)  подано  напряжение  +5В. Частота  гетеродина  второго  смесителя  стабилизирована  кварцевым  резонатором  ZQ5  на  частоту  4,33 МГц. Поскольку  рабочая  частота  этого  генератора  должна  соответствовать  скату  характеристики  кварцевого  фильтра, то  её  сдвигают  вниз  от  номинального  значения  катушкой  индуктивности  L6, включённой  последовательно  с  резонатором.

 

Рис. 2 -  Принципиальная  схема  приёмника


     Напряжение  питания  +5В  подаётся  на  вывод  6  микросхемы  МС3362.  Оно  стабилизировано  микросхемой  DA3 (78L05), а  микросхема  DA2  (LM368)  – выходной  усилитель  звуковой  частоты, питается  от  напряжения  +12В.
     Частота  генератора  плавного  диапазона  (ГПД  или ГУН)  регулируется  подачей  напряжения  с  синтезатора  частоты  на  варикап  (вывод  23)  и  снимается  с  вывода  20  микросхемы  МС3362. Катушки  индуктивности  -  это  готовые  дроссели  со  стандартной  индуктивностью. Катушки  связи  наматываются  поверх  них.
     Следует  отметить, что  использование  всех  узлов  микросхемы  МС3362 стандартное  и  соответствует  рекомендациям  фирмы – производителя.

     В  качестве  синтезатора  частоты  выбрана  микросхема  LM7001, которая  предназначена  для  построения  синтезаторов  с  системой  ФАПЧ  (фазовая  автоподстройка  частоты)  в  бытовых  радиоприёмных  устройствах.  Структурная  схема  LM7001  представлена  на  Рис.3.

 

Рис. 3 - Структурная  схема  LM7001


     Выводы  Хout  и  Xin  - выход  и  вход  усилителя  сигнала  образцовой  частоты; к  этим  выводам  подключается  кварцевый  резонатор. СЕ – вход  сигнала  разрешения  записи. CL – вход  тактовых  импульсов  записывания. Data – информационный  вход. SC – Syncro  Conrol – выход  сигнала  контрольной  частоты  400 КГц. BSout1 – Bsout3 – выходы  управления  внешними  устройствами. С  помощью  этих  сигналов  выполняется  коммутация  диапазонов. AMin  и  FMin – входы  программируемого  делителя  частоты  АМ  и  FМ  сигналов. Pd1  и  Pd2  - выходы  частотно-фазового  детектора  в  режимах  FM  и  АМ  соответственно.

     Выходной  сигнал  генератора, управляемого  напряжением  (ГУН  или  ГПД), поступает  на  один  из  входов – AMin  или  FMin. Неиспользуемый  вход  блокируется  во  избежание  паразитных  наводок.  Делители  частоты  уменьшают  частоту  сигналов  образцового  генератора  и  входного  сигналов  в  необходимое  число  раз – до  значения  частотного  шага  сетки. Фазовый  детектор  сравнивает  оба  сигнала  и  формирует  сигнал  ошибки, уровень  которого  пропорционален  разности  фаз  между  ними. Сигнал  ошибки  снимаются  с  выходов  Pd1  или  Pd2  в  зависимости  от  выбранного  режима  работы.

     В  соответствии  с  основными  техническими  характеристиками  LM7001  выбираем  частотный  интервал  FMin  5…30 МГц  при  шаге  частотной  сетки  10 КГц  (при  частоте  образцового  генератора  7200 КГц). 

     Введение  информации  происходит  последовательно, начиная  с  младшего  бита  коэффициента  деления  частоты  программируемого  делителя, который  может  работать  в  двух  режимах  АМ  и  FM . Мы  рассмотрим  выбранный  выше  режим – FM. В  данном  режиме  для  программирования  делителя  используются  биты  D0 – D13. Максимальное  значение  коэффициента  деления  3FFF  (16383).  Последовательность  посылки  битов  приведена  в  таблице:

 

 

                        
     Биты  Т0  и  Т1 – тестовые, они  должны  быть  всегда  установлены  в  низкий  уровень. Биты  В0 – В2  и  ТВ  управляют  состоянием  выходов  BSout1 – Bsout3, и  не  будут  использованы  нами. Биты  R0 – R2  содержат  информацию  о  шаге  сетки. В  нашем  случае  R0=1, R1=R2=0  (шаг = 10 КГц). Бит  S  определяет  режим  работы  программируемого  делителя  частоты: 1 – FM,   0 – AM  (в  нашем  случае  S=1).
     Рассмотрим  пример  составления  управляющей  последовательности. Пусть  приёмник  работает  на  частоте  28 МГц  с  промежуточной  частотой  4,33 МГц  и  имеет  шаг  сетки  10 КГц. Найдем  необходимый  коэффициент  деления  частоты.  Поскольку  гетеродин  работает  на  частоте  ниже  принимаемой, то  его  частота  равна 28000 – 4330 =  23670 [КГц]. Коэффициент  деления  будет  определён, как:  23670 : 10 = 2367 = 93F (hex) =100100111111 (bin).
     Таким  образом,  последовательность  битов  примет  следующий  вид:

D0,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,D13,T0,T1,B0,B1,B2,TB,R0,R1,R2,S
1,0,0,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,0,0 ,1

     Cхема  синтезатора  частоты  радиоприёмника  десяти  метрового  диапазона  представлена  на  Рис.4. Режим  работы  микросхемы  синтезатора  LM7001J  определяется  программой  микроконтроллера  ATtiny2313. Отображение  информации  происходит  с  помощью  ЖКИ – индикатора  типа  МТ-16S2H  (фирма – производитель  «МЭЛТ»).

Рис. 4 - Cхема  синтезатора  частоты  радиоприёмника

     Синтезатор  управляется  шестью  кнопками. При  включении  устройство  начинает  работать  на  частоте, заданной  начальными  условиями  программы – это  начало  диапазона  28 МГц. На  экране  индикатора  отображается  надпись:  «F =28 000  КГц» . Кнопка  S2  позволяет  осуществлять  сканирование  диапазона  вверх  с  шагом  сетки  10 КГц  с  интервалом  в  одну  секунду . Нажатие  кнопки  S3 – делает  тоже, но  вниз по  диапазону. Кнопки  S4, S5  cлужат  для  увеличения  или  уменьшения  частоты  при  нажатии  только  на  один  шаг  сетки. Нажатием  кнопки  S7  осуществляется  запись  значения  частоты  в  EEPROM  микроконтроллера, а  кнопка  S6  позволяет  считать  записанное  значение  частоты.

     Синтезатор  DA2  получает  информацию  о  значении  частоты  по  управляющей  шине  (I2C). ГУН  устройства, как  было  упомянуто  выше, выполнен  на  основе  генератора  первого  смесителя  микросхемы  МС3362, и  сигнал  с  него  подаётся  на  синтезатор. Активный  фильтр, собранный  на  транзисторах  VT1, VT2  обеспечивает  изменение  напряжения  на  варикапе  ГУН, ликвидируя  возникающую  разность  фаз  между  частотой  ГУН  и  генератором  образцового  сигнала  микросхемы  синтезатора.

     Программа  микроконтроллера  “Sintes”  состоит  из  основного  цикла, где  осуществляется  быстрое  сканирование, а  также  запись  и  чтение  частоты, и  подпрограмм  обработки  внешних  прерываний  INT0  (Pulse0)  и  INT1  (Pulse1), с  помощью  которых  осуществляется  точная  настройка  приёмника. Следует  отметить, что  процесс  записи  информации  в  синтезатор  выделен  в  отдельную  подпрограмму  (Frequenc), поскольку  её  повторение  привело  бы  к  неоправданному  увеличению  объёма  всей программы. Сама  подпрограмма  декларирована  в  начале  текста: Declare  Sub  Frequenc. Информация  в  LM7001  передаётся  побайтно: в  начале  младший  байт  данных, затем  старший, а  далее  через  1,5 мкс  байт  управления. Высокий  уровень  напряжения  на  PORTB.6  разрешает  запись  данных  в  сдвиговый  регистр  синтезатора  (а  низкий  соответственно  запрещает). 
   Текст  программы  с  подробными  комментариями  приведён  ниже:

$regfile = "attiny2313a.dat"       'настройки микроконтроллера
$crystal = 4000000
$hwstack = 40
$swstack = 16
$framesize = 32
$sim

Config Scl = Portb.7               'конфигурирование I2C
Config Sda = Portb.5
Config I2cdelay= 10                ’частота 100 КГц
Config Portb.6 = Output            'включ. - выкл. синтезатора
Config Int0 = Falling              'по спаду импульса-вверх
Config Int1 = Falling              '-вниз
Config Pind.5 = Input              'запись в EEPROM
Config Pind.4 = Input              'чтение из EEPROM
Config Pind.0 = Input              'быстрое сканирование ввех
Config Pind.1 = Input              'быстрое сканирование вниз
Config Debounce = 75               'антидребезг

Dim F As Integer                   'частота КГц
Dim K As Word                      'коэффициент деления
Dim Kh As Byte                     'старший байт коэфф. деления
Dim Kl As Byte                     'младший байт коэфф. деления

Const Up = &B10010000              'байт управления-модуляция FM, шаг=10 КГц
Const St = 10                      'шаг - 10 КГц
Const Fp = 4330                    'промежуточная частота=4330 KГц

$eeprom                            'инициализация EEPROM
Freq:
Data 10%

F = 28000                          'начальное значение частоты - КГц

Declare Sub Frequenc               'опред. подпрог. управления синтезатором


On Int0 Pulse0                     'опред. подпрог. внешних прерываний
On Int1 Pulse1

Enable Interrupts                  'разрешение прерываний
Enable Int0
Enable Int1

Call Frequenc              ’вызов подпрограммы управл. синтезатором
Do                                 'основной цикл
 If Portd.0 = 0 Then               'быстрое сканирование вверх
 F = F + 10                        ' увеличение частоты на 10 КГц
 Call Frequenc                     'вызов подпрог. управления синтезатором
 End If

 If Portd.1 = 0 Then               'быстрое сканирование вниз
 F = F - 10                        'уменьшение частоты на 10 КГц
 Call Frequenc
 End If

 If Portd.5 = 0 Then               'если кнопка PD5 нажата
 Writeeeprom F , Freq              'записать значение частоты в EEPROM
 Waitms 10                         'задержка 10 мс
 End If

 If Portd.4 = 0 Then               'если кнопка PD4 нажата
 Readeeprom F , Freq               'считать значение частоты из EEPROM
 Waitms 10
 Call Frequenc
 End If

 Cls
 Lcd "F=" ; F ; "KGz"              'индикация значения частоты на ЖКИ
 Wait 1                            'задержка 1 сек
Loop

 Sub Frequenc                      'подпрограмма управлением синтезатором
 K = F - Fp                        'частота гетеродина
 K = K / 10                        'коэфф. деления частоты
 Kl = K And &B0000000011111111     'младший байт коэфф. деления
 K = K And &B1111111100000000
 Shift K , Right , 8
 Kh = K                            'старший байт коэфф. деления
 Set Portb.6                       'включение управления синтезатором
 I2cstart
 I2cwbyte Kl                       'отсыл младшего байта
 I2cwbyte Kh                       'отсыл старшего байта
 Nop                               'задержка 1,5 мкс
 nop
 nop
 nop
 nop
 nop
 I2cwbyte Up                       'отсыл байта управления
 I2cstop
 Reset Portb.6                     'выключение управ. синтезатором
 End Sub

 Pulse0:                           'точное сканирование вверх
 Waitms 75                         'задержка 75 мс
 F = F + 10                        'увеличение частоты на 10 КГц
 Call Frequenc                     'вызов подпрограммы упр. синтезатором
 Return

 Pulse1:                           'точное сканирование вниз
 Waitms 75
 F = F - 10                        'уменьшение частоты на 10 КГц
 Call Frequenc
 Return

 End                               'end program

    Программа находится в Приложении 1.