Elektroniikan simuloiminen ilmaisella LTspice-ohjelmalla

Tässä on jo pitemmän aikaa pitänyt rustata jotain yleishyödyllistä muille elektroniikan harrastajille, mutta aihetta ei ole meinannut löytyä. Nyt kuitenkin keksin, mikä on tärkeää jokaiselle elektronörtille, kun ruvetaan suunnittelemaan omia tuotteita. Nimittäin simulaattorin hallitseminen. Markkinoilla on muutamia kaupallisia elektroniikkasimulaattoreita mm. MicroCap, josta voi ladata student-version (rajoitetut komponentit ja komponenttien määrä muistaakseni maksimissaan 50), mutta miksi tyytyä opiskelijaversioon, kun voi käyttää Linear Technologiesin täysiversioista LTspiceä.

Sisältöä:
1. Lataaminen ja asentaminen
2. Kytkennän piirtäminen
3. Transient-analyysi
4. AC-analyysi
5. DC-Sweep
6. Spice Directive tai makro
7. Erilaiset pulssimuodot

Ohjelman voi ladata täältä. Asentaminen on perus next, next, next asentamista. Tämä softa muuten toimii myös ubuntussa Winen välityksellä.

[size=150]2. Kytkennän piirtäminen[/size]

Kuten jo varmaan huomasitte, tämän ohjelman käyttöliittymä on joltain kivikaudelta :smiley: Toisaalta, kun nämä kaikki epäjohdonmukaisuudet (CTRL + Z ei ole kumoa vaan zoom) oppii ja hyväksyy, niin tämä on melko tehokas ohjelma. Mutta asiaan…

LTspicen perusikkuna näyttää tältä:
Power+Transistors+Resistors+Capasitors.PNG

Tutustutaan ensin LTspicen perustyökaluihin, jotka löytyvät perusikkunan oikeasta yläkulmasta.Työkalut vasemmalta oikealle:
1. Wire - Tällä vedetään kontaktit komponenttien jalkojen välille. (Pikanäppäin: F3)
2. Ground (GND) - Maapiste (Pikanäppäin: G). Maapiste pitää olla jokaisessa simuloitavassa kytkennässä!
3. Label Net - Tätä käytetään vetojen nimeämiseen. Esim vahvistimen käyttöjännite nimetään +45V. (Pikanäppäin: F4)
4. Resistor - Pikakuvake vastukseen (Pikanäppäin: R)
5. Capasitor - Pikakuvake kondensaattoriin (Pikanäppäin: C)
6. Inductor - Pikakuvake kelaan (Pikanäppäin: L)
7. Diode - Pikakuvake Diodiin (Pikanäppäin: D)
8. Component - Täältä valitaan kaikki vähänkin eksoottisemmat komponentit jännitelähteestä operaatiovahvistimiin. (Pikanäppäin: F2)
9. Move - Tällä kädellä voi siirtää komponentteja kytkennässä ilman, että vedetty johto lähtee mukaan. (Pikanäppäin: F7)
10. Drag - Tällä kädellä voi siirtää komponentteja kytkennässä katkaisematta kontakteja jo kytkettyihin komponentteihin. (Pikanäppäin: F8)
11. Undo - Kumoa (Pikanäppäin: F9)
12. Redo - Tee uudelleen (Pikanäppäin: Shift + F9)
13. Rotate - Pyörittää komponenttia (pikanäppäin: kun komponentti valittu, CTRL + R)
14. Mirror - Peilaa komponentin pystyakselin suhteen.
15. Text - Tekstin kirjoitus työkalu
16. Spice Directive - Tämän avulla kirjoitetaan makroja.

Komponenttien poistaminen tapahtuu painamalla deleteä tai F5:sta, jolloin kursori muuttuu saksien näiköiseksi.

Komponentin kopioiminen tapahtuu CTRL+C tai F6-näppäimellä.

Jos halutaan poistaa tai siirtää useita komponentteja yhtä aikaa, niin valitaan ensin se työkalu ja sitten ‘maalataan’ muokattavan alueen yli.

Piirtoaluetta voidaan zoomata sisään tai ulos hiiren rullalla.

Nyt alkaa perustyökalut olla hallussa ja pikanäppäimet muistissa voidaan siirtyä itse asiaan. Aloitetaan piirtämällä perus astabiilimultivibraattori, josta saadaan hyvä transient-analyysin kohde.

Piirretään ensin jännitelähde painamalla F2 tai valitsemalla työkalupalkista ‘component’ napin. Kirjoitetaan hakukenttään ‘vol’ ja painetaan OK.
Sijoitetaan jännitelähde piirtoalueen vasempaan yläkulmaan. Hiiren oikealla napilla saat jännitelähteen katoamaan kursorista.

Nyt voimme ruveta piirtämään varsinaista kytkentään. Mennään komponenttivalintaan ja kirjoitetaan hakukenttään ‘npn’ ja valitaan OK. Lisätään kaksi ja lätkitään ne seuraavasti kytkentään. Lisätään myös neljä vastusta (pikanäppäin R tai ‘resistor’) ja kaksi kondensaattoria (pikanäppäin C tai ‘capasitor’). Käännetään konkat painamalla CTRL + R.

Power+Transistors+Resistors+Capasitors.PNG

Lisätään kaksi maapistettä transistorien emitterien alapuolelle ja ‘VCC’ niminen label käyttöjännitelinjaan. Nyt voimme kytkeä komponentit käyttämällä ‘wire’ työkalua (F3). Kytketään komponentit seuraavasti:

Power+Transistors+Resistors+Capasitors+Grounds+VCC+Vedot+Arvot.PNG

Vinottaiset vedot pitää tehdä vähän hankalasti. Sinun pitää ensin tehdä normaalit vedot ja sitten ottaa ‘drag’ -työkalu, jolla voit väännellä ja käännellä vetoja.
Nyt kytkentämme on melkein valmis simuloitavaksi. Enään pitää antaa komponenteille arvot. Arvojen määrittäminen tapahtuu hiiren oikeaa klikkaamalla komponentin päälle. Annetaan komponenteille
seuraavat arvot:
Jännitelähde: 12V
Vastukset: R1&R4 = 1k, R2&R3 = 100k
Kondensaattorit: 1u
Transistorit: -> Pick new transistor -> BC547

Olemme tehneet ensimmäisen kytkennän, jonka toimivuus tutkitaan seuraavaksi.

[size=150]3. Transient-analyysi[/size]

Transient-analyysi on vähän sama, kuin mittaisit oskilloskoopilla. Ts. se kertoo jonkun tietyn pisteen jännitteen ajan funktiona (jännite = y-akseli ja aika = x-akseli). Niinkuin oskilloskoopille, myös transient-analyysille pitää määrittää alkuarvoja. Nämä asetukset määritetään seuraavasti. Valitse yläpalkista Simulate -> Edit Simulation cmd. Tässä ikkunassa annetaan kaikki määritykset eri analyyseille. Nyt meidän vain pitää huolehtia, että olemme transient -välilehdellä. Transient-analyysin asetukset ovat seuraavat:
Stop time - Simuloinnin päättymisajankohta
Time to start… - Mistä hetkestä lähtien aloitetaan tallentamaan dataa. Tätä ominaisuutta käytetään esim. jos simuloimme jonkun oskillaattorin toimintaa ja halutaan tutkia stabiloitunutta signaalia. Kun määritämme aloituskohdan oskillaattorin käynnistymisen jälkeen, ei meille tule oskillaattorin käynnistymishetkeä kuviin ollenkaan.
Maximum Timestep - Tämä on simuloinnin resoluutio, eli kuinka pienillä aikahypyillä datapiste tallennetaan. Huom. Mitä enemmän sinulla on datapisteitä, sitä hitaammin ohjelma saa simuloitua kytkennän.
Muista asetuksista meidän ei tarvitse murehtia tässä vaiheessa. Määritä transient-analyysi seuraavasti:

TransientSettings1.PNG

Lätkäise transient-analyysin teksti jonnekinpäin kytkentääsi ja valitse yläpalkista ‘run’ (mies, joka juoksee).

Ruutusi pitäisi nyt olla jakautuneena kahtia. Toisessa ruudussa näkyy kytkentäsi ja toisessa ‘oskilloskoopin’ näyttö, jossa aika-akseli on skaalautunut kuten edellä määritettiin. Varsinainen simulointi on nyt jo tehty. Enään pitää valita mitkä signaalit haluamme näyttää ruudulla. Valitse jomman kumman transistorin kollektori mittauspisteeksi.

Silmämääräisesti voimme arvioida multivibraattorin taajuudeksti noin 7 Hz. Voimme kuitenkin tutkia simuloitua signaalia myös tarkemmin. Suurennetaan simulaatioruutu kokoruuduksi ja zoomataan vähän reilu yksi jakso (zoomaus tapahtuu hiirellä ‘vetämällä’) ruutuun. Nyt kuva on iso, mutta ilman gridiä, arvojen hahmottaminen on vaikeaa, joten lisää grid valikosta Plot Settings -> Grid. Nyt lisätään kursorit kuvaan. Paina hiiren oikealla V(n004):n päälle. Tässä ikkunassa voit määrittää kuvaajalle värin ja kursorit. Anna kuvaajalle seuraavat arvot:

Simulate3.PNG

Siirrä hiiri kuvaan tulleiden kursoreiden päälle ja raahaa kursorit vierekkäisille nouseville reunoille, jolloin voimme lukea draft-ikkunasta mm. taajuuden.

Simulate4.PNG

Katsotaan vielä mitä FFT antaa ulostulosignaalista pihalle. Valitse View -> FFT. Aukeavasta ikkunasta valitse se sama signaali, joka meillä oli äsken käsittelyssä (minulla V(n004)). Ei tarvitse muuttaa mitään muita arvoja. Painamalla OK, ohjelma laskee FastFourierTransfer -muunnokset signaalista. Ikäänkuin katsotaan spektrianalysaattorilla meidän signaalia. Oma tuotos näyttää tältä:

Kuvaan voidaan taas liittää kursorit samalla tavalla kuin perusikkunaankin. FFT:llä voidaan tutkia mm. harmoonisia signaaleja.

[size=150]4. AC-analyysi[/size]

Tässä esimerkissä luodaan perusvahvistin, jolle asetetaan ylärajataajuuden n. 25 kHz:n. Valitse vasemmasta yläkulmasta ‘New schematic’ ja aloitetaan kytkennän piirtäminen luomalla kaksipuolinen jännitelähde. Hae komponenttivalikosta jännitelähde ja lätkäise niitä kaksi peräkkäin kytkentäkaavioon. Anna molemmille arvoksi 12V. Lisää ‘labelit’ +12V ja -12V ja lisää maapiste jännitelähteiden väliin seuraavan kuvan mukaisesti.

AcPower.PNG

Nyt valitse komponenttivalikosta LT1001 -operaatiovahvistin ja lisää se kytkentäkaavioon. Lisää operaatiovahvistimelle käyttöjännitteet ‘labelien’ avulla.

Nyt lisätään vastukset, kondensaattorit ja signaalilähde kytkentään ja vedetään vedot.

Nyt hieman lasketaan. Vahvistimen vahvistus pitää olla 100 ja ylärajataajuushan määriteltiin noin 25 kHz:iin. Kääntävän vahvistimen vahvistuksen kaavahan on Au=Rf / Ri eli takaisinkytkentävastuksen suhde sisääntulovastukseen. Meidän kytkennässä siis
Au = R2 / R1 -> 100 = R2 / R1 --> R2 = 100 * R1. Eli R2:n pitää olla satakertainen R1:een verrattuna, joten Valitaan R1 = 1k ja R2 = 100k. R3 on pelkkä kuormavastus, joten annetaan sille arvoksi vaikka 1k.
Nyt pitää mitoittaa tuo alipäästökondensaattorin arvo sopivaksi. Rajataajuus on määritelty
siksi taajuudeksi, jolloin ulostulon teho on tippunut 3 dB (jännite -6dB). Rajataajuus lasketaan kaavalla fr = 1 / (2PiR*C), jossa R=R2 ja C=C1. Lasketaan C ulos kaavasta, jolloin kaava on C = 1 / (2piR*fr). Syötetään arvot kaavaan, jolloin C:n arvoksi saadaan 63,7 pF. Kun syötät kapasitanssin arvon kondensaattoriin, niin pilkkua ei saa käyttää erottimena, vaan pitää käyttää pistettä. Kytkentämme pitäisi nyt näyttää tältä:

Simulate3.PNG

Seuraavaksi määritellään signaalilähde käyttökuntoon. LTspicessä tuolla yhdellä lähteellä voidaan toteuttaa melkein kaikki signaalit, mitä tarvitaan. Tässä tapauksessa generaattorille annetaan vain ‘Small signal analysis’ -arvot. Paina hiiren oikealla generaattorin päälle ja valitse Advanced.Ikkunan oikeassa reunassa on ‘Small signal AC analysis’ -alue. Aseta ‘AC amplitude’ -arvoksi 1 ja paina OK.

GeneratorAdvanced.PNG

Seuraavaksi määritellään AC-analyysin arvot. Jos Transient-analyysi on ikäänkuin oskilloskooppi, niin AC-analyysi on sitten ehkä Spektrianalysaattori. Ts. AC-analyysissä mitataan jännitettä taajuuden funktiona (Jännite = Y-akseli ja Taajuus = X-akseli). LTspicessa AC-analyysi otetaan käyttöön seuraavasti. Navigoi ‘Simulate’ -> ‘Edit Simulate Cmd’ -> välilehti ‘AC Analysis’. AC-analyysin asetukset ovat:
Type of sweep - Tämä määrittää X-akselin jaon. Decade ja Octave ovat logaritmisia asteikkoja ja linear on luonnollisesti lineaarinen asteikko.
Number of points… - Tällä määritetään kuinka monta mittausta start ja stop-taajuuksien välillä.
Start frequency - Tällä määritetään X-akselin alkupiste.
Stop frequency - Tällä määritetään X-akselin loppupiste.

Määritetään meidän AC-analyysi seuraavaksi:
Type of sweep: Decade
Number of points: 10 000
Start freq: 10
Stop freq: 50 000

Valitse OK ja lätkäise AC-analyysin määrittely kytkentäkaavioon. Nyt meidän kytkentä pitäisi näyttää tältä.

Ajetaan simulaatio.

Tökätään ‘mittapää’ vahvistimen ulostuloon, jolloin simulaatioikkunaan tulee kuvaaja.

Power+Transistors+Resistors+Capasitors+Grounds+VCC+Vedot+Arvot.PNG

Suurenna simulaatioikkuna koko ruutuun ja tutkitaan signaalia lähemmin. Kuvassa näkyy kaksi kuvaajaa. Katkoviivalla olevat kuvaajaa kertoo kytkennän vaihesiirron, jonka asteikko on oikeassa reunassa. Yhtenäinen viiva kertoo kuvaajan vahvistuksen. Kuten huomaamme, ainakin vahvistuksen säätö on mennyt oikein, koska signaalitaso on 40 dB:n kohdalla (jännitteellä 20 dB vastaa kymmenkertaistumista ja 40 dB satakertaistumista).
Kuitenkin rajataajuus on pahasti pielessä. 34 dB:n taso (40 dB - 6 dB) saavutetaan jo noin 11 kHz:n taajuudella. Tämä johtuu siitä, että kyseinen vahvistin ei ole suuniteltu ‘korkeille’ taajuuksille. Seuraava kuva on napattu datalehdeltä, mistä nähdään vahvistimen maksimivahvistus taajuuden funktiona:

Simulate4.PNG

Vaihdetaan vahvistin LT1022:si ja ajetaan simulaatio.

TransientSettings1.PNG

Nyt tilanne on jo paljon parempi. -6 dB:n raja osuu noin 32 kHz:n taajuudelle. Ollaan vielä 7 kHz:ä pielessä, mutta jos kondensaattorin arvoksi vaihtaa 68 pF (RE-sarjan mukaan) kondensaattorin, niin -6 dB:n raja on jo noin 30 kHz kohdalla.
Tutkitaan simulaation muita ominaisuuksia. Muutetaan kytkennän vahvistukseksi 10, antamalla R2:lle arvo 10k. Määritellään signaalilähde antamaan sinisignaalia, jonka taajuus on 1 kHz ja amplitudi 100 mV.

Simulate3.PNG

Määrittele Transient-analyysi seuraaavasti:
Stop Time -> 10m
Start saving data -> 0
Time Step -> 1u

Kun lätkäiset asetukset kytkentäkaavioon, niin huomaat, että AC-analyysin määritystekstin eteen tulee puolipiste, joka asettaa AC-analyysin ei-aktiiviseksi. Nimetään vielä ulostulo ja sisääntulo ‘label’ -työkalulla.

Suorita simulaatio ja määritä mitattaviksi signaaleiksi vahvistimen ulostulo ja generaattorin ±napa. Nyt kuvaajilla on järkevät nimet, joka helpottaa simuloinnin tuloksen tutkimista.

AcPower.PNG

Jos jostain syystä haluamme tutkia esim. kahden signaalin summaa, erotusta, tuloa tms. se onnistuu seuraavasti. Valitse ylhäältä ‘Plot Settings’ -> ‘Add Trace’ tai CTRL + A. Auenneessa ikkunassa on uuden kuvaajan kaikki mahdollinen data. Tehdään kuvaaja, joka on outputin ja inputin erotus.

Simulate4.PNG

GeneratorAdvanced.PNG

Tutkitaan vielä kuormavastuksen R3 tehohäviö. Laitetaan tehohäviön kuvaaja omaan ikkunaan. Valitse ylhäältä ‘Plot Settings’ -> ‘Add Plot Pane’. Nyt paina uuden ikkunan päällä hiiren oikealla ja valitse ‘Add Trace’. Tehohan on jännitteen ja virran tulo, joten uuden kuvaajan arvoksi pitää laittaa V(out) * I(R3).

Negatiivista tehoa?? Mielenkiintoista. Lisätään samaan ikkunaan kuvaajat I(R3) ja V(out) ja tutkitaan, mistä tämä negatiivinen teho tulee.

Ongelma ratkaistu. Ulostulojännite ja -virta ovat vastakkaisvaiheiset, jolloin tehon tulolausekkeen toinen arvo on jatkuvasti negatiivinen. Tästä syystä teho on jatkuvasti negatiivinen.

[size=150]5. DC-Sweep[/size]

DC-sweep-analyysisllä laskee toimintapisteen määritetyllä pyyhkäisyllä. Esim. asetetaan syöttöjännite pyyhkäisemään 0->10 volttiin yhden voltin askelluksella. Simulaatio piirtää sinulle mitattavan toimintapisteen pyyhkäistyn DC-jännitteen funktiona.
Tutkitaan parin eri diodin ominaiskäyrää DC-sweepin avulla.

Piirrä seuraava kytkentä.

TransientSettings1.PNG

Määrittele DC-Sweep-analyysi.

Power+Transistors+Resistors+Capasitors.PNG

Aja analyysi ja vallitse mittapisteeksi molempien diodien anodi.

Power+Transistors+Resistors+Capasitors+Grounds+VCC+Vedot+Arvot.PNG

Tässä kuvassa näkyy hienosti normaalin ja schotky-diodin ero. Normaalin kynnysjännite on noin 0,6 - 0,7 V ja schotkydiodin kynnysjännite on noin 0,1 - 0,2 V. Eli DC-sweep-analyysi laskee diodien jännitteen maatavasten 1 mV:n välein ja piirtää siitä kuvaajan. Nyt voit myös lisätä diodien virtojen kuvaajat jne. mutta tämän pitäisi selventää, kuinka analyysiä käytetään ja mitä sillä tehdään.

[size=150]6. Spice Directive eli ‘makro’[/size]

Näillä makroilla (virallinen nimi on Spice directive, mutta olen tottunut käyttämään näistä makronimitystä) voidaan asettaa erinäisiä asetuksia kytkentään. Ohjeet näiden makrojen käyttöön löytyy LTspicen omasta helpistä kohdasta LTspice -> Dot Commands. Tutustutaan yhteen makroon nimittäin ‘.IC’ eli Initial Condition. Piirretään kytkentä, jossa on kondensaattori ja vastus rinnakkain. Kondensaattorin kapasitanssi on vaikka 10 uF ja vastuksen arvo on 1k. Tutkitaan kondensaattorin purkauskäyrää. Eli piirrä seuraava kytkentä ja määritä transientanalyysi (voit myös kirjoittaa transientanalyysin määrittelys suoraan käyttämällä text/Spice directive -työkalua).

GeneratorAdvanced.PNG

Nyt jos ajetaan transientanalyysi, niin meille tulee pelkkä suora viiva kuvaajaksi. .IC-komennolla voimme antaa kondensaattorille alkuarvon, joka vastaa täyteen ladattua kondensaattoria. Näin saamme kondensaattorin purkauskäyrän piirrettyä. Makron syntaksi on seuraava: .ic V(Vcc)=10V , jossa Vcc on sen ‘netin’ nimi, johon tietty jännite halutaan kytkeä. Nyt, kun ajamme simulaation, saamme kondensaattorin purkauskäyrän kuvaajaksi.

Kuvaaja näyttää oikealta, koska kondensaattorin aikavakio t (tau) on kapasitanssin ja resistanssin tulo, joten t=10u1k=10ms. Ja kondensaattori latautuu/purkautuu yhden taun aikana noin 63 %, joten 10 ms:n kohdalla kondensaattorin jännite pitäisi olla 10V-10V0,63=3.7V. Voimme siis todeta, että makro toimii oikein.
Korvataan edellisen kytkennän vastus kelalla, jonka induktanssi on 1uH ja ajetaan simulaatio. Saamme upean oskillattorin, joka värähtelee noin 50 kHz taajuudella ja joka vaimenee lähelle nollaa.

AcPower.PNG

Huomattavaa tässä simulaatiossa on, että kytkennän jänniteakseli on huomattavan korkealla. Tämä johtuu siitä, että simulaattori ymmärtää komponentit ideaalisena. Lisää kondensaattoriin ja kelaan sisäista sarjaresistanssia noin 10 milliohmin verran ja aja simulaatio uudelleen. Katso mitä se vaikuttaa.

[size=150]7. Erilaiset pulssimuodot[/size]

Joskus kytkentään pitää lisätä erilaisia pulssimuotoja, kuten kolmiaalto, sahalaita-aalto ja eri reunajyrkkyyksillä olevia kanttiaaltoja. Ne luodaan samalla ‘voltage’ -komponentilla, millä luodaan käyttöjännitteet. Seuraava kuva selventävä’ asiaa.

Siniaallolle voidaan määrittää DC-offsetti, ampitudi, taajuus, Viive signaalin aloittamiseen, signaalin vaimeneminen (theta arvo), vaihesiirto (Phi(degree)) ja jaksojen määrä.

Muista generaattoreista tai niiden hyödyllisyydestä en oikein osaa sanoa mitään. Ehkä tuosta SFFM-generaattorista voi olla jotain hyötyä, kun sillä pystyy luomaan moduloitua signaalia, mutta eipä silläkään taida olla kunnollista käyttökohdetta ainakaan harrastajatasolla.

Toivottavasti tästä oppaasta on jollekin hyötyä. Itse olen kokenut simulaattoriohjelmat erittäin hyödyllisiksi, koska ihan peruskytkentöjäkin suuniteltaessa voi helposti tulla ajatusvirhe, jonka löytämiseen voi mennä paljon aikaa. Tämä ei kuitenkaan maksa mitään ja on ihan kiva lelu jokaiselle elektroniikan harrastajalle.

Tomi Leinonen
Power.PNG
MakroSkema.PNG



LT1001OpenLoopVoltageGain.PNG
GeneratorAdvancedSine.PNG

DC-Skema.PNG

AmplifierTransientSettings.PNG



AmplifierTransienCompleted.PNG
AddTraceDifference.PNG
AcPower+Opamp+Passive+Values.PNG
AcCompleted+Analysis.PNG


Erittäin hyvä artikkeli!
LTspicestä löytyy myös valmiina useita esimerkkikytkentöjä (Educational) sekä (lähes) kaikki LT:n piirit ja niiden esimerkkikytkennät (jigs) joita voi muutella haluamallaan tavalla.

Tällainen lista SPICE-simulaatiomalleista osui silmään:

zone.ni.com/devzone/cda/tut/p/id/5377

Pikanäppäimiä pystyy myös muokkaamaan enemmän hermoja säästäviksi. Lisätietoa löytyy tämän sivun lopusta.