Adatgyűjtőkártya Infraszenzorral

A Fizipedia wikiből
A lap korábbi változatát látod, amilyen Zolikk (vitalap | szerkesztései) 2017. március 15., 22:33-kor történt szerkesztése után volt.



Tartalomjegyzék


Bevezetés

E gyakorlat célja adatgyűjtő kártyán keresztul egy IR adóvevőhöz és egy léptetőmotorhoz csatlakozni, és a kettő működését összehangolni, szabályozni, egy megfelelő felhasználói felület létrehozásával.

Amint az „Adatgyűjtő kártya programozása” mérésleirásban is pontositott, a gyakorlat során a National Instruments cég által, kifejezetten oktatási célra gyártott NI myDAQ típusú mérőkártyát programozunk. A mérőkártya USB porton keresztül vezérelhető, funkcióit Visual C# környezetben a NI DAQmx driver segítségével érhetjük el, ez ingyenesen letölthető a következő linken: DAQmx. A kártya működését az NI Measurement & Automation Explorer (MAX) program segítségével ellenőrizhetjük.

Az IR adóvevő egy IR LED és egy fotoszenzitív dióda segitségével saját visszavert jeléból egy feszültségjelet generál, ami távolságfüggő. A léptetőmotor digitális bemenetekkel vezérelhető, meg lehet adni a léptetési irányát, valamint léptetéshez rövid pulzust kell adni a csatornának, ez egy lépéssel mozgatja el a választott irányban. A léptetőmotor nagyon kis elmozdulásokra képes. Sajnos a myDAQ kártyával nem tudunk hardware szinten négyszögjelet generálni, ezért a pulzusokat egyenként kell adjuk a motornak szoftverből, ami korlátolni fogja annak az elérhető sebességét.

IR adóvevő

A készülék adatlapja elérhető itt.

Léptetőmotor

A kártya kezelése

Ha USB-n keresztül csatlakoztatjuk a készüléket, a kék LED-nek világitania kell. Ezután az eszközt a NI Measurement & Automation Explorerben (MAX) tesztelhetjük. Az eszköz a baloldali listában megjelenik My System / Devices and Interfaces / NI-DAQmx Devices / NI myDAQ:"myDAQ1" menüpontnál. A C# program irásakor a kártya idézőjelek közt található nevével hivatkozhatunk rá, ez valoszinűleg myDAQ1" lesz. Jobb click-et adva a kártyára, elérhető egy tesztelőfelület melyen módositani lehet a különféle analóg és digitális ki/bemeneteken, ezzel tesztelhetjük egy hozzá csatolt készülék egyszerű műdödését, válaszát.

Ahhoz, hogy működhessen a kártya kezelése C# programból, a projekt referenciákhoz hozzá kell adni a NationalInstruments.DAQmx és NationalInstruments.Common csomagokat. Ezenkivűl a forráskódban ahol a függvényeket használni akarjuk, ne felejtsük el a using NationalInstruments.DAQmx parancsot.

A gyakorlat során analóg és digitális jelekkel is dolgozunk a kártyáról. A csatornák használatát Task típusú objektumokkal valósítjuk meg. Ezeket deklarálni és inicializálni kell. Az analóg bemenetet egy AnalogSingleChannelReader objektummal kezeljük, a digitális kimeneteket pedig DigitalSingleChannelWriter-el. Az analog input tasket használjuk az IR szenzor jelének beolvasására (voltokban), ehhez meg kell adni a mérési határokat is. A mérés felbontása ezektől a határoktól függ, és a myDAQ \setbox0\hbox{$\pm10\,$}% \message{//depth:\the\dp0//}% \box0%V-os méréstartományra képes analóg módban, viszont az IR szenzorhoz alkalmazhatunk \setbox0\hbox{$0\,$}% \message{//depth:\the\dp0//}% \box0%V-\setbox0\hbox{$5\,$}% \message{//depth:\the\dp0//}% \box0%V tartományt.

A digitális kimenetekhez hozzunk létre Taskokat, majd a DigitalSingleChannelWriter objektumnak hívjuk meg a WriteSingleSampleSingleLine(true, value) függvényét, value helyett a kivánt logikai változót (true, false) helyettesitve. Egyik outputtal a léptetőmotor irányát adjuk meg, a másikra pedig egy rövid impulzust téve a motort léptethetjük egy lépéssel. Ne felejtsük, hogy ha helyesen szeretnénk egy Task-ot befejezni, akkor meg kell hivni a Dispose() függvényét.

Feladatok

  1. Teszteljük a mérőkártya működését Measurement & Automation Explorerben! Változtassuk a fehér lap távolságát a szenzortól és ellenőrizzük, hogy a beolvasott jelen észlelhető a változás.
  2. Ellenőrizzuk a C# felületen is a működést, próbáljuk mozgatni a léptetőmotort egy adott irányba.
  3. Készitsünk egy olyan mérőprogramot, mely felveszi az IR LED detekciós rendszerünk távolság-karakterisztikáját. Ábrázoljuk az analóg jelválaszt arbitráris távolságban (motor lépések száma) egy ismert kezdőponthoz képest. Használjunk Timert a léptetésre. Dolgozzunk a karakterisztika monoton tartományában (d>4 cm).
  4. Kalibráljuk a karakterisztikát valós távolságban! Mérjük le a szenzor-reflektor távolságot két szélső értékben, és ismerve a köztes lépések számát kapjunk egy karakterisztikus függvényt valós távolságban (pl cm-ben). Egy Labelben vagy Textboxban ábrázoljuk a jelenlegi távolságot a reflektorhoz képest, folyamatosan. A karakterisztika legyen folyamatosan látható grafikonon, és azon is ábrázoljuk egy jellel a jelenlegi helyzetét a szenzornak.
  5. Készitsünk egy Go-to funkciót a felhasználói felületre. Ha a karakterisztika már rögzitve volt, a felhasználó Textboxba megadja a kivánt poziciót (pl cm-ben), és léptessük a motort a kivánt helyzetbe, majd álljunk meg ott, és jelezzük a felhasználónak (pl. Message boxban). Mivel a motort csak diszkrét lépésben mozgathassuk, úgy álljunk meg vele, hogy a mért jel a karakterisztikán az adott poziciónál való értékhez legközelebb legyen.
  6. Készitsünk egy funkciót, mely a felhasználó általi inditásakor rögziti a jelenlegi poziciót, és megprobálja léptetőmotorból azt megtartani folyamatosan. Mozgassuk a csavarral a reflektort, és ellenőrizzük a funkció műkodését. A karakterisztikát használva, egy grafikonra ábrázoljuk folyamatosan a kitéréskülönbséget az eredeti pozicióhoz képest, idő függvényében, amig a funkció be van kapcsolva. A funkció ugyancsak felhasználó által legyen kikapcsolható is.

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 felvett, kalibrált karakterisztikáját az IR szenzornak, valamint a követő funkció követési képességét (kitérés-idő grafikonok). Diszkusszióban tárgyaljuk a követő funkció teljesitményét, valamint azt, hogy hogyan lehetne javitani vagy gyorsitani rajta.