28-12-2011, 17:48
Witam po świętach
Wątek coś utknął w martwym punkcie... Ponieważ temat jest ciekawy postanowiłem (korzystając z chwili wolnego czasu) spróbować go ożywić.
Wątek w międzyczasie zboczył trochę w kierunku ogólnych dywagacji związanych z antenami, ich strojeniem oraz stratami w linii związanymi z niedopasowaniem obciążenia - nie chciał bym drążyć tematu, jednak celem podsumowania napiszę krótko co jest wg mnie celem skrzynki przy antenie - otóż celem jest przetransformowanie zespolonej impedancji anteny do 50 ohm bez składowej reaktancyjnej (czyli skrzynka _razem_z_anteną_ powinna być w rezonansie, prezentując 50 ohm obciążenia dla linii zasilającej)
Kolejną sprawą jest określenie co jest wyjściem a co wejściem algorytmu. O ile z wyjściem nie ma problemu (za pomocą przekaźników algorytm ma dobrać wartości L, C oraz konfigurację układu, czyli C->L lub L->C), o tyle z wejściem już tak oczywiście nie jest (tak przynajmniej wynika z dotychczasowej dyskusji)
Wg mnie wejściem algorytmu jest przede wszystkim odbicie (czyli stopień niedopasowania, SWR czy jakkolwiek inaczej by tego nie nazywać) i w zasadzie to jest/powinno być wystarczające. Informacją dodatkową może być częstotliwość (od niej zależy to gdzie w macieży wszystkich kombinacji L/C/mode leży rozwiązanie optymalne) jednak algorytm mogłby się bez niej obejść (kosztem dłuższego czasu strojenia)
To czego wg mnie algorytm nie wie to:
- czy impedancja (jej moduł) jest większy czy mniejszy od 50 ohm
- jaka jest (czy jest) składowa reaktancyjna impedancji anteny i jaki jest jej charakter (znak)
W swoich założeniach zgadzam się zatem w 100% z tym, co napisał Adam SP5FCS w poście #4 - poszukujemy minimum odbicia/SWR.
Co to źródła tej informacji (odbicia/SWR) - na razie to mało istotne czy będzie to sygnał niezrównoważenia mostka (jak w Yaesu FC-40) czy też układ reflektometru jak w Z-11 od LDG, czy jakiegokolwiek innego reflektometru/mostka. Istotne jest tylko, iż sygnał analogowy odpowiadający odbiciu będzie przetwarzany na cyfrowy (ADC mikro-kontrolera) do postaci 8-mio (lub więcej) bitowej. To jest wejście - czyli np 0 odpowiadać będzie zerowemu odbiciu (SWR==1); 255 to będzie max odbicie (SWR==nieskończoność).
Ponieważ istnieje 128k wszystkich kombinacji (L, C po 8 bitów czyli 64k no i dwa mody - L->C orac C->L) niemożliwym jest sprawdzenie/zmierzenie wszystkich... (zakładając 20ms na ustawienie przekaźników + pomiar daje to czas ~45 minut!)
Algorytm zatem powinien odnajdować minimum odbicia (SWR) w zbiorze wszystkich możliwych kombinacji bazując na znajomości rozkładu odbicia w zależności od L, C, wybranego układu, impedancji anteny oraz częstotliwości. Zgodnie z założeniami nie znamy niestety impedancji anteny (częstotliwości?), lecz tylko odbicie (SWR) dla wybranej kombinacji (możemy go zmierzyć). Rozkład rozwiązań jest jednak zawsze podobny, co więcej różny w zależności od modu. Krótko mówiąc są miejsca w dwuwymiarowych tablicach rozwiązań gdzie szukać warto, oraz takie, gdzie "zaglądać" powinniśmy tylko w ostateczności. Co więcej zależy to od wybranego modu, czyli algorytm powinien być różny - w zależności czy szukamy w układzie L->C, czy C->L.
Efektem tych teoretycznych rozważań są dwa programy, które popełniłem we wspomnianych wolnych chwilach.
Pierwszy z nich - L_NetSim.exe - powstał niejako "przy okazji" celem sprawdzenia czy "matematyka działa tak jak powinna". Interfejs graficzny nie jest idealny (ekran odświeżany jest zawsze w całości - nie chciało mi się walczyć z windowsowym GDI) ale pozwala na obejrzenie wspomnianych przeze mnie rozkładów rozwiązań w zależności od impedancji anteny, układu, oraz częstotliwości.
Wyniki porównywałem z tymi zwracanymi przez wykres Smitha (do pobrania tutaj - obowiązkowa pozycja w warsztacie krótkofalowca wg mnie)
Drugim programem jest L_NetTester.exe - takie mini środowisko do testowania algorytmów strojenia. Sam algorytm strojenia kompilowany jest do biblioteki dll, którą każdy może stworzyć sam i przetestować. Zamieszczam przykładowy algorytm (auto_tune.cpp - trywialny i niestety niedokończony) wraz z plikiem bat do kompilacji (make_auto_tune.bat) Do kompilacji potrzebny jest MinGW - do pobrania tutaj - ścieżkę do C:\MinGW\bin trzeba dodać do zmiennej środowiskowej PATH po zainstalowaniu.
Program przeprowadza symulację strojenia zadanej impedancji anteny oraz częstotliwości, lub całego zestawu impedancji/częstotliwości zadanego w pliku (przykład w input_data.txt - R, X oraz f rozdzielone tabulatorem).
Przykładowe wywołanie może być następujące:
L_NetTester -i input_data.txt -o out.txt (dla danych z przykładowego pliku input_data.txt)
L_NetTester -r 100 -x -120 -f 3.7e6 (dla pojedynczej impedancji 100-j120 i częstotliwości 3,7MHz)
Mam nadzieję iż tester jest w miarę intuicyjny i pozwoli rozwinąć dyskusję nad konkretnymi algorytmami zapisanymi w języku C, a przede wszystkim na szybkie i skuteczne testowanie oraz weryfikowanie działania proponowanych algorytmów.
Komentarze, konstruktywna krytyka oraz wnioski racjonalizatorskie oczywiście mile widziane
Pozdrawiam,
Wątek coś utknął w martwym punkcie... Ponieważ temat jest ciekawy postanowiłem (korzystając z chwili wolnego czasu) spróbować go ożywić.
Wątek w międzyczasie zboczył trochę w kierunku ogólnych dywagacji związanych z antenami, ich strojeniem oraz stratami w linii związanymi z niedopasowaniem obciążenia - nie chciał bym drążyć tematu, jednak celem podsumowania napiszę krótko co jest wg mnie celem skrzynki przy antenie - otóż celem jest przetransformowanie zespolonej impedancji anteny do 50 ohm bez składowej reaktancyjnej (czyli skrzynka _razem_z_anteną_ powinna być w rezonansie, prezentując 50 ohm obciążenia dla linii zasilającej)
Kolejną sprawą jest określenie co jest wyjściem a co wejściem algorytmu. O ile z wyjściem nie ma problemu (za pomocą przekaźników algorytm ma dobrać wartości L, C oraz konfigurację układu, czyli C->L lub L->C), o tyle z wejściem już tak oczywiście nie jest (tak przynajmniej wynika z dotychczasowej dyskusji)
Wg mnie wejściem algorytmu jest przede wszystkim odbicie (czyli stopień niedopasowania, SWR czy jakkolwiek inaczej by tego nie nazywać) i w zasadzie to jest/powinno być wystarczające. Informacją dodatkową może być częstotliwość (od niej zależy to gdzie w macieży wszystkich kombinacji L/C/mode leży rozwiązanie optymalne) jednak algorytm mogłby się bez niej obejść (kosztem dłuższego czasu strojenia)
To czego wg mnie algorytm nie wie to:
- czy impedancja (jej moduł) jest większy czy mniejszy od 50 ohm
- jaka jest (czy jest) składowa reaktancyjna impedancji anteny i jaki jest jej charakter (znak)
W swoich założeniach zgadzam się zatem w 100% z tym, co napisał Adam SP5FCS w poście #4 - poszukujemy minimum odbicia/SWR.
Co to źródła tej informacji (odbicia/SWR) - na razie to mało istotne czy będzie to sygnał niezrównoważenia mostka (jak w Yaesu FC-40) czy też układ reflektometru jak w Z-11 od LDG, czy jakiegokolwiek innego reflektometru/mostka. Istotne jest tylko, iż sygnał analogowy odpowiadający odbiciu będzie przetwarzany na cyfrowy (ADC mikro-kontrolera) do postaci 8-mio (lub więcej) bitowej. To jest wejście - czyli np 0 odpowiadać będzie zerowemu odbiciu (SWR==1); 255 to będzie max odbicie (SWR==nieskończoność).
Ponieważ istnieje 128k wszystkich kombinacji (L, C po 8 bitów czyli 64k no i dwa mody - L->C orac C->L) niemożliwym jest sprawdzenie/zmierzenie wszystkich... (zakładając 20ms na ustawienie przekaźników + pomiar daje to czas ~45 minut!)
Algorytm zatem powinien odnajdować minimum odbicia (SWR) w zbiorze wszystkich możliwych kombinacji bazując na znajomości rozkładu odbicia w zależności od L, C, wybranego układu, impedancji anteny oraz częstotliwości. Zgodnie z założeniami nie znamy niestety impedancji anteny (częstotliwości?), lecz tylko odbicie (SWR) dla wybranej kombinacji (możemy go zmierzyć). Rozkład rozwiązań jest jednak zawsze podobny, co więcej różny w zależności od modu. Krótko mówiąc są miejsca w dwuwymiarowych tablicach rozwiązań gdzie szukać warto, oraz takie, gdzie "zaglądać" powinniśmy tylko w ostateczności. Co więcej zależy to od wybranego modu, czyli algorytm powinien być różny - w zależności czy szukamy w układzie L->C, czy C->L.
Efektem tych teoretycznych rozważań są dwa programy, które popełniłem we wspomnianych wolnych chwilach.
Pierwszy z nich - L_NetSim.exe - powstał niejako "przy okazji" celem sprawdzenia czy "matematyka działa tak jak powinna". Interfejs graficzny nie jest idealny (ekran odświeżany jest zawsze w całości - nie chciało mi się walczyć z windowsowym GDI) ale pozwala na obejrzenie wspomnianych przeze mnie rozkładów rozwiązań w zależności od impedancji anteny, układu, oraz częstotliwości.
Wyniki porównywałem z tymi zwracanymi przez wykres Smitha (do pobrania tutaj - obowiązkowa pozycja w warsztacie krótkofalowca wg mnie)
Drugim programem jest L_NetTester.exe - takie mini środowisko do testowania algorytmów strojenia. Sam algorytm strojenia kompilowany jest do biblioteki dll, którą każdy może stworzyć sam i przetestować. Zamieszczam przykładowy algorytm (auto_tune.cpp - trywialny i niestety niedokończony) wraz z plikiem bat do kompilacji (make_auto_tune.bat) Do kompilacji potrzebny jest MinGW - do pobrania tutaj - ścieżkę do C:\MinGW\bin trzeba dodać do zmiennej środowiskowej PATH po zainstalowaniu.
Program przeprowadza symulację strojenia zadanej impedancji anteny oraz częstotliwości, lub całego zestawu impedancji/częstotliwości zadanego w pliku (przykład w input_data.txt - R, X oraz f rozdzielone tabulatorem).
Przykładowe wywołanie może być następujące:
L_NetTester -i input_data.txt -o out.txt (dla danych z przykładowego pliku input_data.txt)
L_NetTester -r 100 -x -120 -f 3.7e6 (dla pojedynczej impedancji 100-j120 i częstotliwości 3,7MHz)
Mam nadzieję iż tester jest w miarę intuicyjny i pozwoli rozwinąć dyskusję nad konkretnymi algorytmami zapisanymi w języku C, a przede wszystkim na szybkie i skuteczne testowanie oraz weryfikowanie działania proponowanych algorytmów.
Komentarze, konstruktywna krytyka oraz wnioski racjonalizatorskie oczywiście mile widziane
Pozdrawiam,