HTML

Műszer

Hobby és amatőr elektronika, műszerépítés a XXI. században

Címkék

Friss topikok

  • Nite: @fromi: Ha egy bejegyzéssel kapcsolatos kérdésed van, akkor jobb odaírni kommentbe, mert esetleg m... (2010.11.26. 15:17) FAQ

Licenc

Creative Commons Licenc

DDS Jelgenerátor

Nite 2012.09.03. 15:02

Végre-valahára elkészült az első béta verziója a függvénygenerátoromnak, ha valakit érdekel, nyugodtan megépítheti vagy felhasználhatja az itt leírtakat a saját projektjeiben.
A DDS jelgenerátorok egy D/A átalakító segítségével állítják elő a kimenetükön a kívánt jelalakokat, az elvről bővebben már írtam egyszer itt.

A most bemutatásra kerülő DDS jelgenerátor paraméterei:

- 200 MSPS
- 2 kbyte sample memória
- 0.01 Hz - 50 MHz frekvencia, 0.01 Hz felbontással
- Torzítás < 0.5% (8 bit/minta)
- Jel/zaj viszony > 30 dB (reconstruction filter nélkül, ez még később jobb lesz)
- 50 Ohm kimenet
- Max. +-6V kimenet
- +-2.5V DC offset
- Phase -90° - +90°

- Sin, Cos, háromszög, négyszög, zaj jelalakok generálása tetszőleges kitöltési tényezővel (háromszögből fűrész, négyszögből impulzus)
- Trigger és digital data output
- Tetszőleges sweep a frekvenciatartományon belül
- AM/FM/Phase moduláció előkészítés (a szoftver még nem tudja)




Dokumentáció:
- kapcsolási rajzok és NYÁK tervek
- PIC forráskód
- FPGA forráskód
- Kliens forráskód


Az áramkör működése (röviden)

Tápegység


A J1 csatlakozón bejövő 9-12V AC feszültséget a D6 és a D7 graetz hídak egyenirányítják, ezek DC szintjei egymástól a C91-C92 kondenzátorokkal le vannak választva, így kimenetüket sorba lehet kötni. U2 és U6 állítja elő a +-6V feszültséget az analóg áramkörök működéséhez, ezen kívül a +6V ágra csatlakozó U3, U5, U16 állítják elő a PIC és az FPGA számára a tápfeszültségeket.

PIC

A PIC-et Y1 24 MHz-es kristály hajtja, ebből állítja elő a belső 48MHz-es órajelét. CON1 USB csatlakozón keresztül köthető össze egy PC-vel, R15-R16 osztón keresztül figyeli, hogy az USB kábel mikor kerül csatlakoztatásra. LED1 egy kétszínű, közös katódú led, az áramkör státuszának kijelzésére szolgál. A PIC JTAG2 csatlakozón keresztül programozható, szokásos Microchip header kiosztással rendelkezik (nevével ellentétben nem JTAG). Az SDA, SCL, és az ADSel portokon keresztül vezérli a három D/A átalakítót a gain, az offset és a sweep out jelek előállításához. AnalogIn porton keresztül képes fogadni az analóg bemenetről érkező jelet, és annak értékének megfelelően különböző modulációt végrehajtani. A többi port az FPGA-val köti össze. Ezek mind kimenetek, ahhoz hogy az FPGA fogadni tudja, a jelszintet ellenállásokkal csökkenteni kell.

A PIC szoftver működéséről csak röviden, ennek a legjobb dokumentációja a forráskód ;)
A PIC a kliens szoftverrel USB-n keresztül beszélget. Minden esetben a PC indítja a kérést, erre válaszol a PIC. A lehetséges parancsokat és ezek megvalósítását az user.c fájlban a ServiceRequests() függvény tartalmazza. Innen elindulva az összes fontosabb folyamat nyomon követhető: az FPGA beállítása, a DAC-ok beállítása illetve a Sweep beállítása és működése. A sweepelést a ProcessSweep() függvény végzi.

FPGA

Az FPGA-t az X1 oszcillátor hajtja. Ebből nekem 25MHz-es volt, ha másmilyet sikerül beszerezni, akkor a Clock egységet kicsit át kell konfigurálni az FPGA firmware-ében (most tesztelés miatt 4x-es szorzó van beállítva, így a belső frekvencia 100MHz, de elvileg a DAC bírja a 200MSPS-t is).
Az FPGA programozása a JTAG1 csatlakozón keresztül történik. A Done lábra kötött LED és annak ellenállásai opcionálisak.
Az FPGA összes többi lába tápfeszültségre, földre, a működéshez szükséges jelszintekre, a fő DAC-ra, és kimenő csatlakozókra van kötve közvetlenül, ezekről nincs mit magyarázni.

Az FPGA-ban futó kód működéséről már írtam egy bejegyzést régebben, ehhez képest nincsenek nagy eltérések.


Analog

Az analóg áramkör lelke a DAC908-as 200MSPS 8 bites D/A átalakító, ennek digitális bemeneteit közvetlenül az FPGA hajtja. Van egy rakás kiegészítő alkatrésze, amiket nem részleteznék, mert az adatlapján elég jól le van írva, mi mire való. A DACRef porton keresztül kapja a referencia feszültséget, a kimeneteken megjelenő áram változásának nagysága ezzel arányos. Az OPA690 előerősítőre 50 Ohmos illesztésen keresztül csatlakozik. Ez az erősítő az ellenállásokon eső feszültségen kétszeres erősítést végez. A P20 - P21 csatlakozók között lenne a reconstruction filter helye, aminek 50MHz feletti frekvenciákat le kellene vágnia - egyelőre egy jumper kerül a helyére, mert ilyen szűrőt nem tudok építeni a jelenlegi műszereimmel, majd a következő verzióban...
Az U1 végerősítő a jelen 2.5-szörös erősítést végez, aminek amplitúdója így 5Vpp körül alakul.
Ezen a rajzon kapott helyet a három lassú DAC is, melyek közül az U11 állítja elő a DAC908-nak a referencia feszültséget, ezzel szabályozhatjuk a kimenő jel amplitúdóját. Az U12 a kimenő jel DC offsetjét állítja elő, U15 pedig a sweep jelet.


IO

Ez a rész egy viszonylag lassabb műveleti erősítőből (U14) és környékéből áll. U14A a moduláció bemenetének buffert biztosít, az áramkörnek ez a része opcionális, amíg a modulációk nincsenek implementálva. U14B a Sweep Out kimenetet hajtja meg.


Az áramkör megépítése és beüzemelése

Az áramkör megépítéséhez a következők fognak kelleni:
- NYÁK: Ezt mindenkinek magának kell elkészítenie egyelőre. Sajnos a NYÁK gyártatás nem túl olcsó mulatság addig, amíg kis mennyiségről van szó.
- Alkatrészek: a BOM alapján meg kell őket rendelni. Kicsit a passzív SMD cuccok mérete hektikusnak tűnhet, az áramkör tervezésekor az volt a szempont hogy mi volt épp itthon, ill. mit lehetett beszerezni akciósan. Általában egy mérettel kisebb még simán beforrasztható, ha éppen olyat sikerül szerezni (egy mérettel nagyobb viszont csak ritkán). Ha van rá lehetőség,  a DAC908-ból érdemes egy tartalékot is rendelni mert rettentő érzékeny a lelkivilága.
- Tápegység: 12V~ -al működik, 9V~ -al is mennie kell de nem próbáltam.
- Ház, főkapcsoló, hűtőbordák, egyéb: izlés szerint.
- Páka: elvileg egy egyszerű, vékony hegyű páka elég, de az AD8000-t a legkönnyebb forró levegővel (vagy sütőben) beforrasztani. Azért a lábatlan verziója van az áramkörben, mert ez vagy fele annyiba kerül, mint a lábas.
- PIC programozó és JTAG kábel az FPGA programozásához.


1. NYÁK készítés


Mivel 0.2mm vezető és szigetelő vastagságokat tartalmaz az áramkör, érdemes fotózással elkészíteni. Ennek megfelelően a top layer (8. oldal) tükrözve van. A silkscreen nincs, a könnyebb olvashatóság kedvéért, de egyébként sem hiszem hogy otthon valaki ezt rátenné. A solder masknak több értelme van, ez megintcsak fotózható, és a felső layer tükrözött.
Ha a NYÁK-ot kimarattuk és lelakkoztuk, elkezdhetjük beültetni, mindenek előtt a viákat. Érdemes az összes viát berakni, közben és utána rövidzárakat és szakadásokat keresni a panelon. Ha a viák beforrasztgatása túl unalmas, akkor elég, ha épp csak annyit rakunk be, amennyi a soron következő rész működéséhez szükséges. Azt mindig teszteljük le, hogy nem zártuk-e rövidre a táp vezetékeket, ugyanis ezzel lehet a leggyorsabban alkatrészeket kinyírni a panelon. Előnyös, ha nem egyből a saját tápegységéről kapja a feszültséget, hanem egy áramkorlátos labortápról.


2. Beültetés és beállítás


Az áramkört részletekben érdemes beültetni, miközben ellenőrizzük, hogy az éppen beszerelt egység jól működik-e, illetve az előzőeket közben nem sikerült-e elrontani.


A táp csatlakozó után van hely egy átkötésnek vagy kapcsolónak, ha dobozolni is szeretnénk az áramkörünket. A nagy elektrolit kondenzátorok és a dióda hidak beültetése után mérjük meg a C90-en és a C93-on a feszültséget, 10-15V között kell rajtuk lenni a tápegységtől függően. A kondenzátorok polaritását mindig ellenőrizzük duplán, és ne csak a rajzhoz, mert ott lehet hogy elrontottam. Azt tudom, hogy a kerámia kondikon a jelölések össze-vissza állnak, ez a tervező program furcsasága, schematic nézetben nem jelöli a pozitív lábat, de a silk screenen rajta van...
U2 és U6 kimenetein meg kell jelenni a +-6V-nak, ha ez jó, akkor forrasszuk be a kisebb stabilizátorokat, és ellenőrizzük a kimenő feszültségeket.

A +6V-os stabilizátor IC-nek kelleni fog egy kisebb hűtőborda, hogy 70°C körül maradjon a hőmérséklete működés közben, a negatív tápra nem fog kelleni (de ártani sem árt).


Ha a tápegységünk működik, akkor mehet a helyére a PIC és a környéke. Először forrasszuk be a csatlakozókat, utána az ellenállásokat, kondikat, majd a kristályt és a ledet. Ellenőrizzük, hogy a PIC helyén a tápfeszültségek rendben vannak-e, és ha igen, akkor mehet a helyére a PIC. Forrasztáskor két hiba fog előfordulni: ha túl sok ónt teszünk a lábak alá, akkor össze fog záródni kettő, ezeket a hidakat ónszívó sodronnyal takarítsuk fel. Ha túl kevés ónt tettünk alá, akkor a PIC lába nem fog érintkezni. Ezt a hibát nehezebb megtalálni, mert amikor a műszerrel rámérünk a PIC lábára, hozzányomjuk a NYÁK-hoz, és persze hogy érintkezik. Mindenesetre ha észrevesszük hogy mégsem, akkor egy pici ónnal forrasszuk be a lábat.

Ha a PIC bent van, jöhet a programozás! A PIC programjának működnie kell az FPGA nélkül is, viszont amíg a lassú DAC-okat nem tettük a helyére, a program le fog fagyni az I2C kommunikációnál. Ettől függetlenül fordítsuk le a PIC kódját, programozzuk fel, és kössük rá az USB-re. Ha mindent jól csináltunk, meg kell jelennie az USB eszközök között a panelunknak, és a LED szép zölden fog villogni (lehet hogy pirosan, ha fordítva raktuk be).


A három darab lassú DAC-ot minden kockázat nélkül a helyére tehetjük, ekkor látnunk kell, ahogy a kliens szoftverben az amplitúdó, az offset és a sweep állításától függően a kimenő jelszintjük 0..5V között változik.

Következő lépés helyére tenni az FPGA-t. Szintén forrasszuk be az összes ellenállást és kondit a környéken (a RDY LED-et nem muszáj), utána az oszcillátort, és ellenőrizzük, hogy az FPGA minden táp lábán a megfelelő táp feszültség legyen, minden föld lábán pedig föld. Ha ez megvan, betehetjük a helyére az FPGA-t. Ugyanúgy ellenőrizni kell forrasztás után a lábakat rövidzár és szakadás után kutatva. A PIC és az FPGA kapcsolatát külön is ellenőrizzük le, hogy a megfelelő lábak között meg van-e a szükséges ellenállás értéke.

Fordítsuk le az FPGA kódját a Xilinx ISE szoftverével, és programozzuk fel az FPGA-nkat egy JTAG kábellel. Ha mindent jól csináltunk, és a PC-s kliens szoftvert beüzemeljük, látnunk kell a kimenő órajelet az órajel lábakon, és a digitális kimeneteken a generált jelalakot.


Ezután jön a DAC908 és környékének beforrasztása. Érdemes egy lépésben a reconstruction filterig beültetni. Az összes ellenállás és kondi beforrasztása után ellenőrizzük, hogy a tápfeszültségek rendben vannak-e, nincs sehol rövidzár vagy szakadás, és tegyük a helyére a DAC908-at, és az erősítőt. A kliens szoftver elindításakor az erősítő kimenetén meg kell jelennie a generált jelalaknak. A P2 potit úgy kell beállítani, hogy a kliensben beállított maximális amplitúdó az erősítő kimenetén kb. 2.5Vpp-s jelet eredményezzen.


Ha eddig minden OK, beültethetjük az AD8000-t és környékét. Kezdjük az ellenállásokkal és a kondikkal, ellenőrizzük a tápfeszültségeket, és tegyük a helyére az AD8000-t. Mivel nagyon rövidek a lábai, ezt a legegyszerűbb forrólevegővel beforrasztani, de meg lehet oldani pákával is. A generátor kimenetén 6Vpp-s jelet kell mérnünk a maximális amplitúdónál (ez P2-vel állítható), az offsetet pedig R27-el tudjuk beállítani nullára, amikor a kliensen is 0 az értéke.

Ha idáig eljutottunk, már csak a sweep és opcionálisan a moduláció van hátra. Tegyük a helyére az ADA4851 körül az ellenállásokat és a kondikat, utána az erősítőt is. A sweep jelet úgy kell beállítani az R46-tal, hogy ha a sweep kurzor középen van, a kis plató a nullán álljon. R34-el a modulációs bemenetről érkező jelnek adhatunk 2.5V körüli offsetet, hogy a PIC fel tudja dolgozni.

Ezzel kész is van a jelgenerátorunk, már csak be kell dobozolni, és mindenki használja egészséggel.
Ha bármi hibát találtok az áramkörben, légyszíves ne habozzatok szólni.

Címkék: dds jelgenerator

Szólj hozzá!

A bejegyzés trackback címe:

https://muszer.blog.hu/api/trackback/id/tr794734709

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása