Автор Тема: Всё про АРУ  (Прочитано 104547 раз)

0 Пользователей и 4 Гостей просматривают эту тему.

Оффлайн Игорь 2

  • Administrator
  • *****
  • Сообщений: 19719
Re: Всё про АРУ
« Ответ #180 : Декабрь 01, 2019, 10:26:19 pm »
Пните в нужном направлении .

Пинаю. Целый день сегодня потратил на моделирование работы последней АРУ в шумах и помехах.
Напомню - там были две времязадающие цепочки - с постоянными времени заряда 1 и 15 мс, и временем разряда соответственно 100 мс (пробовал и до 10 уменьшать), и временем, определяемым интеллектуалкой (либо бесконечность, либо 1 с.).
В очередной, и, надеюсь, теперь уже в последний раз сделал однозначный выход - в шумах и помехах АРУ с быстрой цепью адекватно работать не может - короткие выбросы помех, или шумов существенно хуже слушаются, если они отрабатываются АРУ, а не ограничителем, как я это и практиковал ранее, в результате чего, в очередной раз принято решение, отказаться от скоростной цепочки, оставив только длинную.
В новом варианте слабосигналки принято решение оставить АРУ по ПЧ (т. к., только с ней можно ставить лимитер +3 дБ, не опасаясь частого наскока на него), и временем срабатывания порядка 15 мс.
Интеллектуалку делаю не отключаемой - смысла отключать не вижу никакого - без неё работать вообще проблематично - либо существенная компрессия принимаемого сигнала и искажения, либо по нескольку секунд ждать отката.... 44443 lol22
Ничего невозможного нет

Оффлайн Игорь 2

  • Administrator
  • *****
  • Сообщений: 19719
Re: Всё про АРУ
« Ответ #181 : Декабрь 02, 2019, 01:25:44 am »
Вот здесь https://cloud.mail.ru/public/45wm/3jiaxZWQy запись с семёрки четверть часа назад.
Прохождение закрыто, но иногда что-то слышно. Работает интеллектуалка (хорошо слышно по характерной тишине после громких звуков, и быстрому нарастанию усиления спустя секунду после их окончания), быстрая цепь АРУ отключена, у медленной срабатывание 15 мс, лимитер +3 дБ относительно порога АРУ.   lllol lol22
Ничего невозможного нет

Оффлайн veso74

  • Hero Member
  • *****
  • Сообщений: 944
Re: Всё про АРУ
« Ответ #182 : Декабрь 02, 2019, 02:08:31 am »
Без сильных станций в эфире (с короткой антенной) демо-запись не дает много информации.

Добавлю еще как мое впечатление (можете не учитывать): невозможно дать оценка кореспондента "по слухом" - необходимо смотреть S-метр :), все "равно" и все "в шумов". Для меня радио звучит странно (работа АРУ: как будто антенна постоянно переключалась), невозможно слушать долгое время (шум в большем количестве), не могу представить работа с ето радио во время контеста. По крайней мере, не слушал такого радио в другом месте :).

А и реакция радио на атмесферние помехи есть выразительная: щраак, щраак ... (как грамофонной попкорн), с вся мощность атмосферного разряда (через ограничителя, конечно).

Вероятно (как говорите не один раз), для диспечерская работа так нормально (нет наблюдения у меня, только хамрадио).
« Последнее редактирование: Декабрь 02, 2019, 02:51:47 am от veso74 »

Оффлайн Игорь 2

  • Administrator
  • *****
  • Сообщений: 19719
Re: Всё про АРУ
« Ответ #183 : Декабрь 02, 2019, 02:23:58 am »
(шум в большем количестве

Никто не мешает усиление убрать. Но тогда слабые станции будут слабее сильных на слух. А мне это не нравится... pl33
Ничего невозможного нет

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: Всё про АРУ
« Ответ #184 : Декабрь 02, 2019, 07:23:28 am »
Да!  123123 Я так понял работает только слабосигнальное ару.

Критику принимаете?

И Вы пошли по этому пути, только через аналог. Вам будет не легко.
Не пойдет Игорь  dontt44
Я прослушал ваш файл. Любой всплеск врубает на 1 сек цепь с последующем резким возвратом, И выглядит это как грозовой разряд в августе.
Я прошел через это, даже выкладывал что-то подобное, но мне не понравилось и я переделал алгоритм. Ошибка в чем...У вас лимиттеры нормально работают их точно переделывать не нужно, а потом нужно чтобы основная цепь ару плавно (!)  снижала усиление именно плавно, лимиттер держит же в этот момент. Я в итоге к этому пришел. Что происходит: идет щелчок, за ним срабатывает лимиттер, и потом плавно начинает подходить основная цепь ару. И в этот момент щелчок заканчивается и ару не успела просадить до конца усиление(у вас именно так - просадила до конца) и теперь плавный (не резкий возврат) потому-что цепь не успела просадить усиление и нам не надо ее оч быстро возвращать.  Здесь, допустим, у меня две стадии возврата медленная и быстрая. В результате не важно какой сигнал пришел сильный или умеренный - возврат будет одинаковый точнее квадратичная скорость. Так же я писал в тонкостях про эффект 0 и как его нужно отлавливать. Вообщем без двойного подхода и разграничения по длительности у вас так и будет хлопать.

Я уж не знаю как вы пришли к этому быстрому возврату усиления - но это точно гениально! Сейчас только на самых последних буржуях такое ару стоит.
А вообще, в цифре конечно это всё на порядок легче делается. Я например, пройдя путь джедая с цифрой в ару, вряд ли теперь буду делать аналог - слишком много ограничений.
 
« Последнее редактирование: Декабрь 02, 2019, 07:37:03 am от ra0ahc »
Да да, я знаю, у меня ничего не получится )))

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: Всё про АРУ
« Ответ #185 : Декабрь 02, 2019, 07:41:00 am »
Ну и что бы не голословить вот код, точнее сам алгоритм.
Зеленым - это как раз алгоритм плавного изменения усиления каскадов в обеих ару, который убрал этот эффект, что у вас на записи.

void agcDacSelectLevel(uint8_t bank) {


    adcSlaboSumValue = 0;
    adcSilaSumValue = 0;

    uint8_t s = 0;
    uint8_t po = FRAME_SIZE / 2 - 1;

    if (agcCountSila) agcCountSila--;
    if (agcCountSlabo) agcCountSlabo--;
    if (agcCountDown) agcCountDown--;
    if (agcCountDownSila) agcCountDownSila--;
    if (agcCountSlaboUp) agcCountSlaboUp--;

    if (bank == 2) {
        s = FRAME_SIZE / 2;
        po = FRAME_SIZE - 1;

    }
    for (s; s <= po; s++) {

        adcSlaboSumValue += IN_Buffer_slabo[ s ];
        adcSilaSumValue += IN_Buffer_sila[ s ];

    }
    adcSlaboSumValue /= FRAME_SIZE / 2;
    adcSilaSumValue /= FRAME_SIZE / 2;




    //sila
    if ((adcSilaSumValue <= ADC_LEVEL_NORM_SILA + ADC_LEVEL_DELTA_SILA &&
         adcSilaSumValue >= ADC_LEVEL_NORM_SILA)
            ) { agcCountSila = AGC_HOLD_TIME_SILA; } //если сигнал еще высокий то продолжаем задержку


    if ((adcSilaSumValue >= ADC_LEVEL_NORM_SILA + ADC_LEVEL_DELTA_SILA ||
         adcSilaSumValue <= ADC_LEVEL_NORM_SILA - ADC_LEVEL_DELTA_SILA / 2)
            ) {

        if (adcSilaSumValue >= ADC_LEVEL_NORM_SILA + ADC_LEVEL_DELTA_SILA) {//если растет на входе
            uint16_t step;

            agcCountSila = AGC_HOLD_TIME_SILA;


            if ((float) (adcSilaSumValue) / ADC_LEVEL_NORM_SILA > 1.15) {
              step = (uint8_t) ((float) (adcSilaSumValue) / ADC_LEVEL_NORM_SILA * 40);
            } else step = 1;


            if (nowDacLevelSila + step <= DAC_LEVEL_MAX_SILA) { nowDacLevelSila += step; }
            else { nowDacLevelSila = DAC_LEVEL_MAX_SILA; }

            agcDacWrite(nowDacLevelSila, 1);
 //           agcDacWrite(0, 1);


        } else { //если падает
            if (!agcCountSila) { //если задержка закончилась, поднимать усиление
                uint8_t step;

                if ((float) ADC_LEVEL_NORM_SILA / (float) adcSilaSumValue > 1.8) {
                    step = (uint8_t) (ADC_LEVEL_NORM_SILA / (float) (adcSilaSumValue) * 20);
                    //step = 1;
                } else step = 1;

                if (!agcCountDown) {

                    if (nowDacLevelSila - step >= DAC_LEVEL_MIN_SILA) { nowDacLevelSila -= step; }
                    else { nowDacLevelSila = DAC_LEVEL_MIN_SILA; }

                    agcDacWrite(nowDacLevelSila, 1);
 //                   agcDacWrite(0, 1);

                    agcCountDownSila = 0;

                }
            }
        }
    }
    //
    //
    //slabo
    //
    //

    if ((adcSlaboSumValue <= ADC_LEVEL_NORM_SLABO + ADC_LEVEL_DELTA_SLABO && adcSlaboSumValue >= ADC_LEVEL_NORM_SLABO)
            ) { agcCountSlabo = AGC_HOLD_TIME_SLABO; } //если сигнал еще высокий то продолжаем задержку

    if ((adcSlaboSumValue > ADC_LEVEL_NORM_SLABO + ADC_LEVEL_DELTA_SLABO ||
         adcSlaboSumValue < ADC_LEVEL_NORM_SLABO)
            ) {


        if (adcSlaboSumValue >= ADC_LEVEL_NORM_SLABO + ADC_LEVEL_DELTA_SLABO) {//если растет на входе

            agcCountSlabo = AGC_HOLD_TIME_SLABO;



            uint16_t step = 1;
            if ((float) (adcSlaboSumValue) / ADC_LEVEL_NORM_SLABO > 1.15) {
                step = (uint8_t) ((float) (adcSlaboSumValue) / ADC_LEVEL_NORM_SLABO * 20);
                //        step = 1;
            } else step = 1;

            if (!agcCountSlaboUp) {//задержка на возрастание

                if (nowDacLevelSlabo + step <= DAC_LEVEL_MAX_SLABO) { nowDacLevelSlabo += step; }
                else { nowDacLevelSlabo = DAC_LEVEL_MAX_SLABO; }

//                agcDacWrite(1250, 0);
                agcDacWrite(nowDacLevelSlabo, 0);
                agcCountSlaboUp = 0;// const задержка на возрастание
            }

        } else { //если падает
            if (!agcCountSlabo) {

                uint8_t step;
                if ((float) ADC_LEVEL_NORM_SLABO / (float) adcSlaboSumValue > 1.9) {
                    step = (uint8_t) ((ADC_LEVEL_NORM_SLABO / (float) (adcSlaboSumValue)) * 25);
                    // step = 5;
                } else {
                    if ((float) ADC_LEVEL_NORM_SLABO / (float) adcSlaboSumValue > 1.05) {
                        step = (uint8_t) ((ADC_LEVEL_NORM_SLABO / (float) (adcSlaboSumValue)) * 10);
                         //step = 1;
                    } else {

                        step = 1;
                    }
                }
                if (!agcCountDown) { //плавное отпускание
                    if (nowDacLevelSlabo - step >= DAC_LEVEL_MIN_SLABO) { nowDacLevelSlabo -= step; }
                    else { nowDacLevelSlabo = DAC_LEVEL_MIN_SLABO; }
                    agcDacWrite(nowDacLevelSlabo, 0);
                    //agcDacWrite(1250, 0);

                    agcCountDown = 10;
                }
            }
        }


    }

    if (skip) skip = ~skip;
//        char buf[20];
//        GUI_SetFont(&GUI_Font8x16);

//        sprintf(buf, "%04d", (int) adcSilaSumValue / FRAME_SIZE);
//        GUI_DispStringAt(buf, 10, 70);
//        sprintf(buf, "%04d", (int) adcSlaboSumValue);
//        GUI_DispStringAt(buf, 10, 150);







}
« Последнее редактирование: Декабрь 02, 2019, 07:50:06 am от ra0ahc »
Да да, я знаю, у меня ничего не получится )))

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: Всё про АРУ
« Ответ #186 : Декабрь 02, 2019, 07:53:02 am »
К стати, управление через i2c цепями ару в реальном времени - утопия. Только SPI и на максимальной скорости (У меня на 3МГц из 18МГЦ возможных  cr123).
Да да, я знаю, у меня ничего не получится )))

Оффлайн Игорь 2

  • Administrator
  • *****
  • Сообщений: 19719
Re: Всё про АРУ
« Ответ #187 : Декабрь 02, 2019, 10:15:54 am »
Я так понял работает только слабосигнальное ару.

До отработки сильносигналки ещё 40 дБ. И она точь-в-точь такая же. Так что, ничего нового не добавится.

Любой всплеск врубает на 1 сек цепь с последующем резким возвратом

Нет, не любой. А тот, что длиннее 15 мс. Полагаю ввести возможность удлинять либо переключателем, либо переменным резистором через оптрон. Укорачивать точно не буду.

с последующем резким возвратом

С последующим резким возвратом через чётко заданное время, чтобы не искажать сигнал, и слушать не то, во что превратила эфир убогая АРУ, а, именно то, что там и идёт.
Время тоже полагаю сделать изменяемым, очевидно, две позиции - 0.5 с. для спорта, и 1 и 2с. (сейчас 1с) для жизни - полсекунды при спокойном разговоре - ацтой полный, если человек не тараторит, в паузах шумы лезут.

а потом нужно чтобы основная цепь ару плавно (!)  снижала усиление именно плавно, лимиттер держит же в этот момент.

А она плавно и снижает... cr123
Ничего невозможного нет

Оффлайн Игорь 2

  • Administrator
  • *****
  • Сообщений: 19719
Re: Всё про АРУ
« Ответ #188 : Декабрь 02, 2019, 10:23:30 am »
И в этот момент щелчок заканчивается и ару не успела просадить до конца усиление(у вас именно так - просадила до конца) и теперь плавный (не резкий возврат) потому-что цепь не успела просадить усиление и нам не надо ее оч быстро возвращать.

При плавном возврате потеряем возможную информацию, идущую следом. Повторю - какое-то время после щелчка длиннее 15 мс. АРУ стоит на месте, потом быстро, но плавно откатывается. Именно так я и задумывал.

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

Примерно то же и у меня - разница по времени отката, когда автоматика дала сигнал на него (напомню, время автоматики фиксированное), и после слабого, и после сильного возмущения, отличается не более чем на 50%, на слух это почти незаметно, т. к., собственно время отката меньше, чем то время, через которое автоматика даёт время на откат...

 
Критику принимаете?

А для чего я тогда файлы выложил?  44443 pl33 lol22

Ну, а по уму, чтобы понять, какой алгоритм лучше, нужно на одну антенну включать два приёмника, и стереопару писать, как я это всегда и делал... 123123
Ничего невозможного нет

Оффлайн Игорь 2

  • Administrator
  • *****
  • Сообщений: 19719
Re: Всё про АРУ
« Ответ #189 : Декабрь 02, 2019, 11:01:04 am »
Диапазон начинает просыпаться... 123123 lllol
Время срабатывания 15 мс, откат - через 1 с.  33wr

https://yadi.sk/d/0-wrsCrQdc-PSw
 1yep lol22
« Последнее редактирование: Декабрь 02, 2019, 11:04:52 am от Игорь 2 »
Ничего невозможного нет

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: Всё про АРУ
« Ответ #190 : Декабрь 02, 2019, 11:22:46 am »
И в этот момент щелчок заканчивается и ару не успела просадить до конца усиление(у вас именно так - просадила до конца) и теперь плавный (не резкий возврат) потому-что цепь не успела просадить усиление и нам не надо ее оч быстро возвращать.

При плавном возврате потеряем возможную информацию, идущую следом. Повторю - какое-то время после щелчка длиннее 15 мс. АРУ стоит на месте, потом быстро, но плавно откатывается. Именно так я и задумывал.


ага, и я про тоже, по картинкам всё ок, а на слух не очень. По логики у вас всё ок, по другому сейчас не пойдет вообще.  Здесь я пытаюсь сказать про тонкий момент, что если немного дернули ару то можно вообще без паузы и плавно вернуть, а если сильно дернули тогда все по полной с паузой и резким всплеском.
Да да, я знаю, у меня ничего не получится )))

Оффлайн Игорь 2

  • Administrator
  • *****
  • Сообщений: 19719
Re: Всё про АРУ
« Ответ #191 : Декабрь 02, 2019, 11:28:33 am »
Здесь я пытаюсь сказать про тонкий момент, что если немного дернули ару то можно вообще без паузы и плавно вернуть, а если сильно дернули тогда все по полной с паузой и резким всплеском.

Это как у меня с двумя времязадающими цепями. Типа, одна быстрая, другая - медленная. Много раз пробовал, и ровно столько же раз понимал, что мне это не подходит, оставляя только медленную. Сейчас стоит 15 мс, обязательно предусмотрю увеличение до 100.  123123
Ну, а возможностей, конечно же, у Вас больше - творите, выдумывайте, пробуйте... cr123 lllol lol22
« Последнее редактирование: Декабрь 02, 2019, 11:30:07 am от Игорь 2 »
Ничего невозможного нет

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: Всё про АРУ
« Ответ #192 : Декабрь 02, 2019, 11:40:35 am »
rm5w очень наглядно показывает под что сделано. 123123 вот такой эфир хорошо слушать.
 
 Я раньше ваш первый файл еще с ve3 слушал там тоже громкие станции хорошо с вашим ару работали.
Учитывая как я смотрел во время контеста настройки ару на буржуях....там все конечно в спорте стоят с мин задержкой и резким возвращением. Может еще сделаете запись при мин задержке, что б быстрее возвращалось. Ну и с 15мс там тоже проблемы могут возникнуть с нормальными станциями.
Я почему-то у себя полное усиление по пч2 не давал, сильно много шума и ару тяжелее проваливать громкие станции.
Да да, я знаю, у меня ничего не получится )))

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: Всё про АРУ
« Ответ #193 : Декабрь 02, 2019, 11:42:26 am »
Забыл спросить, у вас сколько ворота при котором начинает срабатывать ару?
(у меня нормально работает вся система от 4дб ...сейчас 7дб ворота стоят.)
Да да, я знаю, у меня ничего не получится )))

Оффлайн Игорь 2

  • Administrator
  • *****
  • Сообщений: 19719
Re: Всё про АРУ
« Ответ #194 : Декабрь 02, 2019, 11:44:46 am »
Забыл спросить, у вас сколько ворота при котором начинает срабатывать ару?

3 дБ стоит. Т. е., если сигнал в течение секунды (время, напомню, опционное) хотя бы один раз в интервал от -3 дБ до нуля попал, АРУ не двигается.
Подъём более чем на 15 мс (время опционное) более нуля вызывает мгновенное срабатывание АРУ.
Лимитер +3 дБ, по ушам особо не ездит. cr123 Искажений от лимитера при нулевом уровне нет совсем.
Падение ниже -3 дБ (если ни разу за секунду больше не было), вызывает команду разряда времязадающего конденсатора (постоянная времени разряда 1 с).
« Последнее редактирование: Декабрь 02, 2019, 11:51:19 am от Игорь 2 »
Ничего невозможного нет