|
Разместил: |
ASH |
Авторские права |
RN3DAS |
|
Увеличить
Довольно давно использую радиостанцию Q-Mac HF-90. Радиостанция хорошо себя зарекомендовала благодаря своей простоте и небольшим габаритам. Кроме того, радиостанция имеет достаточную выходную мощность, которая способна обеспечить уверенную радиосвязь из различных условий. В то же время есть у этой радиостанции и недостатки. Для меня одним из главных является отсутствие шумоподавителя. Если оставлять радиостанцию на дежурном приеме, она начинает надоедать шипением эфира. Конструкция радиостанции довольно проста, ее схема есть в свободном доступе. Производитель мог встроить функцию шумоподавителя в прошивку микропроцессора станции, как он сделал это для режима SelCall, но по каким-то причинам не стал этого делать.
У меня доступа к редактированию прошивки микропроцессора нет, поэтому было решено реализовать необходимые мне функции на контроллере Arduino, который будет работать параллельно микропроцессору станции. Контроллер имеет небольшие размеры и вполне может быть размещен в корпусе радиостанции.
Для начала был выбран вариант простого порогового шумоподавителя. На схеме радиостанции присутствует линия AGC, уровень на которой изменяется соответственно уровню принимаемого сигнала. Реализовать пороговый шумоподавитель с использованием этой линии достаточно просто – достаточно задавать порог срабатывания шумоподавителя и сравнивать с ним уровень принимаемого сигнала. Если уровень принимаемого сигнала ниже порога срабатывания, то шумоподавитель закрыт, если принимаемый сигнал превышает порог срабатывания – шумоподавитель открывается. Реализовываться «закрытие» шумоподавителя может стандартным способом, таким как замыкание входа УНЧ на землю.
На схемах 1, 2 и 3 показано подключение контроллера Arduino к цепям радиостанции Q-Mac HF-90. Из схемы 1 видно, что сигнал AGC можно взять с тестового разъема PL5. Так же на ней показано как выполнить замыкание входа УНЧ (U28) на землю.
Не решенным остается вопрос регулирования уровня шумоподавителя. У радиостанции Q-Mac HF-90 не очень много органов управления: выключатель питания, 6 функциональных кнопок и энкодер-регулятор громкости. Все они уже задействованы в управлении радиостанцией. Но есть еще dtmf тангента, на ней 12 кнопок, из которых задействованы только *, 0 и #. За дешифровку сигналов с dtmf тангенты в радиостанции отвечает микросхема U9. На ее выходах D0, D1, D2 и D3 появляются различные сочетания логических уровней, в зависимости от нажатой кнопки. Так же на выходе DV появляется высокий логический уровень при получении сигнала dtmf. Данные сигналы легко считать контроллером Arduino и использовать в своих целях. Подключение Arduino к выходам микросхемы U9 показано на схеме 2.
С помощью контроллера Arduino можно добавить еще одну дополнительную функцию, это контроль напряжения питания. Она будет полезна чтобы не допустить критического разряда аккумуляторной батареи, что важно, например, при питании радиостанции от Li-Po аккумулятора. Цепи для реализации данной функции есть в схеме радиостанции, но функция окончательно не реализована, о чем так и написано в сервисмануале. В нашем случае никакие дополнительные цепи не используются, а просто напряжение питания через делитель заводится на аналоговый вход Arduino. На схеме 3 показано подключение делителя к межплатному разъему PL3 радиостанции. На ножке 6 этого разъема присутствует +10 вольт с линейного регулятора. При нормальном напряжении питания радиостанции +12…+24В напряжение на этой ножке не превышает +10В, при снижении напряжения питания ниже +10В напряжение на этой ножке так же снижается, и можно это отследить на аналоговом входе контроллера. С этого же разъема, с ножки 5, берем +5 вольт питания для контроллера Arduino.
Теперь о прошивке Arduino. Тут все зависит от умения программировать. Я не очень большой профессионал в этом деле, поэтому нужные мне функции реализовал довольно просто. В loop считываем состояние регистров клавиатуры с цифровых входов 2,3,4 и 5, и уровень AGC с аналогового входа A0:
KeyEn = digitalRead(6);
Key1 = digitalRead(2);
Key2 = digitalRead(3);
Key3 = digitalRead(4);
Key4 = digitalRead(5);
AGC = analogRead(A0)*10;
Уровень AGC умножен на 10 для того, чтобы регулировать уровень шумоподавителя с большей дискретностью.
Проверку нажатия кнопок dtmf клавиатуры проводим следующим образом:
if (KeyEn == 1 && Key1 == 0 && Key2 == 1 && Key3 == 0 && Key4 == 0) SQLlvl = SQLlvl+1;
if (KeyEn == 1 && Key1 == 0 && Key2 == 0 && Key3 == 0 && Key4 == 1) SQLlvl = SQLlvl-1;
Если в регистрах клавиатуры появляется комбинация, соответствующая нажатой кнопке 2 («вверх»), то поднимаем порог срабатывания шумоподавителя, если комбинация, соответствующая нажатой кнопке 8 («вниз»), то снижаем порог срабатывания шумоподавителя.
Далее проводим сравнение уровня сигнала AGC с установленным порогом шумоподавителя. Если AGC превышает установленный порог, то открываем ШП подавая на цифровой выход 7 низкий уровень, если не превышает, то закрываем ШП, подавая на цифровой выход 7 высокий уровень, тем самым с помощью n-p-n транзистора замыкая вход УНЧ на землю:
if (AGC <= SQLlvl)
{
digitalWrite(7, HIGH);
}
else
{
digitalWrite(7, LOW);
}
Контроль напряжения питания реализован тоже достаточно просто. Считываем аналоговый вход A1, если там уровень ниже 400 (что для делителя, использованного в моем случае составляет 10В), то выдаем трехтоновый сигнал на выход 9. Arduino умеет генерировать тональные сигналы требуемой частоты. Тоновый сигнал с ножки 9 подаем на вход УНЧ, как показано на схеме 1. Подключение по данной схеме позволяет слышать этот тоновый сигнал вне зависимости от установленного уровня громкости и порога шумоподавителя. Переменная BattCycle используется чтобы установить частоту выдачи сигналов:
BattVol = analogRead(A1);
if (BattVol<=400 && BattCycle >= 4500) {
tone(9, 350, 200) ;
delay (200);
tone(9, 320, 200) ;
delay (200);
tone(9, 300, 300) ;
Serial.println("!!!") ;
BattCycle = 0;
}
BattCycle++;
if (BattCycle > 5000) BattCycle = 0;
Размещение контроллера Arduino внутри радиостанции показано на рисунке. Как видно, он там размещен вполне компактно, контроллер и линии его подключения не мешают закрывать корпус. На приложенном видео показана регулировка уровня шумоподавителя и подача тонового сигнала при уменьшении напряжения питания.
В конце хотелось бы сказать, что в данной статье описывается не законченная модернизация конкретной радиостанции, а возможность с помощью компактных и недорогих контроллеров Arduino добавлять различные функции. Окончательная реализация может зависеть от написанной программы для контроллера. Например, в работу шумоподавителя неплохо было бы добавить гистерезис, или реализовать какой-то совсем другой алгоритм срабатывания.
[Видео YouTube - нажмите для просмотра]
[Видео YouTube - нажмите для просмотра]
|
|
Автор |
Комментарий |
r1bam Участник
|
09 Мар 2017 15:29
Спасибо за Ваш труд, очень интересная доработка. Надо развивать направление, программа максимум- полная замена штатного микроконтроллера(реализовать VFO и другие ништяки). У меня старая ревизия логической платы(issue L) и пока не могу разобраться(схема не соответствует выложенному мной мануалу). Да и борюсь с заменой транзисторов драйвера, ищу замену.
|
Pavelectric Участник
|
10 Мар 2017 13:00
Спасибо за труд Александр!
Теперь ломаю голову, как эту красоту приспособить к своему 817му.
|
Гулливер Участник
|
25 Янв 2023 01:03
А прошивка ещё доступна ?
|
Добавлять комментарии могут только зарегистрированные, активировавшие регистрацию и не ограниченные в доступе участники сайта!
|
Файл создан: 07 Мар 2017 16:45, посл. исправление: 07 Мар 2017 16:52 |
|