Цифровая шкала для КВ приемника

Цифровая шкала для КВ приемника (Arduino UNO, 1602А)

    Здесь приводится описание цифровой шкалы для коротковолнового связного любительского приемника, работающего в диапазонах 160 М, 80 М, 40 М, 20 М, 10М или любом из них. Шкала работает с двухстрочным ЖК-дисплеем. В его верхней строке показывает значение частоты в кГц,а в нижней длину волны в метрах (диапазон). Внося простейшие изменения в программу цифровой шкалы можно обеспечить работу с различными значениями промежуточной частоты, а так же с приемником прямого преобразования, у которого частота гетеродина равна частоте входного сигнала либо в два раза ниже её. Схема не претендует на идеальность, но для начинающих радиолюбителей представляет интерес для проектирования своей шкалы с параметрами модуляции или S-метром на базе имеющегося схемного решения.

Принципиальная схема

    Цифровая шкала очень проста в изготовлении, потому что использует готовые модули, — микроконтроллерную плату ARDUINO UNO и стандартный ЖК-дисплей на 2 строки по 16 символов типа 1602А на основе контроллера HD44780. Еще потребуется входное устройство, берущее частоту с ГПД приемника, состоящее из усилителя-формирователя и делителя частоты на 100. Схема входного устройства здесь не приводится.

Принципиальная шкала для КВ приемника, выполнена на Arduino UNO и 1602А

Рис. 1. Принципиальная шкала для КВ приемника, выполнена на Arduino UNO и 1602А.

   Но, прежде всего, хочу напомнить, что ARDUINO UNO это небольшая печатная плата, на которой расположен микроконтроллер ATMEGA328, а так же вся его «обвязка», необходимая для его работы, включая USB-программатор и источник питания. Схема цифровой шкалы показана на рисунке. 1. Как видно из схемы, к цифровым портам D2-D7 платы ARDUINO UNO подключен модуль жидкокристаллического индикатора Н1 типа 1602А. А входной сигнал на порт D8 поступает от гетеродина (ГПД) приемника через усилитель-формирователь и делитель частоты на 100. Питается входной усилитель-формирователь и делитель частоты на 100, а так же и ЖК-индикатор, от стабилизатора напряжения 5V, имеющегося на плате ARDUINO UNO. Но, вернемся к ЖК-индикатору. Индикатор представляет собой плату, на которой установлен собственно ЖК-дисплей и схема для его обслуживания, выполненная на двух безкорпусных микросхемах. Индикатор 1602А стандартный, на основе контроллера HD44780. Обозначение 1602А фактически значит, что он на две строки по 16 символов в строке.

Таблица 1.

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

Рис. 2. Исходный код программы для микроконтроллера.

   Питание +5V на ЖК-индикатор поступает через вывод 2 его платы. Общий минус на выводы 3 и 1. Поскольку в индикатор планируется только передавать информацию от контроллера, а не наоборот, вывод 5 (RW) соединен с нулем. Данные на ЖК-индикатор будут поступать через его выводы 11-14 (выводы 7-10 не используются). Выводы 15 и 16 служат для подключения подсветки ЖК-индикатора. На них подается напряжение 5V. Для управления ЖК-индикатором решено было использовать порты с D2 по D7 платы ARDUINO UNO. В принципе, можно и другие порты, но я вот так, решил использовать именно эти. Программа на языке C++ приводится в таблице 1. Сначала необходимо загрузить библиотеку LiquidCrystal для работы с ЖК-индикатором на основе HD44780. Поэтому программа начинается с загрузки этой библиотеки:

#include

После чего, программа переходит собственно к работе цифровой шкалы. Среди набора функций языка для программирования ARDUINO UNO есть такая функция: pulseln , перевести это можно как «входной импульс». Эта функция измеряет в микросекундах длительность положительного либо отрицательного перепада входного импульса. Так что измерение частоты здесь будет происходить через предварительное измерение периода. Так как длительность положительного и отрицательного полупериодов в реальном входном сигнале могут различаться, если мы хотим измерить период входных импульсов нам нужно сложить длительность положительного и отрицательного полупериодов. В программе длительность положительного полупериода обозначена Htime, длительность отрицательного полупериода — Ltime, а длительность всего периода — Ttime.

Измерение полупериодов происходит в строках:

Htime=pulseln(8,HIGH);

Ltime=pulseln(8,LOW);

Затем, производится вычисление полного периода в строке:

Ttime=Htime+Ltime ;

Вычисление частоты, учитывая, то что это не частотомер, а цифровая шкала, сигнал на которую поступает с ГПД приемника через делитель на 100, и то что значение периода выражено в микросекундах, происходит здесь:

frequency=100000/Ttime+500;

Причем, нужно учесть значение ПЧ и то, частота ГПД ниже или выше принимаемого сигнала. В данном случае показано что частота ПЧ = 500 кГц, и частота ГПД ниже частоты входного сигнала.

Если частота ГПД выше частоты входного сигнала, то, при той же ПЧ = 500 кГц, строка такая:

frequency=100000/Ttime-500

Следует заметить, что значение ПЧ может быть и другим, просто вместо 500 нужно будет подставить фактическое значение ПЧ в данном приемнике, выраженное в кГц. Это касается супергетеродинных схем. Но, есть же и схемы прямого преобразования. Если у конкретного приемника прямого преобразования частота ГПД равна частоте входного сигнала, то эта строка будет выглядеть так:

frequency=100000/Ttime

Если же, у приемника прямого преобразования частота ГПД в два раза ниже частоты принимаемого сигнала, то эта строка будет такая:

fгequency=200000/Тtime

Затем, после того как измерено и вычислено значение частоты происходит вычисление длины волны в этой строке:

wave=299792458/frequency/1000;

Далее, следует очистка памяти дисплея и индикация. В верхнюю строку пишется значение частоты, выраженное в кГц, а в нижнюю строку пишется соответствующее значение длины волны в метрах. Чтобы частоту показывало только в целых значениях кГц, без десятичных дробей, нужно строку:

led.print(frequency);

изменить таким образом:

led.print(frequency,0);

По материалам интернет изданий

Обсуждение закрыто.