2009-05 mėnesio archyvas

DDS generatorius. 2 dalis

2009-05-14 18:56

Sveiki

Laikas būtų antrai daliai. Ypač, kai nežinau, ar bus laiko blog’ams artimiausiu metu. Taigi, su generatoriuku dabar jau gerokai pasistūmėjau. Galima keisti dažnį, formą, virtualiai ir amplitudę, tik niekas nuo to nesikeičia, nes nėra, kas tą amplitudę pakeltų ir pareguliuotų - nėra išėjimo grandinės. Štai kokį vaizdelį dabar turime:

Toks ekranas pasrodo įjungus. Viršuje rodomą parametrą galima keisti klaviatūra. T.y. suvedam dažnį, spaudžam “Enter” ir dažnis pasikeičia. Norint keisti kitą parametrą, spaudžiam mygtuką po tuo parametru. Dabar klaviatūra toli nuo ekrano, tai sąvoka “mygtukas po simboliu” skamba keistai, bet galutinėj versijoj tie mygtukai bus po ekranu. :) Taigi paspaudę “0,5V” gaunam tokį ekraną:

Dabar galima įvest amplitudę. Turėtų kilti klausimas, o ką jei dažnis didelis? Atsakymas - jei dažnis didesnis, nei keturi skaitmenys gali parodyti, padaroma taip:

Apvalinimo nedariau, tiesiog nukandamas skaičiaus galas. Tas kiek negražiai atrodo, kai suvedama pvz 2,9 MHz, bet tikslas yra turėti užuominą, koks esamas dažnis, o tikslų visada galima pažiūrėti persijungus atgal į dažnio nustatymą.

Pasirinkus formos keitimą, ekranas kiek skiriasi:

Čia simbolis po dvitaškio rodo esamą formą, o toliau esantis užrašas 1~2^3- primena, kuris klaviatūros mygtukas, kurią formą reikškia. Skirtingai nuo amplitudės ir dažnio nustatymo signalo forma pasikečia iš karto po skaitmens paspaudimo. Esama forma, kaip ir kiti parametrai atvaizduojama ir kitose ekrano būsenose:

Čia stačiakampis nustatinėjant dažnį. Trikampis bus vėliau (tech. kliūtys :) ).

Meniu mygtukas rezervuotas visokiems ekstra nustatymams, kurių kol kas nėra.

Stengiausi padaryti intuityvų valdymą. Man labai patinka, kai prietaisas turi daug nustatymų, bet greit perpranti valdymą ir be manualo. Labiausiai nesuprantamas turbūt formos nustatymas, bet kai supranti, kas čia tokio tai gana patogu, įsitikinau bežaisdamas su skopu, žiūrinėdamas, kokios realios signalų formos prie įvairių dažnių.
Oscilogramų kol kas neprifotkinau, taigi jos bus vėliau. Kada vėliau nežinau, gali būt, kad tik kai apsiginsiu. Tuo labiau, kad bus dar išėjimo grandinė ir nuo jos gali pasikeist šis bei tas.
Tai tiek kol kas. Dabar reiks parašyt krūvą popierių, nes rimti dėdės antradienį tikrins, kaip mums sekasi. Jei turit minčių - komentuokit.
Iki.

J.

#include arba Sveiki. Darom pradžią

2009-05-03 00:44

Sveiki.

Kadangi neseniai pagaliau įveikiau trečią pagrindinę kliūtį savo baigiamojo link, tai nusprendžiau, kad tai bus geras laikas pradėti ir savo išpažintis, ką gi gero esu nuveikęs. Kadangi tai pirmas įrašas, todėl supažindinsiu, ką meistrauju savo elektronikos bakalauro baigamajam darbui.

“Specialios formos signalų generatorius”, toks baigiamojo pavadinimas. Ne daug jis pasako apie patį darbą, bet toks ir yra užmanymas - kuo mažiau prižadėt, kad po to būtų lengva ištesėt. : ) Konkrečiau tai bus DDS (direct digital synthesis) principu veikiantis generatorius, kuriantis sinuso, trikampio ir kvadrato formos signalus iki 10 MHz ir 10V. Dar konkrečiau - naudosiu AD9833 generatorių su 25MHz taktiniu generatoriumi, ATMega 16 mikrovaldiklį, 16×2 raidinį LCD, išprievartautą “numpadą” kaip klaviatūrą valdymui ir kokį nors greitą operacinuką su pribumbasais išėjimui buferinti ir palaikyti amplitudę. Taip pat yra planas išnaudoti pagrindines AD9833 savybes ir padaryti ASK, FSK ir PSK moduliacijas, swep’us ir, panaudojant du čipukus, padaryti dviejų koherentinių signalų su fazės poslinkiu generavimą, bet čia tik jei bus laiko.

Nei su vienu iš naudojamų komponentų nesu niekada žadęs. Net ir su ATMega, nes iki šiol užtekdavo tiny. Šį kartą teko imtis didesnio agregato vien dėl to, kad bijojau, jog neužteks kojų. O su jokiu lcd, ar generatoriais nesu nieko daręs, taigi viską priversti veikti buvo ką veikti.

Kai pagaliau išsiaiškinau, kodėl neveikia mano klaviatūra, supratau, kad mano sunkumų šaltinis greičiausiai buvo mikrovaldiklis, kuris iš pradžių atrodė geriausiai pažįstamas komponentas - su tiny taigi esu dirbęs. Vakar atsekiau, kad kažkaip nelabai veikia C porto kai kurie bitai. Pasiguodžiau draugui, o tas pasiteiravo, ar kairtais pas mane neįjungtas JTAG. Na, kaip ir nejungiau, bet pasitikrinau ir pasirodo, kad jis būna įjungtas gamykliškai..

Po kelių valandų knisimosi datašytuose ir programos kode (pasirodo jį reikia išjungti du kartus per keturis ciklus; taip dėl to, kad neišjungtum netyčia) pagaliau pavyko ir viskas, kas dabar prijungta prie mano ATMega, pradėjo veikti taip, kaip reikia. O dar dieną prieš užtikau apie tą nelemtą JTAG internete ir galvojau “oho, koks geras daiktas, reiks panaudot, jei ir toliau taip nesiseks debug’int”. Galit įsivaizduot mano reakciją, kai supratau, kad dėl JTAG ir atsirado didžioji dalis tų bug’ų..

Taigi dabar turim:

Generatoriuką - valdomas SPI vienkrypčiu ryšiu - vienam generatoriui trys laidai. SPI clock greitis gali būt iki 40MHz, todėl galima naudoti maksimalų mikrovaldiklio SPI dažnį ir pakankamai sparčiai keisti parametrus. Antrą generatorių jungsiu tais pačiais laidukais, tik enable jungsiu atskirą. Taip galima bus valdyt atskirai arba abu kartu. Dabar prijungtas tik vienas ir generuoja programoje nustatytą signalą (nuotraukoje nėra, nes testuojamas klaviatūros darbas).
LCD - įprastas 16×2 raidinis lcd, tik kad dar su papildoma kojele apšvietimui. Naudoju 4 bitų valdymą. Dabar rodo statinį užrašą ir klaviatūros nuskaitymo rezultatą.
Klaviatūrą - vat tokią skaičių klaviatūrą. Išardžiau, pasipaišiau, koks mygtukų jungimas, ir parašiau programėlę. 10 kontaktų ir 19 mygtukų. Šiaip buvo siūlymų imti ps/2 arba USB signalą ir jį dekoduoti, bet likau prie savo būdo, nes a) paprasčiau, b) nereikia maitinti papildomos grandinės ir proco, c) turim pakankamai mikrovaldiklio kojelių d) mygtukų matricos jungtis pakankamai padori, kad ją galima būtų perlituoti į kitą plokštę.

Na o dabar laikas prisėsti prie rašto dalies, nes pirmadienį reikės dėstytojui duot ką nors paskaityt, o po dienos bus ir oficialus patikrinimas, kaip mes spėjame vykdyti savo grafiką. Tikiuosi, kad pavyks greitai ką nors suburt, nes dabar jau labai knieti parašyt programą, kuri apjungs visus keturis komponentus ir privers juos dirbti vieningai. Artimiausias planas - įvedam skaitmenis klaviatūra, spaudžiam “Enter”, LCD rodo dažnį, o generatorius sukuria tokio dažnio signalą.

Pabaigai įmetu bendrą vaizdą ir atsisveikinu.

J.

lcd-atmega-keyboard