„Adatgyűjtő kártya programozása mérésleírás” változatai közötti eltérés

A Fizipedia wikiből
a
1. sor: 1. sor:
 
[[Category:Szerkesztő:Geresdi]]
 
[[Category:Szerkesztő:Geresdi]]
 +
[[Kategória:Szerkesztő:FulopGergo]]
 
<wlatex>
 
<wlatex>
 
[[Fájl:USB6008_photo.png|right|thumb]]
 
[[Fájl:USB6008_photo.png|right|thumb]]

A lap 2012. október 7., 18:51-kori változata


USB6008 photo.png

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

Tartalomjegyzék


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, \setbox0\hbox{$\pm10\,$}% \message{//depth:\the\dp0//}% \box0%V-os méréstartományban \setbox0\hbox{$20\,$}% \message{//depth:\the\dp0//}% \box0%V\setbox0\hbox{$/2^{12}\approx5\,$}% \message{//depth:\the\dp0//}% \box0%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 \setbox0\hbox{$0$}% \message{//depth:\the\dp0//}% \box0% és \setbox0\hbox{$+5\,$}% \message{//depth:\the\dp0//}% \box0%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.

CSharp LED IV.png

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!

A feladat megoldásához két Taskra van szükségünk, melyek közül az egyik olvas a "Dev1/ai0" porton, a másik pedig a mérőjelet generálja a "Dev1/ao0" kimeneten. A mérésleírás végén található melléklet nyújt segítséget a konkrét megvalósításhoz. Ügyeljünk arra, hogy az inicializáláskor megadott minimális és maximális feszültségértéket soha ne lépjük túl!

Feladatok

  1. Teszteljük a mérőkártya működését Measurement & Automation Explorerben! Növeljük az analóg kimenet feszültségét, és ellenőrizzük hogy megfelelően nagy feszültség esetén elkezd-e világítani a LED!
  2. Készítsünk mérőprogramot, mely egy Timer esemény segítségével az analóg kimenet feszültségét 100 lépésben 10ms-os lépésközzel 0V-ról 5V-ra növeli, majd az 5V-os szint elérése után visszaugrik 0V-ra, és a feszültség növelését újból kezdi (fűrészfogjel generátor)! A kiadott aktuális feszültség értékből a soros ellenállás értékének segítségével számoljuk ki a LED-en folyó áramot, amit egy TextBox segítségével jelenítsünk meg a mérőfelületen! Helyezzünk el a mérőfelületen a fűrészfogjel generátor futtatására ill. leállítására szolgáló gombot!
  3. A fűrészfogjel generátor futtatása közben mérjük a LED-en eső feszültséget a mérőkártya analóg bemenetén keresztül! A mért feszültséget jelenítsük meg egy TextBox-ban!
  4. A ZedGraphControl segítségével jelenítsük meg a mért feszültség-áram karakterisztikát!
  5. Egy "mentés" gomb megnyomása után mentsük el egy fájlba az utoljára mért feszültség-áram karakterisztikát!
  6. A fenti funkciók biztonságos működése esetén tegyük lehetővé a mérési paraméterek egyedi beállítását (Timer Interval; fűrészfogjel generátor maximális és minimális feszültsége; egy ciklushoz tartozó adatpontok száma; mentendő fájl neve)!
  7. Vizsgáljuk meg, hogy a dióda áram-feszültség karakterisztikáját leírhatjuk-e az
    \[I(U)=I_0\left(e^{U/U_\textrm{T}}-1\right)\]
    képlettel! Ha igen, határozzuk meg az \setbox0\hbox{$I_0$}% \message{//depth:\the\dp0//}% \box0% szivárgási áram értékét!
  8. Vizsgáljuk meg, hogy jogosan határoztuk-e meg az áramot a kiadott feszültség és a soros ellenállás hányadosaként! Mi ennek a közelítésnek a feltétele?

A mérésről készített jegyzőkönyv tartalmazzon egy használati utasítást az elkészült felülethez. Ismertessük a megvalósított funkciókat, a grafikus felület kezelését, valamint részletesen térjünk ki az olyan megoldásokra, amelyek nem a fentiekben meghatározott felépítést követik. A jegyzőkönyvhöz csatoljuk a mérőprogram forráskódját, valamint a jegyzőköny tartalmazza a LED-en végzett feszültség-áram karakterisztika mérés eredményeit és azok diszkusszióját is.