|
![]()
Vydáno dne 30. 04. 2025 (171 přečtení) |
![]() |
V poslední době nějak nemám tolik času na vlastní bastlení, jak bych si přál. Tak si alespoň po večerech hraji s firmwarem na poslední verzi desky oscilátoru pro transceiver. Za poslední cca dva měsíce jsem udělal několik, podle mne docela významných úprav. Jedná se stále o ten samý hardware jako v tomto článku. |
Poznámka:
Články, které zveřejňuji na tomto webu, včetně tohoto, rozhodně nejsou míněny jako detailní návod na stavbu čehokoliv, i když to tak někdy může vypadat. Nabízím to spíše jako inspiraci, podnět k vlastním pokusům. Pokud vím, tak rád odpovím na dotazy, ale málokdy jsem schopen na dálku radit při oživování.
Dále bych chtěl upozornit, že dokumentace poskytnutá ke stažení (DOWNLOAD) může obsahovat chyby.
Hned na začátku musím upozornit, že i tato verze oscilátoru, stejně jako ty předchozí, je určena k jednopásmovému telegrafnímu krátkovlnnému transceiveru. Na začátku, při oživování, si zvolíme pásmo. U tohoto typu oscilátoru by nebyl problém udělat možnost přepínání více pásem. Dokonce jsou na jednočipu volné piny, kterými by se dala pásma přepínat. Ale připadá mi, že by se tím zbytek transceiveru zbytečně komplikoval. (Přepínání pásmových filtrů, výstupních filtrů atd...) Možná, když na to budu mít čas a náladu, udělám někdy v budoucnu vícepásmovou verzi. Ale zatím je to v nedohlednu.
Zde je odkaz na DOWNLOAD hardware vlastního oscilátoru. Jsou tam GERBER soubory pro výrobu plošných spojů jak vlastního oscilátoru včetně předního panelu, tak s přídavné destičky na propojení na dlouhý (20 pinový) hřebínkový konektor.
Zde je odkaz na DOWNLOAD desky pokusného transceiveru, včetně přídavné destičky s relé, které zapíná attenuátor na vstupu. U zde popisované verze se neosadí krystal záznějového oscilátoru (BFO) a další součástky okolo (na pinech 6 a 7 obvodu IC2 - SA612). Místo toho se do vstupu 6 připojí přes oddělovací kondenzátor a odporový trimr proti zemi výstup z CLK2 oscilátoru SI5351a. (Je potřeba to tam nějak nabastlit.)
Zde je odkaz na DOWNLOAD firmware. Je tam zkompilovaný .hex i .bin soubor na nahrání do jednočipu Atmega1284p (oba obsahují to samé, jen v jiném formátu). Upozorňuji, že při programování je nutné v konfiguračních bitech zrušit dělení oscilátoru osmi, jako zdroj kmitočtu zvolit externí krystal (!NE externí oscilátor!). Také je potřeba zrušit JTAG (JTAG disabled), jinak by nefungovaly dva vstupní piny (tlačítka).
Pokud si chce někdo dělat vlastní úpravy, může použít hlavní zdrojový kód v jazyce BASCOM-AVR (ten největší soubor .bas) a přiložené soubory dalších podprogramů které jsou vloženy v hlavním souboru (include). Ty musejí být při kompilaci ve stejném adresáři jako hlavní kód. Program neobsahuje žádné stažené knihovny, ovládání I2C je přímo součástí editoru BASCOM-AVR. Nezaručuji, že kód je bez chyb a že ho každý musí pochopit ;-). Upozorňuji, že kompilaci nelze spustit ve free verzi BASCOM-AVR. Já nyní používám poslední verzi Bascom-AVR v.2.087. (Naproti tomu nahrání hotového binárního kódu do paměti jednočipu lze i pomocí free verze.)
A nakonec je zde DOWNLOAD souborů pro displej NEXTION BASIC 24 (2,4 palce). Je tam jak finální soubor .tft, který pomocí micro-SD karty nahrajeme do displeje (vysvětleno ve videích na mém Youtube kanále), tak soubor .hmi, což je vlastně takový zdrojový kód v programu NEXTION Editor (u mne verze 1.67.1). Program Nextion_editor je možné stáhnout zdarma. Ke své činnosti vyžaduje prostředí "Visual C++ Redistributable 2015".
SI5351a a Atmega1284P jako zdroj všech kmitočtů pro CW transceiver.
Kdo mne zná, nebo sleduje můj web, jistě si všiml, že k programování jednočipů Microchip AVR (dříve Atmel AVR) používám nástroj BASCOM AVR. Jeho určitá nevýhoda je, že má poněkud omezený výběr knihoven pro různé periferní obvody. Zatímco například pro populární Arduino je na výběr hned několik knihoven pro ovládání obvodu fázového závěsu SI5351a, tak pro editor BASCOM AVR nic takového neexistuje. Nezbývá, než si sám nějakou takovou "knihovnu" napsat, nebo se spolehnout, že to vytvoří někdo jiný a dá to volně k použití. Musím na rovinu přiznat, že napsat sám takovou rutinu nedovedu. Až doposud jsem jako "jádro" mých programů pro oscilátor s SI5351a používal proceduru okopírovanou z programů od Andrew, ZL2PD. Ta procedura je docela univerzální a umožňuje plné využití kmitočtového rozsahu SI5351a, tedy generování kmitočtu od jednotek kHz asi do 200 MHz. Bohužel ale neumožňuje generování tří nezávislých kmitočtů na výstupech Clk0, Clk1 a Clk2. Můžeme mít jen 2 různé kmitočty, přičemž jeden kmitočet může být na dvou výstupech se vzájemně, v podstatě libovolně, posunutou fází. (Jak posouvat fázi přesně o 90 stupňů jsem zase opsal od Hanse G0UPL.)Pro CW transceiver s přijímačem typu superhet je výhodné mít sadu alespoň tří nezávislých kmitočtů.
- TX - Kmitočet vysílače
- VFO - kmitočet pro přijímač (posunutý o mezifrekvenci oproti vysílači)
- BFO - záznějový oscilátor pro přijímač (posunutý o NF zázněj oproti MF kmitočtu)
- Případně ještě čtvrtý kmitočet - nízkofrekvenční tón příposlechu při vysílání.
V jednoduchém transceiveru z minulého článku jsem použil dva kmitočty generované pomocí SI5351a (TX a VFO). Třetí kmitočet, tedy BFO jsem udělal klasicky, pomocí krystalového oscilátoru rozladěného LC obvodem na potřebnou stranu (CW je demodulováno jako LSB nebo USB).
Čtvrtý kmitočet, nízkofrekvenční tón pro příposlech při vysílání jsem generoval přímo pomocí jednočipu. (Kmitočet krystalu jednočipu v podstatě vydělíme pomocí některého interního čítače.) Má to trochu nevýhodu, že když chceme změnit výšku zázněje, musíme to udělat jak kapacitním trimrem u krystalu BFO, tak v software jednočipu abychom měli stejnou výšku tónu příposlechu při vysílání. (Tedy, zcela striktně nemusíme, ale potom nám nesedí výška tónu z reproduktoru při příjmu a vysílání, což je docela nepraktické).
Změna výpočtu hodnot pro nastavení SI5351a
Na internetu jsem našel článek od DK7IH. Peter tam vysvětluje jeho způsob výpočtu a upload dat pro SI5351a v jazyce C. Jeho kód, včetně zahrnutí nějakých poznámek v následné diskusi, jsem přepsal pro můj oblíbený BASCOM AVR. Výsledkem je, že mohu jedním SI5351a generovat 3 nezávislé kmitočty pro CW transceiver v rozsahu krátkých vln. Sice to nechodí od jednotek kHz do stovek MHz ale to ani nepotřebuji.Přiřazení výstupů SI5351a pro rádio typu superhet je následující:
CLK0 (PLL-A): VFO pro přijímač; je aktivní pouze při příjmu CLK1 (PLL-B): Přímo kmitočet CW vysílače; je aktivní pouze při vysílání CLK2 (PLL-B): Kmitočet BFO; je aktivní pouze při příjmu Čtvrtý kmitočet - nízkofrekvenční tón příposlechu při vysílání může generovat přímo jednočip pomocí vlastního oscilátoru a interního 16 bit časovače (Timer1) na výstupu OC1A, jak už jsem se zmínil výše. Pro přijemnější poslech je potřeba dát na výstup dolní propust, aby se ten tón trochu "zakulatil".
Na testování používám stále ten samý transceiver, jako v tom minulém článku (známá konstrukce se dvěma směšovači SA612). Pouze jsem odstranil krystal BFO a součástky okolo, připojené na druhý směšovač SA612. Do oscilátorového vstupu (pin 6) jsem přes oddělovací kondenzátor a odporový trimr připojil signál z výstupu CLK2 obvodu SI5351a. Asi by bylo lepší zařadit tam také nějakou dolní propust, ale zatím na testování mi to takhle stačí.
Přiřazení výstupů SI5351a pro klasický přímosměš:
Pokud nastavíme MF kmitočet (jeho absolutní hodnotu) nižší než 450kHz, vypne se trvale CLK2, tedy záznějový oscilátor (BFO). Hodnotu MF nastavíme na požadovanou výšku tónu zázněje (stovky Hz až max. jednotky kHz). Opět může mít kladnou, nebo zápornou hodnotu. V tomto režimu vlastně nízkofrekvenční signál nahrazuje mezifrekvenci a kmitočet VFO může být o hodnotu NF zázněje nad nebo pod přijímaným kmitočtem.
NF kmitočet nastavíme v MENU stejný jako MF. Na jeho polaritě nezáleží, protože nám v tomto případě určuje pouze výšku tónu příposlechu při vysílání. Tento tón je generován přímo jednočipem, stejně jak je popsáno u superhetu (viz. výše).
CLK0 (PLL-A): VFO pro přijímač; je aktivní pouze při příjmu. CLK1 (PLL-B): Přímo kmitočet CW vysílače; aktivní pouze při vysílání. CLK2 (PLL-B): Trvale vypnut Nové MENU pro nastavení základních parametrů
Nastavení základních hodnot jsem měl původně tak trochu nepřehledné. Podržením některého tlačítka, nebo kombinace tlačítek při zapnutí napájení jsme skočili do příslušného nastavení. Teď je to tak, že podržením jednoho tlačítka při zapnutí skočíme do nastavovacího MENU. Po položkách se pohybujeme mechanickým rotačním enkodérem, položky aktivujeme a potvrzujeme tlačítkem RIT a hodnoty nastavujeme buď mechanickým, nebo optickým enkodérem.
Setup MENU MENU
Výběr pásmaMENU
Nastavení MF kmitočtu
- Výběr pásma:
Pásmo vybíráme mechanickým enkodérem. Ukáže se vždy začátek (nejnižší kmitočet) příslušného pásma od 1,8 MHz do 28 MHz. V okamžiku nastavení pásma, se vymažou kmitočty uložené v pamětech.
- Nastavení MF (IF) kmitočtu:
Jako základ musíme mít změřen krystalový mezifrekvenční filtr. Nějaký Mini_VNA, Nano_VNA, nebo něco podobného, kterým to nastavíme a změříme, není dnes nic nedostupného. Pokud jsme si filtr sestavili sami z jednotlivých krystalů a kondenzátorů, určitě nebude mít střed toho filtru nějaký přesný, kulatý, kmitočet, který je natištěn na krystalech, ale bude obvykle několik Hz, nebo i desítek až stovek Hz nad nebo pod tímto kmitočtem. Proto je v menu na desce oscilátoru možnost nastavit kmitočet MF s rozlišením až na 1 Hz. Další možnost je, nastavit kladný, nebo záporný kmitočet MF. Tím si zvolíme, zda bude kmitočet oscilátoru nad, nebo pod přijímaným kmitočtem. V minulosti, pokud jsme stavěli volně běžící LC oscilátor, často jsme volili co nejnižší kmitočet z důvodu kmitočtové stability. V případě oscilátoru s SI5351a záležitost se stabilitou odpadá, takže není problém zvolit oscilátor nad přijímaným kmitočtem, což je obvykle výhodnější, třeba z hledista potlačení zrcadlových kmitočtů. Firmware z nastaveného kmitočtu přijímače a kmitočtu středu MF filtru vypočítá potřebný kmitočet oscilátoru pro přijímač.Příklady nastavení oscilátoru přijímače pro pásmo 14 MHz a 7 MHz:
Aby se to jednoduše počítalo, budu uvažovat MF kmitočet přesně 8 MHz. MF kmitočet = 8 000 000 Hz RX kmitočet = 14 000 000 Hz Buď: VFO = RX + MF = 14 + 8 = 22 MHz Nebo: VFO = RX - MF = 14 - 8 = 6 MHz Pro pásmo 7MHz je MF kmitočet vyšší než kmitočet přijímače: RX kmitočet = 7 000 000 Hz Buď: VFO = RX + MF = 7 + 8 = 15 MHz Nebo: VFO = RX - MF = |7 - 8| = 1 MHz (absolutní hodnota, protože záporný kmitočet nevyrobíme)Je dobré si uvědomit, že v posledním uvedeném případě se ladění vlastně "převrátí". Tedy, že ladíme-li přijímač směrem k vyšším kmitočtům, kmitočet VFO se snižuje.
MENU
Nastavení výšky CW audioMENU
Kalibrace kmitočtuMENU
Kalibrace voltmetru
- Nízkofrekvenční kmitočet:
Dále je v MENU na desce oscilátoru možnost, nastavit výšku nízkofrekvenčního zázněje. Je to v rozsahu 200 Hz-1500 Hz. A opět je moznost zadat buď kladnou nebo zápornou hodnotu. O toto číslo (v jednotkách Hz) bude vyšší nebo nižší kmitočet záznějového oscilátoru (BFO). Tím máme možnost poslouchat přijímaný CW signál jako LSB nebo USB. Zároveň se toto číslo (jeho absolutní hodnota) použije pro výpočet dělicího poměru čítače T1 jednočipu, na vytvoření tónu příposlechu při vysílání.
Reálný MF filtr Záznějový oscilátor
nad MF kmitočtemZáznějový oscilátor
pod MF kmitočtemPřed časem mi přišel dotaz, proč tam je ta kladná nebo záporná hodnota nízkofrekvenčního kmitočtu. Co tím přesně docílíme. Věřím, že většina radioamatérů to chápe, ale přesto bych to rád vysvětlil. Chystám se vytvořit k tomuto článku doplnující video, kde bych to nějak názorně ukázal. Tak zatím alespoň obrázky nad tímto textem.
- Kalibrace kmitočtu:
Na desce oscilátoru je použit modul s obvodem SI5351a. Ten obsahuje krystal o jmenovitém kmitočtu 25 MHz. Jeho skutečný kmitočet se obvykle liší o několik desítek až stovek Hz. Navíc, po zapnutí ten kmitočet pomalu ujíždí a trvá to cca 10 až 15 minut, než se zastaví. Kondenzátory připojené ke krystalu jsou uvnitř čipu SI5351a. Nastavením hodnoty registru 183 (dekadická hodnota) se může jejich kapacita nastavit na 0pF, 6pF, 8pF nebo 10pF. Většina knihoven pro nastavení SI5351a má defaultně nastavenou hodnotu 10pF. Zkoušel jsem jiné hodnoty, ale nakonec mi 10pF vyšlo také jako nejlepší."Kalibrace" na mé desce oscilátoru spočívá v tom, že program nastaví na výstupu Clk2 kmitočet 25 MHz. Tedy kmitočet stejný, jako je jmenovitý kmitočet referenčního krystalu. My pomocí čítače kmitočtu (měřicího přístroje) změříme skutečný kmitočet na tomto výstupu a změřená hodnota se uloží do Eeprom paměti jednočipu. Odtud ji program přečte při každém zapnutí napájení desky oscilátoru. Tím pádem se všechny tři generované kmitočty vypočítávají ze skutečné hodnoty kmitočtu referenčního krystalu. Nepřesnost je pak daná pouze teplotní nestabilitou oproti okamžiku kalibrace.
- Kalibrace voltmetru:
A/D převodník měří napájecí napětí přes odporový dělič 10k/1k5. Ve výpočtu napětí je konstanta která s tímto děličem počítá. Když tuto kalibraci neprovedeme, použije se defaultní hodnota a voltmetr bude ukazovat přibližně správně. Pokud by tyto odpory byly dostatečně přesné, ukazoval by voltmetr správně. Při kalibraci se uloží nová konstanta, podle skutečného dělícího poměru těchto odporů.- Rezerva:
- Vyskočení z MENU do provozního stavu.
Změna na stránce skenování pásma.
Nastavení rychlosti skenování (zpoždění mezi jednotlivými kroky) jsem přesunul přímo na stránku spuštění skenování. Krátkým stiskem tlačítka Alt (BT7) vybíráme nastavení okrajů skenovacího rozsahu. Delším podržením tlačítka Alt skočíme do nastavení zpoždění a knoflíkem ladění nastavíme zpoždění mezi jednotlivými kroky v rozsahu 0ms až 50ms. Dalším stiskem Alt nebo Rit (BT1) hodnotu uložíme.Původně byl rozsah nastavení 5ms až 50ms s krokem 5ms. Teď to jde od nuly do 50ms s krokem 1ms. Při nastavení nuly to jede s maximální rychlostí, jakou to stíhá vypočítávat hodnoty a posílat je po I2C. Právě sériová komunikace po I2C je to, co především ovliňuje maximální rychlost.
Pozměněná stránka skenování | Původní barva displeje | Nová barva displeje |
A na závěr ještě jedna úprava:
Liborovi OK1HDF se nelíbila ta fialová barva na pozadí displeje. Tak jsem ji změnil na modrou.Jarda, ok1hdu
R B N |
![]() |
kalendář |
|
Radary ČHMU |
|
Zaparkováno na: |
![]() |
TSL certifikát: |
![]() |
Tento web site byl vytvořen prostřednictvím phpRS - redakčního systému napsaného v PHP jazyce.
Na této stránce použité názvy programových produktů, firem apod. mohou být ochrannými známkami
nebo registrovanými ochrannými známkami příslušných vlastníků.