LTSpice

Układy półprzewodnikowe pełniące ważne funkcje pomocnicze w układach lampowych.

Moderatorzy: gsmok, tszczesn, Romekd, Einherjer, OTLamp

Einherjer
2500...3124 posty
2500...3124 posty
Posty: 2536
Rejestracja: pt, 22 stycznia 2010, 18:34
Lokalizacja: Wałbrzych

LTSpice

Post autor: Einherjer »

Postanowiłem utworzyć temat zbierający różne przydatne informacje na temat wykorzystania programu LTSpice do symulacji układów audio, zwłaszcza tych lampowych i innych retro. Dlaczego LTSpice? Jest całkowicie darmowy i bardzo rozpowszechniony wśród hobbystów. Nie będę opisywał podstaw jego obsługi, te są dość intuicyjne i dobrze opisane w wielu miejscach.
Zaczniemy od modeli lamp. LTSpice na starcie zawiera skromną bibliotekę modeli różnych elementów elektronicznych, ale nie ma wśród nich lamp. Nie ma też określonej kanonicznej struktury modeli lamp, inaczej niż to jest w przypadku choćby tranzystorów bipolarnych, gdzie każdy typ tranzystora jest opisany zestawem parametrów dla wbudowanego modelu. Są za to symbole triody, tetrody i pentody, znajdziemy je w podkatalogu "[Misc]", które możemy dodać do schematu i podpiąć do nich własne modele. Modele te są w formie "podukładów" (subcircuit), zawierających elementy bierne oraz sterowane źródła napięciowe i prądowe, które mają za zadanie modelować zachowanie określonej lampy. Na początek polecam ten artykuł: http://www.normankoren.com/Audio/Tubemo ... ticle.html autorstwa Normana Korena. Jego model triody jest bardzo rozpowszechniony z racji całkiem dobrej dokładności. Gorzej jest z tetrodami. O ile charakterystyki anodowe są całkiem dobrze odwzorowane, o tyle prąd siatki drugiej jest odwzorowany w sposób bardzo uproszczony, nie zależy on bowiem od napięcia anody. Model Korena zakłada, że siatka trzecia jest zwarta z katodą, nie ma więc osobnego modelu pentody. Ogólnie unikam korzystania z tych modeli dla tetrod i pentod. Załączam plik "TubeIM.lib", który zawiera spory zbiór modeli, głównie lamp rosyjskich. Krąży on w internecie od dłuższego czasu i nawet nie pamiętam skąd konkretnie go mam, na naszym forum też na pewno już był. W przypadku triod (i pentod połączonych w triodę) są to w większości modele Korena, z pozostałych nie korzystam.
Drugą ciekawą bibliotekę modeli możemy znaleźć na stronie Ronalda Dekkera, konstruktora charakterografu uTracer https://www.dos4ever.com/uTracer3/uTracer3_pag14.html Są to modele bazujące na pomiarach lamp przy pomocy uTracera. Korzystają one z ulepszonych modeli lamp wielosiatkowych opracowanych przez Derka Reefmana i bardzo profesjonalnie opisanych w artykule https://www.dos4ever.com/uTracer3/Theory.pdf. Uwzględniają one nawet wtórną emisję! Nie kojarzę natomiast modelu, który w realistyczny sposób uwzględniałby prąd siatki pierwszej, zwykle jest tylko dioda między siatką a katodą, która zaczyna przewodzić przy dodatnim napięciu siatki.
Należy również wspomnieć, że na forum diyaudio.com jest bardzo długi (159 stron obecnie!) wątek dotyczący modeli lamp https://www.diyaudio.com/community/thre ... ls.243950/
Pliki z bibliotekami modeli mają zwykle rozszerzenie .lib albo .inc, ale są to pliki tekstowe i może je otworzyć w notatniku czy innym edytorze tekstu i przejrzeć.

No dobrze. Mamy już nasz plik z biblioteką modeli (przykładowo "TubeIM.lib") i co dalej? Najprościej jest go skopiować do tego samego katalogu co plik z naszą symulacją (.asc) a potem w LTSpice klawiszem "s" dodać "SPICE directive" o treści ".include TubeIM.lib". Gdy dodamy nowy symbol triody do schematu, zobaczymy, że ma on oznaczenie "U1" (albo kolejne) i wartość "Triode". Klikamy prawym przyciskiem na "Triode" i zmieniamy na interesujący nas model lampy, na przykład "6N16b" (SPICE nie rozróżnia wielkości znaków, "6n16B" też zadziała). I to tyle, odpalamy symulację i sprawdzamy czy wyniki są sensowne.
Zrzut ekranu z 2021-12-26 21-47-25.png
Na koniec tego odcinka kilka luźnych uwag:
  • Niektóre modele tworzone są w oparciu o karty katalogowe, inne na bazie zmierzonych charakterystyk, więc między różnymi modelami jednego typu lampy mogą być spore różnice, nawet jeśli oba poprawnie odwzorowują swoje dane wejściowe.
  • Większość modeli uwzględnia pojemności międzyelektrodowe, zazwyczaj wartości są spisane z karty katalogowej, ale widziałem takie, w których dodano na przykład 1 pF pojemności montażowej. Warto to sprawdzić. Modele są zwykle pojedyncze, więc pojemności pomiędzy poszczególnymi systemami lamp wielosystemowych (podwójne triody etc.) musimy sobie dodać osobno na schemacie, jeśli są z jakiegoś powodu dla nas istotne.
  • Nigdy nie próbowałem symulować układów radiowych, nie mam pojęcia na ile ma to sens z dostępnymi modelami lamp i co jeszcze należałoby w nich uwzględnić.
  • Czasami dołączenie idealnego źródła napięciowego do siatki pierwszej może powodować problemy z symulacją w dziedzinie czasu (bardzo powolne obliczenia). Dodanie rezystancji szeregowej zwykle pomaga.
  • W zasadzie żaden model nie oddaje poprawnie zachowania lampy blisko zatkania albo w nietypowych warunkach jak bardzo niskie napięcie anodowe. Z symulacji EF86 w "starved operation" raczej nic sensownego nie wyjdzie. Tak samo zniekształcenia skrośne w klasie B też nie będą zbyt realistycznie oddane.
Załączniki
TubeIM.zip
(10.15 KiB) Pobrany 169 razy
Awatar użytkownika
Tomek Janiszewski
3125...6249 postów
3125...6249 postów
Posty: 5263
Rejestracja: śr, 19 listopada 2008, 15:18

Re: LTSpice

Post autor: Tomek Janiszewski »

Dzięki, może conieco się przyda. Pełno tu nekrofilskich, pardon, audiofilskich lamp w rodzaju 6N8S, niestety na śmieciówki z ECH81 i EBF89 na czele a nawet selektody w rodzaju EF89 nie ma co liczyć. Bo kogo w dzisiejszych czasach interesują inne układy lampowe niż wzmacniacze audio? :( Selektodę zapewne dałoby się zamodelować jako równoległe połączenie przynajmniej dwóch pentod różniących się napięciem odcięcia siatki pierwszej. Ale jak zamodelować heptodę? Przyszłoby zapewne rozwinąć model pentody tak aby zjawisko dopływu powrotnego do siatki drugiej uzależnić od napięcia na siatce trzeciej, podobnie jak w modelu pentody uzależnione jest ono od napięcia anody (o ile w ogóle jest uzależnione). Popełniłem na własne potrzeby niezbyt dokładny model lampy ECL86 który przynajmniej to uwzględnia (no bo przecież bez tego nie ma sensu jakakolwiek analiza stopnia mocy na granicy przesterowania), na ile jednak przyda się on do zamodelowania heptody - jeszcze nie zastanawiałem się. Ciekawe czy chociaż model ECC85 okazałby się przydatny w symulacji głowicy UKF.
Poniżej sklecony przeze mnie model ECL86. Nieliniowości modelowane są przy pomocy funkcji potęgowych z wykładnikiem 3/2 ("parabola półsześcienna"), oczywiście równych zeru dla napięć ujemnych. Elektrody lampy rozszyte są w następującej kolejności: 1- anoda pentody, 2- siatka druga, 3 - siatka pierwsza pentody, 4 - katoda pentody, 5 - anoda triody, 6 - siatka triody, 7 - katoda triody.

*CONNECTIONS A E G K AT GT KT
* | | | | | | | | |
* | | | | | | | | |
.SUBCKT ECL86 1 2 3 4 5 6 7
*PENTODE
GAK 1 8 VALUE={(.1*V(1,4)+V(2,4)+21*V(3,4))*SQRT(.1*V(1,4)+V(2,4)+21*V(3,4)+ABS(.1*V(1,4)+V(2,4)+21*V(3,4)))/41E3}
VK 8 4
GEA 2 1 VALUE={I(VK)*(1-8*V(1,4)/V(2,4))*SQRT(1-8*V(1,4)/V(2,4)+ABS(1-8*V(1,4)/V(2,4)))/1.4142}
FEK 2 4 VK .1666666
CAG 1 3 1.6p
CGK 3 4 10p
CAK 1 3 9.5p
*TRIODE
GAKT 5 7 VALUE={(V(5,7)+100*V(6,7))*SQRT(V(5,7)+100*V(6,7)+ABS(V(5,7)+100*V(6,7)))/4.167E5}
GGAT 6 7 VALUE={(100*V(6,7)-V(5,7))*SQRT(100*V(6,7)-V(5,7)+ABS(100*V(6,7)-V(5,7)))/4.167E5}
CAGT 5 6 1.7p
CGKT 6 7 3.5p
CAKT 5 7 0.46p
.ENDS

Jesteś chętny do sprawdzenia modelu?
Einherjer
2500...3124 posty
2500...3124 posty
Posty: 2536
Rejestracja: pt, 22 stycznia 2010, 18:34
Lokalizacja: Wałbrzych

Re: LTSpice

Post autor: Einherjer »

A zaglądałeś do pdfa, który podlinkowałem? Są tam opisane modele i selektody (jako przykład EF89) i heptody na przykładzie ECH81 właśnie...
Awatar użytkownika
Tomek Janiszewski
3125...6249 postów
3125...6249 postów
Posty: 5263
Rejestracja: śr, 19 listopada 2008, 15:18

Re: LTSpice

Post autor: Tomek Janiszewski »

.pdf pbejrzałem pobieżnie dopiero przed chwilą. Istotnie wzięto na warsztat EF89 (a tym samym i sekcję pentodową EBF89 które praktycznie nie różnią się parametrami mimo zdecydowanie różnej geometrii elektrod), i to właśnie jako równoległe połączenie dwóch zwykłych pentod. Modelowania ECH81 jeszcze nie rozgryzłem, ponieważ nie mam na to czasu: aktualnie zajmuję się (w realu) amplitunerem AM/FM stereo gdzie oczywiście jest ECH81. Bardziej jednak krytyczna niż mieszacz jest heterodyna, a jako taki model sekcji triodowej ECH81 wcześniej sobie skleciłem. Zresztą najważniejsze w danej chwili jest zaprojektowanie optymalnej konfiguracji obwodów wejściowych, do czego nieliniowe modele lamp potrzebne nie są.
Czy przytoczona przez Ciebie na końcu biblioteka (.zip) zawiera modele pentod uwzględniające przynajmniej zależność prądu anodowego od napięcia na anodzie, czy też modele uproszczone, oczywiście mało przydatne w analizie nieliniowej gdy lampa wchodzi w zakres dopływu powrotnego?
Einherjer
2500...3124 posty
2500...3124 posty
Posty: 2536
Rejestracja: pt, 22 stycznia 2010, 18:34
Lokalizacja: Wałbrzych

Re: LTSpice

Post autor: Einherjer »

Ten plik zawiera modele uproszczone, chociaż zależność Ia(Va) powinny oddawać,ale nie testowałem ich. Lepsze modele masz tutaj: https://www.dos4ever.com/uTracer3/TubeLib.inc
rufus74pz
125...249 postów
125...249 postów
Posty: 150
Rejestracja: śr, 2 czerwca 2010, 20:24

Re: LTSpice

Post autor: rufus74pz »

Witam.
Celem tego wątku jest poznanie programu LTSpice, czy może stworzenie ciekawego projektu wzmacniacza, a nastepnie PCB, czy może tylko lużna wymiana myśli?
Piotr
Einherjer
2500...3124 posty
2500...3124 posty
Posty: 2536
Rejestracja: pt, 22 stycznia 2010, 18:34
Lokalizacja: Wałbrzych

Re: LTSpice

Post autor: Einherjer »

Raczej zebranie w jednym miejscu przydatnych informacji dotyczących symulacji układów audio. Będą kolejne wpisy, jak znajdę chwilę.
Awatar użytkownika
fanis
25...49 postów
25...49 postów
Posty: 30
Rejestracja: sob, 16 października 2021, 17:34

Re: LTSpice

Post autor: fanis »

Einherjer pisze: ndz, 26 grudnia 2021, 22:20 Nie ma też określonej kanonicznej struktury modeli lamp, inaczej niż to jest w przypadku choćby tranzystorów bipolarnych, gdzie każdy typ tranzystora jest opisany zestawem parametrów dla wbudowanego modelu. Są za to symbole triody, tetrody i pentody, znajdziemy je w podkatalogu "[Misc]", które możemy dodać do schematu i podpiąć do nich własne modele.

No dobrze. Mamy już nasz plik z biblioteką modeli (przykładowo "TubeIM.lib") i co dalej? Najprościej jest go skopiować do tego samego katalogu co plik z naszą symulacją (.asc) a potem w LTSpice klawiszem "s" dodać "SPICE directive" o treści ".include TubeIM.lib". Gdy dodamy nowy symbol triody do schematu, zobaczymy, że ma on oznaczenie "U1" (albo kolejne) i wartość "Triode". Klikamy prawym przyciskiem na "Triode" i zmieniamy na interesujący nas model lampy, na przykład "6N16b" (SPICE nie rozróżnia wielkości znaków, "6n16B" też zadziała). I to tyle, odpalamy symulację i sprawdzamy czy wyniki są sensowne.
Można utworzyć katalog lamp (tak jak są skatalogowane inne elementy w LTSpice) oczywiście każdą z osobna.
W katalogu symboli (lib/sym) tworzę podkatalog z lampami (np. Lampy, Tubes, jak kto woli) i tam kopiuję z podkatalogu "[Misc]" ogólny symbol lampy np. triody.
W katalogu z lampami skopiowany plik symbolu (.asy) nazywam oznaczeniem konkretnej lampy i otwieram w edytorze symboli.
W edytorze symboli klikam prawym Attributes > Edit Attributes również zmieniam wartość Value z np. "Triode" na konkretny symbol a w okienku ModelFile podaję ścieżkę do biblioteki.
Oczywiście mogę utworzyć tylko lampę, którą mam w bibliotece.
Później rysując schemat mogę dodać konkretną lampę z katalogu tak samo jak dodaje się inne elementy z biblioteki bez użycia "SPICE directive"

W bibliotece są również zapisane modele diody i duodiody, ponieważ w katalogu "[Misc]" nie ma tych symboli - symbol diody można utworzyć w oparciu np. o triodę poprzez usunięcie siatki a symbol duodiody tworzymy z diody poprzez zaznaczenie anody i skorzystanie z funkcji duplicate.
Należy zwrócić uwagę aby numeracja zacisków elektrod w symbolu była taka sama jak w bibliotece.
Einherjer
2500...3124 posty
2500...3124 posty
Posty: 2536
Rejestracja: pt, 22 stycznia 2010, 18:34
Lokalizacja: Wałbrzych

Re: LTSpice

Post autor: Einherjer »

:arrow: fanis
Dzięki, to też dobry sposób. Mógłbyś wrzucić tutaj pliki .asy dla diody i duodiody?
Awatar użytkownika
fanis
25...49 postów
25...49 postów
Posty: 30
Rejestracja: sob, 16 października 2021, 17:34

Re: LTSpice

Post autor: fanis »

Tworzenie odręczne całej bazy elementów (lamp) zajęło by dużo czasu, ale można utworzyć kilka lamp z których będziemy korzystać w symulatorze.

Jest jeszcze opcja pośrednia czyli w katalogu "[Misc]" do ogólnego symbolu lampy triode/tetrode/pentode dodajemy bibliotekę w edytorze symbolu Attributes > Edit Attributes > ModelFile > ścieżka do biblioteki
Później dodając na schemacie taką lampę trzeba tylko zmienić nazwę Value z np "triode" na konkretny symbol lampy ale nie trzeba już korzystać ze "SPICE directive"

Niestety nie mogę dodać plików - pojawia się komunikat błąd rozszerzenia pliku .asy
rufus74pz
125...249 postów
125...249 postów
Posty: 150
Rejestracja: śr, 2 czerwca 2010, 20:24

Re: LTSpice

Post autor: rufus74pz »

Proszę zmienić z .asy na .txt a po sciągnięciu każdy sobie z spowrotem zmieni na .asy.
Einherjer
2500...3124 posty
2500...3124 posty
Posty: 2536
Rejestracja: pt, 22 stycznia 2010, 18:34
Lokalizacja: Wałbrzych

Re: LTSpice

Post autor: Einherjer »

fanis pisze: śr, 29 grudnia 2021, 13:15 Niestety nie mogę dodać plików - pojawia się komunikat błąd rozszerzenia pliku .asy
Tak, forum akceptuje tylko niektóre rozszerzenia. Najłatwiej skompresować je do pliku .zip i taki załączyć.
Awatar użytkownika
fanis
25...49 postów
25...49 postów
Posty: 30
Rejestracja: sob, 16 października 2021, 17:34

Re: LTSpice

Post autor: fanis »

Dzięki. Póki co podaję w .rar
Załączniki
diody_asy.rar
(814 Bajtów) Pobrany 120 razy
Awatar użytkownika
fanis
25...49 postów
25...49 postów
Posty: 30
Rejestracja: sob, 16 października 2021, 17:34

Re: LTSpice

Post autor: fanis »

Tomek Janiszewski pisze: pn, 27 grudnia 2021, 15:01
*CONNECTIONS A E G K AT GT KT
* | | | | | | | | |
* | | | | | | | | |
.SUBCKT ECL86 1 2 3 4 5 6 7
*PENTODE
GAK 1 8 VALUE={(.1*V(1,4)+V(2,4)+21*V(3,4))*SQRT(.1*V(1,4)+V(2,4)+21*V(3,4)+ABS(.1*V(1,4)+V(2,4)+21*V(3,4)))/41E3}
VK 8 4
GEA 2 1 VALUE={I(VK)*(1-8*V(1,4)/V(2,4))*SQRT(1-8*V(1,4)/V(2,4)+ABS(1-8*V(1,4)/V(2,4)))/1.4142}
FEK 2 4 VK .1666666
CAG 1 3 1.6p
CGK 3 4 10p
CAK 1 3 9.5p
*TRIODE
GAKT 5 7 VALUE={(V(5,7)+100*V(6,7))*SQRT(V(5,7)+100*V(6,7)+ABS(V(5,7)+100*V(6,7)))/4.167E5}
GGAT 6 7 VALUE={(100*V(6,7)-V(5,7))*SQRT(100*V(6,7)-V(5,7)+ABS(100*V(6,7)-V(5,7)))/4.167E5}
CAGT 5 6 1.7p
CGKT 6 7 3.5p
CAKT 5 7 0.46p
.ENDS

Jesteś chętny do sprawdzenia modelu?
Skoro mamy model ECL86 to dorzucam w załączniku kompatybilny plik symbolu triody-pentody ECL86 oraz plik biblioteki powyższego modelu.

Po umieszczeniu w folderach trzeba to pokojarzyć w jeden z wcześniej opisanych sposobów.
Załączniki
ECL86.rar
(979 Bajtów) Pobrany 103 razy
Einherjer
2500...3124 posty
2500...3124 posty
Posty: 2536
Rejestracja: pt, 22 stycznia 2010, 18:34
Lokalizacja: Wałbrzych

Re: LTSpice

Post autor: Einherjer »

Pora na następny odcinek. Mamy już lampy, to przydałyby się transformatory. Nie mamy gotowego symbolu transformatora, zresztą byłoby to dość kłopotliwe, bo liczba i konfiguracje uzwojeń mogą być bardzo różne. Możemy za to dodać sprzężenie magnetyczne pomiędzy cewkami i w ten sposób uzyskać transformator. Dodajemy więc do schematu cewki L1 i L2. Następnie dodajemy dyrektywę (klawisz "s") "K L1 L2 1.0". Ostatni parametr to współczynnik sprzężenia, wrócimy do niego za chwilę. Zauważmy, że przy symbolach cewek pojawiły się kropki oznaczające fazowanie uzwojeń. Jak określić przekładnię transformatora? Musimy się posługiwać indukcyjnościami poszczególnych uzwojeń, co jest nieco nieintuicyjne, bowiem stosunek indukcyjności jest kwadratem przekładni. Możemy sobie pomóc i pozwolić LTSpice wykonać obliczenia. Dodajemy dyrektywę ".param Lp=10 N=20", która definiuje nam dwa parametry: Lp, czyli indukcyjność uzwojenia pierwotnego (tutaj 10 H) i N, czyli przekładnię. Możemy teraz ustawić indukcyjność L1 jako po prostu {Lp} a L2 jako {Lp/(N*N)}. Jeszcze jedna rzecz. Po kliknięciu prawym przyciskiem jednej z cewek zobaczymy okienko, w którym możemy ustawić również inne parametry uzwojenia. Polecam dodać przynajmniej w przybliżeniu sensowną rezystancję szeregową. Bez niej symulacja może nie być możliwa w ogóle, w tym przykładzie potrzebna jest rezystancja pomiędzy V1 a L1, albo działać bardzo wolno.
Zrzut ekranu z 2022-01-02 14-39-41.png
A co ze "współczynnikiem sprzężenia" z dyrektywy K? Jest to nieco pokrętny sposób określenia indukcyjności rozproszenia.
BmFiA.png
Jak widać współczynnik 1.0 z naszego przykładu oznacza brak indukcyjności rozproszenia. Znów możemy sobie tutaj pomóc i zaprząc LTSpice do wykonania odpowiednich obliczeń. Zdefiniujmy parametr Ls, oznaczający indukcyjność rozproszenia a wartość współczynnika sprzężenia, będzie wynosić "{sqrt(1-Ls/Lp)}", co wynika z przekształcenia powyższego wzoru.
Zrzut ekranu z 2022-01-02 15-22-29.png
Jeśli mamy więcej uzwojeń, możemy rozszerzyć tę metodę, pamiętając, żeby sprząc ze sobą każdą parę uzwojeń. Każde ze sprzężeń musi mieć unikatową nazwę, np. K1, K2, K3 etc. Nie każda kombinacja współczynników sprzężenia jest fizycznie realizowalna, w takim wypadku LTSpice zgłosi błąd.
Zrzut ekranu z 2022-01-02 15-35-40.png
Powyższa metoda daje największą kontrolę nad parametrami symulowanego transformatora z więcej niż dwoma uzwojeniami, ale jest dość kłopotliwa. Można na szczęście pójść na skróty i użyć dyrektywy "K L1 L2 L3 1.0" i sprząc wszystkie uzwojenia z tym samym współczynnikiem.
ODPOWIEDZ