02-01-2012, 16:50
(01-01-2012 23:52)SQ8AQU napisał(a): [ -> ]SWR jest dość kłopotliwy do wyrażenia go stałoprzecinkowo i to w dodatku na dość małej liczbie bitów (zmienia się w zakresie 1..nieskończoność). Dlatego wolę używać odbicia, które zmienia się w zakresie 0..1 i łatwo przyjąć w naszym przypadku zakres 0..MAX_ADC (gdzie zero to zero odbicia (SWR==1), a MAX_ADC to 1, czyli pełne odbicie lub jak kto woli SWR==nieskończoność).Wszystko jasne, ale 0 i MAX_ADC to warunki brzegowe. Dużo zależy od tego, co się dzieje pomiędzy nimi, oraz (trochę filozoficznie) ile to jest "nieskończoność". Popatrz tu:
Matematyka w programie jest robiona zmiennoprzecinkowo więc jestem w stanie podać tak duże wartości SWR (precyzyjne odbicie w pobliżu jedynki). Jednak po sprowadzeniu tego do zakresu ADC tracimy rozdzielczość no i znika gradient...
[attachment=4470]
- obydwie krzywe (przyjmijmy na osi pionowej słowo ADC (0..255) a na poziomej kolejne wartości C, przy L=const - taki przekrój wykresu z lnetstim) są zgodne z powyższymi - ale na czarnej dużo łatwiej szukać minimum. W symulatorze przy wyższych częstotliwościach jest jeszcze trudniej - taka szpilka w stogu 255-tek. Dlatego zastanawiam się nad charakterystyką wartości mierzonej przez ADC od SWR. Jeśli zakładamy algorytm poszukiwania minimum mając wyłącznie pomiar SWR, to ta zależność będzie zasadnicza dla algorytmu.
SQ8AQU napisał(a):Główne założenie algorytmu wg mnie się nie zmienia - szukamy minimum odbicia w zbiorze możliwych kombinacji.Potencjalnych algorytmow widzę sporo. Można próbować wybrać jakiś punkt ("od czapy" albo jakoś inteligentniej (np. heurystycznie sugerować się częstotliwością(jeśli mamy możliwość pomiaru/preselekcji pasma))) i "pomacać" parę punktów w otoczeniu i zrobić krok w stronę spadku. Można użyć książkowej metody Gaussa-Seidela - z punktu startowego iść w kierunku jednej współrzędnej dopóki będzie spadek, potem po drugiej współrzędnej itd. aż poprawa w kolejnych krokach będzie niewielka. Z jednej strony - przy wyznaczaniu lokalnego gradientu musimy wykonać kilka pomiarów, ale mamy informację jak duże mamy nachylenie - można wykorzystać do wyboru wielkości kroku i możemy wykonać krok w kierunku obydwu osi jednocześnie. Przy metodach bezgradientowych - po prostu wykonujemy krok i sprawdzamy, czy mamy lepiej czy gorzej. Która lepsza? Trzeba przetestować statystycznie. Natomiast jakkolwiek byśmy nie próbowali, na wykresie coś się musi dziać, żeby dało się cokolwiek wyliczyć.
Tomek SQ8MHI