Rozmítaný generátor s obvodem AD9851 V minulosti mnoho amatérských konstruktérů stavělo signální generátory s použitím obvodů na principu relaxačního generátoru a tvarovače. K nejznámějším patří typy XR2206 a MAX038. Zatímco obvod XR2206 generuje signál do kmitočtu asi 1 MHz a tím se jeho použití omezuje spíše na nízkofrekvenční oblast, MAX038 je schopen pracovat podle zkušeností autora až do kmitočtu okolo 27 MHz a tak umožňuje pracovat i v oblasti krátkých vln. Bohužel, firma Maxim přestala tento pro amatéry tak atraktivní obvod vyrábět. S tím jak jeho dostupnost klesá, roste naopak jeho cena. Snadnost použití obou zmíněných typů s sebou nese nedostatky, dané principem jejich činnosti – harmonické zkreslení sinusového signálu je okolo 1% a dosáhnout stability kmitočtu na 4. platné cifře je už hraniční problém.
Řešení s obvodem AD9851 Firma Analog Devices nabízí řadu obvodů pro přímou číslicovou syntézu kmitočtu - DDS. Pro výše zmíněnou oblast použití přichází do úvahy obvody AD9850 pro kmitočty do 30 MHz a AD9851 pro oblast do 70 MHz. Vybrali jsme druhý typ, nicméně v konstrukci je možno použít i AD9850 s úpravou firmware řídícího MCU. Obvod je nutno číslicově řídit buď po 8 bitové paralelní sběrnici, nebo po sériové lince. S ohledem na rychlost ovládání byl zvolen první způsob. Oba obvody AD9850 i AD9851 se dodávají v pouzdrech s roztečí vývodů 0,635 mm. Naštěstí jsou na webech DX, eBay nebo AliExpress snadno dostupné hotové moduly, které již obsahuji i potřebné obvody eliptického filtru a tak činí použití těchto obvodů jednoduché. Výstup z modulu je posílen výstupním zesilovačem s obvodem AD8007. Koncepce je znázorněna na obrázku číslo 1.
Řídící MCU, zobrazovací jednotka a ovládání Jako řídící MCU byl zvolen typ ATmega32. Toto pouzdro nabízí dostatečné množství I/O pinů a dostatečnou kapacitu programové paměti. Pokud by se vynechalo vzdálené ovládání generátoru, postačoval by i typ ATmega168. S ohledem na stabilitu časování při generaci rozmítaného signálu a generaci modulačního kmitočtu je použit externí krystal 16 MHz. Zobrazovací LCD display je s řadičem typu HD44780 v provedení 20x4 – 20 znaků na řádek, 4 řádky s podsvícením, které je samozřejmě možno vynechat. Zapojení LCD je klasické se 4 bitovým přenosem bez kontroly signálu BUSSY a není třeba je podrobně popisovat. Ovládání MCU se děje 6 tlačítky, z nichž 4 slouží pro pohyb po LCD displeji a 2 pro nastavování hodnot „nahoru“ (+) a „dolu“ (-). Komu by nevyhovovalo použití tlačítek + a – může použít jog dial s dorazy. Tímto řešením se však ztrácí dodatečná funkčnost, založená na současném stisku tlačítek + a -. Zobrazovací jednotka spolu s ovládacími prvky
špičkový detektor
LCD 20 x 4 ATmega ovládání
Modul AD9851
AD8007
Obr. 1 – Blokové schéma
tvoří samostatný konstrukční celek, který je propojen s blokem MCU 20 žilovým plochým kabelem. Schéma zobrazovací a ovládací části je uvedeno na obrázku číslo 2. Obr. 2 – Zobrazovací a ovládací část
Modul s obvodem AD9851 Jak bylo výše uvedeno, je použit hotový modul s obvodem AD9851. Modul umožňuje připojení vnějšího odporu, který určuje velikost generovaného signálu. Tato vlastnost je použita pro ovládání výstupního napětí a pro amplitudovou modulaci. Na obrázku číslo 3 a 4 je znázorněno schéma modulu a jeho fyzické provedení, tak jak se jej podařilo získat.
Obr. 4 – Modul AD9851
Obr. 6 – Detektor a zesilovač
Obr. 3 – Schéma modulu AD9851
Z modulu je odstraněna propojka J3 (vlevo dole) a tím je umožněno ovládat velikost generovaného signálu pomocí vnějšího odporu.
Blok řízení a generace signálu Jednotka řízení je osazena MCU ATmega32 v běžném zapojení. Schéma je uvedeno na obrázku číslo 5. Za povšimnutí stojí použití tlumivek v napájení modulu AD9851, v přívodu AVC pro MCU a v přívodu Vcc pro převodník USB <->RS232, které se doporučuje použít. Ovládání velkosti výstupního signálu se provádí pomocí potenciometru 50K, který by měl mít exponenciální průběh (označení Y). Lineární průběh nevyhoví, protože je regulace na jednom konci velmi strmá. Použití logaritmických potenciometrů je možné, pokud je ovšem zapojíme obráceně, tzn., signál se zvětšuje při otáčení doleva. Pokud by to pak vadilo, je třeba použít vhodný mechanický převod, který obrátí směr otáčení. Amplitudová modulace je obdélníková a provádí se pomocí spínání druhého potenciometru. Pro něj platí stejná pravidla, jako již u výše popsaného.
Blok má spojení s obvody pro zobrazení a ovládání pomocí 20 žilového kabelu přes konektor X1. Blok generace produkuje signály SYNC, MARK a MOD. Signál SYNC je impuls generovaný na začátku běhu rozmítání a slouží ke spouštění časové základny osciloskopu. Signál MARK je impuls generovaný v okamžiku, kdy se rozmítaný kmitočet rovná kmitočtu, na který je nastaven zabudovaný kmitočtový značkovač. Třetím výstupním digitálním signálem je MOD, což je výstup signálu amplitudové modulace. Modul s AD9851 je resetován programově po zapnutí obvodů vyhrazeným pinem řídícího MCU. Napájení bloku je +5V. Délka spojení mezi MCU a modulem AD9851 musí být co nejkratší, nejlépe když tvoří jeden kompaktní konstrukční celek. Koncepce „elektronické stupnice“ není dobrá, protože obvod AD9851 je velmi rychlý a reaguje na impulsy s délkou jednotek ns. Při zkouškách bylo na závadu propojení mezi MCU a modulem v délce 15 cm plochého kabelu.
Detektor a výstupní zesilovač Z výstupního pinu 19 je veden generovaný signál do bloku výstupního zesilovače a detektoru. Jeho schéma je uvedeno na obrázku číslo 6. Výstupní zesilovač je osazen obvodem AD8007, který má v daném zapojení zesílení 2. Protože jde o operační zesilovač s proudovou zpětnou vazbou, který celkově pracuje s malými připojenými vnějšímu rezistory, jeho malý vstupní odpor zatíží výstup modulu AD9851. Tím se ve výsledku dostaneme na „čisté“ zesílení asi 1,6. Na výstupu zesilovače je připojen diodový detektor 2 x BAT15, zapojený jako zdvojovač napětí. Jeho výstup je měřen pomocí pinu PC4 MCU, který je ve funkci vstupu na AD převodník. Kompenzace jeho nelineární charakteristiky je prováděna programově. Bližší popis bude podán v části věnované firmware. Výstupní signál zesilovače je opatřen záchytnými diodami, které jej chrání proti přetížení zvenčí připojeným napětím. Výstupní signály SYNC, MARK a MOD jsou zpracovávány invertory 74ALS04. jejich výstup je opatřen rovněž záchytnými diodami
Obr. 5 – Řízení a generace signálu
a ochranným rezistorem. Výstupní kondenzátory výstupního zesilovače a signálů SYNC, MARK a MOD by měly být dimenzovány alespoň na 50V. Napájení zesilovače je symetrické +-5V.
Funkce generátoru a popis firmware Generátor pracuje s následujícími parametry: Módy činnosti: 1) konstantní kmitočet bez modulace 2) konstantní kmitočet, amplitudová modulace 3) rozmítaný kmitočet 0 – 40% 4) logaritmické rozmítání v rozsahu 10Hz – 100 kHz / 10s Kmitočtový rozsah: 0 – 50 MHz Výstupní napětí: max. 1,6V šš Nejmenší krok nastavení: 1 Hz Amplitudová modulace: 40–9999 Hz Modulační obálka: obdélníková Hloubka modulace: 0 – 90% Rychlost rozmítání: 20 Hz Zabudovaný frekvenční značkovač. Dálkové ovládání z PC pomocí AT příkazů Ukládání a obnova nastavení z EEPROM Indikace chybového stavu, markeru mimo rozsah a dálkového ovládání
Obsluha generátoru Generátor se ovládá pomocí 6 tlačítek. 4 tlačítka slouží pro pohyb po LCD. Při nastavení kursoru na horní řádek, slouží tlačítka „right“ a „left“ pro změnu funkce. Tlačítka + a – (popřípadě dorazový jog dial) slouží pro změnu hodnoty, na kterou je nastaven kursor. Současný stisk tlačítek + a – má speciální význam. Při poloze kursoru na hodnotě kmitočtu, nebo na údaj velikosti rozmítání se hodnota vynuluje. Při nastavení na kmitočet amplitudové modulace nastaví hodnotu 40 Hz. Při nastavení na údaj frekvenčního značkovače nastaví stejnou hodnotu, jako je střední generovaný kmitočet. Stiskem a podržení tlačítka „up“ a následným stiskem tlačítka „down“ se uloží aktuální nastavení generátoru. Stiskem a podržením tlačítka „down“ a následným stiskem tlačítka „up“ se uložené nastavení přečte a generátor se podle něj nastaví. Podržením tlačítek + nebo – se spustí funkce auto-repeat. Funkce se přeruší jakoukoliv změnou na tlačítkách. Na ovládacím panelu jsou umístěny 3 LED: - zelená, indikuje dálkové ovládání - žlutá, indikuje frekvenční značkovač mimo rozsah, začátek
logaritmického rozmítání ukládání stavu do EPROM - červená, indikuje chyby
Firmware, sestavení
jeho
obsah
a
lcdapi.aps conv.aps Projekty sestavíme samostatně buď z příkazové řádky nebo otevřením v AVR Studiu. V příslušném adresáři default odstraníme soubory convlib.o a lcdlib.o. Poté utvoříme staticky linkované knihovny z příslušného default adresáře:
a
Firmware je napsán v jazyce C a k projektu přiložen jako Open Source. K jeho překladu a sestavení je použito AVR Studio 4.18. Zároveň je použit nainstalovaný toolchain WinAVR. Obsah dodaných zdrojových textů je na obrázku číslo
>avr-ar -rcs liblcdapi.a *.o >avr-ar -rcs libconv.a *.o
Popis firmware Firmware generátoru je koncipován jako událostí řízený automat. S výjimkou čekání na reakci LCD není nikde použita žádná čekací smyčka. Zdroje událostí jsou následující: – ovládací prvky (tlačítka ovládacího panelu)
Obr. 7 – Obsah firmware
7. Pro úspěšný překlad a sestavení je zapotřebí mít na vykonavatelné cestě programy make.exe a avrar.exe. Projektové soubory pro AVR Studio předpokládají existenci následujících položek na uvedených cestách: Soubory include: C:\WinAVR20090313\avr\include\ Překladač:
– vypršení časovačů - ukončení převodu A/D Automat zpracovává tyto události na základě svého stavu. Možné stavy automatu jsou následující: -
C:\WinAVR20090313\bin\avrgcc.exe
Zpracovávané události jsou definovány makry v souboru ccp.h.
Make
Úvodní inicializace
C:\WinAVR20090313\utils\bin Pokud jsou uvedené položky na jiném umístění, je třeba příslušně upravit projektové soubory. Hlavní moduly jsou obsaženy v adresáři generator. V něm jsou dále i adresáře pro sestavení knihovny pro práci s LCD lcdapi a knihovny pro konverzi čísel na text conv. Knihovny pro LCD a pro konverzi jsou částečně upravené volně dostupné knihovny, moduly v hlavním adresáři jsou původní. V adresáři generator\default je sestavený hex soubor. Překlad a sestavení provedeme z hlavního adresáře. Otevřeme konsolové okno a přepneme se do adresáře: >cd
Překlad se spustí pomocí dávky >make.bat Pokud by se překlad a sestavení pomocí dávky nepodařilo, lze využít samostatně projektů generator.aps
INTRO – stav úvodní obrazovky CONSTANT – generace konstantního kmitočtu AM – stav s amplitudovou modulací SWEEP – stav při rozmítání AF_SWEEP – stav při logaritmickém rozmítání
Inicializace systému se provádí v modulu generator.c, který zároveň obsahuje funkci main(). Inicializace se skládá z kroků: -
- inicializace portů - inicializace LCD - inicializace časovačů - inicializace převodu A/D - reset AD9851 - inicializace centrálního automatu - přečtení uložení konfigurace a nastavení generátoru Jestliže souhlasí kontrolní součet uložené konfigurace, tato se načte a generátor se podle ní nastaví. Jestliže kontrolní součet nesouhlasí, krátce blikne chybová LER a generátor se nastaví do defaultního módu. Po skončené inicializaci se povolí přerušení a řízení se předá hlavní smyčce programu.
Generace událostí Události se generují v hlavní smyčce programu, která se nachází v modulu mainloop.c. Smyčka kontroluje změny na ovládacích prvcích, příznaky exspirace časovačů a ukončení převodu A/D. Možné
zákmity tlačítek jsou ošetřeny časovačem 5 ms. Jestliže je detekována a generována nová událost, řízení se předá centrálnímu automatu v modulu ccp.c.
Generace SYNC, MARK a MOD Blok řízení generuje pomocné signály, které slouží pro synchronizaci zobrazení na osciloskopu v módu rozmítání. Na začátku každého běhu rozmítání, to znamená v okamžiku, kdy kmitočet je na dolní hranici rozmítacího rozsahu, se generuje impuls SYNC o délce 100 us. Jestliže okamžitý kmitočet dosáhne hodnoty určené frekvencí značkovače, generuje se impuls MARK o délce 100 us. Jestliže se okamžitý kmitočet rovná střednímu kmitočtu, generuje se na impuls MARK o délce 200 us. V režimu logaritmického rozmítání se generuje signál SYNC o délce 100 us na začátku každého běhu. Signál MARK se generuje takto: -
-
100 ms na začátku běhu, tzn. při kmitočtu 10 Hz 50 ms po ukončení každé dekády, to znamená na kmitočtech 100, 1000 a 10000 Hz. Kmitočet 100000 Hz splývá s kmitočtem 10 Hz 25 ms, jestliže okamžitý kmitočet dosáhne hodnoty dané frekvenčním značkovačem
Zpracování časovačů Jednotlivé časovače jsou reprezentovány bloky dat TOBlock v souboru timdrv.h. Pole časovačů je pravidelně procházeno driverem časovačů v modulu timdrv.c s periodou 100 µs. Driver je spouštěn přerušením od časovače 0. V každém průchodu je hodnota časovacího bloku snížena o 1. Jestliže hodnota časovacího bloku dosáhne 0, je nastaven příznak vypršení tohoto časovacího bloku. Tento příznak je posléze rozpoznán hlavní smyčkou programu a generuje se tak událost vypršení časovače.
Modul centrálního automatu Centrální automat se nachází v modulu ccp.c (central control process). Pro každou kombinaci možného stavu automatu a každé možné události definuje samostatnou funkci, která zpracovává danou kombinaci události a stavu. Hlavní smyčka programu utvoří událost a tuto událost předá jako parametr na vstupní bod automatu představovaný funkcí ccp(u8 event). Stav si automat uchovává sám jako svou statickou proměnnou ccp_status. Centrální automat následně zkontroluje přípustnost předané události, na základě svého
stavu a události přečte z distribuční tabulky pointer na funkci zpracování a této funkci předá řízení. =
1+
∗(
−
1)
Modul zobrazování V modulu display.c se nachází texty pro zobrazování v jednotlivých stave a zároveň souřadnice rozmístění zobrazovaných hodnot.
Generace modulačního kmitočtu Pro generaci modulačního kmitočtu se používá timer 2. Nastavení timeru pro požadovaný modulační kmitočet se děje v modulu pulse.c. Modul hledá pro každý požadovaný kmitočet optimální nastavení předděliče tak, aby bylo možné nastavení OCR2A co nejpřesněji.
Měření výstupního napětí
provádí lineární interpolace. Označíme-li nalezený řádek n a předchozí je n1, pak vstupní napětí detektoru se vypočítá: Ve firmware figurují sloupce Usp, DUspk, Uss a DUss. DUspk je desetinásobkem DUss. Díky tomu lze podíl DUspk/DUss vypočítat s dostatečnou přesností i při použití celočíselných výpočtů. Po vypočítání interpolovaného přírůstku se pak vezme jen jeho desetina. Měření výstupního napětí probíhá asynchronně s výjimkou režimu rozmítání. V tomto režimu je měření synchronizováno s rozmítáním, aby se vyloučil jitter způsobený A/D převodem a následnou linearizací detektoru. To by jinak způsobovalo nestabilní polohu značkovače kmitočtu.
Konfigurace firmware Konfigurace firmware je obsažena v souboru config.h. Pomocí maker jsou zde definovány použití porty a jejich jednotlivé piny.
Pro měření výstupního napětí se používá špičkový detektor – zdvojovač připojený na výstup výstupního zesilovače. Napětí z detektoru se vede na PC4, který je nastaven do funkce vstupu A/D převodníku. Zpracování se děje v modulu a2d.c. Modul zároveň ve funkci linearizeDetector() koriguje nelineární charakteristiku diod použitých v detektoru. Ze změřeného výstupního napětí detektoru se inverzním výpočtem snaží vypočítat odpovídající špičkové napětí na vstupu detektoru. Pro nastavení trimru M5 na začátku horní čtvrtiny dráhy byly změřeny a dopočítány následující hodnoty vstupního a výstupního napětí [mV] pro osazení diodami BAT15 při kmitočtu 1 MHz – tabulka číslo 1:
Modul řízení a generace signálu je možno ovládat z připojeného PC pomocí zabudovaného vstupu pro USB. Modul využívá převodník USB <-> RS232 typu CH340. Na straně PC je instalován driver, který utvoří virtuální COM port. Vlastní ovládání se děje pomocí AT příkazů. Každý AT příkaz je nutno ukončit znakem odřádkování 0x0A. Uprostřed povelů se nesmí nacházet mezery. Modul rozpoznává tyto AT příkazy:
Usp – špičkové napětí na vstupu detektoru
AT+GMM - zobrazení verze firmware
DUsp – diference špičkového napětí mezi kroky měření
AT&F – defaultní nastavení
DUspk – 10 x diference špičkového napětí Uss – napětí na výstupu detektoru DUss – diference výstupního napětí detektoru mezi kroky měření Um – změřené napětí na výstupu detektoru Uv – vypočítané vstupní napětí detektoru Vstupní napětí detektoru se vypočítá jako napětí na začátku intervalu měření a přírůstku daného lineární interpolací. Nejprve se najde řádek v tabulce, ve kterém je Uss větší, než je změřené napětí. Tím se určí interval hodnot, mezi kterými se
Dálkové ovládání
AT - prázdný povel, odpověď je vždy OK ATZ - reset
AT&W – uložení aktuální konfigurace AT&V – přečtení konfigurace a nastavení generátoru AT\N=<mode> - nastavení módu. 1=konstatní frekvence, 2=ampl. Modulace, 3=rozmítač, 4=logaritmické rozmítání AT&G= - nastavení frekvence generátoru. Frekvence je dekadické číslo. AT+MS=<mod frq> - nastavení modulační frekvence AT+CUR=<mark frq> - nastavení frekvence značkovače AT+SWR=<sweep rng> - nastavení rozsahu rozmítání v %.
AT+CST= - nastavení pořadí značkovaní frekvence při logaritmickém rozmítání. Komunikace mezi PC a generátorem z pohledu RS23 probíhá s parametry: -
19200 Bd bez parity 8 datových bitů 1 stop bit
Realizace Uvedený projekt není uceleným stavebním návodem. K tomu, aby byl generátor prakticky použitelný, je třeba jej doplnit symetrickým zdrojem +- 5V. Zdroj by měl obsahovat Zenerovy diody k pohlcení přepětí zachyceného ochrannými záchytnými diodami.
Tab. 1 – Měření na detektoru Usp 0 60 100 150 200 300 400 500 600 800
DUsp 0 60 40 50 50 100 100 100 100 200
Dále pak výstupním atenuátorem s možností zmenšení výstupního napětí na úroveň mikrovoltů. S tím souvisí i hlavní problém takto koncipovaného generátoru, a to je parazitní vyzařování. Protože je ovládací a zobrazovací blok galvanicky spojen s blokem generace, bude se významnou měrou podílet jednotka LCD na parazitním vyzařování. Praktická realizace bude muset s tímto efektem počítat a vhodnou konstrukcí, například stíněním LCD a tlačítek, parazitní vyzařování zmenšit na co nejmenší úroveň. Generátor se skládá ze dvou hlavních modulů: zobrazovací panel s LCD a tlačítky a modul řízení a generace signálu. Tyto moduly jsou propojeny 20 žilovým plochým kabelem. Zobrazovací panel obsahuje LCD 20 x 4 a pomocný subpanel s tlačítky, který umístí tlačítka do jedné roviny s LCD. Tlačítka jsou prosvětlená a rozsvítí se po skončení inicializaci firmware a staru generátoru. Modul řízení a generace je konstruován blokově. Základní deska nese řídící mikroprocesor a nezbytnými obvody a obvody pro výstup signálu MOD, SYNC a MARK. Bloky pro AD9851, výstupní zesilovač a detektor a převodník USB <-> RS232 jsou na samostatných deskách a vsazeny do konektorů na základní desce. Jako důležité pro kvalitu generovaného signálu se ukázalo při konečné montáži upevnit modul AD9851 nejen pomocí konektorů, ale i pomocí kovových sloupků, které zajistí dobré propojení zemního spoje modulu a základní desky.
Obr. 5 – Panel LCD a tlačítek generace signálu
Obr. 6 – Detail sub- panelu tlačítek
DUspk 0 600 400 500 1000 1000 1000 1000 1000 2000
Uss 0 41 69 118 185 282 400 523 668 919
DUss 0 41 28 49 67 97 118 123 145 251
Obr. 7 – Blok řízení a generace
Obr. 8 – Moduly AD9851 a zesilovače
Obr. 9 –Převodník USB <-> RS232
Obr. 10 – Montáž modulu
Obr. 11 – 100 Khz
Obr. 12 – 1 MHz
Obr. 13 – 10 MHz
Obr. 14 – 30 Mhz
Obr. 15 – 50 Mhz
Obr. 16 – FFT 30 Mhz