Автор Тема: ФНЧ-КСВметр-автоТЮНЕР (дневник)  (Прочитано 39562 раз)

RZ6FE

  • Гость
Re: ФНЧ-КСВметр-автоТЮНЕР (дневник)
« Ответ #60 : 20 Апреля 2019, 15:16:12 »
Что-то вы давно дневник не обновлял...
Скучно.

Оффлайн ra0ahc

  • ***
  • Сообщений: 73
  • Репутация: +1/-4
    • Просмотр профиля
Re: ФНЧ-КСВметр-автоТЮНЕР (дневник)
« Ответ #61 : 20 Апреля 2019, 16:02:21 »
Программирую !!! Это не очень красочно !!! Уже третий алгоритм пробую . Программированием очень много время занимает . Сижу , ноутбук на коленях , трансивер на боку - тестирую работу тюнера. Пока автомат который работает сам - тупее чем я ))) у меня лучше настраивается в ручном  режиме... пока )))
Уже три  дня в таком режиме !
« Последнее редактирование: 20 Апреля 2019, 17:27:04 от ra0ahc »

Оффлайн ra0ahc

  • ***
  • Сообщений: 73
  • Репутация: +1/-4
    • Просмотр профиля
Re: ФНЧ-КСВметр-автоТЮНЕР (дневник)
« Ответ #62 : 20 Апреля 2019, 17:25:51 »
Вот пример дискретного анализа (реальный):
АД8307 выдает от 0.6в до 2.4в (2.4 в это 100Вт на выходе) , измерить могу только с шагом 12 битами (14 со сдвигом 2) с АЦП - это 8192 варианта.
Сюда подсыпем перца, в виде дриблинга АЦП (это 2 бита, которы я сдвинул), девиацию выходного сигнала (наверное ...не знаю почему) ну и самое веселое это контакты реле (причем реле Омрон ...дорогие). И все это замесим в цикл.

Оффлайн ra0ahc

  • ***
  • Сообщений: 73
  • Репутация: +1/-4
    • Просмотр профиля
Re: ФНЧ-КСВметр-автоТЮНЕР (дневник)
« Ответ #63 : 20 Апреля 2019, 19:19:18 »
Вот основной цикл поиска до 90% от ручной настройки дает!!!


 //анализ по 2 шагу.
            if (tunerTuningStep == 2) {
                uint8_t exit = 3;
                uint32_t rlNew = 0;//tunerLastBestPSR[2];//RL uV;
                uint32_t rlBest = tunerLastBestPSR[2];//лучший рл в цикле uV
                uint8_t cNow = tunerMaxC;// (uint8_t)tunerLastBestValueLC[nowBandIsNumber][1];
                uint8_t lNow =0;// (uint8_t)tunerLastBestValueLC[nowBandIsNumber][0];;
                uint8_t cBest = 0;
                uint8_t lBest = 0;
                uint8_t max=40;
                int8_t min=-40;
                // uint8_t c50Best = tunerMore50;
                uint8_t orLC = 0xff; // 0-тюним L, ff-тюнем С, меняем местами

                while (exit) {

                    int lastFor = 0xff;//последний в цикле лучший

                    for (int i = min; i <= max; i++) {
                        int8_t dropCircle=0;//пропустить  цикл да нет
                        if (orLC) {
                            if ((int)cNow - i <= 255 && (int) cNow - i >= 0)cNow -= i;
                            else dropCircle=1;//пропустить этот цикл
                        } else {
                            if ((int)lNow + i >= 0 && (int)lNow + i <= 0x7f)lNow += i;
                            else dropCircle=1;//пропустить этот цикл
                        }
                        if (!dropCircle) {
                            tuner_write(tunerMore50 ?
                                        (uint8_t) (lNow | 0x80)
                                                    ://подставим бит кондера
                                        (uint8_t) (lNow & 0x7f),
                                        cNow);
                            tunerRaleyTimer = 20; // ini timer of relay
                            while (tunerRaleyTimer) {}

                            read_swr_tuner();//read swr ADC
                            rlNew = SWR_ch_value[0] - SWR_ch_value[1];//RL

                            if (rlNew >>1 > rlBest>>1 ) {
                                rlBest = rlNew;
                                cBest = cNow;
                                lBest = lNow;
                                lastFor = i;
                                tunerCircleC = cBest;
                                tunerCircleL = lBest;
                                rl = rlBest;
                                exit = 3;
                                tunerSaveBest();

                                //c50Best=tunerMore50;//потом может пригодится если напрвление выбрано не правильно
                            }
                        }

                    }
                    //если крутим -С
                    if (orLC && lastFor == min) { //крайнее лучшее положение C крутить
                        cNow = cBest;
                    }
                    //если крутим +L
                    if (!orLC && lastFor == max) { //крайнее лучшее положение L продолжем еще крутить
                        lNow = lBest;
                    }
                    //если в данном цикле больше небыло хороших результатов
                    if (lastFor == 0xff ) {
                        exit--;
                        orLC = ~orLC;
                    }
                    if (lastFor > min && lastFor < max){
                        if(orLC)cNow = cBest;
                        if(!orLC)lNow = lBest;
                        orLC = ~orLC;//меняем Л С местами
                    }
                }

                char bufSwr[15];
                int ss = (int) (100*rlBest/ 20000); //0.02v/db

                sprintf((char *) bufSwr, "RLv=%05d  C=%03d L=%03d", ss, cBest,lBest);
                BSP_LCD_DisplayHStringAt(61, 206, (uint8_t *) bufSwr, LEFT_MODE);

                tuner_write(tunerLastBestValueLC[nowBandIsNumber][2] ?
                            (uint8_t) (lBest | 0x80)
                                                                     ://подставим бит кондера
                            (uint8_t) (lBest & 0x7f),
                            (uint8_t) cBest);

                tunerAutoStartYN = 0;
                return;

            }
        }
        //}

Оффлайн ra0ahc

  • ***
  • Сообщений: 73
  • Репутация: +1/-4
    • Просмотр профиля
Re: ФНЧ-КСВметр-автоТЮНЕР (дневник)
« Ответ #64 : 20 Апреля 2019, 19:20:05 »
В инете нет таких алгоритмов (или я плохо искал)
« Последнее редактирование: 21 Апреля 2019, 05:14:02 от ra0ahc »

Оффлайн ra0ahc

  • ***
  • Сообщений: 73
  • Репутация: +1/-4
    • Просмотр профиля
Re: ФНЧ-КСВметр-автоТЮНЕР (дневник)
« Ответ #65 : 21 Апреля 2019, 16:49:53 »
100% как руками !!!!

Процедура рабочая.

Оффлайн ra0ahc

  • ***
  • Сообщений: 73
  • Репутация: +1/-4
    • Просмотр профиля
Re: ФНЧ-КСВметр-автоТЮНЕР (дневник)
« Ответ #66 : 21 Апреля 2019, 17:02:50 »
до и после настройки
смотреть RL db

Оффлайн ra0ahc

  • ***
  • Сообщений: 73
  • Репутация: +1/-4
    • Просмотр профиля
Re: ФНЧ-КСВметр-автоТЮНЕР (дневник)
« Ответ #67 : 21 Апреля 2019, 17:03:55 »
эта

Оффлайн ra0ahc

  • ***
  • Сообщений: 73
  • Репутация: +1/-4
    • Просмотр профиля
Re: ФНЧ-КСВметр-автоТЮНЕР (дневник)
« Ответ #68 : 21 Апреля 2019, 17:17:27 »
Грубый алгоритм

Оффлайн ra0ahc

  • ***
  • Сообщений: 73
  • Репутация: +1/-4
    • Просмотр профиля
Re: ФНЧ-КСВметр-автоТЮНЕР (дневник)
« Ответ #69 : 22 Апреля 2019, 06:41:04 »
Расклад по  L C

//реальные емкости pf (8 штук)
uint16_t tunerCPF[][2] = {
        {0b00000001, 2},
        {0b00000010, 4},
        {0b00000100, 12},
        {0b00001000, 24},
        {0b00010000, 54},
        {0b00100000, 115},
        {0b01000000, 225},
        {0b10000000, 580}
};
//реальные индуктивности nH (7 штук)
uint16_t tunerLNH[][2] = {
        {0b00000001, 22},
        {0b00000010, 63},
        {0b00000100, 125},
        {0b00001000, 252},
        {0b00010000, 470},
        {0b00100000, 990},
        {0b01000000, 2200}
};

Оффлайн ra0ahc

  • ***
  • Сообщений: 73
  • Репутация: +1/-4
    • Просмотр профиля
Re: ФНЧ-КСВметр-автоТЮНЕР (дневник)
« Ответ #70 : 22 Апреля 2019, 18:15:18 »
Особенность настройки
С: уходит почти до 0 и потом вместе с Л начинает расти.

Оффлайн ra0ahc

  • ***
  • Сообщений: 73
  • Репутация: +1/-4
    • Просмотр профиля
Re: ФНЧ-КСВметр-автоТЮНЕР (дневник)
« Ответ #71 : 22 Апреля 2019, 19:19:49 »
Итак итог сегодняшнего вечера:

Я добавил адаптивный алгоритм выхода из итерации!
Я ввел понятие фазы (не путать с аналоговыми делами) теперь я отслеживаю куда идет итерация вверх или вниз и в зависимости от этого выбираю стартовую точку для следующей итерации. Это привело к уменьшению бестолковых мини-итераций в рамках  большой итерации.

Эти два факта привели алгоритм к полной адаптивности. И я даже пробовал отключать подчисточный цикл перебором в конце, вроде без него тоже находит КСВ 1.

Осталось сделать адаптивный шаг и "нас не догонят".



Оффлайн ra0ahc

  • ***
  • Сообщений: 73
  • Репутация: +1/-4
    • Просмотр профиля
Re: ФНЧ-КСВметр-автоТЮНЕР (дневник)
« Ответ #72 : 29 Апреля 2019, 09:45:59 »
С моей стороны тема закрыта
Считаю , раскрыл полностью от схемы до программы.
Все листинги программы есть. Еще бы видосик сюда залить как работает, но ресурс не дает больше 2 мгб заливать.

Теперь только полные испытания в составе трансивера на базе rw3fy Ильи Усихина, который я делаю уже 1.5 года!!! Все смонтировано, все работает, осталось немного коммутации и можно закрывать крышки.

Оффлайн DL2KQ

  • Администратор
  • *****
  • Сообщений: 2319
  • Репутация: +240/-5
    • Просмотр профиля
Re: ФНЧ-КСВметр-автоТЮНЕР (дневник)
« Ответ #73 : 29 Апреля 2019, 12:08:02 »
Щель в оплетке должна быть между припаянными боковыми шайбами (где именно между ними неважно).

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

В аттаче красной стрелкой показан путь тока по "оплетке".

PS. Что-то не то случилось с форумом, сообщение было не в эту тему, разбираюсь.

RZ6FE

  • Гость
Re: ФНЧ-КСВметр-автоТЮНЕР (дневник)
« Ответ #74 : 29 Апреля 2019, 14:50:32 »
Вроде в эту тему. Вопрос был здесь в #14
http://dl2kq.de/forum/index.php/topic,332.msg5016.html#msg5016