Схема цифровой шкалы на Arduino UNO для связного КВ-приемника


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

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

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

Цифровая шкала очень проста в изготовлении, потому что использует готовые модули, - микроконтроллерную плату ARDUINO UNO и стандартный ЖК-дисплей на 2 строки по 16 символов типа 1602А на основе контроллера HD44780.

Единственное что придется сделать. - это входное устройство, берущее частоту с ГПД приемника, состоящее из усилителя-формирователя и счетчика - делителя.

Схема показана на рисунке 1. Входное устройство выполнено на транзисторе VТ1 и микросхемах D1 и D2. На транзисторе и двух элементах микросхемы D1 выполнен усилитель - формирователь импульсов. Его режим работы оптимально устанавливается под конкретный входной сигнал при помощи подстроечного резистора R1.

Принципиальная схема цифровой шкалы на Arduino UNO для связного коротковолнового радиоприемника

Рис. 1. Принципиальная схема цифровой шкалы на Arduino UNO для связного коротковолнового радиоприемника.

Так как частотомер на основе платы ARDUINO UNO не может измерять частоту выше 1 МГц, для измерения частоты настройки приемника нужно на входе установить делитель Желателен делитель на 100 Но. у нас же частотомер программируемый, и можно задать любую коррекцию его показаний.

Поэтому здесь делитель сделан на микросхеме D2, состоящей из двух двоичных счетчиков Счетчики включены последовательно, и импульсы берутся с третьего выхода последнего счетчика, таким образом коэффициент деления равен 128.

Далее сигнал, с третьего выхода D2 2 поступает на цифровой порт D8 платы ARDUINO UNO К цифровым портам D2-D7 платы ARDUINO UNO подключен модуль жидкокристаллического индикатора Н1 типа 1602А Питается входной узел, а так же и ЖК-индикатор, от стабилизатора напряжения 5V, имеющегося на плате ARDUINO UNO.

Но, вернемся к ЖК-индикатору. Индикатор представляет собой плату, на которой установлен собственно ЖК-дисплей и схема для его обслуживания, выполненная на двух безкорпусных микросхемах. Индикатор 1602А стандартный, на основе контроллера HD44780.

Обозначение 1602А фактически значит, что он на две строки по 16 символов в строке. Питание +5V на ЖК-индикатор поступает через вывод 2 его платы.

Общий минус на выводы 3 и 1. Поскольку в индикатор планируется только передавать информацию от контроллера, а не наоборот, вывод 5 (RW) соединен с нулем.

Данные на ЖК-индикатор будут поступать через его выводы 11-14 (выводы 7-10 не используются). Выводы 15 и 16 служат для подключения подсветки ЖК-индикатора.

На них подается напряжение 5V. Для управления ЖК-индикатором решено было использовать порты с D2 по D7 платы ARDUINO UNO. В принципе, можно и другие порты, но я вот так. решил использовать именно эти.

Программа

Программа на языке C++ приводится в таблице 1.

Таблица 1

Программа для микроконтроллера

Рис. 0. Программа для микроконтроллера.

/* цифровая шкала 2 */

#include

LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //порты для дисплея

int Htime; //длительность положительного полупериода

int Ltime; //длительность отрицательного полупериода

float Ttime; //длительность полного периода

float frequency; //значение частоты

float wave; //значение длины волны

void setup()

{

pinMode(8, INPUT); //входом будет порт 8

led.begin(16,2); //дисплей 2 строки по 16 символов

}

void loop() {

Htime=pulseln(8,HIGH); //измерение положительного полупериода

Ltime=pulseln(8,LOW); //измерение отрицательного полупериода

Ttime=Htime+Ltime; //вычисление полного периода

frequency=78125/Ttime+500; //вычисление частоты с учетом ПЧ

wave=299792458/frequency/1000; //вычисление длины волны

led.clear(); //очистка памяти дисплея

led.setCursor(0,0); //установка курсора на верхнюю строку

led.print("F="); //печать физической величины частоты F

led.print(frequency); //печать значения частоты

led.print("khz"); //печать единицы измерения khz

led.setCursor(0,1); //установка курсора на нижнюю строку

led.print("W= "); //печать физической величины длины волны W

led.print(wave); //печать значения длины волны

led.print("m"); //печать единицы измерения длины волны ш

delay(500); //время индикации 0,5 секунды

}

Сначала необходимо загрузить библиотеку LlquidCrystal для работы с ЖК-индикатором на основе HD44780. Поэтому программа начинается с загрузки этой библиотеки:

#include

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

Эта функция измеряет в микросекундах длительность положительного либо отрицательного перепада входного импульса. Так что измерение частоты здесь будет происходить через предварительное измерение периода.

Так как длительность положительного и отрицательного полупе-риодов в реальном входном сигнале могут различаться, если мы хотим измерить период входных импульсов нам нужно сложить длительность положительного и отрицательного полупериодов.

В программе длительность положительного полупериода обозначена Htime, длительность отрицательного полупериода - Ltime, а длительность всего периода - Ttime.

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

Htime=pulseln(8,HIGH);

Ltime=pulseln(8,LOW);

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

Ttime=Htime+Ltime;

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

приемника через делитель на 128, и то что значение периода выражено в микросекундах, происходит здесь:

frequency = 78125 / Ttime + 500;

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

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

frequency = 78125/Ttime - 500

Следует заметить, что значение ПЧ может быть и другим, просто вместо 500 нужно будет подставить фактическое значение ПЧ в данном приемнике, выраженное в кГц.

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

frequency = 78125 / Ttime

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

frequency = 156250 / Ttime

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

wave = 299792458 / frequency / 1000;

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

led.setCursor(0,0);

led.print("F=");

led.print(frequency);

led.print("khz");

led .setCursor(0,1);

led.print("W= ");

led.print(wave);

led.print("m");

Если хотите, чтобы частоту показывало только в целых значениях кГц. без десятичных дробей, нужно строку:

lcd.print(frequency); изменить таким образом:

led.print(frequency, 0);

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

Печатная плата и налаживание

На рисунке 2 показана печатная плата, на которой собран входной узел.

Налаживание сводится только к регулировке сопротивления резистора R1, которым регулируется режим работы транзистора VT1 и связанного с ним триггера Шмитта на элементах микросхемы D1.

Печатная плата для схемы цифровой шкалы к КВ-приемнику

Рис. 2. Печатная плата для схемы цифровой шкалы к КВ-приемнику.

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

Теоретически, данная цифровая шкала может работать на частотах до 100 МГц, но это только теоретически, потому что микросхемы 74НСТ на частотах больше 30-50 МГц уже начинают вести себя не достаточно уверенно. Впрочем, для работы в любом из радиолюбительских KB-диапазонов этого вполне достаточно.

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

Литература: 1. Каравкин В. «Цифровая шкала на ARDUINO UNO», РК-04-2017.


2 3536 На микроконтроллерах
arduino avr микроконтроллер микроконтроллер частотомер КВ связь измерения
Оставить комментарий: