Konvergencia
Ez a szó jut eszembe, amikor erre a projectre gondolok.
Úgy érzem, hogy ez az a pont ahol a műhely építés, műszer gyűjtés, mérő interfész (GP-IB) építés és mérés erőfeszítéseim összekapcsolódnak, hogy valami magasabb szintű képességet produkáljanak a dolgok amikkel rendelkezem.
Hol is kezdődött?
Gyerekkoromban audio cuccokat építettem. Később (nem kis kihagyás után) újraindult ez a hobbi, az volt a terv, hogy folytatom a munkát az audio elektronikán. Nem volt mérőeszközöm (egy döglődő digitális multimétert leszámítva). Építeni akartam, ahelyett, hogy veszek valamit. Ez térített el a digitális elektronika irányába.
Később rengeteg műszert vettem (kattant idióta). Egy ponton vettem egy HP 8903B audio analizátort, hogy képes legyek grafikonokat rajzolni az erősítők képességeiről. A gond ott volt, hogy a XY rögzítőt csatlakoztatni számomra, egy igencsak túlhaladott megoldás lett volna. Ahhoz, hogy számítógépre kösd, meg szükséged van egy interfészre. Nem voltam elégedett a jelenleg kapható GP-IB interfészekkel, itt született meg a saját tervezésű GP-IB csatolóm.
Később kerestem vezérlő szoftvert a HP 8903B-hez, és nem szerettem amit találtam. Ezen túl még az is a fejemben volt, hogy más műszereimet is hozzákössem a PChez, miután más ötelteim is vannak, nem csak az audio analizátor vezérlése. Néhány kísérlet után megszületett a "Virtual Instrument" projectem.
Két év után, rengeteg szenvedéssel, újrakezdéssel és újratervezéssel, úgy tűnik, a rendszer elkezdett működni.
A koncepció:
Valami rugalmas megoldást akartam, aminek a használata, ugyanakkor nem igyényel programozási ismereteket. Valami olyasmit akartam, ami mérési sorozatokhoz használható, és működik a saját cuccaim nagy részével, kompatibilis sokféle kommunikációs interfésszel. Az egész rendszernek beépülő modulokon kell alapulnia, a jövőbeli fejleszthetőség érdekében.
Létrehoztam pár objektum típust a fentiekhez:
Vezérlő (controller):
Valami ami az egészet viszi a hátán. Elindítja a mérési sorozatot, esetleg még valami alapadatot is produkál. Egyenlőre ezek készültek el:
- Folyamatos vezérlő (continuous controller): Csak lefuttatja a méréseket egymás után, majd újra és újra, amíg meg nem állítod. Ez a szokásos működési módja a legtöbb műszernek, mint pl. a multimétereknek.
- Single shot vezérlő (képtelen vagyok értelmes magyar nevet találni neki): Lefuttat egyetlen mérést, majd megáll.
- Változó vezérlő (variable controller): Beállítható a mérési sorozatokhoz. Ad egy vagy lineáris, vagy logaritmikus forrás adat sorozatot. Eredetileg a HP8903-ra gondolva készült. Az első kísérletekben logaritmikus frekvencia forrásként használtam a beépített szinusz generátorhoz.
Műszer (instrument):
Eszköz (tipikusan műszer), ami mér valamit. Képes a láncban korábbi mérés eredményét használni, és/vagy mérési eredményt produkálni a láncban utána lévőknek.
Eddig két műszer típus készült el: HP8903 Audio Analizátor, HP3478A 5,5 digites multiméter (a többi folyamatban)
A műszerek minden esetben külső (szoftver) trigger üzemmódban működnek. Az ok: a fenti szoftver vezérlők intézik a mérést és nem a műszer belső vezérlése.
Szűrő (Filter):
Eredetileg arra terveztem, hogy eredményeket lehessen velük szűrni, matematikai számításokat végezni, adatokat konvertálni. A fejlesztés közben kiderült, hogy ehhez hasonló funkciókra, a műszerek között is szükség van. Rájöttem, hogy a szűrő plug-in-ek külön tartása semmilyen hozzáadott értékkel sem rendelkezik.
A szűrő funkciótól meg fogok szabadulni és a szűrőket műszerként fogom létrehozni.
Cél (target):
Valami ami meg tud jeleníteni, vagy el tud menteni mért eredményeket. Jelenleg két cél eszköz érhető el:
- Digitális megjelenítő: ki tudja írni a mért értéket, továbbá minimum, maximum és átlag értéket is kijelez, változtatható helyiértékkel (pontossággal)
- Grafikon megjelenítő: A mért értéksorozatot grafikonként jeleníti meg, több különböző mérési sorozat megjelenítésére alkalmas, lineáris vagy logaritmikus skálát használva (még nincs teljesen kész)
Kapcsolatok (connections):
Ez nem része a mérési láncnak. Ez a műszerek és a PC közötti kommunikációs interfész. Ami jelenleg elérhető:
- AvrGPIB - Az én saját tervezésű GPIB csatolóm (a fejlesztésről írtam pár cikket korábban)
- IVI VISA - Az iparági szabvány csatoló. Én a Keysight szoftver könyvtárával és egy Keysight USB/GPIB csatolóval próbáltam. Ez egyenlőre még eléggé instabil. További fejlesztés szükséges.
- Soros - Ezt meg is valósítottam meg nem is. Az AvrGPIB ezt használja mint legalsó szoftver réteg, de közvetlenül egyenlőre próbáltam, így ilyenkor lehetnek vele gondok.
Tehát, itt tartok jelenleg. Kipróbáltam a HP 3478A-val:
Majd később a HP 8903B-vel is:
Ez csak egy váltakozó feszültségű szint mérés, a kimenet és a bemenet közvetlenül összekötve, 20-20000Hz-es pásztázás, 1V jelszint. Sajnos ezen látható némi hiba:
Némi módosítással a grafikon (még mindig nem végleges):
Látszik egy 2% körüli hiba. A műszer némi javításra szorul (minimum a táp kondenzátorok cseréjére).
Folytatni akarom a fejlesztést, hozzáadva további műszerek támogatását. Ezen túl is rengeteg ötletem van a program továbbfejlesztésére.
A kód C#.Net-ben készült Visual Studio 2019-el. A kód itt található:
https://gitlab.com/suf/suf-electronics-VirtualInstrument
Bárki akinek tetszik a project, van szabadideje, némi programozási tudása, és szeretne segíteni a fejlesztésben, jelentkezzen nálam, minden segítséget szívesen fogadok.