Телеграфный ключ на базе ардуино...
Привет всем читателям! Продолжаю рассказывать об интересных
проектах. Сегодня не просто проект ардуино, а ардуино для радиолюбителей.
Возможно в этом посте кто-то найдет для себя что-то полезное. И если это так то
будем считать, что все не зря. А теперь начнем, но начнем с небольшой
предыстории…
Начал изучать ардуино не просто так. А с целью сделать
множество проектов, в том числе и радиолюбительских. Один проект уже завершен
(то есть уже есть рабочая конструкция) это уже наверняка знакомый моим
читателям «Радиомаяк-1». Так же будем совершенствовать и далее ардуино-маяк, и
со временем расскажем о проекте «Радиомаяк-2». Но сегодня проект для любителей
телеграфа: мы будем делать телеграфный ключ, причем автоматический. Для тех кто
не знает, что это такое вкратце поясню: есть ручной (или вертикальный) где
нужно самому отстукивать точки и тире, и есть автоматический. В автоматическом
есть рычажок, у которого два положения: в одном положении генерируются точки, в
другом тире. Это значительно упрощает работу, да и руки не так устают…
В общем дело нужное и можно начать разрабатывать алгоритм.
Но тут решил еще немного поискать в интернете не делал ли кто-то уже нечто
подобное? И оказалось, что да делали. Так что решил на этот раз мне изобретать
велосипед, а просто взять уже готовый скетч и попробовать как все будет
работать. Во основе простой CW ключ от UA1CBM. Сразу скажу скетч от UA1CBM
заслуживает самых высоких похвал: эффективный и очень грамотный алгоритм
работы. Единственное это нельзя управлять скоростью передачи…
А управлять скоростью как раз не так и сложно. Тем более что
в проекте «Радиомаяк-2» это задача решена. Правда там используется другой
алгоритм формирования точек и тире, но это не такая уж и проблема. Здесь
управлять скоростью оказалось делом простым, так что дополнил скетч буквально
несколькими строчками и все готово…
Теперь наступает самое интересное. Нужно собрать прототип
схемы, а так же добавить еще переменный резистор. Прототип собираю на макетной
плате (или как еще иначе ее называют «бредборд»). И хотя схема несложная, но
прототип ее на макетке выглядит сложно. Поэтому обязательно привожу схему
(кстати схему чертил в программе rusplan, в которой самостоятельно начертил и
плату ардуино). Вот наконец схема собрана, и пора приступать к тестам…
Подключаю ардуино через USB к компьютеру, приступаю к программированию микроконтроллера.
Вот скетч компилируется (без ошибок – ура!) и начинается загрузка. Все прошло
без проблем. Приступаю к тесту. Пока самого манипулятора у меня нет (нужно
будет обязательно сделать), то вместо него я использовал две кнопки. Конечно
они работают, но н так хорошо, как манипулятор. Но тем не менее первые тесты
прошли: работает в принципе не плохо. Вот только скорость еще велика, немного
меняю данные в скетче (опытным путем) и после двух приближений получаю вполне
отличный результат. Теперь скорость меняется и все прекрасно работает.
Для тех кто желает повторить проект, скетч приведу ниже.
Если скорость покажется вам «не очень» то ее можно подрегулировать изменив
данные в скетче. Обратите внимание на сточку cw_delay= map(val, 0, 1024, 60,
130). Теперь смотрите: изменять нужно только два последних числа (в моем
примере: 60 и 130). Далее чем числа больше – тем будет меньше скорость. В моем
первоначальном скетче было 40 и 140: скорость очень большая в одном из крайних
положений переменного резистора, и очень маленькая в другом. Так что подобрал экспериментально
60 и 130. Но там сами смотрите… А теперь обещенный скетч:
/*
Simple
CW key by UA1CBM
Speed
control CW by RN6LLV
*/
const
int dashPin = 3; // тире
const
int ditPin = 2; // точки
const
int ledPin = 13; // the number of the LED pin
const int pot=0; // потенциометр на порт А0
int val;
int
cw_delay;
void
setup() {
//
initialize the LED pin as an output:
pinMode(ledPin,
OUTPUT);
//
initialize the pushbutton pin as an input:
pinMode(dashPin,
INPUT);
pinMode(ditPin,
INPUT);
}
void loop(){
val=analogRead(pot); // чтение данных с потенциометра
cw_delay=
map(val, 0, 1024, 60, 130);
//cw_delay=
(val/7);
if
(digitalRead(dashPin) == HIGH) //Тире
{
// turn
LED on:
digitalWrite(ledPin,
HIGH);
delay(3*cw_delay);
// turn
LED off:
digitalWrite(ledPin,
LOW);
delay(cw_delay);
}
if
(digitalRead(ditPin) == HIGH) //Тире
{
// turn
LED on:
digitalWrite(ledPin,
HIGH);
delay(cw_delay);
// turn
LED off:
digitalWrite(ledPin,
LOW);
delay(cw_delay);
}
}
Замечательно! Я как раз доделываю манипулятор и искал (ищу) схему автомата для манипулятора, а тут такой подарок на ардуино! Спасибо, буду пробовать.
ОтветитьУдалитьЗамечание - на Вашей схеме не указаны наминалы сопротивлений. Я так понял что постоянные резисторы (R1 и R2) в районе 10 кОм? а вот переменный какого номинала?
переменный 10 кОм постоянные по 1 кОм
ОтветитьУдалитьСпасибо за пояснение. Я начинающий радиолюбитель и вот решил изучать телеграф.
ОтветитьУдалитьВот вопрос. Как подключить данный автомат к моему UA1FA (первый вариант) если у него предусмотрен вход под стандартный (в то время) вертикальный манипулятор? Так сказать уже готовлюсь ...
Оптопара и реле?
Можно и через транзистор, можно и через оптрон. однако у меня здесь не получилось, я как раз в этих вопросах не силен, спрашивал ребят но так и не получилось... сделал хитрее: силовой ключ ардуино (на полевом транзисторе) который подавал ток на катушку внутри которой был геркон. Так что в итоге самодельное герконовое реле... можно конечно и обычный релейный модуль, но долго он не проживет)))) в смысле реле не предназначено там на огромное количество срабатываний...
УдалитьВы прямо на герконе намотали катушку (соленоид)? Как производили расчет соленоида? А то у меня есть пара советских (большие стеклянные герконы).
ОтветитьУдалитьUN7FGN.
73.
нет. катушку я взял от старого телевизора (там довольно толстый обмоточный провод), но сопротилвение ее было в районе 0,5 Ом. Пришлось еще добавить сопротилвение постоянный резистор 12-15 Ом (подбирал экспериментально) в итоге добился идеального срабатывания геркона при небольшой силе тока (питание геркон получает от аккумулятора 1,2 В) 0,1А. Геркон поместил в корпус катушки....
Удалитьhttp://arduinob.blogspot.ru/2016/04/1.html
ОтветитьУдалить/*
ОтветитьУдалитьSimple CW key by UA1CBM
Speed control CW by RN6LLV
*/
const int dashPin = 3; // тире
const int ditPin = 2; // точки
const int ledPin = 13; // the number of the LED pin
const int pot=0; // потенциометр на порт А0
int val;
int cw_delay;
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(dashPin, INPUT);
pinMode(ditPin, INPUT);
pinMode(11, OUTPUT); // объявляем пин 11 как выход
}
void loop(){
val=analogRead(pot); // чтение данных с потенциометра
cw_delay= map(val, 0, 1024, 30, 120);
//cw_delay= (val/7);
if (digitalRead(dashPin) == HIGH) //Тире
{
// turn LED on:
tone (11, 700); // включаем на пьезодинамик 700 Гц
digitalWrite(ledPin, HIGH);
delay(3*cw_delay);
// turn LED off:
noTone(11); // отключаем пьезодинамик на пин 11
digitalWrite(ledPin, LOW);
delay(cw_delay);
}
if (digitalRead(ditPin) == HIGH) //точка
{
// turn LED on:
tone (11, 700); // включаем на пьезодинамик 700 Гц
digitalWrite(ledPin, HIGH);
delay(cw_delay);
// turn LED off:
noTone(11); // отключаем пьезодинамик на пин 11
digitalWrite(ledPin, LOW);
delay(cw_delay);
}
}
С подключенным бузером на 11 пин и GND
https://www.youtube.com/watch?v=gfcZqILiwA8