Kdor je že uporabljal digitalni osciloskop, ve, da v svojem jedru skriva tudi majhen vgrajen računalnik z analogno-digitalnimi pretvorniki (angl. embedded computer with A/D converters), ki si lahko zapomni vsaj sliko signala in ga je navadno mogoče povezati tudi z osebnim računalnikom prek različnih vmesnikov. Podporna elektronika omogoča razne napetostne in frekvenčne prilagoditve, tako da imamo na voljo široko merilno območje.

Komercialne rešitve
Vendar je danes v marsikaterem elektrotehničnem laboratoriju bolj priljubljena nekoliko drugačna rešitev, osciloskop brez lastnega prikazovalnika, ki deluje samo v povezavi z osebnim računalnikom.
Nekateri proizvajalci omogočajo celo razvoj lastne programske opreme zanj, tako da prilagajo programske knjižnice z navodili (na primer: http://tinyurl.com/9wwj557). Po drugi strani so lahko nekateri taki digitalni osciloskopi tudi funkcijski generatorji, ki ustvarijo signale skoraj poljubnih oblik.

Številne, ne preveč drage, najdemo tudi pri več slovenskih trgovcih z elektronskimi komponentami. Cene preprostih digitalnih osciloskopov za PC, s frekvenčnim dosegom do 12 MHz, se gibljejo od okoli 200 evrov naprej; dražji s frekvenčnim dosegom do 30 MHz in več pa stanejo od okoli 500 evrov naprej.

Večina deluje prek tiskalniških (LPT) ali modemskih vrat (RS232), ki pa ju proizvajalci osebnih računalnikov že opuščajo. Novejši in dražji modeli so že prilagojeni za vmesnik USB. Zato moramo pred morebitnim nakupom preveriti, ali je zunanja naprava združljiva z našim računalnikom in morda celo, ali bo združljiva z računalnikom, ki ga bomo lahko kupili v naslednjih letih. V tem pogledu je vmesnik USB edina prava izbira.

Tudi zvočna kartica zna skoraj vse
Za manj zahtevne je morda dovolj tudi zelo preprosta rešitev, ki je približno stokrat cenejša od komercialnih. Za vzorčenje, analizo in generiranje nizkonapetostnih neenosmernih signalov s frekvencami do 192 kHz vsega naštetega v prejšnjem poglavju ne potrebujemo. PC z vgrajeno zvočno kartico z vsaj enim analognim linijskim vhodom (angl. line in) in analognim izhodom (angl. line out) lahko z ustrezno programsko opremo in uporovnim delilnikom postane osciloskop, funkcijski generator in analizator signalov obenem. Nanj lahko v osnovi pripeljemo dva signala hkrati, saj je dvokanalni oziroma »stereo«. Vendar mora biti najvišja napetost signala med -1,4 V in +1,4 V, kar proizvajalci označujejo tudi z 2 Vrms oziroma 2,8 Vpp. Oznaka »pp« pomeni od vrha oziroma maksimuma do drugega vrha oziroma maksimuma signala (angl. peak to peak). Prav zato potrebujemo tudi uporovni delilnik, če želimo na zvočno kartico pripeljati signal v večjem napetostnem obsegu. Ločljivost zajema vhodnih vzorcev je lahko 32-, 24-, 16- ali 8-bitna, pri čemer vsi zvočni procesorji oziroma kartice podpirajo vsaj 16-bitno in 8-bitno.

Uporovni delilnik za obseg od -15 V do 15 V za zvočno kartico z impedanco linijskega vhoda 10 kOhm sestavimo tako, da na primer zaporedno vežemo upora z vrednostmi 8,83 kOhm in 1 kOhm. Potem bo na uporu z vrednostjo 1 kOhm, gledano proti masi, napetost v obsegu med -1,4 V in 1,4 V, kar je ravno obseg, ki ga omogoča zvočna kartica. Vendar velja opozorilo, da mora biti merjena naprava ozemljena, tako kot je PC, da med povratnimi vodniki (mase) ni različnih potencialov. Paziti moramo tudi, da se občasno ne pojavljajo visokonapetostni impulzi, ki lahko hudo poškodujejo računalnik. Take motnje ustvarjajo predvsem elektromotorji in razne tuljave pri vklopu in izklopu. Tak način meritve je primeren predvsem za nizkonapetostne naprave z delovnimi napetostmi do 30 V.

PC lahko uporabimo tudi kot generator izmeničnih signalov z napetostjo od 0 Vpp do 2,8 Vpp. Če želimo doseči večje napetosti, moramo dodati napetostni ojačevalnik, za kar obstaja mnogo rešitev. Lahko na primer izdelamo ojačevalnik v razredu A z enim samim tranzistorjem, nekaj upori in kondenzatorji, ali pa uporabimo ustrezen operacijski ojačevalnik.

Programska oprema
Manj izkušeni lahko za zajem in ogled ter analizo signala uporabijo katero od boljših orodij za urejanje zvoka. Med njimi je tudi Cool Edit, ki ga lahko prenesemo z različnih spletnih strani, ki jih najdemo, če v Google vtipkamo »Cool Edit«. Program na zaslonu natančno označi relativni čas zajema posameznih vzorcev glede na začetek zajemanja (0,00 ms), iz česar lahko izračunamo, podobno kot na skali osciloskopa preberemo frekvenco signala, hkrati pa vidimo tudi njegovo obliko. Vrednost napetosti signala lahko izračunamo neposredno iz digitalizirane vrednosti vzorca, tako da upoštevamo napetostni obseg, ki je na voljo (na primer -1,4 V = -32768 … 0 V = 0 … +1,4 V = 32767, če uporabljamo 16-bitno vzorčenje).

A večina si bo želela sama obdelati zajeti vzorec. V ta namen se splača uporabiti funkcije Microsoftove zastonjske programske knjižnice DirectX (http://developer.microsoft.com) in katerega od programskih jezikov iz Microsoftovega razvojnega okolja Visual Studio. Pri Microsoftu priporočajo uporabo jezika C++, saj so primeri pripravljeni le zanj, a je Visual Basic veliko bolj priljubljen. Zato je primer v tem članku v Visual Basicu. Z njim je bilo kar veliko dela, saj je bilo treba ustrezne vzorce programske kode za Visual Basic iskati po raznih spletnih forumih in nato izdelati kakovostno rešitev, ki deluje brez napak.

Prav je, da nekaj besed namenimo tudi nekoliko podrobnejši razlagi delovanja. Najprej moramo Visual Basic.netu pojasniti, da naj uporablja knjižnico DirectX in še posebej modul DirectSound. Ko odpremo nov projekt, najprej med zunanje reference vnesemo poti do vseh potrebnih elementov knjižnice DirectX. Nato v programski kodi uporabimo ukaza za uvoz referenc posameznih funkcij »Imports Microsoft.DirectX« in »Imports Microsoft.DirectX.DirectSound«. Zdaj je dobro, če uporabniku omogočimo izbiro, katero zvočno kartico (če jih je več) in kateri njen vhod bo uporabil za zajem vzorcev. Če tega ne želimo oziroma želimo, da je vedno na voljo samo prednastavljena naprava v Windows, lahko kar v programu »zapečemo« prednastavljeni gonilnik (koda 0).

Naslednji korak je priprava delovnega pomnilnika, kamor bo zvočni procesor shranjeval pakete zvočnih vzorcev. Del glavnega pomnilnika računalnika (na primer 100 MB) organiziramo v niz izravnalnih pomnilnikov (angl. buffers), ki jih zvočni procesor polni ciklično, tako da vsebino prvega »povozi«, za tem, ko zapolni zadnjega. Pri tem so našemu programu za obdelavo hkrati na voljo vsi izravnalni pomnilniki, razen tistega, ki ga trenutno polni zvočni procesor. Ker ne želimo izgubljati vzorcev, mora biti program dovolj hiter, da te obdela, preden jih zvočni procesor »povozi«.

Abstrakcijska raven DirectX nam omogoča, da po vzpostavitvi cikličnega niza izravnalnih pomnilnikov s posebno funkcijo s povratnim klicem (angl. callback function) zaženemo samodejno zajemanje vzorcev iz linijskega ali mikrofonskega vhoda. Velja le opozorilo, da je mikrofonski vhod pri PC navadno samo enokanalen.

Ostane nam le še prikaz žive slike signala na zaslonu, pri katerem je dobro, če programsko izvedemo sinhronizacijo na prvo fronto signala, tako da pred začetkom izrisa prve periode počakamo, dokler signal ne doseže določene ravni. Delovanje je povsem analogno delovanju sinhronizacije v osciloskopu, le da je v PC-ju izvedeno programsko.

Ni odveč omeniti, da z nekoliko matematične telovadbe (enačbe za Fourierjevo ali Lagrangeevo transformacijo lahko dobimo tudi na Wikipedii) izdelamo spektralni analizator, ki pokaže frekvenčni spekter signala.

Merilnik temperature
Zamisel je eno, uresničitev v praksi pa popolnoma nekaj drugega. Zato smo se odločili domači osciloskop tudi praktično preizkusiti. Na mikrofonski vhod zvočne kartice smo prek uporovnega delilnika povezali Vellemanov komplet za sestavljanje K6001 (http://tinyurl.com/b4z54ap) oziroma merilnik temperature z impulzno širinsko modulacijo. Zvočno kartico smo uporabili za merjenje širine impulza, iz te pa smo lahko na pol desetinke stopinje natančno določili temperaturo prostora. Za napajanje K6001 smo uporabili kar cenen 2-amperski 12-voltni stabilizirani napajalnik za v vtičnico, za povezavo z zvočno kartico pa smo potrebovali le dva upora, ki sta signal iz obsega med 0 V in 12 V pretvorila na obseg med 0 V in 0,1 V. Vezje temperaturnega tipala je dovolj majhno, da smo ga lahko vgradili kar v prazno plastično škatlico za vijake.


Izračun uporovnega delilnika

Denimo, če želimo napetost (Uv) iz obsega od -15 V do 15 V pretvoriti v izhodno napetost (Ui) v obsegu od -1,4 V od 1,4 V, moramo uporabiti uporovni delilnik iz uporov R1 in R2, pri čemer zvočna kartica napetost odjema iz upora R2. Pri izračunu uporovnega delilnika je dobro upoštevati tudi vhodno upornost (impedanco) zvočne kartice, ki znaša okoli 10 k Ohm in jo označimo z RSB.

Najprej izračunamo tok skozi uporovni delilnik po naslednji enačbi: »I = Ui / RX«, kjer je RX skupna upornost R2 in RSB, kjer je napetost v obsegu od -1,4 V do 1,4 V. »RX = 1 / (1/R2 + 1/RSB)«. Pri nadaljnjem izračunu je dovolj, da upoštevamo zgornjo mejo vhodne napetosti, ne glede na predznak. Pri tem poznamo tudi tok skozi RSB, ki je: ISB = Ui / RSB = 1,4 V / 10 kOhm = 0,14 mA. Zdaj lahko izračunamo skupni tok skozi uporovni delilnik. Ker sta upora R2 in RSB vezana vzporedno, imata enako napetost. Zato velja: I2 * R2 = RSB * ISB in tudi: »I = I2 + ISB«. Velja tudi »I = Uv / R«, kjer je R skupna upornost celotnega napetostnega delilnika, ki znaša: R = R1 + RX. Hkrati je očitno, da je Ui/RX = UV/R, kjer lahko izračunamo: »(Uv-Ui) / Uv = R1 / (R1 + 1 / (1 / R2 + 1 / RSB))«. To pomeni, da si lahko enega od R1 ali R2 poljubno izberemo, drugega pa izračunamo. Če na primer izberemo R2 = 1 k Ohm, je I2 = 1,4 V / 1 k Ohm = 1,4 mA. Potem je »I = I2 + ISB = 1,54 mA« in je R1 = (Uv-Ui) / I = (15 V – 1,4 V) / 1,54 mA = 8,83 kOhm.

Še opozorilo! Če namesto linijskega vhoda zvočne kartice uporabimo občutljivejšega mikrofonskega, moramo upoštevati, da je njegova vhodna upornost okoli 4 kOhm, napetostni obseg pa okoli 0,1 V oziroma 100 mV.

Moj mikro, Marec April 2013 | dr. Simon Vavpotič