Bagaimana cara kerja Sirkuit Sirkuit?

31

Saya baru-baru ini memiliki kesempatan untuk bermain-main dengan LiveWire , yang merupakan simulator rangkaian dan mulai bertanya-tanya bagaimana tepatnya mereka menghitung voltase di setiap komponen dan arus yang melalui masing-masing jalur kawat.

Saya hanya diajarkan keterampilan analisis rangkaian dasar (seperti analisis Mesh dan analisis Nodal) sejauh ini, dan saya tidak sepenuhnya yakin bahwa mereka akan cukup umum untuk diimplementasikan dalam cara yang 'cocok untuk semua' dalam simulator sirkuit.

Sebagai seorang programmer, ini membuat saya penasaran dan saya ingin melihat teknik apa yang biasa digunakan ketika membangun simulator rangkaian seperti ini.

Saya minta maaf jika ini bukan milik di sini, itu adalah pilihan antara sini dan StackOverflow dan saya merasa bahwa meskipun ini adalah pertanyaan berorientasi pengembangan perangkat lunak, pertanyaannya lebih berlaku untuk situs ini dan itu adalah basis pengguna.

Thomas Russell
sumber
Trik utamanya adalah banyak irisan waktu kecil. Fungsi kompleks dari waktu karena itu ditangani mengeluarkan banyak persamaan perbedaan dengan irisan waktu kecil. Kompleksitas jahat biasanya berkurang secara signifikan jika dapat dinyatakan sebagai persamaan diferensial, yang menjadi persamaan perbedaan dalam simulasi digital.
Olin Lathrop

Jawaban:

14

Saya telah memeriksa kode simulator Falstad dalam beberapa detail. Untuk rangkaian yang hanya terdiri dari komponen linier seperti resistor, sakelar, dan sumber tegangan (hal-hal seperti keluaran gerbang-logika dianggap sebagai sumber tegangan yang terhubung ke tanah untuk keperluan simulasi), simulator memperhatikan setiap simpul sirkuit, sumber tegangan (menghubungkan dua simpul) , atau kawat (juga) sebagai mendefinisikan persamaan linear dan variabel, sehingga jumlah persamaan dan jumlah variabel selalu sama. Untuk simpul rangkaian, variabelnya adalah tegangan simpul, dan persamaan menghitung total arus yang mengalir melaluinya sama dengan total arus yang diinjeksikan oleh sumber arus apa pun. Untuk sumber tegangan atau kawat (kawat ditangani sebagai sumber tegangan di mana beda potensial adalah nol),

Hal-hal seperti sumber dan resistor saat ini tidak terkait dengan resistor atau variabel. Alih-alih, sumber arus meningkatkan arus total yang diperlukan untuk satu simpul sirkuit (ingatlah bahwa setiap simpul rangkaian memiliki persamaan yang mengevaluasi arus total yang mengalir masuk dan keluar) dan menguranginya untuk yang lainnya. Resistor sedikit rumit: untuk setiap persamaan titik akhir, resistor menambahkan istilah untuk tegangan simpul dari setiap titik akhir.

Sebuah resistor 100-ohm yang menghubungkan simpul 1 dan 2, misalnya, akan mengatakan bahwa setiap kenaikan volt pada simpul 1 akan mengurangi arus yang mengalir ke simpul 1 sebesar 0,01 amp dan meningkatkan arus yang mengalir ke simpul 2 dengan jumlah yang sama. Demikian juga, setiap kenaikan volt pada simpul 2 akan meningkatkan arus yang mengalir ke simpul 1 sebesar 0,01 amp dan mengurangi arus yang mengalir ke simpul 2 dengan jumlah yang sama.

Pertimbangkan rangkaian dengan suplai 10 volt yang menghubungkan node 1 dan 5, dan 100 ohm resistor yang menghubungkan node 1 dan 2, 2 dan 3, 2 dan 4, dan 3 dan 4. Asumsikan lebih jauh bahwa ada ikon ground pada node 1. Jadi:

neg ---+-1---R100---2---R100---3---100---4---pos
      gnd           |                    |
                    +---------100--------+

Akan ada dua "sumber tegangan": kabel ground dan catu 10 volt (yang masing-masing dianggap sebagai persamaan / variabel 5 dan 6). Persamaannya adalah:

-X1*0.01                             +X5 -X6 = 0  Node 1
+X1*0.01 -X2*0.01          +X4*0.01          = 0  Node 2
         +X2*0.01 -X3*0.01 +X4*0.01          = 0  Node 3
         +X2*0.01          -X4*0.01      +X6 = 0  Node 4
-X1*1                                        = 0  Volts 5 (voltage between 1 and gnd)
-X1*1                      +X4*1             = 10 Volts 6 (voltage between 1 and 4)

Sistem persamaan ini dapat direpresentasikan sebagai matriks NxN plus array item N. Setiap persamaan diwakili oleh satu baris dalam matriks, dengan nilai pada setiap baris mewakili koefisien dari masing-masing variabel. Sisi kanan setiap persamaan disimpan dalam array yang terpisah. Sebelum menyelesaikan persamaan, orang akan tahu arus bersih yang mengalir ke setiap node (nol dalam kasus ini), dan perbedaan tegangan antara pasangan node yang dihubungkan oleh sumber tegangan. Memecahkan persamaan akan menghasilkan tegangan pada setiap node dan arus yang mengalir melalui masing-masing sumber tegangan.

Jika rangkaian berisi kapasitor, masing-masing akan dianggap sebagai sumber tegangan secara seri dengan resistor bernilai rendah; setelah setiap langkah simulasi, sumber tegangan akan disesuaikan sesuai dengan jumlah arus yang mengalir melaluinya. Induktor akan dianggap sebagai resistor bernilai tinggi yang mengumpan arus menjadi satu dan mengeluarkannya (jumlah arus disesuaikan sesuai dengan tegangan melintasi resistansi). Untuk kapasitor dan induktor, nilai resistansi akan dikontrol oleh jumlah waktu yang diwakili oleh langkah simulasi.

Elemen rangkaian yang lebih kompleks seperti transistor dianggap sebagai kombinasi sumber tegangan, sumber arus, dan resistor. Tidak seperti elemen rangkaian yang lebih sederhana yang memungkinkan semuanya diproses sekali per langkah waktu simulasi, elemen-elemen seperti transistor menghitung hambatan efektifnya dll. Berdasarkan pada voltase dan arus yang mereka lihat, mengevaluasi semua persamaan yang dihasilkan, dan mengevaluasi kembali resistansi mereka berdasarkan voltase dan arus baru, mengevaluasi kembali persamaan, dll. dalam upaya mencapai kesetimbangan di mana resistansi efektifnya seperti pada tegangan dan arus yang dilihat oleh transitor.

Simulator Falstad dapat menjadi cepat untuk sirkuit berukuran sedang yang seluruhnya terdiri dari elemen "linier". Waktu untuk berulang kali menyelesaikan sistem persamaan cukup masuk akal jika satu-satunya hal yang berubah adalah koefisien sisi kanan. Waktu menjadi jauh lebih lambat jika sisi kiri berubah (misalnya karena resistensi efektif transistor naik atau turun) karena sistem harus "refactor" persamaan. Harus melakukan refactor persamaan beberapa kali per langkah simulasi (mungkin diperlukan dengan transistor) membuat semuanya lebih lambat.

Menggunakan satu matriks besar untuk semuanya bukanlah pendekatan yang baik untuk simulasi besar; meskipun matriks akan cukup jarang, itu akan memakan ruang sebanding dengan kuadrat dari jumlah node plus sumber tegangan. Waktu yang diperlukan untuk menyelesaikan matriks pada setiap langkah simulasi akan sebanding dengan kuadrat ukuran matriks jika refactoring tidak diperlukan, atau ke kubus ukuran matriks jika refactoring diperlukan. Meskipun demikian, pendekatan tersebut memang memiliki keanggunan tertentu ketika datang untuk menunjukkan hubungan antara rangkaian dan sistem persamaan linear.

supercat
sumber
Kebanyakan simulator tipe SPICE juga menggunakan algoritma jenis ini. Berikut adalah ikhtisar untuk rempah-rempah ecircuitcenter.com/SpiceTopics/Overview/Overview.htm
user6972
1
FYI - KLU adalah algoritma umum yang digunakan dalam simulator rangkaian. KLU adalah singkatan dari Clark Kent LU, karena didasarkan pada algoritma Gilbert-Peierls, sebuah algoritma non-supernodal, yang merupakan pendahulu SuperLU, sebuah algoritma supernodal. KLU adalah pemecah linear berkinerja tinggi yang jarang yang menggunakan mekanisme pemesanan hibrid dan faktorisasi yang elegan dan menyelesaikan algoritma.
user6972
Penting untuk memperhatikan bahwa ada beberapa model transistor, BSIM atau EKV, misalnya. Pada dasarnya model ini mempertimbangkan semua fisika, dari sudut pandang, yang terlibat dalam pengoperasian transistor tunggal dan efeknya pada karakteristik kelistrikannya. Ada lebih banyak ke dalamnya daripada hanya mewakili sebagai kombinasi dari sumber tegangan, sumber arus dan resistor. Jika Anda ingin memilih model yang berbeda, Anda dapat menggunakan parameter LEVEL. Tutorial dari Jacob Baker ini adalah awal yang baik. semoga membantu.
11

LiveWire adalah salah satu dari banyak simulator rangkaian, dengan berbagai tingkat kemampuan.

Misalnya, Simulator Sirkuit Falstad tampaknya memiliki tingkat kemampuan yang sama dengan LiveWire - dan kode sumber ditawarkan di tautan itu. Itu harus menjadi awal yang baik.

Untuk simulasi rangkaian yang lebih canggih, banyak alat menelusuri akarnya kembali ke SPICE oleh UC Berkley . Kode sumber SPICE tersedia berdasarkan permintaan dari UCB di bawah lisensi BSD.

Edisi SPICE khusus pabrikan biasanya mengintegrasikan model simulasi semikonduktor yang sangat rinci dari produk mereka sendiri ke dalam simulator mereka. Misalnya, LTSpice IV dari Linear Technologies atau TINA-TI dari Texas Instruments. Di bawahnya, itu semua biasanya SPICE.

Mengutip dari halaman WikiPedia tentang SPICE:

Program simulasi sirkuit, di mana SPICE dan turunannya paling menonjol, mengambil netlist teks yang menggambarkan elemen-elemen rangkaian (transistor, resistor, kapasitor, dll.) Dan koneksi mereka, dan menerjemahkan deskripsi ini ke dalam persamaan yang harus dipecahkan. Persamaan umum yang dihasilkan adalah persamaan aljabar diferensial nonlinier yang diselesaikan dengan menggunakan metode integrasi implisit, metode Newton dan teknik matriks jarang.

Pada tingkat kecanggihan yang lebih tinggi, beberapa produk komersial seperti Proteus Virtual System Modeling , bagian dari Proteus Design Suite, menggunakan perangkat tambahan berpemilik untuk simulasi sirkuit SPICE mode campuran - alat ini dapat mensimulasikan perilaku rangkaian analog, dan kode mikrokontroler digital, dengan interaksi di antara mereka sepenuhnya dimodelkan.

Pada tingkat yang jauh lebih terbatas dan terbatas, beberapa editor skematik, seperti alat Lab Sirkuit yang diintegrasikan ke dalam situs ini, menyediakan sejumlah kecil kemampuan simulasi. Meskipun ini mungkin tidak semua yang berguna dalam desain elektronik praktis non-sepele, mempelajari kemampuan dan implementasi mereka akan memberikan pengembang perangkat lunak beberapa wawasan tentang apa yang bekerja dengan baik untuk pengguna, dan yang tidak.

Anindo Ghosh
sumber
5

Ada tiga analisis utama yang dilakukan oleh simulator rangkaian seperti SPICE:

  • Titik operasi DC
  • Analisis AC
  • Analisis sementara

Titik operasi DC analisis untuk rangkaian linear (terbentuk dari sumber DC, resistor linear, dan linear sumber dikontrol) dilakukan dengan menggunakan analisis nodal diubah (MNA). Analisis mesh juga dapat digunakan, tetapi sangat mudah untuk mengatur persamaan untuk analisis nodal.

Untuk rangkaian nonlinier (yang mencakup perangkat seperti transistor, yang dapat dimodelkan sebagai sumber terkontrol nonlinier), beberapa trik tambahan harus digunakan. Cara konseptual sederhana adalah dengan menggunakan perpanjangan Metode Newton untuk beberapa persamaan.

Metode Newton melibatkan menebak solusi, kemudian membuat model linier dari rangkaian yang hanya akurat "dekat" solusi yang ditebak. Solusi untuk rangkaian linierisasi digunakan sebagai tebakan baru tentang solusi, dan proses tersebut diulangi hingga iterasi yang berurutan "menyatu" pada solusi (semoga) yang benar untuk rangkaian nonlinier. Di dunia nyata, pemecah nonlinier yang lebih rumit digunakan untuk dapat melakukan solusi lebih cepat dan dengan lebih sedikit kesalahan karena kegagalan konvergensi.

The analisis AC dilakukan dengan terlebih dahulu melakukan analisis DC untuk menemukan titik operasi. Kemudian Anda mempelajari efek gangguan kecil di sekitar titik operasi. "Kecil" artinya, cukup kecil, sehingga efek nonlinear tidak penting. Itu berarti elemen rangkaian diubah menjadi elemen ekuivalen linier tergantung pada titik operasi. Kemudian MNA dapat digunakan (dengan bilangan kompleks mewakili impedansi elemen penyimpan energi) untuk menyelesaikan efek gangguan yang disebabkan oleh sumber AC di sirkuit.

The analisis sementara yang dilakukan, seperti Olin mengatakan dalam komentar, dengan mempertimbangkan bagaimana variabel sirkuit berkembang dari langkah-langkah yang sangat kecil dalam waktu. Sekali lagi pada setiap langkah, rangkaian dilinearisasi di sekitar titik operasinya, sehingga MNA dapat digunakan untuk mengatur persamaan. Metode sederhana untuk menyelesaikan perilaku dari waktu ke waktu adalah Metode Euler . Namun sekali lagi dalam prakteknya metode yang lebih rumit digunakan untuk memungkinkan menggunakan timesteps yang lebih besar dengan kesalahan lebih kecil.

Anda dapat melihat bahwa utas umum dalam metode ini membuat perkiraan linier terhadap perilaku rangkaian dan menyelesaikannya dengan MNA hingga Anda menemukan solusi untuk perilaku rangkaian nonlinier.

Ketiga analisis ini adalah yang utama yang dilakukan oleh simulator seperti SPICE sejak tahun 1970-an. Simulator yang lebih baru menambah kemampuan tambahan seperti keseimbangan harmonik (perpanjangan AC anlaysis untuk mengakomodasi efek pencampuran dari elemen nonlinier), atau simulasi elektromagnetik untuk mensimulasikan efek saluran transmisi. Tapi simulasi DC, AC, dan transient adalah tiga yang pertama Anda harus mengerti ketika menggunakan simulator seperti SPICE.

Foton
sumber
Saya berbicara tentang cara mengatur persamaan MNA dalam jawaban sebelumnya: electronics.stackexchange.com/questions/19198/…
The Photon
2
Kita juga harus menambahkan bahwa simulasi rangkaian digital menggunakan metode yang sama sekali berbeda; dan itu membuat co-simulasi analog-digital menjadi masalah tersendiri.
The Photon