„Adatgyűjtőkártya Infraszenzorral” változatai közötti eltérés
6. sor: | 6. sor: | ||
== Bevezetés == | == Bevezetés == | ||
− | E gyakorlat célja adatgyűjtő kártyán | + | E gyakorlat célja adatgyűjtő kártyán keresztül 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. |
− | + | Ahogyan az [[Adatgyűjtő kártya programozása mérésleírás|Adatgyűjtő kártya programozása]] mérésleírásban is szerepelt, 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: [http://www.ni.com/dataacquisition/nidaqmx.htm DAQmx]. A kártya működését az NI Measurement & Automation Explorer (MAX) program segítségével ellenőrizhetjük. | |
− | + | <!-- 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. --> | |
+ | |||
+ | {| cellpadding="5" cellspacing="0" align="center" | ||
+ | |- | ||
+ | | [[Fájl:IR fotoszenzitiv.png|bélyegkép|közép|700px]] | ||
+ | |- | ||
+ | | align="center"|1. ábra. '' A mérési összeállítás vázlata. A léptetőmotor forgó mozgásnak átalakítását egy lineáris pozícionáló egység végzi, ez mozgatja az IR szenzort. Az átalakító igen kis mozgatásra képes, 350 $\mu$m-t tesz meg körbefordulásonként.'' | ||
+ | |} | ||
== IR adóvevő == | == IR adóvevő == | ||
+ | A szenzor adatlap szerint 4-30 cm-es távolságon belül képes detektálni reflektív felületeket. Az IR adóvevő egy IR LED és egy fotoszenzitív dióda segítségével saját visszavert jeléből egy feszültségjelet generál, ami távolságfüggő. Figyelem, a távolságfüggés nem lineáris a teljes mérési tartományban! A környezeti tényezők (hőmérséklet, zajforrások) elvileg nem befolyásolják nagy mértékben a detektálás pontosságát. A készülék adatlapja elérhető [[:File:GP2Y0A41SK0F_EN.pdf | itt]]. | ||
− | + | {| cellpadding="5" cellspacing="0" align="right" | |
+ | |- | ||
+ | | [[Fájl:IR szenzor.png|bélyegkép|közép|250px]] | ||
+ | |- | ||
+ | | align="right"|1. ábra. ''Az IR távolságmérő szenzor. A lábkiosztás 1 - V<sub>out</sub>, 2 - GND, 3 - Vcc (+5V).'' | ||
+ | |} | ||
== Léptetőmotor == | == Léptetőmotor == | ||
+ | A TRINAMIC - PD3-013-42 léptetőmotor az alumínium konzolra rögzített négypólusú mikrofoncsatlakozón keresztül vezérelhető. A négy pólusból háromra digitális jeleket küldünk a mérőkártyáról. Az egyik pólussal a motor ki és bekapcsolható (ENABLED), a másik pólussal a motor forgásiránya állítható (DIRECTION), a harmadik pólusra pedig egy rövid pulzust küldve a motor egy lépést tesz. A negyedik pólusra a digitális jelek földje (DGND) kerül. A mellékelt kábellel csatlakoztathatjuk a motort a mérőkártyához. A kábel színkiosztása: ENABLED - Kék, DIRECTION - Zöld, STEP - Narancs, DGND - Barna. | ||
+ | A léptetőmotor nagyon kis elmozdulásokra képes. Sajnos a myDAQ kártyával nem tudunk hardveres szinten négyszögjelet generálni, ezért a pulzusokat egyenként kell kiadnunk a motornak szoftverből, ami korlátolni fogja annak az elérhető sebességét. A léptetőmotor tápellátását egy 24V-os adapter biztosítja, ezt ne felejtsük el csatlakoztatni az alumíniumkonzolhoz! | ||
== A kártya kezelése == | == A kártya kezelése == | ||
+ | Ha USB-n keresztül csatlakoztatjuk a készüléket, a kék LED-nek világítania 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 írásakor a kártya idézőjelek közt található nevével hivatkozhatunk rá, ez valószínűleg ''myDAQ1"'' lesz. Jobb klikket adva a kártyára, elérhető egy tesztelőfelület melyen módosítani lehet a különféle analóg és digitális ki- és bemeneteken, ezzel tesztelhetjük egy hozzá csatolt készülék egyszerű műkö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. Ezenkívül a forráskódban ahol a függvényeket használni akarjuk, ne felejtsük el a ''using NationalInstruments.DAQmx'' parancsot. | |
− | + | ||
− | 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. | + | |
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 $\pm10\,$V-os méréstartományra képes analóg módban, viszont az IR szenzorhoz alkalmazhatunk $0\,$V-$5\,$V tartományt. | 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 $\pm10\,$V-os méréstartományra képes analóg módban, viszont az IR szenzorhoz alkalmazhatunk $0\,$V-$5\,$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) | + | 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) helyettesítve. Egyik kimenettel 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 el, hogy ha helyesen szeretnénk egy Task-ot befejezni, akkor meg kell hívni a ''Dispose()'' függvényét. A leírtak megvalósításához komoly segítséget ad a [[DAQMX_kártya_példaprogram | példaprogram]]. |
== Feladatok == | == Feladatok == | ||
− | # Teszteljük a mérőkártya működését Measurement & Automation Explorerben! Változtassuk a | + | # Teszteljük a mérőkártya működését Measurement & Automation Explorerben! Változtassuk a reflektív felület távolságát a szenzortól és ellenőrizzük, hogy a beolvasott jelen észlelhető a változás. |
− | # | + | # Ellenőrizzük a C# felületen is a működést, próbáljuk mozgatni a léptetőmotort egy adott irányba. |
− | # | + | # Készítsünk egy olyan mérőprogramot, mely felveszi az IR szenzor távolság-karakterisztikáját. Ábrázoljuk az analóg jelválaszt arbitrális távolságban (motor lépések száma) egy ismert kezdőponthoz képest. Használjunk Timert a léptetésre és Dolgozzunk a karakterisztika monoton tartományában (d>4 cm)! |
− | # 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 | + | # 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 megkaphatjuk a 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. |
− | # | + | # Készítsünk egy Go-to funkciót a felhasználói felületre. Ha a karakterisztika már rögzítve volt, a felhasználó Textboxba megadja a kívánt pozíciót (pl cm-ben), és léptessük a motort a kívá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 mozgatjuk, úgy álljunk meg vele, hogy a mért jel a karakterisztikán az adott pozíciónál való értékhez legközelebb legyen. |
− | # | + | # Készítsünk egy funkciót, mely a felhasználó általi indításakor rögzíti a jelenlegi pozíciót, és megpróbálja léptetőmotorból azt megtartani folyamatosan. Mozgassuk a mikrométerorsóval a reflektort, és ellenőrizzük a funkció működését. A karakterisztikát felhasználva egy grafikonon ábrázoljuk folyamatosan az eltérést az eredeti pozícióhoz képest az idő függvényében, amíg a funkció be van kapcsolva. A funkció ugyancsak felhasználó által legyen ki-bekapcsolható. |
− | 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 | + | 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önyv 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ó teljesítményét, valamint azt, hogy hogyan lehetne javítani vagy gyorsítani rajta. |
</wlatex> | </wlatex> |
A lap jelenlegi, 2017. március 16., 20:25-kori változata
Tartalomjegyzék |
Bevezetés
E gyakorlat célja adatgyűjtő kártyán keresztül 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.
Ahogyan az Adatgyűjtő kártya programozása mérésleírásban is szerepelt, 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.
1. ábra. A mérési összeállítás vázlata. A léptetőmotor forgó mozgásnak átalakítását egy lineáris pozícionáló egység végzi, ez mozgatja az IR szenzort. Az átalakító igen kis mozgatásra képes, 350 m-t tesz meg körbefordulásonként. |
IR adóvevő
A szenzor adatlap szerint 4-30 cm-es távolságon belül képes detektálni reflektív felületeket. Az IR adóvevő egy IR LED és egy fotoszenzitív dióda segítségével saját visszavert jeléből egy feszültségjelet generál, ami távolságfüggő. Figyelem, a távolságfüggés nem lineáris a teljes mérési tartományban! A környezeti tényezők (hőmérséklet, zajforrások) elvileg nem befolyásolják nagy mértékben a detektálás pontosságát. A készülék adatlapja elérhető itt.
1. ábra. Az IR távolságmérő szenzor. A lábkiosztás 1 - Vout, 2 - GND, 3 - Vcc (+5V). |
Léptetőmotor
A TRINAMIC - PD3-013-42 léptetőmotor az alumínium konzolra rögzített négypólusú mikrofoncsatlakozón keresztül vezérelhető. A négy pólusból háromra digitális jeleket küldünk a mérőkártyáról. Az egyik pólussal a motor ki és bekapcsolható (ENABLED), a másik pólussal a motor forgásiránya állítható (DIRECTION), a harmadik pólusra pedig egy rövid pulzust küldve a motor egy lépést tesz. A negyedik pólusra a digitális jelek földje (DGND) kerül. A mellékelt kábellel csatlakoztathatjuk a motort a mérőkártyához. A kábel színkiosztása: ENABLED - Kék, DIRECTION - Zöld, STEP - Narancs, DGND - Barna. A léptetőmotor nagyon kis elmozdulásokra képes. Sajnos a myDAQ kártyával nem tudunk hardveres szinten négyszögjelet generálni, ezért a pulzusokat egyenként kell kiadnunk a motornak szoftverből, ami korlátolni fogja annak az elérhető sebességét. A léptetőmotor tápellátását egy 24V-os adapter biztosítja, ezt ne felejtsük el csatlakoztatni az alumíniumkonzolhoz!
A kártya kezelése
Ha USB-n keresztül csatlakoztatjuk a készüléket, a kék LED-nek világítania 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 írásakor a kártya idézőjelek közt található nevével hivatkozhatunk rá, ez valószínűleg myDAQ1" lesz. Jobb klikket adva a kártyára, elérhető egy tesztelőfelület melyen módosítani lehet a különféle analóg és digitális ki- és bemeneteken, ezzel tesztelhetjük egy hozzá csatolt készülék egyszerű műkö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. Ezenkívü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 V-os méréstartományra képes analóg módban, viszont az IR szenzorhoz alkalmazhatunk V-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) helyettesítve. Egyik kimenettel 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 el, hogy ha helyesen szeretnénk egy Task-ot befejezni, akkor meg kell hívni a Dispose() függvényét. A leírtak megvalósításához komoly segítséget ad a példaprogram.
Feladatok
- Teszteljük a mérőkártya működését Measurement & Automation Explorerben! Változtassuk a reflektív felület távolságát a szenzortól és ellenőrizzük, hogy a beolvasott jelen észlelhető a változás.
- Ellenőrizzük a C# felületen is a működést, próbáljuk mozgatni a léptetőmotort egy adott irányba.
- Készítsünk egy olyan mérőprogramot, mely felveszi az IR szenzor távolság-karakterisztikáját. Ábrázoljuk az analóg jelválaszt arbitrális távolságban (motor lépések száma) egy ismert kezdőponthoz képest. Használjunk Timert a léptetésre és Dolgozzunk a karakterisztika monoton tartományában (d>4 cm)!
- 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 megkaphatjuk a 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.
- Készítsünk egy Go-to funkciót a felhasználói felületre. Ha a karakterisztika már rögzítve volt, a felhasználó Textboxba megadja a kívánt pozíciót (pl cm-ben), és léptessük a motort a kívá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 mozgatjuk, úgy álljunk meg vele, hogy a mért jel a karakterisztikán az adott pozíciónál való értékhez legközelebb legyen.
- Készítsünk egy funkciót, mely a felhasználó általi indításakor rögzíti a jelenlegi pozíciót, és megpróbálja léptetőmotorból azt megtartani folyamatosan. Mozgassuk a mikrométerorsóval a reflektort, és ellenőrizzük a funkció működését. A karakterisztikát felhasználva egy grafikonon ábrázoljuk folyamatosan az eltérést az eredeti pozícióhoz képest az idő függvényében, amíg a funkció be van kapcsolva. A funkció ugyancsak felhasználó által legyen ki-bekapcsolható.
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önyv 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ó teljesítményét, valamint azt, hogy hogyan lehetne javítani vagy gyorsítani rajta.