USB mérőműszerek használata

A Fizipedia wikiből
A lap korábbi változatát látod, amilyen Zolikk (vitalap | szerkesztései) 2017. február 13., 11:51-kor történt szerkesztése után volt.

Tartalomjegyzék

Bevezetés

A mérési gyakorlat célja olyan eszközök megismerése, melyek egyszerű modellként szolgálnak összetett számítógépvezérelt mérőrendszerekhez. Ezek kezelésén keresztül elsajátíthatóak az automatizált mérésvezérlés és -kiértékelés alapelvei és módszerei.

USB hőmérő

USB homero front.jpg

Az első vizsgált műszer egy a PC-hez USB-n csatlakozó hőmérő, amely -50°C és 125°C között mér 0.0625°C felbontással. Az eszköz lekérdezése standard soros protokollon keresztül történik. A gyakorlat során áttekintjük az utasításkészlet implementálását Microsoft Visual Studio C# környezetben, megvizsgáljuk a grafikus megjelenítés és - további felhasználásra - tárolás kérdéseit, valamint becslést adunk az eszköz különböző jellemzőire.

Segítség a programozáshoz: Példaprogram

Az FT232RL USB-soros átalakító használatához szükséges driver (Virtual Com Port) itt található.


Elektromos felépítés

USB homero blockdiagram.png

Az eszköz blokkvázlata a jobb oldali ábrán látható, három egységet különíthetünk el, melyek a nyomtatott áramköri lapon található három integrált áramkör köré csoportosulnak.

Hőmérő IC

Az érzékelő SOT-23-5 tokozású, MCP9800 típusú áramkör, amely tartalmaz egy félvezető hőmérsékleti szenzort, valamint elvégzi a szükséges analóg-digitális átalakítást: a hőmérsékleti értékek elméletileg a -128°C...+128°C tartományba eshetnek 12 bit felbontással, amely alapján adódik az áramkör 0.0625°C felbontása. A gyakorlatban az eszköz működése csak -50°C és 125°C között garantált. Fontos megjegyezni, hogy a mérés pontossága lényegesen kisebb, mint a digitális felbontás: az adatlap szerint mintegy 1°C hibára számíthatunk a teljes működési tartományban.

Az áramkör egy kétvezetékes, ún.I2C buszon kommunikál a mikrokontrollerrel.

Mikrokontroller

Az Atmel gyártmányú, ATMEGA48 típusú eszköz több feladatot lát el: egyrészt mintegy 500ms időközönként lekérdezi a hőmérő IC-től a hőmérsékletet, másrészt azt binárisról ASCII formátumúvá alakítja, ezzel lehetővé téve, hogy a mérésvezérlő programban közvetlenül felhasználható legyen. A kontroller parancsértelmezőként is funkcionál: a soros porton érkező karaktereket figyelve a megfelelőekre reagál.

A vezérlő további feladata, hogy hardveres hibákra lehetőség szerint reagáljon és értesítse a felhasználót. Esetünkben a hőmérő IC hibás működésére, valamint a soros porti kommunikáció hibájára egy piros LED bekapcsolásával reagál.

Az áramkör a számítógép felé soros (Universal Asynchronous Receiver-Transmitter, UART) porton kommunikál. A felhasznált RxD és TxD vonalak -- a feszültségszintektől eltekintve -- megfelelnek a számítógép RS-232 portjának hasonló kivezetéseinek.

Soros-USB átalakító

Mivel a hardveresen megvalósított soros port egyre ritkább a személyi számítógépeken, egy további egység beépítése vált szükségessé: az FTDI FT232RL típusú áramkör egy összetett USB device IC. Mérőeszközünkben átjárót biztosít a mikrovezérlő soros portja és a számítógép USB portja között. A gyártó honlapjáról letölthető driver segítségével az eszköz teljesen transzparensen működik, az operációs rendszer számára egy újabb - virtuális - soros portként látszik (COMx), és a Visual Studio SerialPort osztálya segítségével kezelhető.

Az eszköz a kommunikációt egy kék LED villogtatásával jelzi.

Parancskészlet

A mérőeszköznek az alábbi két egykarakteres utasítása van, melyet whitespace karakterrel (újsor, space, Tab) kell lezárni. A parancsértelmezés nem érzékeny a kis- és nagybetűkre.

  • Read: A hőmérő visszaadja az aktuális mért hőmérsékletet 4 tizedesjegy felbontással.
  • Info: A műszer szoftverének adatait adja vissza.

Soros kommunikáció beállításai

A számítógépen a soros portot a következő beállításokkal kell használni. Az alábbiakat a SerialPort osztály tulajdonságai segítségével állíthatjuk be.

  • Baud rate=38400
  • Data bits=8
  • Stop bits=1
  • Paritás nincs.

Feladatok

  1. Készítsünk mérőprogramot, amely megadott időközönként beolvassa a hőmérsékleti adatokat a műszertől, ezeket grafikusan ábrázolja egy ZedGraphControl objektum segítségével, és elmenti egy szöveges file-ba! A mérőprogram felületén TextBox segítségével jelenítsük meg az aktuális beolvasott értéket, valamint legyen lehetőség a mérési időköz változtatására!
  2. Egy 10 hosszúságú mozgóátlag segítségével simítsuk ki a nyers adatokat: Számoljuk ki és ábrázoljuk a legutóbbi 10 beérkezett adat átlagát! Bizonyítsuk be, hogy az átlagolás jó hatással van az adatok szórására: Számítsuk ki és ábrázoljuk a nyers, valamint az átlagolt adatok szórását! Előbbihez felhasználhatjuk az előbbi mozgóátlagban található adatokat, az utóbbihoz a legutóbbi átlagolt adatokból is hozzunk létre egy 10 elemű tömböt!
  3. hőmérő felmelegítésével, majd lehűtésével becsüljük meg az eszköz időállandóját! Ehhez feltehetjük, hogy a hőmérő hőfokkülönbsége a környezethez képest ΔT(t)=ΔT0exp(-t/τ) függvény szerint változik. Különbözik-e az eredmény, ha a nyers, illetve a simított adatsorral dolgozunk?