dynamic articles Main page

Keyer RU3GA

Вот  решил сделать такой на пробу. Хоть и не люблю я пики, и закрытые (без исходников) прошивки*, но тут привлекла массовая повторяемость, возможность передавать с клавиатуры, 4 ячейки памяти и возможность уходить в сон, что позволяет питать устройство от маленькой батарейки долгое время. Испытаю - будет видно! На печатной плате заложено много избыточных плюшек, наверняка не все буду использовать, но пусть будет!

* - Справедливости ради скажу - автор всё-таки поделился исходниками прошивки. Интересно посмотреть на происходящее внутри!


 11.11.2022     Поправив некоторые мелкие косячки в разводке дорожек печатной платы и "вкрячивания" переменного резистора, который удалось купить (рассчитывал на другой тип, но в продаже их нет, а ждать месяцы из китая невтерпёж), ключик в общем то запустился. Проблемой оказалась придуманная мною система питания процессора напряжением от резисторов подтяжки трансивера SW2013mini. А там подтяжка только 3,3 вольта.. И запаса энергии на электролите хватает на 3-4 точки или на пару тире... Попытка увеличить электролит на порядок кардинально ничего не меняет, хватает на символ - другой, а потом пищит, но трансивером уже не управляет... И львиную долю энергии сжирает светодиод индикации передачи. А отказываться от "красот" индикации не хочется. Буду придумывать варианты дальше... Самое простое - чуть модифицировать трансивер, развязав цепи ключа и 3,3 вольтового процессора трансивера диодиками и добавить резисторы подтяжки на 5 вольт, и сопротивлением чуть поменьше, чтоб обеспечить ток порядка 3-5 миллиампер (платка потребляет порядка 2,5 мА при нажатии ключа).

 17.11.2022 Поменял электролит на ионистор, чтоб запаса энергии было поболее. Я в тестах не работаю, большого запаса не нужно.. Но тока через резисторы подтяжки всё равно мало, заряд ионистора идет оооочень долго и напряжения не хватает для устойчивого зажигания светодиода  и открывания ключевого транзистора. Поэтому всё таки переделал подтяжку цепей ключа в трансивере на 5 вольт. Пришлось добавить два развязывающих диода и пару 1Ком резисторов на 5 вольтовую подтяжку. Сразу стало веселее! Ключ заряжает ионистор примерно 30 сек, а далее можно работать! При этом заряда ионистора в 0.3 Ф хватает для работы ключа даже через паузу в несколько дней. 

P.S. При рассмотрении дорожек печатной платы миника выяснилось, что ключ подключается к микроконтроллеру через фильтры из резистора в 100 Ом и конденсатора в 0.01 мкФ, которых в принципиальной схеме трансивера нет... UPD - есть, я слепошарый...

23.11.2022 Добавил контроллер зарядки аккумулятора. Осталось найти очень миниатюрный Li-Po аккумулятор, желательно влезающий в оставшееся место. Ёмкость чем меньше тем лучше, ибо потребление крошечное, а при работе с клавиатурой всё равно придёться питать от внешнего источника через то-же mini-USB гнездышко, что и при зарядке. Так-же заменил резистор, регулирующий ток зарядки, на 10 кОм - максимальный, допустимый в даташите на микросхему 4056 для минимального тока зарядки в 250 мА.

p.s. Кондюк - временный эмулятор аккумулятора, без него контроллер сходит с ума. Вполне возможно, в итоге, придётся добавить небольшой электролитический конденсатор на постояннку.

PPS В одной из публикаций наткнулся на даташит с несколько отличающейся табличкой выбора зарядного тока:

Надо будет померять, как реально обстоят дела с этим параметром!

07.10.2023 Не прошло и года, как удалось раздобыть разъёмы PS/2 на плату. Чуть чуть не подошли отверстия - футпринт под гнездо делал сам, доли милиметра не сошлись, и в итоге гнездо не ставится. Пришлось рассверливать отверстия и дремелем корректировать посадки под силовые плоские выводы экранирующего корпуса. Но это но это несложно. Проблема в том, что на клавиатуру нет никакой реакции. перепроверил разпиновку выводов - всё верно. С форума -  UY1IF : "Собирал и версию с клавиатурой (не себе). Все работало. Уже не помню всех нюансов, но клавиатура подходит далеко не любого типа. Нужна более старого образца по-моему."  Следуя совету, перепробовал пока две найденных заведомо рабочих клавиатуры. Пока не победил...

25.10.2023 Заработало! Во первых, оказались перепутаны дорожки clock  и data, идущие на PS/2. Разбираться лень, я прошляпил при разводке платы, или на схеме ошибка. Пришлось порезать дорожки и поставить перемычки. Во-вторых, обнаружилась хитрая особенность взаимодествия кейера и клавиатуры - после подключения клавиатуры надо обязательно обресетить процессор, в противном случае с клавиатуры вместо отдельных символов передаёться какая то дичь! Поскольку по задумке автора, на кейере выключателя питания не предусмотрено - вместо этого контроллер отправляется в глубокий сон, пришлось добавить кнопочку reset, принудительно дергающую 4 ногу процессора, ну и не забывать после подключения клавиатуры нажать на эту "волшебную" кнопочку! Поправил свою версию печатки на будущее. Осталось довести до ума придуманный мною совмещенный вариант управления ключём и возможностью подключения в это же гнездо наушников для тренировок по работе на ключе. Туда же можно подключить УКВшку для использования в качестве маяка - будет возможность управлять ее включением на передачу и подавать туда звуковую модуляцию при нажатии на ключ. Точнее, это все работает, надо лишь подобрать некоторые номиналы резисторов для необходимых уровней звука.

Картинка обновлённой и справленной версии платы с моими доработками справа. Плата так же односторонняя с некоторым количеством проволочных премычек. Можно сделать вместо перемычек второй, верхний слой проводников. Два вариантных места под звукоизлучатель. Два варианта питающего мини-USB разъема - на плату и использование зарядника для Li-Po аккумулятора. Возможность питания от цепей поддтяжки ключа трансивера (разумеется без PC клавиатуры), необходимо установить ионистор. Возможность питания от часовой 3х вольтовой батарейки (опять же без PC).

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


Ссылки на исходные материалы:

Автор таки поделился исходниками своих прошивок. "Для тех кто что-то хочет "прикрутить своё" - исходники обоих конструкций. Все делалось в связке MPLAB+PICC
В тексте программ вроде делал комментарии для себя, поэтому все должно быть понятно. Ну и не судите строго за код - я все ж не программер , а просто любитель "

http://www.cqham.ru/forum/showthread.php?15688-CW-%EA%EB%FE%F7-RU3GA&p=1284873&viewfull=1#post1284873 

Зачёт! (хотя вряд-ли буду что-то измениять. Но OpenSource - !!!) Спасибо!


 Немножко выжимок с форумов для себя: (а то заметил, что инфа из интернета иногда исчезает...)

http://www.cqham.ru/forum/showthread.php?15688-CW-%EA%EB%FE%F7-RU3GA&p=501993&viewfull=1#post501993

Александр (RU3GA), свое время поправил в Вашем исходнике передачу паузы(пробела) с клавиатуры. Кроме того, функцию декодирования элементов при записи в память с пилы тоже пришлось подправить, так как не совпадали временнЫе задержки вначале и конце цикла декодирования. Видимо это из-за разной системы команд пиков и авров при обработке компиляторам у меня получались циклы разной длительности. Разбираться в ассемблерном тексте я не стал, просто добавил несколько скобок в исходнике. В Вашей версии прошивки видимо получилось все нормально после компиляции.
По поводу К1ЕЛ ключа – там тоже не все шоколадно (это только на мой взгляд). Во всяком случае, все его возможности по изменению длительности и соотношения знаков я не стал претворять в жизнь, хотя места в памяти ключа еще вагон.
Из залетов в тексте я сумел найти дополнительно к тем перечисленным выше моментам, только неверную передачу какой-то буквы, но это уже было Вами исправлено к этому моменту.Кроме того, что-то было еще и с обработкой клавиш стрелок и правой цифровой клавиатуры. Это тоже все сделал на конус.
В Вашей конструкции вижу только один недостаток, обусловленный реализацией псевдо-АЦП: это очень большая неравномерность изменения скорости передачи при вращении потенциометра. Мы с Виктором Николаевичем это обсуждали, когда он отрабатывал свой ключ на меге8. Он поступил самым простым путем – поставил резистор с характеристикой, компенсирующей эту неравномерность, а я менял в программе коэффициент пересчета скорости в зависимости от напряжения с АЦП. В Вашей конструкции изменить программно это будет сделать затруднительно, поэтому выход только как у Виктора.
Если у Вас еще не пропало желание подправить текст для реализации паузы с клавиатуры, скажите, куда послать исходник, там все отмечу, что правил.
Николай.

http://www.cqham.ru/forum/showthread.php?15688-CW-%EA%EB%FE%F7-RU3GA&p=502178&viewfull=1#post502178

Смею доложить, что при передаче с комповой клавиатуры Александр предусмотрел в оперативной памяти ключа кольцевой буфер на 60 байтов, поступивших с клавиатуры. Это немного меньше, чем 60 нажатий на клавиши клавиатуры (потому на одно нажатие и отпускание клавиши клавиатура генерит не менее 3 байтов) , но более, чем выше крыши, чтобы даже люди с сильно-сильно развитыми щу-пальцами на любой практически используемой скорости передачи не смогли его перегрузить. Другой вопрос, что если в этом буфере встретится код, соответствующий клавише «пробел», то реакция на этот код при передаче нулевая – этот символ просто пропускается, и начинается обработка следующего символа в буфере. Этот код обрабатывается только в режиме записи сообщения в одну из ячеек памяти, которых всего 4 по 32 знака. Тогда при воспроизведении из ячейки пауза между словами будет воспроизведена.
При передаче 25-35 слов по 5 знаков в минуту пауза между словами спокойно выдерживается без нажатия на пробел. Поэтому, на мой непросвещенный взгляд, Александр прав: - считать это косяком можно лишь с достаточной мерой условности.
Ну, а чтобы никто не мог бросить фразу типа «ну-ну, пилите Шура, пилите…»,
Александр, можно изменить функцию обработки буфера клавиатуры так:
void play_comp_keyboard()
{
if ( scan_code_letter <= 0x5F )
{
if ( scan_code_letter == 0x29) // Если "пробел"
{
//==================== ==================== ==============
if ( write_comp_flag)
{long_pause_flag=1;
write_mem_comp_keybo ard();
}
else
{
delay_element(speed) ;
delay_element(speed) ;
delay_element(speed) ;
delay_element(speed) ;
}
}//if ( scan_code_letter == 0x29) // Если "пробел"
//==================== ==================== ==================== =====
… и будет людям так необходимая пауза


Всякое на подобную тему:


0 Comments
Posted on 07 Nov 2022 by RM9WY
Name: Remember me
E-mail: (optional)
Smile:smile wink wassat tongue laughing sad angry crying 
Powered by CuteNews