73! Zbyszek
|
WALET – czyli jak buduję sobie transceiver SDR
|
|
Zbyszku, gratuluję tempa montażu urządzenia.
Proszę pamiętaj o właściwym wlutowaniu pinów łącznika na drugiej płytce i kolejnych oraz o prawidłowym sposobie montażu kondensatora C31 co zapobiega ewentualnemu wzbudzaniu się wzmacniacza. [Obrazek: https://lx-net.pl/walet/image/noisy.jpg] Polecam zapoznanie się z opisami płytek w aplikacji Kickad dla wersji 1.1 Dodatkowo, w folderach h0 i h1 znajdują się aktualne schematy i opisy montażowe tej wersji a dodatkowo zamieściłem tam rysunki wersji uproszczonej zawierającej minimalną ilość elementów zapewniających działanie układu. Z działająca płytką h0 można przeprowadzić testy formowania sygnału jakie opisałem w postach #43 i #44. płytka h0 płytka ha Przy tej okazji informuję, że konstrukcja Waleta znalazła uznanie na konkursie PUK i otrzymała nagrodę. A ponieważ konstrukcja ta nie jest jakimś wiekopomnym odkryciem to zakładam, że komisja uznała za bardziej wartościowy sposób w jaki prezentuję i wyjaśniam moją pracę niż jej wartość techniczną. Ostatni tydzień trwałem jeszcze w szoku po nagrodzie w konkursie PUK ale mówiąc poważnie podjąłem próbę pomiaru odbieranego sygnału w domenie cyfrowej zamiast układów analogowych. Niestety, wielokrotne próby zastosowania biblioteki VolumeMeter z Arduino Audio Tools nie przyniosły rezultatu więc w końcu zdecydowałem się na kontakt z autorem (Phil Saltzman). Tu również początkowo nie udało się nam rozwiązać problemu ale na końcu okazało się, że winna była moja niekompetencja jako programisty ale przede wszystkim używałem starszej wersji ArduinoAudio Tools i o tym napiszę z detalami jutro. lj. GitHub
23-09-2026, 12:14
Pomiar siły odbieranego sygnału za pomocą narzędzi Arduino Audio Tools możliwy jest przez włączenie do łańcucha przetwarzania danych modułu z klasy VolumeMeter.
Do tej pory algorytm działał w cyklu: i2s -> filters -i2s gdzie lewe i2s to wejście sygnału po zamianie z analogowego na cyfrowy a prawe i2s to wyjście sygnału analogowego po zamianie z cyfrowego. W module filters znajduje się łańcuch hilbert -> lpf/bpf tak więc w rzeczywistości pełny łańcuch wyglądał następująco: i2s -> hilbert -> lpf/bpf -> i2s. Niestety, w przypadku procesora ESP32A1S z wbudowanym kodekiem audio (konwerter A/C i C/A + inne funkcje) rozróżnienie między i2s na wejściu i i2s na wyjściu nie jest oczywiste i realizowane jest przez dokładniejsze precyzowanie tych portów w sekcji setup{ } programu. Poza tym, klasa VolumeMeter nie posiada, jak większość innych narzędzi Audio Tools tzw. defaultConfig czyli zestawu ustawień domyślnych niezbędnych do uruchomienia instancji z klasy VolumeMeter dlatego pewien czas zajęło mi wyszukanie sposobu w jaki zainicjować moduł VolumeMeter. Sposobem na to okazało się zbudowanie uniwersalnego pliku konfiguracyjnego: Kod: uint16_t sample_rate = 24000;Plik info zawiera niezbędne informacje potrzebne dla instancji klasy VolumeMeter do jej uruchomienia. Pomiar sygnału może być włączony w dowolnym miejscu strumienia przetwarzania ale zwykle robi się to na wejściu lub na wyjściu. Ale z punktu widzenia pomiaru siły sygnału konkretnego sygnału celowe jest mierzenie jego siły na wyjściu za filtrami ograniczającymi pasmo przetwarzania. Gdyby włączyć pomiar na wejściu to pomiarowi podlegałyby wszystkie sygnały docierające do konwertera a/c a konwersja z prędkością sample_rate "zobaczy" wszystkie sygnały o częstotliwości sample_rate/2 (zgodnie z teorią próbkowania) czyli w tym przypadku do 12kHz. Filtry działające przed pomiarem ograniczają pasmo do 3.6/2.4kHz dla SSB oraz do niewielkiego pasma wokół 800Hz przy odbiorze CW a więc w zasadzie mamy pomiar jednego sygnału. Tak więc włączenie pomiaru w strumień przetwarzania danych poszerza ten łańcuch do postaci: i2s -> filters -> volumeMeter -> i2s . Poniżej prezentuję obecną sekwencję przepływu danych w kodzie programu po włączeniu cyfrowego pomiaru siły sygnału. Kod: ......Jak wspominałem, początkowo pokazany kod powodował, że kompilacja odbywała się bez błędów ale po wgraniu jej do procesora następował cykliczny jego restart co ok. 1 sek. Nie mogąc sam sobie z tym poradzić zapytałem autora pakietu Arduino Audio Tools i prawie tydzień zajęło nam wykrycie, że winna było niezgodność pakietu podstawowego Audio Tools z pakietem Driver Tools, który obsługuje kodeki w ESP32A1S. O ile mój pakiet Driver Tools był aktualny to Audio Tools miało wersję dość odległą od obecnej co generowało problemy. Wydaje się, że początkowa instalacja mojego pakietu Audio Tools nie odbyła się ze strony na GitHub ale z jakiegoś miejsca gdzie ten pakiet polecano i tamten link prowadził właśnie do starszej wersji. Po ustaleniu przyczyny okazało się, że mój początkowy kod włączenia pomiaru sygnału był poprawny ale kosztowało to stratę kilku dni i wykazaniem się słabą znajomością narzędzi Audio Tools wobec autora tego oprogramowania. Trochę to bolało ale żadna wiedza nie przychodzi łatwo ;-) Pomiar sygnału w torze cyfrowym umożliwia całkowitą rezygnację z pomiaru na drodze analogowej. [Obrazek: https://lx-net.pl/walet/image/arw01.jpg] [Obrazek: https://lx-net.pl/walet/image/arw02.jpg] Te elementy można usunąć całkowicie bez szkody dla działania całości na płytce h0 [Obrazek: https://lx-net.pl/walet/image/arw03.jpg] Dodatkowo, można też usunąć Q5 z otoczeniem z płytki ha Obecny kod programu zawiera pomiar sygnału w torze cyfrowym co daje jednoznaczne wartości bez konieczności regulowania trymerami ustawień w torach analogowych. Pisałem o tym wcześniej ale warto to przypomnieć w tym miejscu, że dynamika toru a/c to 16 bitów (65535 poziomów) ale w praktyce można liczyć na połowę tej wartości bo pełna dynamika dotyczy sygnałów zarówno na plus jak i na minus co oznacza ograniczenie do 15 bitów (32767 poziomów). Z moich pomiarów i kalibracji miernika volumeMeter wynika, że tło szumowe przetwornika (bez sygnału na wejściu) to ok. 50 a największy poziom jaki można odebrać w tej skali (32767) to ok. S9 + 23dB. Wydaje się to być wystarczające dla większości sytuacji z ewentualną reakcją dla sygnałów S9 +30, +40 i +60dB. Taka reakcja może być wykonana za pomocą pokazanego powyżej układu U9 (PCF8574) oraz D7/RV2, D8/RV3 i ewentualnie D9/RV4. Może uda się zredukować tłumik sygnału na czterech diodach PIN do jednej lub dwóch ale na razie, jeśli jest on zamontowany to należy pozostawić jedynie D7/RV2 z RV2 ustawionym na poziom ok. 3-4k. Na Github zamieściłem w części dotyczącej wersji 1.1 zarówno kod źródłowy jak i pliki bin dotyczące tej wersji. lj. Github
27-09-2026, 21:35
Prace posuwają się do przodu. Prośba do Leszka o zdjęcia poszczególnych płytek i opisy cewek i transformatorów.
73! Zbyszek
Przepraszam za opóźnienie w odpowiedzi.
Od kilku dni siedzę nad wprowadzeniem do kodu operacji fft, która będzie służyć do wizualizacji otoczenia odbieranego pomiaru w formie wodospadu. Na razie mam umiarkowane sukcesy. Wprawdzie udało mi się uruchomić fft ale mam problem z jednoczesnym działaniem toru filtrowania i znowu szukam podpowiedzi u autora Arduino Audio Tools. Brakuje mi jednego kroku do pełnej integracji fft z działającym już kodem. Zbyszku, cieszę się z postępów prac i mam nadzieję, że informacje jakie podam będą dla Ciebie pomocne. Przede wszystkim do montażu obwodów na płytkach potrzebny będzie wobulator - najlepiej jakaś wersja VNA. Przyda się też miernik pojemności i indukcyjności choć ja obyłem się bez tych mierników. Natomiast bardzo przyda się kalkulator online do obliczeń dla rdzeni Amidon, z których korzystałem przy budowie obwodów. Ja korzystam z reguły z tego kalkulatora [Obrazek: https://lx-net.pl/walet/image/hb01.jpg] [Obrazek: https://lx-net.pl/walet/image/hc01.jpg] Pokazane płytki będą się nieco różnić od tych jakie posiadasz bo moje są w najstarszej wersji i noszą ślady modyfikacji. Płytki jakie posiadasz nie mają błędów moich prototypów. Posiłkuj się też schematami i opisami z Github dla wersji 1.1. Strojenie obwodów rezonansowych, szczególnie w wersji z ograniczeniami smd oraz rdzeni toroidalnych nigdy nie będzie powtarzalne w 100 procentach niemniej spróbuję podać Ci kilka pomocnych informacji. Na początek płytka filtrów pasmowych (hb). 1. Analizator sieci (vna) należy zapinać na pinach 5 i 8 każdego z przekaźników 2. Najpierw wlutuj kondensatory obwodu szeregowego (np. dla pasma 3.5 to C1 i C3) a następnie cewkę tego obwodu (dla 3.5 to L2). 3. Należy dobrać ilość zwojów L2 lub ścisnąć/rozciągnąć uzwojenie tej cewki aby maksimum znalazło się w środku tego pasma. Dla 3.5 powinno to być oczywiście 3.65. Tłumienie powinno wynosić 10-20dB w maksimum. 4. Kolejno należy wlutować kondensatory i cewki obwodów równoległych i podobnie jak dla cewki szeregowej, należy regulując cewkami równoległymi aby uzyskać w miarę symetryczne pasmo przenoszenia ze środkiem w środku pasma. Ponieważ filtry działają zarówno podczas nadawania jak i odbioru to istotne jest aby tłumienie zestrojonego obwodu było jak najmniejsze. Należy dążyć do tłumienia poniżej 2dB, tłumienie 3db podczas nadawania to zmniejszenie mocy wyjściowej o połowę!. Do wykonania obwodów użyłem w większości rdzeni Amidon T37 (9.5x5x3.5mm), indukcyjności opisałem na rysunku hb 3.5 -> L2 - T37-1 (niebieski u=20) - 45 zwojów DNE 0.2, L1/3 - T37-2 (czerwony u=10) - 7 zwojów DNE 0.2 7.0 -> L5 - T37-1 (niebieski u=20) - 26 zwojów DNE 0.2, L4/6 - T37-2 (czerwony u=10) - 6 zwojów DNE 0.2 10 -> L10 - T37-1 (niebieski u=20) - 24 zwoje DNE 0.2, L8/12 - T37-2 (czerwony u=10) - 4 zwoje DNE 0.2 14 -> L9 - T37-2 (czerwony u=10) - 32 zwoje DNE 0.2, L8/12 - T37-17 (żółto-zielony u=4) - 4 zwoje DNE 0.2 18 -> L16 - T37-2 (czerwony u=10) - 26 zwojów DNE 0.2, L14/18 - T37-17 (żółto-zielony u=4) - 4 zwoje DNE 0.2 21 -> L15 - T37-2 (czerwony u=10) - 24 zwoje DNE 0.2, L13/17 - powietrzna fi 5mm - 3 zwoje DNE 0.4 25 -> L22 - T37-2 (czerwony u=10) - 21 zwojów DNE 0.2, L20/24 - powietrzna fi 5mm - 3 zwoje DNE 0.4 28 -> L21 - T37-2 (czerwony u=10) - 18 zwojów DNE 0.2, L19/23 - powietrzna fi 5mm - 3 zwoje DNE 0.4 Trzy ostatnie pasma mają cewki powietrzne o tej samej ilości zwojów ale dla wyższych częstotliwości są one bardziej rozciągnięte. Najlepiej byłoby użyć tu rdzeni Amidon T37-0 (brązowy u=0) ale są one chyba trudno dostępne od ręki. Transformatory T1 i T2 nawinięte są na rdzeniach dwuotworowych 15x8x7mm i mają: T1 -> 2/2x4zwoje, T2 -> 2x2/4 zwoje drutem DNE 0.4 Transformatory można zamontować na dowolnej stronie płytki a nawet wygodniej to zrobić z drugiej strony. Moc jaką dostarcza ten stopień zależy od polaryzacji wstępnej tranzystorów Q12/16. Wstępnie należy ustawić punkt pracy za pomocą RV3 na ok. 50mA (2x25mA) ale zwiększenie tego prądu istotnie wpływa na sygnał wyjściowy ale należy uważać bo dla większych prądów niż 2x50mA tranzystory będą się mocno grzać i należy wtedy zastosować jakiś radiator. Przed włączeniem zasilania należy suwak RV3 ustawić od strony masy. Tranzystory również można wlutować z drugiej strony płytki co może ułatwić chłodzenie. Opornik R34 (51 ohm) jest opcjonalny w razie wzbudzania się użytego stopnia mocy ale użycie go zmniejsza sygnał wyjściowy z płytki hb mniej więcej o połowę więc na poczatek proponuje go nie montować. Płytka filtrów stopnia mocy (hc). Tu wszystkie indukcyjności wykonane są na rdzeniach T50 (13x7.5x5) a kondensatory powinny mieć napięcie co najmniej 50V i rozmiar 1206. Podobnie, podczas strojenia analizator sieci (vna) należy zapinać na pinach 5 i 8 każdego z przekaźników. wartości indukcyjności podałem na schematach płytki hc. obwód 4MHz -> 23 zwoje DNE 0.4mm obwód 8MHz -> 13 zwójów DNE 0.4mm obwód 16MHz -> 9 zwojów DNE 0.4mm obwód 32MHz -> 6 zwojów DNE 0.4mm Transformator TR2 ma 4 uzwojenia na rdzeniu dwuotworowym (14x13x7mm). Uzwojenia pomiarowe mają po 17 zwojów DNE 0.2mm i są nawinięte w symetrii lustrzanej na przeciwległych otworach rdzenia a pozostałe 2 uzwojenia to odcinki przewodów środkowych kabla koncentrycznego, łącznie z izolacją środkową, przechodzące przez każdy z otworów. Takie transformatory pomiarowe są dość dobrze opisywane przy okazji konstrukcji skrzynek antenowych. Pisałem o tym też ja w tym watku w poście #10 Po zmontowaniu płytek hb i hc i połączeniu elektrycznym za pomocą łączników można sprawdzić czy działa przełączanie obwodów na płytkach w miarę jak zmieniane jest pasmo pracy i częstotliwość. Ale mając działający generator Si5351 można testować tor nadawczy na cw. Najpierw należy sprawdzić czy na wyjściu RF płytki ha pojawia się sygnał podczas nadawania. Jeśli tak, to powinien on sterować wzmacniacz na płytce hb a sygnał na gnieździe TX tej płytki powinien być już czystą sinusoidą. Sygnał ten powinien służyć do sterowania jakiegoś wzmacniacza PA ale jeśli połączyć go na krótko z gniazdem PA na płytce hc to powinien, po przejściu przez filtry dolnoprzepustowe pojawić się na wyjściu ANT. Jeśli odpowiednio spolaryzować wzmacniacz na tranzystorach Q12/16 i zapewnić im jakieś chłodzenie to można doprowadzić do mocy ok. 1 W na gnieździe antenowym co da się już pomierzyć za pomocą mostka SWR a nawet zrobić jakąś łączność. cdn lj. Github |
|
« Starszy wątek | Nowszy wątek »
|
Użytkownicy przeglądający ten wątek: 1 gości

