Контроллер SSB в радиоприемнике DEGEN DE1103 Часть I Наряду со многими несомненными достоинствами радиоприемника DEGEN DE1103 [1, 2], к числу его немногочисленных недостатков [3] можно отнести и неудобство настройки в режиме “SSB”. При настройке на станции, в указанном режиме, счастливому обладателю этого приемника приходится всё время манипулировать как минимум двумя органами управления: валкодером и регулятором “FINE”. Это является следствием того, что минимальный шаг настройки приёмника равен 1 кГц, в то время как в “SSB” он должен составлять 40-100 Гц. Данный проект и призван решить указанную проблему, т. е. повысить эргономичность настройки приёмника в режиме “SSB”, сделав возможным это пользуясь только валкодером. Одним из возможных путей реализации поставленной задачи является установка в разрыв цепи валкодера, соединяющей его с процессором приемника, дополнительных элементов, которые пропускали бы, например, только каждый 10-й сигнал валкодера, а промежуточные - использовались бы для получения более мелкого шага настройки. При этом дополнительный шаг настройки, в данном случае 100 Гц, получался бы путем использования ЦАП, входы которого подключены, например, к реверсивному счетчику, считающему сигналы валкодера. Выход ЦАП, в свою очередь, управлял бы варикапом, изменяющим частоту 2-го гетеродина в пределах 0…900 Гц. Таким образом, можно получить требуемый шаг настройки в режиме “SSB”. Самым простым путем реализации вышесказанного, по мнению автора, является применение микроконтроллера. Для этой цели вполне подходят микроконтроллеры семейства PIC. Поскольку в минимальном варианте следует манипулировать лишь шестью сигналами, то был выбран микроконтроллер PIC12F629 [4]. Этот микроконтроллер изготовлен в 8-и выводном корпусе, имеет встроенный калиброванный RC-генератор (4 МГц, время выполнения команды –1 мксек), программно настраиваемые выводы, встроенные подтягивающие резисторы, таймеры, энергонезависимую память и много других полезных вещей. При всем этом он работает в диапазоне питающих напряжений 2…5,5 В и по-требляет при 3 В ток порядка 0,7 мА. Принципиальная схема устройства приведена на рисунке 1. Рис. 1 Принципиальная электрическая схема контроллера SSB. Теперь немного пояснений. Напряжение +3В берется с платы процессора с электролитического конденсатора, не закрытого экраном. Цепи Enc-A, Enc-B, Enc-C подключаются к тому, что мы привыкли называть валкодером. Конденсаторы С3, С4 совместно с подтягивающими резисторами, размещенными в PICe (24к) существенно снижают явление т. н. дребезга контактов, а резистор R5 уменьшает экстра токи разряда упомянутых конденсаторов. Цепи CPU-ENC-A и CPU-Enc-C идут туда, куда раньше были подключены соответствующие выводы валкодера. Резисторы R1, R2 уменьшают помехи от перезарядки конденсаторов, установленных в этих цепях на входе процессорной платы. В принципе их можно и не ставить. Цепь SSB-On/Off управляет режимом работы контроллера: при выключенном “SSB” сигналы с валкодера напрямую идут на процессорную плату, при включенном - подвергаются дополнительной обработке. Сигнал SSB-On/Off берется с микросхемы PLL (немного выше есть контактная площадка с надписью SSB). И последняя цепь – это SSB-Fine. О ней несколько подробнее. Для упрощения устройства (не надо устанавливать дополнительный варикап для перестройки 2-го гетеродина) можно использовать уже имеющуюся в приемнике цепь управления 3-м гетеродином. При определенном законе изменения управляющего напряжения и точном сопряжении границ (+/- 1кГц) характер настройки приемника близок к тому, как бы мы перестраивали 2-й гетеродин. Хотя Вы вправе сами решить, как Вам поступить, и можете поэкспериментировать с установкой дополнительного варикапа. Цепь SSB-Fine заменит цепь приемника, идущую от среднего вывода регулятора Fine. Надо разрезать обе дорожки регулятора, как это показано в [3] и цепь SSB-Fine подключить к верхнему концу дорожки, соединенной ранее со средним выводом регулятора. Поскольку у нас теперь освободился регулятор Fine, то его конечно лучше всего использовать для регулировки громкости. Причем для того, чтобы не отказываться от функции установки громкости в будильниках сохраним и старый способ управления громкостью VOL. Отличие от соответствующей доработки [3] заключается в том, что нет необходимости разрезать дорожку около разъема процессорного шлейфа, а также удаленный резистор 27к нужно использовать в разрыве провода вместо 3,3к как рекомендовано в [3]. Теперь о конструктивном исполнении самого контроллера. Для его размещения в корпусе приемника есть два места: 1-ый вариант - ниже валкодера под краем м/схемы ТА. В этом случае PIC надо брать в корпусе SOIC (планарном). Все остальные компоненты – SMD. Плата должна быть помещена в экран (достаточно медной фольги). 2-й, более простой, поскольку там больше места и можно брать PIC в обычном корпусе PDIP. Это место расположено над валкодером. Но чтобы его использовать придется укоротить магнитную антенну. Учитывая, что она не резонансная - хуже от этого работать не будет. Укорачивать следует после того, как Вы определитесь с платкой для контроллера. Лично я пока применил макетную. Вот пока и всё. О программном обеспечении контроллера, дампе его прошивки, настройке будет сказано во 2-части. Литература для части I: 1. DEGEN DE1103. OPERATION MANUAL. 2. Обзор радиоприёмника DEGEN DE1103 (с) Iris, www.radioscanner.ru 3. DEGEN DE1103: работа над ошибками IRIS. lab.radioscanner.ru 4. PIC12F629/675 Data Sheet 8-Pin FLASH-Based 8-Bit CMOS Microcontrollers. Часть II Программное обеспечение (ПО) контроллера написано на С [1]. Почему на С, а не на Asm ? Да потому, что С - язык универсальный, в тоже время мощный и достаточно оптимальный. Кроме того, Вам не надо изучать новую систему команд и новую мнемонику, разумеется, если Вам знаком С. Для удобства в работе следует также использовать интегрированную среду разработки – MPLAB [2]. ПО контроллера SSB состоит из 3-х основных функциональных блоков: • Блок работы в обычном режиме. • Блок работы в режиме “ SSB ”. • Блок настройки параметров. В режиме 1 контроллер работает как повторитель, он просто считывает сигналы валкодера и отправляет их на плату процессора приемника. ЦАП в этом режиме не функционирует, сторожевой таймер ( WDT ) – включен. 2-й режим является основным. В нем происходит считывание сигналов валкодера, их распознавание, и генерирование сигнала ЦАП, управляющего 3-м гетеродином в промежутках между каждым десятой командой валкодера. Формирование напряжения ЦАП происходит путем использования ШИМ-модулятора, организованного по прерыванию от нулевого таймера. Таймер устанавливается в зависимости от требуемого выходного напряжения ЦАП. Следует отметить, что выходное напряжение ШИМ, зависит от напряжения источника питания. Но поскольку напряжение питания контроллера берется со стабилизатора напряжения процессорной платы приемника (3 В) и достаточно стабильно, то основной уход частоты настройки может происходить вследствие температурной и иной нестабильности 3-го гетеродина. Учитывая, что пользователь сам регулирует эту частоту в процессе настройки на станцию, то эта нестабильность может проявляться лишь в ухудшении стыковки по границам +/-1кГц, что само по себе не существенно. Ниже приведен фрагмент исходного текста программы, декодирующей сигналы валкодера в режиме “ SSB ”. Для упрощения понимания текста программы, сигнал валкодера в ней, сравнивается не с символическими, а с конкретными, для данной аппаратной реализации, значениями. while(ssb) { do{ while(encoder!=3); delay(2); vlk=encoder; }while(vlk!=3); do{ while((vlk=encoder)==3); delay(2); }while(encoder!=vlk); if ( vlk &2) incr (); else if(vlk&1) decr(); do{ while(encoder!=0); delay(2); vlk=encoder; }while(vlk!=0); do{ while((vlk=encoder)==0); delay(2); }while(encoder!=vlk); if(vlk&1) incr(); else if(vlk&2) decr(); delay(2); }//while(ssb) //выполнять пока SSB вкл. //(С) Shkatulo G . G . 2005 //опрашивать валкодер, пока он не =11 //=11, задержка 2 мс //опросить снова //повторить, если !=11 //валкодер =11 //выполнять пока 11 //валкодер = 01 или 10 //повторить, если несоответствие //если +, увеличить ЦАП // если - , уменьшить ЦАП //опрашивать валкодер, пока он !=00 //=00 //повторить, если !=00 //валкодер =00 //выполнять пока 00 //валкодер = 01 или 10 // если + // если - В 3-м режиме настройки параметров пользователь настраивает наиболее подходящий, по его мнению, закон изменения частоты 3-го гетеродина. Тут, что называется, возможны варианты перестройки частоты Fine в промежутках между изменением основной настройки на +/-1кГц (в Гц): 0…+900, -900…0, -450…+450, -800…+100, и так далее, и на любой вкус. По мнению автора, наиболее оптимальной следует считать перестройку частоты от –450 до +450 Гц с шагом 100 Гц. Третий, основной блок ПО, как раз и позволяет пользователю запрограммировать свой контроллер под нужный диапазон. Для этого необходимо ввести в энергонезависимую память контроллера границы изменения выходного напряжения ЦАП, соответствующие требуемому диапазону изменения Fine . Методика настройки такова: 1. Записываем в ячейку 00 памяти частоту 451 кГц, а в 01 – 449 кГц с включенным SSB . 2. Последовательно нажимаем кнопки «0», «МЕМ», т.е. настраиваем приемник на частоту, содержащуюся в памяти – ячейка 00 (451 кГц). Выключаем режим МЕМ. 3. Выключаем SSB и крутим валкодер на +/- 1…2 кГц. 4. Три раза быстро нажимаем/отпускаем клавишу SSB , т. е. включили SSB, выключили SSB и снова включили SSB . При этом на дисплее должна побежать цифры частоты настройки, сначала в сторону увеличения, затем уменьшения, затем опять увеличения. Это свидетельствует о том, что Вы зашли в режим программирования. Не тот порядок следования цифр говорит о том, что перепутаны провода, идущие к разъему платы процессора. 5. Снова нажимаем клавишу МЕМ, чтобы на дисплее появилась частота 451 кГц и выключаем режим МЕМ. 6. Плавно вращая валкодер в ту или иную сторону, постепенно понижайте слышимый в динамике тон, добиваясь почти полного пропадания звука (в идеале частота звуковых биений должно составлять 50 Гц). 7. Быстро нажимаем два раза клавишу SSB , при этом 1-е значение напряжения ЦАП, соответствующее расстройке частоты 3-го гетеродина на –450 Гц сохранится в EEPROM контроллера. 8. Далее Вам надо ввести 2-й параметр. Для этого последовательно нажмите кнопки «1», «МЕМ», т.е. настройте приемник на частоту, содержащуюся в памяти – ячейка 01 (449 кГц). 9. Повторите п. 6. В результате Вы расстроили частоту 3-го гетеродина на +450 Гц. Сохраните это значение, быстро нажав два раза клавишу SSB . Подождите пару секунд, контроллер перезапустится с новыми параметрами и будет готов к работе. В промежутках между минимальным и максимальным значениями, напряжение ЦАП в данной версии ПО, изменяется линейно, хотя, конечно, при необходимости можно было бы запрограммировать (на уровне С) и произвольный характер его изменения. О замеченных недостатках. 1) Замедление сканирования МЕМ валкодером, если встречается станция, сохраненная с включенным SSB . 2) В FM тоже самое происходит в режиме МОНО. Но думаю с этим можно примириться. О путях совершенствования. Возможен анализ сигналов «МЕМ», FM -МОНО (найти сигнал МЕМ кажется, будет проблемой), с целью игнорирования включения SSB в режиме МЕМ и в FM -МОНО. Возможно также изменение шага настройки частоты в обычном режиме 1-5-9 кГц. В более продвинутой версии возможно отслеживание частоты настройки приемника, для, например, перестройки входного преселектора. В заключение хочется поблагодарить опытных участников форума: «Misk» - за высказанную им идею по применению PIC контроллера в режиме SSB , подтолкнувшую меня к мысли взяться за этот проект, «Kran» за помощь, в отыскании в чреве приемника нужных сигналов, «Iris», за его великолепную статью, во многом благодаря которой, я вообще оказался в рядах “Дегеновцев”, а также всех, принявших участие в обсуждении, потому, что как сказал один из участников – “…чем больше информации по теме, тем полезнее…”. Прошивку контроллера можно скачать здесь.