Niedawno miałem okazję bawić się z LiveWire , który jest symulatorem obwodu i zacząłem się zastanawiać, jak dokładnie obliczyły napięcia na każdym elemencie i prąd przepływający przez każdą ścieżkę drutu.
Do tej pory uczono mnie tylko podstawowych umiejętności analizy obwodów (takich jak analiza siatki i analiza węzłowa) i nie jestem do końca pewien, czy byłyby one wystarczająco ogólne, aby można je było wdrożyć w uniwersalny sposób w symulatorze obwodu.
Jako programista zaintrygowało mnie to i chciałbym zobaczyć, jakie techniki są powszechnie stosowane przy budowie symulatorów obwodów, takich jak ten.
Przepraszam, że to nie powinno być tutaj, to był wybór pomiędzy tutaj a StackOverflow i czułem, że chociaż jest to pytanie zorientowane na rozwój oprogramowania, pytanie to bardziej dotyczy tej witryny i jej bazy użytkowników.
źródło
Odpowiedzi:
Szczegółowo zbadałem kod symulatora Falstad. W przypadku obwodów, które składają się tylko z elementów liniowych, takich jak rezystory, przełączniki i źródła napięcia (takie jak wyjścia bramki logicznej do celów symulacji są uważane za źródła napięcia podłączone do uziemienia), symulator uwzględnia każdy węzeł obwodu, źródło napięcia (łączące dwa węzły) lub drut (podobnie) jako definicję równania liniowego i zmiennej, tak że liczba równań i liczba zmiennych są zawsze równe. W przypadku węzła obwodu zmienną stanowi napięcie węzła, a równanie oblicza całkowity przepływający przez niego prąd równy całkowitemu prądowi wtryskiwanemu przez dowolne źródła prądu. W przypadku źródła napięcia lub drutu (drut traktowany jako źródło napięcia, w którym różnica potencjałów wynosi zero),
Rzeczy takie jak źródła prądu i rezystory nie są powiązane z rezystorami lub zmiennymi. Zamiast tego źródła prądu zwiększają całkowity prąd wymagany dla jednego węzła obwodu (pamiętaj, że każdy węzeł obwodu ma równanie, które ocenia całkowity prąd wpływający i wypływający) i zmniejszają go dla drugiego. Rezystory są nieco trudniejsze: dla równania każdego punktu końcowego rezystor dodaje warunki dla napięcia węzła każdego punktu końcowego.
Na przykład 100-omowy rezystor łączący węzły 1 i 2 powiedziałby, że każdy wzrost napięcia w węźle 1 zmniejszy prąd płynący do węzła 1 o 0,01 ampera i zwiększy prąd płynący do węzła 2 o podobną wartość. Podobnie, każdy wzrost napięcia w węźle 2 zwiększyłby prąd przepływający do węzła 1 o 0,01 ampera i zmniejszyłby prąd przepływający do węzła 2 o podobną wartość.
Rozważ obwód z zasilaniem 10 V łączącym węzły 1 i 5 oraz rezystory 100 omów łączące węzły 1 i 2, 2 i 3, 2 i 4 oraz 3 i 4. Załóżmy ponadto, że w węźle 1 znajduje się ikona uziemienia:
Byłyby dwa „źródła napięcia”: przewód uziemiający i zasilanie 10 woltów (które są uważane odpowiednio za równanie / zmienną 5 i 6). Równania byłyby zatem:
Ten układ równań można przedstawić jako macierz NxN plus macierz N elementów. Każde równanie jest reprezentowane przez wiersz w macierzy, a wartości w każdym rzędzie reprezentują współczynniki każdej zmiennej. Prawa strona każdego równania jest przechowywana w osobnej tablicy. Przed rozwiązywaniem równań poznamy prąd netto płynący do każdego węzła (w tym przypadku zero) oraz różnicę napięć między parami węzłów połączonych źródłami napięcia. Rozwiązanie równań da napięcie na każdym węźle i prąd przepływający przez każde źródło napięcia.
Jeśli obwód zawiera kondensatory, każdy z nich będzie traktowany jako źródło napięcia szeregowo z rezystorem o niskiej wartości; po każdym etapie symulacji źródło napięcia zostanie dostosowane zgodnie z ilością prądu, który przez niego przepłynął. Cewki indukcyjne będą uważane za rezystory o wysokiej wartości, które doprowadzają prąd do jednego i wyjmują go do drugiego (ilość prądu jest regulowana zgodnie z napięciem na rezystancji). Zarówno dla kondensatorów, jak i cewek, wartość rezystancji będzie kontrolowana przez czas reprezentowany przez etap symulacji.
Bardziej złożone elementy obwodu, takie jak tranzystory, są uważane za kombinacje źródeł napięcia, źródeł prądu i rezystorów. W przeciwieństwie do prostszych elementów obwodu, które pozwalają przetwarzać wszystko raz na krok symulacji, elementy takie jak tranzystory obliczają efektywne rezystancje itp. Na podstawie napięć i prądów, które widzą, oceniają wszystkie wynikające równania i ponownie oceniają ich rezystancję na podstawie nowe napięcia i prądy ponownie oceniają równania itp. w celu osiągnięcia równowagi, w której ich efektywna rezystancja jest taka, jaka powinna być dla napięcia i prądu, które widzi tranzystor.
Symulator Falstad może być dość szybki dla obwodów średniej wielkości, które składają się całkowicie z elementów „liniowych”. Czas do wielokrotnego rozwiązywania układu równań jest całkiem rozsądny, jeśli jedyną zmianą są współczynniki po prawej stronie. Czas staje się znacznie wolniejszy, jeśli zmienia się lewa strona (np. Ponieważ efektywna rezystancja tranzystora rośnie lub maleje), ponieważ układ musi „refaktoryzować” równania. Konieczność wielokrotnego refaktowania równań wiele razy na krok symulacji (może to być konieczne w przypadku tranzystorów) sprawia, że wszystko jest jeszcze wolniejsze.
Użycie jednej dużej matrycy do wszystkiego nie jest dobrym podejściem do dużych symulacji; chociaż matryca będzie dość rzadka, zajmie miejsce proporcjonalne do kwadratu liczby węzłów plus źródeł napięcia. Czas potrzebny do rozwiązania macierzy na każdym etapie symulacji będzie proporcjonalny do kwadratu rozmiaru matrycy, jeśli refaktoryzacja nie jest wymagana, lub do kostki rozmiaru matrycy, jeśli wymagana jest refaktoryzacja. Niemniej jednak podejście ma pewną elegancję, jeśli chodzi o pokazywanie związku między obwodem a układem równań liniowych.
źródło
LiveWire jest jednym z wielu symulatorów obwodów o różnych poziomach możliwości.
Na przykład Falstad Circuit Simulator wydaje się mieć podobny poziom możliwości jak LiveWire - a kod źródłowy jest oferowany pod tym linkiem. To powinien być dobry początek.
Aby uzyskać bardziej zaawansowaną symulację obwodu, wiele narzędzi śledzi swoje korzenie z powrotem do SPICE firmy UC Berkley . Kod źródłowy SPICE jest dostępny na żądanie UCB na licencji BSD.
Specyficzne dla producenta wersje SPICE zazwyczaj integrują bardzo szczegółowe modele symulacji półprzewodników własnych produktów w swoich symulatorach. Na przykład LTSpice IV z Linear Technologies lub TINA-TI z Texas Instruments. Pod spodem wszystko jest zwykle SPICE.
Cytując ze strony WikiPedia o SPICE:
Na jeszcze wyższym poziomie zaawansowania kilka komercyjnych produktów, takich jak Proteus Virtual System Modeling , część pakietu Proteus Design Suite, korzysta z zastrzeżonych ulepszeń symulacji obwodu SPICE w trybie mieszanym - narzędzia te mogą symulować zarówno zachowanie obwodu analogowego, jak i cyfrowy kod mikrokontrolera, w pełni modelowane interakcje między nimi.
Na znacznie bardziej ograniczonym i ograniczającym poziomie niektóre edytory schematów, takie jak narzędzie Circuit Lab zintegrowane z tą witryną, zapewniają niewielki zakres możliwości symulacji. Chociaż może to nie być aż tak przydatne w praktycznym nietrywialnym projektowaniu elektronicznym, badanie ich możliwości i implementacji zapewni twórcom oprogramowania pewien wgląd w to, co działa dobrze dla użytkowników, a co nie.
źródło
Istnieją trzy główne analizy przeprowadzane przez symulatory obwodów typu SPICE:
Punkt pracy DC Analiza dla obwodu liniowego (utworzony ze źródeł prądu stałego, rezystory liniowych i liniowego źródła kontrolowanych) odbywa się za pomocą zmodyfikowanego analizy węzła (MNA). Można również zastosować analizę siatki, ale bardzo łatwo jest skonfigurować równania do analizy węzłowej.
W przypadku obwodów nieliniowych (które obejmują urządzenia takie jak tranzystory, które można modelować zasadniczo jako źródła sterowane nieliniowo), należy zastosować kilka dodatkowych sztuczek. Koncepcyjnie prosty sposób polega na zastosowaniu rozszerzenia metody Newtona dla wielu równań.
Metoda Newtona polega na odgadnięciu rozwiązania, a następnie stworzeniu modelu liniowego obwodu, który jest dokładny tylko „w pobliżu” odgadniętego rozwiązania. Rozwiązanie obwodu zlinearyzowanego jest używane jako nowe przypuszczenie na temat rozwiązania, a proces jest iterowany, aż kolejne iteracje „zbiegną się” na (miejmy nadzieję) poprawnym rozwiązaniu dla obwodu nieliniowego. W prawdziwym świecie stosuje się bardziej skomplikowane nieliniowe solwery, aby móc wykonać rozwiązanie szybciej i przy mniejszej liczbie błędów spowodowanych awarią konwergencji.
Analiza AC odbywa się najpierw robi analizę DC znaleźć punkt pracy. Następnie studiujesz wpływ małych zaburzeń w punkcie operacyjnym. „Mały” oznacza z definicji wystarczająco mały, aby efekty nieliniowe nie były ważne. Oznacza to, że elementy obwodu są przekształcane w równoważne elementy liniowe w zależności od punktu pracy. Następnie można użyć MNA (z liczbami zespolonymi reprezentującymi impedancję elementów magazynujących energię), aby rozwiązać efekt zaburzeń spowodowanych przez źródła prądu przemiennego w obwodzie.
Przemijający analiza jest wykonywana, jak Olin pisze w komentarzach, rozważając jak zmienne obwodu ewoluować bardzo małych kroków w czasie. Znowu na każdym etapie obwód jest linearyzowany wokół punktu pracy, dzięki czemu MNA można wykorzystać do ustawienia równań. Prostą metodą rozwiązania problemu w czasie jest metoda Eulera . Jednak ponownie w praktyce stosuje się bardziej skomplikowane metody, aby umożliwić stosowanie większych przedziałów czasowych przy mniejszych błędach.
Widać, że wspólnym wątkiem w tych metodach jest liniowe przybliżanie zachowania obwodu i rozwiązywanie go za pomocą MNA, dopóki nie znajdzie się rozwiązania nieliniowego zachowania obwodu.
Te trzy analizy były głównymi analizami przeprowadzanymi przez symulatory typu SPICE od lat siedemdziesiątych. Nowsze symulatory dodają dodatkowe możliwości, takie jak równowaga harmoniczna (rozszerzenie anlazy prądu przemiennego w celu dostosowania efektów mieszania z elementów nieliniowych) lub symulacje elektromagnetyczne w celu symulacji efektów linii przesyłowej. Ale symulacje DC, AC i przejściowe są pierwszymi trzema, które należy zrozumieć podczas korzystania z symulatora podobnego do SPICE.
źródło