POČÍTAČOVÉ SYSTÉMY
G e n e r á t o r s i g n ál u s D D S
Autor: Leoš Komínek Vedoucí práce: Ing. Bc. David Matoušek Rok: 2012
Vysoká škola polytechnická Jihlava Tolstého 16, 586 01 Jihlava
ZADÁNÍ BAKALÁŘSKÉ PRÁCE
Autor práce:
Leoš Komínek
Studijní program:
Elektrotechnika a informatika
Obor:
Počítačové systémy
Název práce:
Generátor signálu pomocí DDS
Cíl práce:
Vytvořte funkční vzorek generátoru signálu na základě DDS (přímé digitální syntézy) s použitím vhodného integrovaného obvodu od firmy Analog Devices. Nastavení parametrů bude řízeno procesorem, ovládání pomocí klávesnice. Požadovaný rozsah amplitudy výstupního napětí bude 0 až 3 V. Kmitočtový rozsah 0 až 100 kHz (minimálně). Hlavní výstup bude harmonického tvaru, na pomocném výstupu generujte průběh obdélníkového tvaru v úrovních TTL.
Ing. Bc. David Matoušek
Ing. Bc. Michal Vopálenský, Ph.D.
vedoucí bakalářské práce
vedoucí katedry Katedra elektrotechniky a informatiky
Anotace Tato bakalářská práce popisuje návrh a konstrukci generátoru signálu pomocí přímé digitální syntézy. Zařízení má dva výstupy. Jeden generující harmonický průběh a druhý generující obdélníkový signál v úrovních TTL. Amplituda harmonického výstupu je nastavitelná v rozsahu 0 až 3 volty. Frekvence výstupů je přeladitelná v rozmezí 0 až 100 kHz. Nastavení frekvence je řešeno pomocí maticové klávesnice a zobrazení pomocí LCD displeje. Jádrem zařízení je obvod AD9833 od firmy Analog Devices, který je společně s perifériemi ovládán mikrokontrolérem AT98S52 od firmy Atmel. Program pro mikrokontrolér je napsán v jazyce C51 v prostředí Keil µVision 4 a plošný spoj je navržen v programu Eagle 5.11.0 od firmy CadSoft.
Klíčová slova Generátor signálu, AD9833, DDS, TTL, LCD, AT89S52
Annotation This thesis describes the design and construction of the signal generator using direct digital synthesis. The device has two outputs. One generates a harmonic signal and the second one generates square wave TTL signal. Amplitude of harmonic output is adjustable from 0 to 3 volts. Frequency output is adjustable from 0 to 100 kHz. Frequency adjustment is solved by using matrix keyboard and displaying by using the LCD display. Heart of device is a circuit AD9833 from Analog Devices, which is controlled together with peripherals by microcontroller AT98S52 from Atmel. The program for the microcontroller is written in C51 in the environment of Keil μVision 4 and PCB is designed in Eagle 5.11.0 made by CadSoft.
Keywords Signal generator, AD9833, DDS, TTL, LCD, AT89S52
Prohlašuji, že předložená bakalářská práce je původní a zpracoval/a jsem ji samostatně. Prohlašuji, že citace použitých pramenů je úplná, že jsem v práci neporušil/a autorská práva (ve smyslu zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů, v platném znění, dále též „AZ“). Souhlasím s umístěním bakalářské práce v knihovně VŠPJ a s jejím užitím k výuce nebo k vlastní vnitřní potřebě VŠPJ. Byl/a jsem seznámen s tím, že na mou bakalářskou práci se plně vztahuje AZ, zejména § 60 (školní dílo). Beru na vědomí, že VŠPJ má právo na uzavření licenční smlouvy o užití mé bakalářské práce a prohlašuji, že s o u h l a s í m s případným užitím mé bakalářské práce (prodej, zapůjčení apod.). Jsem si vědom/a toho, že užít své bakalářské práce či poskytnout licenci k jejímu využití mohu jen se souhlasem VŠPJ, která má právo ode mne požadovat přiměřený příspěvek na úhradu nákladů, vynaložených vysokou školou na vytvoření díla (až do jejich skutečné výše), z výdělku dosaženého v souvislosti s užitím díla či poskytnutí licence. V Jihlavě dne 31. 12. 2011 ............................................. Podpis
Poděkování Děkuji mému vedoucímu práce Bc. Ing. Davidovi Matouškovi za vedení mé práce, cenné rady a ochotu při konzultacích.
Obsah 1.
Úvod .....................................................................................................................8
2.
Generátory signálu .................................................................................................9
3.
4.
2.1
Co je generátor signálu ....................................................................................9
2.2
Přehled a vlastnosti běžných harmonických generátorů ................................. 10
2.2.1
L-C oscilátory ........................................................................................ 10
2.2.2
R-C oscilátory ........................................................................................ 11
2.2.3
Krystalové oscilátory.............................................................................. 11
Přímá digitální syntéza DDS ................................................................................ 12 3.1
Popis principu přímé digitální syntézy ........................................................... 12
3.2
Vlastnosti výstupního signálu ........................................................................ 15
Návrh generátoru signálu ..................................................................................... 16 4.1
Výběr DDS obvodu ....................................................................................... 16
4.2
AD9833 ........................................................................................................ 17
4.2.1
Popis vývodů ......................................................................................... 17
4.2.2
Komunikace ........................................................................................... 18
4.2.3
Registry..................................................................................................18
4.3
Mikrokontrolér AT89S52 .............................................................................. 21
4.4
Periferie ........................................................................................................ 22
4.4.1
Maticová klávesnice ............................................................................... 22
4.4.2
LCD ....................................................................................................... 23
4.5
Napájení ........................................................................................................ 24
4.5.1 4.6 5.
Výstupní obvody ........................................................................................... 26
Program ............................................................................................................... 28 5.1
Modul pro obsluhu AD9833 .......................................................................... 28
5.1.1 5.1.2 5.1.3 5.2
6.
Nábojová pumpa ICL7660 .....................................................................24
Funkce DDSwrite2byte .......................................................................... 28 Inicializační sekvence DDSinit ......................................................... 29 Funkce DDSgeneruj ............................................................................... 29
Hlavní program ............................................................................................. 30
5.2.1
Funkce tisk ............................................................................................. 31
5.2.2
Funkce prevod........................................................................................ 31
5.2.3
Funkce main........................................................................................... 32
Konstrukce .......................................................................................................... 36 6.1
Plošný spoj .................................................................................................... 36
6.2
Usazení do konstrukční přístrojové krabičky ................................................. 37
7.
Výsledky testování .............................................................................................. 39
8.
Závěr ................................................................................................................... 41 8.1
Splnění cílů ...................................................................................................41
8.2
Problémy a jejich řešení ................................................................................ 41
8.3
Další možnosti rozšíření ................................................................................ 42
9.
Seznam použité literatury .................................................................................... 43
Seznam obrázků .......................................................................................................... 45 Seznam tabulek ........................................................................................................... 46 Seznam použitých zkratek a symbolů .......................................................................... 47 Přílohy ........................................................................................................................ 48 A.
Schéma zapojení generátoru DDS ................................................................. 48
B.
Seznam součástek plošného spoje ..................................................................49
C.
Seznam součástek ostatní .............................................................................. 50
D.
Seznam příloh na CD .................................................................................... 51
1. Úvod Již několik let je mým koníčkem syntéza zvuku a použití syntetizátorů v moderní hudbě. V dnešní době existuje mnoho softwarových syntetizátorů pro tvorbu hudby na počítači, ale hardwarové jsou stále vyhledávány profesionály po celém světě, kvůli jejich specifickému zkreslení, které lidskému uchu zní příjemněji a tudíž lépe. Jakmile jsem zjistil, že je vypsáno toto téma, ihned mě zaujalo jednak kvůli tomu, že bych v budoucnosti mohl z této práce vycházet při stavbě vlastního hardwarového syntetizátoru, a také kvůli tomu, že mě za dobu studia na vysoké škole zaujalo programování mikroprocesorů v jazyce C. Cílem mé práce je vytvoření generátoru signálu, který se používá pro různé aplikace jako např. měření frekvenčních charakteristik nebo jako zdroje synchronizačních impulsů.
Na
prvním,
analogovém
výstupu,
bude
umožňovat
vytvářet
sinusový, obdélníkový a trojúhelníkový signál a na druhém výstupu bude generován signál TTL. Při návrhu a realizaci se zaměřím na jednoduchost zapojení a využití znalostí, které jsem nabyl na Vysoké škole polytechnické Jihlava. Proto použiji pro ovládání mikroprocesor Atmel AT89S52 a pro zobrazování LCD s řadičem HD44780. Také se budu snažit, aby ovládání a práce se zařízením byla co nejjednodušší.
8
2. Generátory signálu V této kapitole je vysvětlen pojem generátor signálu včetně výčtu vlastností a schématy běžných analogových generátorů.
2.1
Co je generátor signálu
Generátor signálu je elektrické zařízení, které mění energii z napájecího zdroje (z pravidla stejnosměrného) na energii střídavého proudu požadované frekvence a průběhu. Generátory se využívají v mnoha odvětvích elektrotechniky např. v měřicí technice, radiotechnice, výpočetní technice atd. Generátory se mohou dělit podle několika hledisek. Podle principu činnosti se rozdělují na:
zpětnovazební (základem je zesilovač s vhodně zavedenou kladnou zpětnou vazbou)
generátory s prvkem se záporným diferenciálním odporem.
Podle průběhu vyráběného napětí se rozdělují na:
generátory harmonických signálů (oscilátory),
generátory neharmonických signálů (obdélníkový signál, pilový signál, lichoběžníkové signál atd.),
generátory se speciálními průběhy (šumové, s libovolně definovanými průběhy),
generátory číslicových signálů (obdélníkové signály s velikostí impulsů, odpovídající logickým obvodům, a případnými speciálními průběhy – např. konečné sekvence impulsů, odpovídající požadovaným binárním číslům).
Oscilátory obsahují tyto základní prvky:
aktivní prvek (obvykle tranzistor nebo operační zesilovač),
pasivní prvek (RC článek, rezonanční obvod LC, krystalový výbrus),
pomocné prvky (zprostředkovávají vazbu mezi aktivním a pasivním prvkem, nastavují a stabilizují pracovní bod).
9
Stabilita kmitočtu je nejdůležitější vlastnost oscilátoru a je dána:
kvalitou součástek,
obvodovým zapojením,
kolísáním napájecího napětí,
změnou teploty,
vlivem zátěže,
mechanickým provedením,
rozvodem napájecího napětí.
Mezi další vlastnosti patří nastavitelnost a kmitočtu a jeho šířka. Dále pak velikost, nastavitelnost a stabilita amplitudy. A v neposlední řadě harmonické zkreslení a čistota výstupního spektra u harmonických signálů a doby hran u obdélníkových signálů. (9)
2.2 Přehled a vlastnosti běžných harmonických generátorů Tyto generátory, založeny na zpětné vazbě, musí pro správnou funkčnost splňovat 2 podmínky. Amplitudovou, tedy přenos zpětné smyčky musí být roven 1 a fázovou, součet fázového posunu zesilovacího prvku a fázový posun zpětné vazby musí být 2π.
2.2.1 L-C oscilátory Rezonanční obvod těchto oscilátorů je tvořen z cívky a kondenzátoru. Jsou dobře laditelné v kmitočtovém pásmu 100 kHz – 300 MHz, při mikrovlnné realizaci i jednotky GHz, stabilita kmitočtu cca 10-3 až 10-4, zkreslení 1% až 0,1%.
Obrázek 1: Meisnerův a Reinartzův oscilátor (6)
10
Obrázek 2: Harteyův a Clopittsův oscilátor (6)
2.2.2 R-C oscilátory Jsou vhodné pro nižší frekvence. Jsou dobře laditelné v kmitočtovém pásmu cca 10 Hz – 10MHz, stabilita kmitočtu cca 10-3 až 10-4, zkreslení 1% až 0,001%.
Obrázek 3: RC oscilátory s Wienovým článkem (6)
2.2.3 Krystalové oscilátory Tyto oscilátory jsou prakticky neladitelné, vyráběné v odpovídajících kmitočtových pásmech od 10 kHz do 100 MHz, stabilita kmitočtu cca 10-6 i lepší, zkreslení 1% až 0,1%. (14)
Obrázek 4: Kristalové oscilátory v Piercove zapojení (6)
11
3. Přímá digitální syntéza DDS Přímá digitální syntéza je technika zpracování digitálních dat za účelem generování laditelné frekvence a fáze pomocí přesného referenčního signálu s konstantní frekvencí. V podstatě se jedná o dělení referenčního kmitočtu v DDS architektuře poměrem obsaženým v programovatelném binárním ladícím slově. Ladící slovo je dlouhé typicky 24 až 48 bitů a určuje rozlišení výstupní frekvence. Díky dnešním technologiím není implementace této architektury náročná a je cenově dostupná. Integrované obvody pro DDS jsou výkonné, malé a díky svým vlastnostem se stávají zajímavou alternativou pro analogové generátory založené na principu fázových závěsu. (1) Hlavní výhody DDS: -
Rozlišovací schopnost může být až μHz.
-
Rychlé přeladění frekvence a plynulá změna fáze.
-
Stabilita výstupní frekvence.
-
Digitální rozhraní umožňuje vzdálené a přesné ladění.
3.1 Popis principu přímé digitální syntézy Na obr. 5 je demonstrována implementace přímé digitální syntézy v nejjednodušší formě, která se skládá z přesného referenčního hodinového signálu, čítače adres, paměti PROM a číslicově-analogového převodníku.
Obrázek 5: Nejjednodušší princip přímé digitální syntézy
Tabulka funkce sinus je uložena v paměti PROM. Čítač adres se každým hodinovým cyklem inkrementuje a přes registr vystavuje hodnoty z paměti tabulky funkce sinus na vstup vysokorychlostního číslicově-analogového převodníku. Ten generuje analogovou
12
sinusoidu na základě digitálních hodnot na jeho vstupu. Výstupní frekvence je závislá na referenční frekvenci a velikosti kroku sinusoidy naprogramovaném v paměti PROM. Aby se dala frekvence přeladit jinak, než změnou frekvence referenční či úpravou tabulky v paměti PROM, nahradí se čítač adres akumulátorem fáze. Ten se skládá ze sčítačky a registru fáze. Na akumulátor fáze se přivádí n-bitové řídící slovo M, které určuje jeho přírůstek. Když akumulátor přeteče, zůstane v něm zbytek po přetečení a vše se opět opakuje. (1)
Obrázek 6: Akumulátor fáze (1)
Činnost akumulátoru fáze znázorňuje fázový kruh na obr. 7.
Obrázek 7: Činnost akumulátoru fáze (1)
13
Z tohoto obrázku je zřejmé, že čím větší je hodnota řídícího slova M, tím je větší frekvence, ale také zkreslení výstupního signálu, jelikož sinusový signál na výstupu je složen z menšího počtu vzorků na periodu. Podle Shanon-Kotělnikovova vzorkovacího teorému (5) musí existovat minimálně 2 vzorky na periodu, aby se dal signál rekonstruovat, tudíž maximální skok ve fázovém kruhu musí být menší než 180° a výstupní frekvence může být maximálně polovina frekvence referenční. Pro výstupní frekvenci platí vztah: , kde M je hodnota řídícího slova, fref je frekvence referenčního signálu a N je bitová šířka akumulátoru fáze. Změny řídícího slova se na výstupu projevují okamžitě a spojitě. V praxi bývá řídící slovo nahráno do SIPO registru, který minimalizuje počet vývodů DDS obvodů a tudíž rychlost změny výstupní frekvence je limitována rychlostí, kterou může být registr naplněn. (1) Tok signálu je názorně zobrazen na obr. 8.
Obrázek 8: Tok signálu v DDS (1)
14
3.2 Vlastnosti výstupního signálu Typické
spektrum
generovaného
signálu
je
zobrazeno
na
obr.
9.
Obrázek 9: Spektrum generovaného signálu (1)
Z tohoto obrázku je patrné, že výstupní signál obsahuje nejen požadovanou frekvenci, ale i jeho zrcadlové složky. Např. pokud je referenční frekvence 25 MHz a generovaná frekvence 7 MHz, pak se kolem násobků frekvence referenční objevují obrazy frekvence generované o amplitudě dané vztahem: ( ) Tyto nežádoucí složky lze potlačit filtrem typu dolní propust se zlomovou frekvencí menší než je polovina frekvence referenční. Další rušivé signály, které se objevují ve výstupním signálu, je pronikání hodinového signálu, rušení vznikající při přepínání bitů číslicově-analogového převodníku nebo vyšší harmonické vzniklé nelinearitou číslicově-analogového převodníku. (1)
15
4. Návrh generátoru signálu Tato kapitola se zabývá volbou a popisem obvodů a periferií požitých při návrhu generátoru.
4.1 Výběr DDS obvodu Firma Analog Devices dnes vyrábí kolem třiceti obvodů pro generování signálů pomocí DDS. Tyto obvody se liší funkcemi a parametry. Kupříkladu některé dokáží generovat frekvenci až do 1 GHz nebo některé mají funkci přímého klíčování informací metodami FSK, PSK atd. Analog Devices vyrábí také obvody určené přímo pro stavbu generátoru funkcí. Přehled těchto obvodů je v tab. 1. Pro mou aplikaci je po prostudování všech typů obvodů nejvhodnější obvod AD9833, který je pro mou aplikaci nejvhodnější a v České republice jeden z nejlépe dostupných. Tabulka 1: Přehled DDS obvodů určených pro stavbu generátoru (12)
Název
Taktovací Napájecí
Počet
frekvence
Frek./Fáz. spotřeba
napájení
Max.
Pouzdro
Prog. rozhraní
registrů AD9830
50 MHz
5V
4 Fáz.
330 mW
48 TQFP
Paralelní
132 mW
48 TQFP
Paralelní
132 mW
16
Sériové
2 Frek. AD9831
25 MHz
2.97 V–5.5 V
4 Fáz. 2 Frek.
AD9832
25 MHz
2.97 V–5.5 V
4 Fáz. 2 Frek.
AD9833
25 MHz
2.3 V–5.5 V
2 Fáz.
TSSOP 31 mW
10 MSOP
Sériové
44 mW
20
Sériové
2 Frek. AD9834
50 MHz
2.3 V–5.5 V
2 Fáz. 2 Frek.
AD9835
50 MHz
5V
4 Fáz. 2 Frek.
16
TSSOP 220 mW
16 TSSOP
Sériové
4.2 AD9833 Obvod AD9833 je nízkopříkonový, programovatelný generátor signálu, produkující sinusový, trojúhelníkový a obdélníkový průběh. Výstupní frekvence a fáze jsou programově snadno laditelné. Registry pro změnu frekvence mají šířku 28 bitů. Při referenční frekvenci 25 MHz lze dosáhnout rozlišení 0,1 Hz a při referenční frekvenci 1 MHz se dokáže obvod AD9833 ladit při rozlišení 0,004 Hz. Obvod se programuje pomocí třívodičového sériového rozhraní SPI. Toto rozhraní pracuje na frekvenci až 40 MHz a je kompatibilní s většinou dnes vyráběných mikroprocesorů. Napájecí napětí obvodu může být v rozmezí 2,3 až 5,5 voltů přičemž při 3 voltech obvod spotřebovává 12,65 miliwattů. (2)
Obrázek 10: Blokové schéma obvodu AD9833 (2)
4.2.1 Popis vývodů AD9833 se vyrábí pouze v provedení pouzdra MSOP (micro small outline package) a má 10 vývodů. Popis vývodů je popsán v tab. 2.
Obrázek 11: Popis vývodů AD9833 (2)
17
Tabulka 2: Popis označení a funkcí vývodů AD9833 (2)
Číslo vývodu Označení 1 COMP
Popis Blokování napájení číslicově-analogového převodníku.
2
Napájení. Vyžaduje blokovací kondenzátory 0.1 μF a 10 μF.
VDD
Blokování vestavěného 2,5V regulátoru. Pokud je napájecí napětí menší nebo rovno 2,7V, měl by být tento bit zapojen přímo na napájení, jinak by měl být připojen 100 nF kondenzátor.
3
CAP/2.5V
4
DGND
Digitální zem.
5
MCLK
Vstup referenčního kmitočtu.
6
SDATA
Vstup sériových dat sběrnice SPI.
7
SCLK
Časování sériových dat sběrnice SPI.
8
FSYNC
Synchronizační signál sběrnice SPI.
9
AGND
Analogová zem.
10
VOUT
Napěťový výstup.
4.2.2 Komunikace Jak již bylo výše řečeno, obvod se programuje rozhraním SPI, tedy konkrítně přes vývody FSYNC, DATA a SCLK, kterými se konfigurují ovládací registr, registry frekvence a registry fáze. Data jsou do zařízení nahrávána jako 16bitové slovo. Data smí být posílána, když je FSYNC nastaven Do log. 0. Poté jsou jednotlivé bity, vystavené na vývod DATA, zapisovány do posuvného registru obvodu na sestupnou hranu signálu SCLK. Po šestnáctém bitu se pro potvrzení musí FSYNC nastavit do log. 1.
4.2.3 Registry Obvod pro ovládání obsahuje 5 registrů. CONTROL REGISTER pro nastavení funkcí obvodu, FREQ0 a FREQ1 pro nastavení generované frekvence a registry PHASE0 a PHASE1 pro nastavení fáze. CONTROL REGISTER je 16bitový registr, který umožňuje konfiguraci chování obvodu. Jednotlivé bity jsou popsány v tab. 3.
18
Tabulka 3: Popis bitů CONTROL REGISTERU (2)
Bit
Název
Funkce
D15
-
Rezervováno pro adresaci, pro CONTROL REGISTR = 0
D14
-
Rezervováno pro adresaci, pro CONTROL REGISTR = 0
D13
B28
Když je tento bit v log. 1, umožňuje nahrát data do frekvenčního registru ve dvou po sobě jdoucích zápisech. První zápis obsahuje spodních 14 bitů frekvenčního slova, druhý zápis obsahuje horních 14 bitů. Pokud je v log. 0, pak se nahrává pouze 14 bitů, určených bitem D12.
D12
HLB
Když je v log. 1, zapisují se data do horních 14 bitů frekvenčního registru. V log. 0 se zapisují data do dolních 14 bitů. Tento bit je ignorován, pokud je bit D13 v log. 1.
D11
FSELECT Určuje, zda je pro akumulátor fáze použit registr FREQ0 nebo FREQ1
D10
PSELECT Určuje, zda je přičten pro výstup akumulátoru fáze registr PHASE0 nebo PHASE1.
D9
Reserved
Tento bit by měl být nastaven do log. 0.
D8
Reset
V log. 1 resetuje vnitřní registry na 0.
D7
SLEEP1
Pokud je nastaven, vnitřní časování je odstaveno a výstup si zachovává současnou hodnotu, protože akumulátor fáze nečítá.
D6
SLEEP12
Pokud je v log. 1, je vypnutý číslicově-analogový převodník. To je užitečné, jestliže má být na výstupu nejvyšší bit převodníku. V log. 0 je převodník zapnutý.
D5
OPBITEN Tento bit ovládá výstup obvodu ve spojení s bitem D1. V log. 1 je výstup převodníku odpojen a místo něj je na výstupu MSB nebo MSB/2 podle bitu D3. Pokud je v log.0, je převodník zapojen.
D4
Reserved
Tento bit by měl být nastaven do log. 0.
D3
DIV2
Jeho použití je spojeno s bitem D5. Když je nastaven, je na výstupu MSB převodníku, když nastaven není je na výstupu MSB/2.
D2
Reserved
Tento bit by měl být nastaven do log. 0.
D1
Mode
Jeho použití je spojeno s bitem D5. Určuje, co je na výstupu obvodu, když je zapojen převodník. Tento bit by měl být v log. 0, když je D5 v log. 1. Když je tento bit v log. 1, je tabulka funkce sinus odpojena a na výstupu je trojúhelník. Když je v log. 0, je na výstupu sinusoida.
D0
Reserved
Tento bit by měl být nastaven do log. 0. 19
Bity D15 a D14 posílaného slova slouží pro adresaci registru, do kterého se budou zapisovat data. Přehled hodnot a registrů je znázorněn v tab. 4. Tabulka 4: Adresace registrů
D15
D14 Registr
0
0
CONTROL REGISTER
0
1
FREQ0
1
0
FREQ1
Pokud je třeba zapsat do registrů fáze, které jsou 12bitové, musí být bity D15 a D14 v log. 1 a adresa registru je dána bitem D13. Hodnota bitu D12 je ignorována a zbylé bity určují hodnotu fázového posuvu. Obvod obsahuje také funkci SLEEP, která vypne nepoužívané části obvodu AD9833 a tím sníží celkovou spotřebu obvodu. Části, které mohou mýt vypnuty, jsou vnitřní časování a číslicově-analogový převodník. Tato funkce se nastavuje bity SLEEP a SLEEP12 v CONTROL REGISTRU. Přepínání výstupních funkcí se realizuje také přes CONTROL REGISTER a to přes bity OPBITEN, MODE a DIV2. Obdélníkový výstup je realizován tak, že se na výstup obvodu přivede nevyšší bit číslicově-analogového převodníku a zapíná se přes bit OPBITEN. Tento výstup může být dělen dvěma pomocí vnitřní děličky, která se zapíná bitem DIV2. Aby se konvertovala data akumulátoru fáze na sinusový signál přes tabulku funkce sinus, musí být bity MODE a OPBITEN vynulovány. Trojúhelníkový signál je vytvářen tak, že se vynechá paměť s tabulkou funkce sinus a na vstup číslicově-analogového převodníku je přiveden výstup akumulátoru fáze. Nastavení tohoto výstupního signálu se děje pomocí bitu MODE. Nastavení výstupních signálů pomocí bitů OPBITEN, MODE a DIV2 je v tab. 5. (2) Tabulka 5: Nastavení funkce výstupního signálu (2)
OPBITEN
MODE
DIV2
0
0
X
Sinusoida
0
1
X
Trojúhelník
1
0
0
Obdélník
1
0
1
Obdelník/2
1
1
X
Vyhrazeno
20
Výstup
4.3 Mikrokontrolér AT89S52 Jak jsem již zmínil v úvodu, volba procesoru pro ovládání periferií a samotného DDS obvodu byla pro mne zcela jasná. Atmel AT98S52 je levný a výkonný mikrokontrolér vycházející z mikroprocesorové rodiny Intel 8051, který je vyučován na Vysoké škole polytechnické v Jihlavě a existuje o něm řada kvalitní literatury. Tento mikrokontrolér disponuje 8 KB programovatelné Flash paměti pro uložení programu, napájení je v rozsahu 4 až 5,5 V a obsahuje 32 vstupně/výstupních linek což jsou vlastnosti pro účel mnou navrhovaného generátoru zcela dostačující. Je vyráběn v pouzdrech PLCC 44, PQFP/TQFP 44 a DIP 40. Použil jsem mikrokontrolér s pouzdrem DIP 40, protože vlastním programátor pro tento typ pouzdra. Taktován je vnějším krystalovým oscilátorem o frekvencí 24 MHz. (12) PORT 0 je využit pro vstup dat pomocí maticové klávesnice, PORT 1 je využit pro ovládání obvodu AD9833 a PORT 2 ovládá LCD pro zobrazování nastavené frekvence. Program pro mirokontrolér je napsán v jazyce C51 pomocí vývojového prostředí Keil µVision4. Schéma zapojení mikrokontroléru zobrazuje obr. 12. Napětí mikrokontroléru je blokováno kondenzátory C15 a C16. Referenční signál zajišťuje krystalový oscilátor doplněný o kondenzátory C1 a C2. Vývod EA je trvale zapojen na 5 V, aby byl program vykonáván z vnitřní paměti. Na vývod RST je zapojen resetovací obvod tvořící kondenzátor C21, rezistor R10 a dioda D2, který zajišťuje reset mikrokontroléru po zapojení napájení. Jelikož je port P0 s otevřeným kolektorem je k portu připojena rezistorová síť RN1, která slouží jako pull-up rezistory.
21
Obrázek 12: Zapojení mikrokontroléru Atmel AT89S52
4.4 Periferie V této podkapitole jsou popsány periferní zařízení sloužící pro zadávání a zobrazování frekvence a jejich obsluha.
4.4.1
Maticová klávesnice
Pro zadávání frekvence jsem použil maticovou klávesnici F-KV16KEY v černém provedení, obsahující 16 tlačítek uspořádaných do 4 sloupců a 4 řádků. Klávesy s číslicemi 0 až 9 slouží pro zadávání frekvence a všechna ostatní tlačítka pro potvrzení zadané frekvence.
Vyhodnocení stisknutého tlačítka probíhá tak, že se opakovaně
aktivují jednotlivé řádky a čte se stav sloupců. Ze zjištěných hodnot se dekóduje stisknuté tlačítko. Programová obsluha klávesnice je zajištěna pomocí modulu KLAVESNICE.
22
Obrázek 13: Zapojení maticové klávesnice
4.4.2 LCD Zobrazování nastavené frekvence je realizováno pomocí displeje LCD typu MC1602B-NS/BWW. Tento displej má 2 řádky a každý řádek dokáže zobrazit 16 znaků. Řízení tohoto displeje obstarává řadič HD44780, který je integrován přímo na desce displeje. Komunikace může probíhat 4bitově nebo 8bitově. Ačkoliv není třeba šetřit vývody procesoru, zvolil jsem komunikaci 4bitovou, aby se dal displej připojit pouze jedním 10žílovým kabelem. Programová obsluha displeje je zajištěna pomocí modulu DISPLEJ. Zapojení je na obr. 14 a popis vývodů je popsán v tab. 6.
Obrázek 14: Zapojení LCD displeje
23
Tabulka 6: Popis funkce vývodů LCD displeje (12)
Číslo vývodu 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Signál GND UCC Uo RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 A K
Funkce Zem Napájecí napětí (4,75 – 5,25 V) Nastavení kontrastu displeje Příkaz (0), data (1) Čtení (1), zápis (0) dat nebo příkazu Vstup povolení Data/příkaz (dolní bit) Data/příkaz Data/příkaz Data/příkaz Data/příkaz Data/příkaz Data/příkaz Data/příkaz (horní bit) Anoda podsvětlovací LED Katoda podsvětlovací LED
4.5 Napájení Napájení je zajištěno externím síťovým spínaným adaptérem 5V/2000mA. To je zcela dostačující, protože většina obvodů pracuje na napětí 5V. Spojení adaptéru s deskou plošného spoje je realizováno přes napájecí souosý konektor, který je zabudován do zadní strany konstrukční přístrojové krabičky. Mezi desku plošného spoje a konektor je ještě zařazen kolébkový vypínač do panelu. Potřeba symetrického napájení pro operační zesilovače výstupního obvodu je zajištěna pomocí nábojové pumpy 7660. Její popis je uveden níže.
4.5.1 Nábojová pumpa ICL7660 Obecně nábojové pumy používají kondenzátory pro uskladnění a následný převod zdrojové energie. Kapacitní konverze napětí je dosaženo periodickým spínáním kondenzátoru spínacími obvody, které napřed nabijí kondenzátor jeho připojením ke zdroji napětí a následně ho přepnou k výstupu zdroje v takovém zapojení, kdy je dosaženo vyššího, resp. nižšího napětí. Jedním z nejběžnějších integrovaných obvodů je obvod ICL7660. 24
ICL7660 obsahuje spínací obvody a oscilátor, který zaručuje, že spínače S1, S3 a S2, S4 pracují vždy společně. Sepnutí S1 a S3 nabije akumulační kondenzátor C1 v první polovině cyklu na hodnotu V+. Ve druhé polovině cyklu se S1 a S3 rozepnou a sepnou se S2 a S4. Tato akce spojí pozitivně nabitý pin C1 se zemí a negativní pin s VOUT. C1 je nyní zapojen paralelně s kondenzátorem C2. Pokud je napětí na C2 menší než na C1, poteče náboj z C1 do C2 do doby, než napětí na C2 dosáhne hladiny -(V+). (7)
Obrázek 15: Blokové schéma idealizovaného invertoru napětí (7)
Zapojení nábojové pumpy ICL7660 jako invertoru napětí je na obr. 16. Invertované napětí je dostupně na vývodu 5. Vývod LV se zapojuje na zem, jen pokud je napětí nižší jak 3,5 V, jinak se nezapojuje. Kondenzátory 10 µF musí být elektrolytické.
Obrázek 16: Popis vývodů obvody ICL7660 a jeho zapojení jako invertoru napětí (10)
25
4.6 Výstupní obvody Obvod AD9833 generuje signál o velikosti 0 – 650 mV. Z tohoto signálu odděluje stejnosměrnou
složku
derivační
článek
tvořený
kondenzátory
C3
a
C4
a potenciometrem R1. Poté je signál přiveden na dvojici operačních zesilovačů tvořené integrovaným obvodem TL072. Tento obvod je symetricky napájen, přičemž záporné napětí je získáno z výše uvedené nápojové pumpy ICL7660. Napájení operačních zesilovačů je blokováno elektrolytickými kondenzátory C17 a C18. První operační zesilovač, který zesiluje napětí pro analogový výstup, je zapojen jako neinvertující zesilovač a napětí je na něj přiváděno přes potenciometr R1, kterým se reguluje amplituda výstupního signálu. Zesílení je nastaveno rezistory R2 a R3. Velikost rezistorů se vyjádří ze vztahu pro neinvertující zapojení operačního zesilovače: (
),
přičemž hodnoty napětí jsou známy (U vstupní = 325 mV a Uvýstupní = 3V), a když se rezistor R2 zvolí 1 kΩ pak po úpravě a dosazení hodnot vyjde hodnota pro rezistor R3 = 8,2 kΩ. Druhý operační zesilovač je prvním prvkem pomocného výstupu, který má generovat výstup v úrovních TTL. Je zapojen jako jednoduchý komparátor, který má na svém výstupu záporné saturační napětí, když je vstupní napětí menší než 0 V a kladné saturační napětí, když je napětí větší než 0 V. Tranzistor T1 je zapojen jako spínač a upravuje napětí získané z komparátoru na napětí 0 – 5 V. Rezistor R6 nastavuje tranzistoru proud do báze a dioda D1 chrání BE přechod tranzistoru T1 před záporným napětím. Takto získané napětí je tvarováno dvojicí Schmittových klopných obvodů. Oba výstupy jsou přes odpor 50 Ω (paralelní kombinace 100 Ω rezistorů R4, R5 a R8, R9) připojeny přes svorkovnice na BNC konektory připevněné v panelu konstrukční přístrojové krabičky. Schéma výstupního obvodu je na obr. 17.
26
Obrázek 17: Schéma výstupních obvodů
27
5. Program Program mikrokontrloéru se skládá z hlavního programu a tří modulů. První modul slouží pro ovládání LCD displeje, druhý modul pro obsluhu maticové klávesnice a třetí programování DDS obvodu. V této kapitole je popsán hlavní program a nejdůležitější modul pro obsluhu obvodu AD9833. Kódy modulů pro obsluhu klávesnice a LCD displeje jsou převzaty z (11).
5.1 Modul pro obsluhu AD9833 Jak již bylo uvedeno výše, tento modul obstarává ovládání DDS obvodu. Skládá se ze tří funkcí, které mají na starosti zápis dat, počáteční nastavení a nastavení generované frekvence. Modul využívá hlavičkový soubor regx52.h, obsahující makra sloužící pro jednodušší programování procesorů řady 89X52. SPI rozraní obvodu je připojeno k mikrokontroléu na vývody 0, 2 a 4 portu 1. Pro snazší identifikaci při programování jsou pro ně zavedeny zástupné názvy DDS_FSYNC, DDS_SCLK a DDS_SDATA. #include
#define DDS_FSYNC #define DDS_SCLK #define DDS_SDATA
P1_0 P1_2 P1_4
5.1.1 Funkce DDSwrite2byte Tato funkce má jeden parametr a její úloha je posílat naráz 2 bajty dány parametrem A do obvodu AD9833. Nejprve nastaví všechny řídící vývody do log. 1. Poté nastaví vývod DDS_SYNC do log. 0, čímž se signalizuje zápis a for cyklem se pomocí testu maskování nejvyššího bitu postupně začne vystavovat na vývod DDS_DATA 16 bitů posílaných 2 bajtů a zároveň se po vystavení bitu generuje náběžná hrana na vývodu DDS_SCLK. Po vyslání dat se DDS_SYNC opět nastaví do log. 1 čímž se signalizuje konec posílání dat. Funkce nepotřebuje žádné zpožďovací cykly, protože procesor vykonává instrukce frekvencí 2 MHz a tím splňuje, jak maximální frekvenci přenosu dat do AD9833 40 MHz, tak i všechny ostatní minimální doby trvání a přesahů uvedené v katalogovém listu obvodu.
28
void DDSwrite2byte(unsigned int a) { unsigned char i; DDS_SCLK=1; DDS_FSYNC=1; DDS_SDATA=1; DDS_FSYNC=0; for(i=0;i<16;i++) { if(a&0x8000) DDS_SDATA=1; else DDS_SDATA=0; DDS_SCLK=0; DDS_SCLK=1; a=a<<1; } DDS_FSYNC=1; } 5.1.2
Inicializační sekvence DDSinit
Inicializační sekvence má na starosti konfiguraci po zapojení napájení. První zápis nastaví zapisování všech 28 bitů naráz, takže nahrání dat do registrů frekvence nebo fáze probíhá ve dvou po sobě jdoucích zápisech. První zápis také nastavuje reset obvodu. To neznamená, že vynuluje nastavené hodnoty v registrech, ale pouze odpojí výstup z číslicově/analogového převodníku. Poté může následovat nastavení registrů frekvencí a fází. Jelikož mi v mé aplikaci stačí nastavovat jen jednu frekvenci, provádím zápis frekvence jen do registru FREQ0 pomocí funkce DDSGeneruj. Poslední zápis pouze vypíná reset, tudíž se zapne výstup číslicově/analogového převodníku. void DDSinit(void) { DDSwrite2byte(0x2100); DDSgeneruj(100000); DDSwrite2byte(0x2000); }
5.1.3 Funkce DDSgeneruj Tato funkce nastavuje výstupní frekvenci obvodu AD9833 danou jediným parametrem FREKVENCE. Než se frekvence pošle, musí se prvně přepočítat vztahem: . 29
Po dosazení známých hodnot a názvu proměnných v této funkci se dostane vzorec DDSF=(frekvence*268435456)/25000000, jehož výsledek se poté převádí na dolních
14 bitů a horních 14 bitů. Převod probíhá tak, že se nejprve z vypočteného čísla odstraní nejvyšší 2 bity bitovým posuvem vlevo. Takto upravená hodnota se uloží do proměnné pro horních 14 bitů DDSH a do proměnné pro dolních 14 bitů DDSL. Následně se bitovým posuvem vpravo v obou proměnných umístí bity na správné místo, vymaskují se bitovou maskou nežádoucí bity a nastaví se dva nejvyšší bity k určení frekvenčního registru FREQ0 obvodu AD9833. Nakonec se takto nachystané dvojice 16 bitů odešlou do obvodu pomocí funkce DDSwrite2byte. void DDSgeneruj(unsigned long frekvence) { unsigned long DDSF; unsigned int DDSL,DDSH; DDSF=(frekvence*268435456)/25000000; DDSF=DDSF<<2; DDSL=DDSF; DDSH=DDSF>>16; DDSL=DDSL>>2; DDSH=DDSH&0x7FFF; DDSH=DDSH|0x4000; DDSL=DDSL&0x7FFF; DDSL=DDSL|0x4000; DDSwrite2byte(DDSL); DDSwrite2byte(DDSH);
5.2 Hlavní program Hlavní program obsahuje funkci main a 3 pomocné funkce. Funkci prodleva pro zpoždění, funkci tisk pro zobrazování na LCD displeji a funkci prevod pro převedení zadané frekvence z pole znaků na dlouhé celé číslo. Popsány zde budou všechny funkce krom funkce prodleva, která obsahuje jen jeden while cyklus. Hlavní program používá také hlavičkový soubor REGX52.H a zároveň používá všechny 3 moduly pro ovládání displeje, klávesnice a obvodu AD9833. #include #include "DISPLEJ.H" #include "KLAVESNICE.H" #include "AD9833.H"
30
5.2.1 Funkce tisk Tato funkce má za úkol zobrazovat zadaný text na LCD displeji a má tři parametry. První s názvem radek určuje řádek, na kterém se má text zobrazit, 0 znamená první řádek a 1 řádek druhý. Druhý parametr text určuje text, který bude vypsán na displeji a poslední parametr jednotky určuje, jestli za zadaným textem, budou zobrazeny jednoty, jmenovitě jednotka Hz. Funkce funguje tak, že se nastaví řádek, na který se bude text vypisovat, hodnotou předanou parametrem radek. Poté následuje cyklus for, který prochází znak po znaku pole znaků předané parametrem text. V cyklu se testuje přítomnost zarážky. Pokud daný znak zarážkou není, vypíše se na displeji a pokud je zkontroluje se, zda mají být vypsány jednotky a zbytek displeje se vyplní prázdnými znaky. void tisk(int radek,char* text, int jednotky) { int i; LCDpozice(0,radek); for(i=0;i<=15;i++) { if (text[i]=='\0') { if (jednotky) { LCDdata('H');LCDdata('z'); jednotky=0; } i=i+2; while(i<=15) { LCDdata(' '); i++; } break; } else LCDdata(text[i]); } }
5.2.2 Funkce prevod Jelikož se v hlavní funkci hodnota frekvence zadaná klávesnicí ukládá do pole znaků, je třeba tuto hodnotu převést na číslo, které se bude předáno funkci DDSgeneruj. To zajišťuje tato funkce. Jako parametr má převáděné pole znaků a vrací převedenou hodnotu jako dlouhé celé číslo. Funkce je přizpůsobená tak, že pokud jako prví znak 31
zjistí zarážku, vrací hodnotu -1. To je dobré v hlavní funkci main pro testování zadání správné hodnoty frekvence. Převod probíhá tak, že se cyklicky násobí převáděné číslo 10 a přičítá se k němu převedený číselný znak na číselnou hodnotu. long prevod(char* text) { long cislo=0; int i=0; if(text[0]=='\0') return -1L; while(text[i]!='\0') { cislo=cislo*10+(text[i]-48); i++; } return cislo; }
5.2.3 Funkce main Hlavní funkce začíná deklarací proměnných. Proměnná string je pole znaků a je použitá pro zpracování zadané frekvence. Proměnná i typu unsigned char slouží jako pomocná proměnná pro řízení běhu cyklů. Pole znaků znaky slouží pro převod kódu získaného z funkce kalvesnice na znak. Zde musím zmínit, že se převádí pouze číslice. Ostatní znaky z klávesnice se vyhodnocují jako „A“ a slouží pouze k potvrzení zadané frekvence. Do proměnné kod se ukládá získaná hodnota z funkce klavesnice a proměnná frekvence je požitá pro ukládání zadané frekvence v číselném tvaru. Programový kód hlavní funkce začíná sekvencí pro inicializaci LCD displeje. Funkce LCDinit nastaví LCD pro čtyřbitovou komunikaci. LCDclear vymaže obsah displeje, LCDcursor vypne zobrazování kurzoru a LCDhome zajistí, aby se kurzor nacházel na první pozici prvního řádku. Poté následuje zobrazení úvodního textu, který na prvním řádku vypíše text „GENERATOR DDS“ a na druhém řádku „VSP JIHLAVA KEI“. Další dvě funkce inicializují obvod AD9833 a nastaví výchozí frekvenci na 100 kHz. Dále se nastavená frekvence zobrazí na LCD displeji a následnou smyčkou se začne čekat na stisk klávesy z klávesnice. Hlavní smyčka začíná návěštím ZADEJ, které slouží pro skok z pozdějšího ošetření zadání správné frekvence. Funkce LCDclearALL smaže obsah LCD displeje a nastaví
32
kurzor na první znak prvního řádku. Následně se na displeji vypíše text „Zadejte frek.:“ a kurzor se nastaví na začátek druhého řádku. Následující cyklus čte a vyhodnocuje stisknuté klávesy na klávesnici tak, že nejprve čeká na stisk klávesy, a když je klávesa stisknuta otestuje se, zda byla zadána číslice nebo potvrzující znak. Při zadání potvrzujícího znaku, se cyklus ukončí a při zadání číslice se znak vypíše na displej a uloží na příslušnou pozici do proměnné string a čeká se na stisk další klávesy. Po ukončení smyčky se do proměnné string zapíše zarážka pro signalizaci při následném zpracování při převodu na číslo. Dále se zadaná frekvence převede na číslo a otestuje se, jestli je zadaná frekvence není prázdná nebo větší než 100 kHz. Pokud ano, vypíše se varovný nápis „Špatná frekvence Zadejte znovu!“ a následně program skočí na návěští ZADEJ pro zadání nové frekvence. Když proběhne zadání frekvence správně, nastaví se funkcí DDSGeneruj na obvodu AD9833 zadaná frekvence, zobrazí se na prvním řádku displeje nápis „Nastavena frek.:“ a na druhém řádku nastavená frekvence v jednotkách hertz. Následuje ošetření permanentně stisknutého některého potvrzujícího tlačítka a čekání na nové zadání frekvence. Jakmile se stiskne tlačítko, smaže se displej a smyčka se začne vykonávat od začátku. void main() { char string[16]=""; unsigned char i; code char znaky[]={'1','2','3','A','4','5','6','A','7','8','9', 'A','A','0','A','A'}; signed char kod; long frekvence=0; //INICIALIZACE LCD LCDinit(); LCDclear(); LCDcursor(1); LCDhome(); ////////////////// //UVODNI TEXT tisk(0," GENERATOR DDS ",0); tisk(1,"VSP JIHLAVA KEI",0); prodleva(300000); LCDclearALL(); /////////////
33
//INICIALIZACE AD9833 DDSinit(); DDSgeneruj(100000); ///////////////////// //PRVOTNI ZOBRAZENI FREKVENCE tisk(0,"Nastavena frek.:",0); tisk(1,"100000Hz",0); while(1) { kod=klavesnice(); if (kod!=-1) break; } ///////////////////////////// //HLAVNI SMYCKA PROGRAMU while(1) { ZADEJ: LCDclearALL(); tisk(0,"Zadejte frek.: ",0); LCDpozice(0,1); i=0; do { kod=klavesnice(); if (kod!=-1) { if (znaky[kod]=='A') break; LCDdata(znaky[kod]); string[i]=znaky[kod]; i++; while(klavesnice()!=-1); } string[i]='\0'; } while(1); frekvence=prevod(string); if(frekvence<=-1L || frekvence>=100001L) { LCDclearALL(); tisk(0,"Spatna frekvence!",0); tisk(1,"Zadejte znovu",0); prodleva(300000); goto ZADEJ; } DDSgeneruj(frekvence); frekvence=-1; LCDclearALL(); tisk(0,"Nastavena frek.:",0); tisk(1,string,1);
34
while(znaky[klavesnice()]=="A"); while(klavesnice()==-1); LCDclearALL(); } //////////////////// }
35
6. Konstrukce Tato kapitola popisuje návrh plošného spoje samotného generátoru a usazení do přístrojového boxu.
6.1 Plošný spoj Plošný spoj je navrhnut pomocí software EAGLE 5.11.0 od firmy CadSoft. Verze pro nekomerční účely umožňuje návrh plošného spoje na desku o rozměrech 100 x 80 mm, lze spoje vést maximálně ve dvou vrstvách a schéma může být vytvořeno pouze na jednom listě, což je pro realizaci plošného spoje generátoru zcela dostačující. (14) Plošný spoj je rozdělen na část s analogovou zemí a část s digitální zemí. Země se podle (2) spojují v jednom místě v blízkosti samotného obvodu AD9833. Vývody rozhraní SPI obvodu AD9833 jsou připojeny k mikrokontorléru přes neinvertující budič 74HCT244. Jelikož budou maticová klávesnice a LCD displej umístěny do panelu konstrukční přístrojové krabičky, nejsou k mikrokontroléru připojeny přímo, ale pomocí deseti žílového plochého kabelu s konektory PFL10. Na desce jsou tedy jen patice MLW10G ke kterým jsou přivedeny vývody portů mikrokontroléru a do kterých jsou následně kabely zapojeny. Napájení a oba dva výstupy jsou vyvedeny na svorkovnice, jelikož konektory budou zabudovány na panelech konstrukčního
boxu.
Do
panelu
bude zabudován
i potenciometr, který bude přes kablík s konektorem propojen s plošným spojem pomocí oboustranných kolíků. Obvod AD9833 není napájen přímo, ale připojen přes jednoduchou redukci, kterou jsem si navrhl pro účel ladění programu na nepájivém poli. Redukce se do plošného spoje připojuje pomocí dutinkové lišty.
Obrázek 18: Redukce na AD9833
36
Obrázek 19: Plošný spoj generátoru se součástkami
6.2 Usazení do konstrukční přístrojové krabičky Pro usazení plošného spoje a zabudování periferií a konektorů jsem zvolil konstrukční přístrojovou krabičku U-KM85. Rozměry panelu 85 x 178 mm vystačují pro zabudování periferií a konektorů a hloubka 160 mm pro zabudování plošného spoje. Do zadního panelu jsou zabudovány vypínač a napájení konektor pro připojení externího napájecího adaptéru.
Obrázek 20: Čelní panel genrátoru
37
Obrázek 21: Usazení do vnitřku krabičky
38
7. Výsledky testování Testování bylo prováděno na digitálním osciloskopu DS1022C od firmy RIGOL. Na něm se zapnula funkce měření spektra (FFT) pro zjištění výskytu vyšších harmonických složek. Měření probíhalo při nastavené největší možné generované frekvenci, tedy při frekvenci 100 kHz, protože harmonické zkreslení u přímé digitální syntézy roste s frekvencí. Snímek, zobrazující spektrum harmonického signálu při frekvenci 100 kHz, je na obr. 22. Pomocí selektivního voltmetru byly při této frekvenci změřeny 4 vyšší harmonické složky a pomocí vzorce: √
[ ]
byl vypočten činitel harmonického zkreslení THD = 1,207 %. Pro lepší demonstraci výstupního signálu byl pořízen snímek harmonického signálu na analogovém osciloskopu, který je na obr. 23.
Obrázek 22: Spektrum výstupního harmonického signálu
Obrázek 23: Snímek z analogového osciloskopu
39
U výstupu TTL se při nejvyšších frekvencích začal projevovat vliv na střídu, přesněji nepoměr mezi log. 1 a log 0. tak, že s narůstající frekvencí vzrůstala doba trvání log.1 na úkor log. 0. Při růstu frekvence se začaly projevovat zákmity a neostrosti hran. To je zřejmě způsobeno použitím klasického operačního zesilovače namísto účelového rychlého komparátoru.
Obrázek 24: Obdélníkový signál z výstupu TTL
40
8. Závěr 8.1 Splnění cílů Cílem mé bakalářské práce bylo navrhnout generátor signálu o frekvenci 0 – 100 kHz s použitím vhodného integrovaného obvodu od firmy Analog Devices využívajícího principu přímé digitální syntézy. Na výstupu měl být generován harmonický signál o nastavitelné amplitudě 0 – 3 voltů a na druhém obdélníkový signál o napěťových úrovních TTL. Nastavení mělo být řízeno procesorem a nastavení frekvence řízeno pomocí maticové klávesnice. Zadané hlavní cíle této bakalářské práce se víceméně povedlo splnit. Po prostudování nabídky obvodů využívajících přímou digitální syntézu se mi povedlo vybrat vhodný obvod, který je přímo určen pro stavbu generátoru. V České republice je možné tento obvod sehnat za cenu okolo 200 Kč, což umožňuje výrobu vlastního generátoru několikanásobně levnějšího než generátory prodávané na českém trhu, i když s méně funkcemi, které nabízejí, ale ty bývají zpravidla téměř nevyužity. Bohužel se mi nepodařilo odladit přepínání průběhu na analogovém výstupu, což považuji za jeden z hlavních nedostatků. Jako další nedostatek považuji generování frekvence jen 100 kHz, protože obvod AD9833 umožňuje generovat signál až 12,5 MHz a vliv frekvence na střídu a neostrost hran signálu TTL. Jako hlavní přednosti bych uvedl jednoduché ovládání, napájení přes 5 V adaptér a celkovou cenu celého zařízení. Po sečtení všech nákladu na stavbu generátoru jsem se dostal na cenu necelých 850 Kč.
8.2 Problémy a jejich řešení Při tvorbě práce jsem narazil na několik problému. První byl oddělení analogové a digitální částí. Na nepájivém poli a testovacím přípravku jsem na to totiž nebral velký ohled a při snímání generovaného signálu osciloskopem se zobrazoval nežádoucí šum. Tento šum po vytvoření konečného přípravku, který toto oddělení již respektuje, zmizel. Druhý, nejzávažnější problém nastal s citlivostí samotného obvodu AD9833. Třikrát mi tento obvod přestal bez zjištěné příčiny fungovat. Ačkoliv obvod patří v České republice mezi nejdostupnější obvody pro DDS, nebyl paradoxně zrovna v žádném obchodě s elektronickými součástkami dostupný, takže jsem jej musel objednávat 41
ze zahraničí. Lhůty dodání ze zahraničí jsou zpravidla delší než v České republice, což mi celkově způsobilo zhruba třítýdenní zpoždění oproti naplánovanému časovému plánu. Nefunkčnost obvodu a čekání na něj mi způsobilo potíže při ladění programu a návrhu výstupních obvodů. Nakonec se mi alespoň povedlo odladit plně funkční program pro generování zadaného sinusového průběhu.
8.3 Další možnosti rozšíření První možné rozšíření nebo spíše úprava je změna výstupních obvodů. Při použití lepšího operačního zesilovače, který má frekvenční charakteristiku vyšší než 100 kHz, by se mohl zvýšit frekvenční rozsah generátorů až na maximum obvodu AD9833, tedy až na 12,5 MHz. Jedním takovým obvodem by mohl být například obvod AD745 od Analog Devices, který má šířku pásma až 20 MHz. Tím by však vznikla potřeba zapojení výstupního rekonstrukčního filtru na výstup z obvodu AD9833, protože při frekvencích v řádu MHz jsou vyšší harmonické složky znatelné. Druhé rozšíření, je použití samostatného napěťového komparátoru namísto klasického operačního zesilovače zapojeného jako komparátor. Tím by se odstranil problém závislosti střídy na frekvenci. Jako příklad uvádím obvod MXL1016 od firmy MAXIM. Jedná se velmi rychlý komparátor (tPD = 10ns) přímo určený k detekci průchodu nulou s výstupem v napěťových úrovních TTL s napájecím napětím ±5 V. Tím by se výstupní obvod pro TTL výstup zjednodušil jen na tento komparátor. Další rozšíření může být požití dalšího DDS obvodu a přidání dalšího výstupu nebo použití jiného obvodu než je AD9833, který obsahuje dvě DDS jednotky. Takovým obvodem je např. AD9958, který obsahuje dvě DDS jádra.
42
9. Seznam použité literatury (1) ANALOG DEVICES. A Technical Tutorial on Digital Signal Synthesis. 1999. Dostupné z: http://www.analog.com/static/importedfiles/tutorials/450968421DDS_Tutorial_rev12-2-99.pdf. (2) ANALOG DEVICES. AD9833. Rev. D. 2011. Dostupné z: http://www.analog.com/static/imported-files/data_sheets/AD9833.pdf (3) ATM1602B Liquid Crystal Display Module: User’s Guide. Dostupné z: http://www.hebeiltd.com.cn/lcm.datasheet/ATM1602B.pdf (4) BRANDON, David. ANALOG DEVICES. Determining if a Spur is Related to the DDS/DAC or to Some Other Source: For Example, Switching Supplies. 2007. Dostupné z: http://www.analog.com/static/importedfiles/application_notes/131351807AN_927.pdf (5) BRTNÍK, Bohumil. VYSOKÁ ŠKOLA POLYTECHNICKÁ JIHLAVA. Elektrické obvody II. Jihlava: Vysoká škola polytechnická Jihlava, 2009. (6) BRTNÍK, Bohumil. VYSOKÁ ŠKOLA POLYTECHNICKÁ JIHLAVA. Základní elektronické obvody. Jihlava: Vysoká škola polytechnická Jihlava, 2007. (7) DC/DC nábojové pumpy a jak na ně. [online]. [cit. 2011-12-28]. Dostupné z: http://pandatron.cz/?914&dc%2Fdc_nabojove_pumpy_a_jak_na_ne. (8) Direct Digital Synthesis (DDS) . Analog Devices, Inc. [online]. [cit. 2012-0101]. Dostupné z: http://www.analog.com/en/rfif-components/direct-digitalsynthesis-dds/products/index.html (9) DOLEČEK, Jaroslav. Základy elektroniky III-2: Analogový systém, operační zesilovače filtry, generátory signálů, napájení systémy pro přenos informací. Trutnov: Učební texty SPŠ a SOU Trutnov, 2002. 43
(10) INTERSIL. CMOS Voltage Converters. 1999. Dostupné z: http://www.datasheetcatalog.org/datasheet/intersil/fn3072.pdf (11) MATOUŠEK, David a Bohumil BRTNÍK. Programování mikrokontrolérů s jádrem 8051 v jazyce C: názorné příklady a funkční programy pro AT89S52. 1. vyd. Praha: BEN - technická literatura, 2010, 151 s. µC. ISBN 978-807-3002640. (12) MATOUŠEK, David. C pro mikrokontroléry ATMEL AT89S52. 1. vyd. Praha: BEN - technická literatura, 2007, 239 s. ISBN 978-807-3002-152. (13) Oficiální webové stránky firmy Analog Devices. [online]. [cit. 2012-01-01]. Dostupné z: http://www.analog.com (14) Oficiální webové stránky firmy CadSoft: Freeware. CadSoft [online]. [cit. 201112-30]. Dostupné z: http://www.cadsoftusa.com/downloads/freeware/?language=en (15) RIORDAN, Liam. ANALOG DEVICES. Programming the AD9833/AD9834. Rev. 0. 2010. Dostupné z: http://www.analog.com/static/importedfiles/application_notes/AN-1070.pdf (16) VRBA, Kamil, Ivo LATTENBERG a Lukáš MATĚJÍČEK. Analogová technika. Brno: Skripta FEKT VUT Brno.
44
Seznam obrázků Obrázek 1: Meisnerův a Reinartzův oscilátor (6) ......................................................... 10 Obrázek 2: Harteyův a Clopittsův oscilátor (6) ............................................................ 11 Obrázek 3: RC oscilátory s Wienovým článkem (6)..................................................... 11 Obrázek 4: Kristalové oscilátory v Piercove zapojení (6) ............................................. 11 Obrázek 5: Nejjednodušší princip přímé digitální syntézy ........................................... 12 Obrázek 6: Akumulátor fáze (1) .................................................................................. 13 Obrázek 7: Činnost akumulátoru fáze (1).....................................................................13 Obrázek 8: Tok signálu v DDS (1)............................................................................... 14 Obrázek 9: Spektrum generovaného signálu (1) ........................................................... 15 Obrázek 10: Blokové schéma obvodu AD9833 (2) ...................................................... 17 Obrázek 11: Popis vývodů AD9833 (2) ....................................................................... 17 Obrázek 12: Zapojení mikrokontroléru Atmel AT89S52 ............................................. 22 Obrázek 13: Zapojení maticové klávesnice ..................................................................23 Obrázek 14: Zapojení LCD displeje ............................................................................. 23 Obrázek 15: Blokové schéma idealizovaného invertoru napětí (7) ............................... 25 Obrázek 16: Popis vývodů obvody ICL7660 a jeho zapojení jako invertoru napětí (10) .................................................................................................................................... 25 Obrázek 17: Schéma výstupních obvodů .....................................................................27 Obrázek 18: Redukce na AD9833 ................................................................................ 36 Obrázek 19: Plošný spoj generátoru se součástkami .................................................... 37 Obrázek 20: Čelní panel genrátoru............................................................................... 37 Obrázek 21: Usazení do vnitřku krabičky .................................................................... 38 Obrázek 22: Spektrum výstupního harmonického signálu ............................................ 39 Obrázek 23: Snímek z analogového osciloskopu ......................................................... 39 Obrázek 24: Obdélníkový signál z výstupu TTL .......................................................... 40
45
Seznam tabulek Tabulka 1: Přehled DDS obvodů určených pro stavbu generátoru (12) ........................ 16 Tabulka 2: Popis označení a funkcí vývodů AD9833 (2) ............................................. 18 Tabulka 3: Popis bitů CONTROL REGISTERU (2) .................................................... 19 Tabulka 4: Adresace registrů ....................................................................................... 20 Tabulka 5: Nastavení funkce výstupního signálu (2) .................................................... 20 Tabulka 6: Popis funkce vývodů LCD displeje (12) ..................................................... 24
46
Seznam použitých zkratek a symbolů D/A
Digital to Analog
DDS
Direct Digital Synthesis
DIP
Dual In-line Package
FSK
Frequency-shift keying
Hz
Hertz
LCD
Liquid Crystal Display
LQFP
Low-profile Quad Flat Package
MSOP
Micro Small Outline Package
PLCC
Plastic Leaded Chip Carrier
QFP
Plastic Quad Flat Pack
PROM
Programmable Read-Only Memory
PSK
Phase-Shift Keying
SPI
Serial Peripheral Interface
THD
Total Harmonic Distortion
TQFP
Thin Quad Flat Pack
TSSOP
Thin-Shrink Small Outline Package
TTL
Transistor-Transistor-Logic
tPD
Time Propagation Delay
47
Přílohy A. Schéma zapojení generátoru DDS
48
B. Seznam součástek plošného spoje AD9833 C1
33P
C2
33P
C3
10u
C4
1n
C5
10u
C8
100n
C9
100n
C10
10n
C11
10u
C12
100n
C13
100n
C14
100n
C15
470u
C16
100n
C17
10u
C18
10u
C19
100n
C20
100n
C21
10u
D1
1N4004
D2
1N4148
IC2
TL072P
IC3
74HCT244N
IC4
AT89S52
IC5
74LS14N
IC6
ICL7660CPA
Q1
24MHz
QG1
25MHz
R1
1k
R2
8k2 49
R3
1k
R4
100R
R5
100R
R6
1k
R7
10k
R8
100R
R9
100R
R10
1k
RN1
8X10k
SV1
MLW10
SV2
MLW10
T1
BC547A
X1
AK300/2
X2
AK300/2
X3
AK300/2
C. Seznam součástek ostatní
Konstukční přístrojová krabička
U-KM85
LCD displej
MC1602B-NS/BWW
Klávesnice
F-KV16KEY
BNC konektor 1
UG1094/U ISO
BNC konektor 2
UG1094/U ISO
Vypínač
P-SW101-BLUE
Napájecí konektor
K3716B
50
D. Seznam příloh na CD
Program
Plošný spoj
Schéma zapojení
Seznam součástek
Katalogové listy součástek
51