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


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

Внося простейшие изменения в программу цифровой шкалы можно обеспечить работу с различными значениями промежуточной частоты, а так же с приемником прямого преобразования, у которого частота гетеродина равна частоте входного сигнала либо в два раза ниже её.

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

Цифровая шкала очень проста в изготовлении, потому что использует готовые модули, - микроконтроллерную плату 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);

Набирая программу (таблица 1) совсем не обязательно набирать то, что в строках после знака « ; » (точка с запятой). Потому что это комментарии и пояснения, никак не влияющие на работу программы.

Каравкин В. РК-2017-04.


1 6248 Приставки к радиоприемникам
шкала КВ arduino
Оставить комментарий:

cashback