Adatgyűjtő kártya programozása mérésleírás

A Fizipedia wikiből
A lap korábbi változatát látod, amilyen Geresdi (vitalap | szerkesztései) 2011. március 20., 18:11-kor történt szerkesztése után volt.


Az alábbi leírás pdf formátumban is letölthető.

Bevezetés

A mérési gyakorlat célja egy számítógépes adatgyűjtő kártya programozásának megismerése: a kártya analóg kimeneteinek és bemeneteinek programozásával egy oszcilloszkóp jellegű mérőfelületet készítünk, mellyel felvesszük egy LED (Light Emitting Diode) feszültség-áram karakterisztikáját.

A gyakorlat során a National Instruments cég által gyártott USB porton keresztül vezérelhető NI USB-6008 típusú mérőkártyát programozunk. A mérőkártya funkcióit Visual C\# környezetben a NI DAQmx meghajtóprogram segítségével érhetjük el, illetve a kártya működését az NI Measurement & Automation Explorer (MAX) program segítségével ellenőrizhetjük.

A számítógépes mérőkártyák önmagukban számos komplex mérésvezérlési feladat megvalósítását teszik lehetővé: a nagyszámú analóg bemeneti csatornán keresztül különböző kísérleti paraméterek változását vizsgálhatjuk nagy mintavételezési sebességgel; az analóg kimeneti csatornákkal DC vagy időben változó meghajtó jeleket generálhatunk; a digitális csatornákon keresztül logikai áramköröket vezérelhetünk; illetve a trigger bemeneti csatornákon keresztül mérésünket egy külső bemeneti jelhez szinkronizálhatjuk. A mérésen használt NI USB-6008 mérőkártya 8 analóg bemeneti csatornával, 2 analóg kimeneti csatornával, 12 digitális kimeneti vagy bemeneti csatornával és egy számláló csatornával rendelkezik. Az analóg bemeneti csatornák felbontása 12 bit, azaz a maximális, $\pm10$\,V-os méréstartományban $20$\,V$/2^{12}\approx5$\,mV pontossággal mérhetünk. A maximális mintavételezési sebesség 10000 adatpont/másodperc, mely a használt csatornák között szétoszlik, pl. ha 4 csatornát használunk, akkor minden csatornán 10000/4=2000 adatpont/másodperc sebességet érhetünk el. Az analóg kimeneti csatorna $0$ és $+5$\,V közötti feszültségeket tud kiadni, felbontása szintén 12 bit, a maximális programozási sebessége 150 adatpont/másodperc.

A mérési gyakorlat során egy analóg kimeneti csatorna segítségével fűrészfog jelet generálunk, melyet egy soros ellenállás segítségével áramjellé alakítunk. Az így kapott áramgenerátorral meghajtott LED-en eső feszültséget egy analóg bemeneti csatornán mérjük (ábra).

A mérőkártya tesztelése

A számítógéphez csatlakoztatott és felismert mérőkártyán található zöld LED ütemesen villog. Ezután az eszközt a NI Measurement & Automation Explorer (MAX) segítségével tesztelhetjük (Start / Programs / National Instruments / Measurement & Automation). A MAX szoftverfelületének baloldali sávjában láthatjuk a számítógéphez csatlakoztatott eszközöket és interfészeket, mérőkártyánkat a My System / Devices and Interfaces / NI-DAQmx Devices / NI USB-6008:"Dev1" menüpont alatt érhetjük el. A kártyára a programozás során az idézőjelben található címke segítségével hivatkozhatunk. A gyakorlat során csak egy eszközt használunk, így a címke minden esetben "Dev1" lesz, több eszköz használata esetén a MAX programban leolvashatjuk az eszközünknek osztott címkét. Az NI USB-6008:"Dev1" menüpontra jobb egérrel kattintva érhetjük el a tesztelő paneleket, melyek segítségével az analóg kimenetek és bemenetek működését ellenőrizhetjük.

A mérőkártya programozása Visual C# környezetben

A csatlakoztatott mérőkártyát a program indulása után inicializálni kell: megadhatjuk a szükséges csatornák feszültségtartományát, a mintavételi frekvenciát. Az egyes funkciókat ún. Task típusú objektumok valósítják meg, amelyekhez AnalogSingleChannelWriter és AnalogSingleChannelReader osztályú objektumokat rendelhetünk a feszültség kiírásához és beolvasásához. A szükséges prototípusokat a NationalInstruments.DAQmx és NationalInstruments.Common függvénygyűjtemény tartalmazza, ezért ezeket adjuk hozzá a project referenciáihoz! A forráskód elején szerepeljen a using NationalInstruments.DAQmx sor is. A létrehozott taskokat a Dispose() metódussal töröljük, amennyiben már nincs rájuk szükség!