*SINUSOIDAL STEADY—STATE DEVRE ANALIZI* VERSION 2.1

Program dökümü: *SINUSOIDAL STEADY—STATE DEVRE ANALIZI* VERSION 2.1, CIRCUIT ANALYSIS

Size, derginin program döküm ekinde yayınlanacağına inandığım en son bitirdiğim bir programımı gönderiyorum. Bu, 29. sayıda program döküm ekinde yayınlanan "SINUSOIDAL STEADY-STATE DEVRE ANALİZİ" adlı programın daha da geliştirilmiş halidir. Ve yine SIMONS BASIC ile yazılmıştır.

Hatırlayacağınız üzere, 29. sayıdaki program ile bağımlı kaynak içeren devreleri çözemiyorduk. Ama artık bu yeni program ile bunu başarabileceğiz. Bunun yanında bu programda eskisine oranla birçok yenilik var. Örneğin devre verileri, bir editor yardımıyla çok rahat bir şekilde programa verilebilecek, veya bir devrenin verileri daha sonra yeniden analiz edilmek için diskete kayıt edilebilecektir. Bunlar bu programda bulunan yeniliklerin sadece birkaçı.

Programın açıklaması, gerekli çizimler ve programın listesi ektedir. Ayrıca, açıklamalarda verilen örnek devreye ilişkin verilerde, "COM.CIR" adı altında diskete kayıt edilmiştir. Çalışmalarınızda başarılar dilerim.

Bu program, 29. sayıda yayınlanan, steady-state devre analizi yapan programının daha da geliştirilmiş bir versiyonudur. 29. sayıdaki program ile kontrollu kaynak içeren devreleri analiz edemiyorduk. Ama, aşağıda gördüğünüz program, artık kontrollu kaynaklar içeren devreler de çözüm getirmektedir. Diğer yönden, bu programa bir editor de eklenmiştir. Yani artık veri girişleri ve hata düzeltme çok kolay bir şekilde yapılmaktadır. Yazılan yanlış bir veriyi düzeltmek için, yanlışın üzerine gidip doğrusunu yazmak yeterlidir. Devre verilerinin diskete kayıt edilmesi ve daha sonra geri yüklenebilmesi de, bu program tarafından getirilen önemli bir özelliktir. Ayrıca, bu programda artık admittance'ı değil impedance'ı kullanıyoruz. Bir önceki programımızda geçerli olan 10 node ve 10 branch'ı geçmeme şartı burada da var. Ve yine devre elemanlarının karakteristiklerinin doğrusal ve zamanla değişir olmaması gerekmekte.

Programı çalıştırdığınızda ekrana ilk önce açılış ekranı gelecektir. F1 tuşuna basarak programa başlayabiliriz. Bilgisayar bizi, editor ekranı ile karşılayacaktır. Bu ekranın en üst kısmında sistem komutları yer almaktadır. Ekranın en alt satırı ise, bilgisayarın bizimle iletişim kurduğu bir penceredir. Compiling sırasında oluşan hatalar ve diğer mesajlar buraya yazılacaktır. Sistem komutlarının çağrılması için yapılması gereken, Commodore tuşunu basılı tutarken, istenilen komutun ilk harfine basılmasıdır. Bu program ile, bir devrenin analizini yapmak için devre ile ilgili veriler, editorun da yardımıyla, bilgisayara verilir. Daha sonra COMPILE Komutunu veririz. Eğer bu sırada program bir hata mesajı verirse, hata düzeltildikten sonra CIMPILE işlemi tekrar edilmelidir. Bilgisayar COMPILE işleminin hatasız olarak bitirildiğini söyledikten sonra, RUN komutu verilir. Bu komut ile, programa devre anilizine başlamasını söylüyoruz. Daha sonra bilgisayar, eğer Yn matrisinin tersi varsa, "İstenilen veriler hazır." mesajını verecektir. Bu aşamadan sonra, sonuçları OUT komutunu vererek görebiliriz.

Diğer yönden editorun içindeyken, SAVE komutunu vererek, o anda editorde bulunan devre ile ilgili bilgileri diskete kayıt etmeniz mümkündür. Aynı şekilde, LOAD komutu da istenilen bir veri dosyasını disketten yükler. Böylece, bir devreyi daha sonra ufak bir değişiklikle yeniden analiz etmek istediğimiz zaman, bütün verileri yeniden yazmanız gerekmez. Yapılması gereken, ilgili dosyayı yüklemek ve istenilen değişikliği yaptıktan sonra devreyi analiz etmektir. Yalnız, eğer disket üzerinde bulunmayan bir dosyayı yüklemeye çalışırsanız, o zaman ekranın tamamen "M" harfi ile kaplandığını görürsünüz. Bu durumda eski hale dönmek için yapılacak şey, ya yeniden var olan bir dosyayı yüklemek, ya yapılacak şey, ya yeniden var olan bir dosyayı yüklemek, ya da programı RUN/STOP ile keserek yeni baştan başlatmaktır. Ne yazık ki SAVE ve LOAD fonksiyonları dataset ile çalışmamaktadır. COMPILE komutu sonuçları hafızadan silmez. Örneğin, devrenin analizi bitti ve siz de sonuçları ekrandan aldınız. Şimdi ise sonuçları printer'a göndermek istiyorsunuz. Yapacağınız şey, CRT yerine PRN yazarak verileri tekrar COMPILE ettirmek ve sonra da OUT komutunu vermektir. Aynı şey, bronch akımlarını, branch voltajlarını ve node voltajlarını değişik zamanlarda görmek istediğimizde de geçerlidir.

Özellikle analizin çabuk bitmesini istiporsak, branch ile ilgili akım veya voltajları bilgisayara hesaplamasını söyleyebiliriz. Node voltajları için böyle bir şansımız yok. Çünkü kullanılan algoritma temelde node voltajlarını verir. Diğer bütün branch ile ilgili verilen ise node voltajlarından türetilirler. Yani, editor ekranına NDV komutunu yazsak da yazmasak da, program node voltajlarını hesaplar. Ama yazmazsak, bilgisayar bunları OUT komutunu verdikten sonra bize göstermeyecektir. Bunun için burada şuna dikkat etmeliyiz: Örneğin sadece NDV komutunu verdik ve sonuçtada OUT komutundan sonra sadece node voltajlarını gördük. Bundan sonra eğer, branch voltajlarını veya branch akımlarını görmek istersek, anlamsız sonuçlar ile karşılaşırız. Çünkü program daha bunları hesaplamadan GO! prosedüründen çıkmıştır. Bunun sorumlusu ise tek başına kullanılan NDV komutudur. Ama aynı şeyi BNC komutundan sonra yapabiliriz. Çünkü bu en son steptir ve branch akımlarını hesaplamak için, node voltajlarının ve brach voltajlarının bilinmesi zorunludur. QUIT komutu ise programdan çıkmaya yarar. Editorde üç çeşit veri satırı vardır.

Bunlardan birincisi komut satırıdır ve nokta (.) işareti ile başlaması zorunludur. Birden fazla komut, aralarına iki nokta (:) konulması şartıyla peşpeşe yazılabilir. Programın anlayabileceği komutlar ve anlamları aşağıda verilmiştir:

Komut | Anlamı NN= | Devredeki Node sayısını belirtir BN= | Devredeki Branch sayısını belirtir CRT | Sonuçları ekrana yazdırır PRN | Sonuçları yazıcıya gönderir POL | Sonuçları polar form içerisinden verir REC | Sonuçları rectangular form içerisinde verir BNY | Branch voltajları için hesaplama yapar NDV | Node voltajları için hesaplama yapar BNC | Branch akımları için hesaplama yapar END | Verilerin bittiğini editör'e söyler

İkinci veri satırı ise sadece kullanıcıya bilgi vermek amacıyla kullanılır ve compile işlemi sırasında dikkate alınmazlar. Bu çeşit satırlar asterix (*) işareti ile başlamak zorundadır. Asterix'den sonra devre hakkında istediğimiz uyarıcı veya tanıtıcı bilgiyi yazabiliriz. Son çeşit veri satırı ise, devrenin bilgisayara girilmesine yarayan veri satırlarıdır. Bu çeşit satırın ilk verisi, hakkında bilgi verilecek olan branch'ın numarası olmalıdır. Daha sonra sırayla branch'ın çıkış node ve girdiği node verilir. Üçüncü olarak branch'ın impedance'ı verilmelidir. Ve son olarak da branch voltaj kaynağı ile branch akım kaynağı gelir. Bütün bu verilerin arasına boşluk veya virgül koymayı unutmayın. Dikkat edilirse, bu verilerin sırası bir önceki programda olduğu gibidir. Bağımlı kaynaklar ise, "S" harfi ile belirtilirler. Ayrıca, editörde yazarken, her satırın sonunda "RETURN" tuşuna basın.

Programın editor kısmı oldukça esnek bir yapıda yazılmıştır. Kendi orjinal komutlarınızı programa rahatlıkla ekleyebilirsiniz. Bunun için komutun toplam uzunluğu, eşit (=) de dahil olmak üzere, üç harfi geçmemelidir. Örneğin, her compile işleminde, o anki sistem zamanını printer'a yazdıran bir komut düşünelim. Bunun için uygun komut CLK olabilir (veya, SAT, ZAM, v.b.). İstediğiniz harf dizilişini seçtikten sonra,

bunu KM$ dizisinin sonuna eklemelisiniz. Bu dizi 2225 nolu satırda yer alır ve editorun anlayabildiği komutları içermektedir. Şimdi ise, 2305 ile 2336 nolu satırlarının arasında herhangi bir satır numarasına girerek E Pointer'i istediğimiz komutun numarasını gösterdiği zaman, ne yapılması gerektiğini bilgisayara söyleriz. Örneğimizde, compiler komutumuza rastladığı zaman E 31 olacaktır (çünkü komutu KM$'nin en sonuna ekledik). Zamanı yazdıran satır ise aşağıdaki gibi olabilir:

Bundan sonra, verileri her compile edişimizde eğer komutumuzu kullanırsak, bilgisayarın saati printer'a yazılacaktır. Tabiî yukarıdaki satıra printer'in bağlı olup olmadığını kontrol komutlar da eklenebilir. Aynı şekilde herhangi bir değişkene veri atayan komutları için de, 2295 ile, 2305 nolu satırların arasını kullanmalıyız.

Aşağıda bir örnek bulacaksınız. Örnekte verilen devre, bir RC-coupled amplifikator devresidir. Örneğin çözümünü yaptıktan sonra, aynı şeyin program yardımıyla nasıl yapılacağını göstereceğim. Böylece programın kullanılmasının daha iyi anlaşılacağını düşündüm. Diğer yönden, programda bağımlı kaynaklar için hazırladığım rutinin nasıl çalıştığını merak edenler, eğer aşağıdaki adrese mektup yazarlarsa kendileriyle bunu tartışabilirim.

Adres:

Noyan KINAYMAN 22. Sokak No: 5/11 Bahçelievler/ANKARA

ÖRNEK:

Soru: Şekilde gösterilen (şekil 1.1) devre için aşağıdakileri hesaplayın:

a.) Akım kazancı, Ai=Io/Ii

b.) Voltaj kazancı, Av=Vo/Vi

Çözüm: Çözüme ilk önce transistorlerin bias noktasını bulmakla başlamalıyız. Bu hesaplamalar, konumuzun dışında olduğu için ben sadece bias noktasındaki akım ve voltaj değerlerini yazmakla yetineceğim:

Q1 için:

Ie=1.32 mA

Ve=3.95 V

re1=19.70 Ohm

Q2 için:

Ib=10.6 uA

Ie=1.06 mA

re2=24.53 Ohm

Daha sonra, devremizin small-signal modelini aşağıda gösterildiği biçimde çizeriz (şekil 1.2). Bu modelde ki R1 ve R2 dirençleri, base-emitter ekleminin forward bias altındaki dinamik direncinden (re) yararlanılarak bulunur.

R1=80*19.70=1576 Ohm

R2=100*14.53=2453 Ohm

Bundan sonra gerekli hesaplamaları gerçekleştirelim. İstenenleri aşağıdaki gibi bulabiliriz.

Bu problemi bilgisayar yardımıyla çözebilmemiz için devremizde bazı değişiklikler yapmamız gerekiyor. Dikkat edilirse, devremizdeki ilk transistorun small-signal modelindeki akım kontrollü akım kaynağına paralel bir direnç yok. Bu durum ise programımızın kullandığı algoritmaya aykırıdır. Yani, ilk programın açıklamalarında da belirtildiği gibi, devrelerin bu program yardımıyla çözülebilmeleri için, devrede bulunan her türlü kaynağa eğer voltaj kaynağı ise seri, akım kaynağı ise paralel olarak bir pasif devre elemanının bulunması zorunludur. Bu şartı sağlamak için, bağımlı akım kaynağını kendisi ile kapalı bir halka oluşturan devre elemanları üzerine aşağıda gösterildiği gibi (şekil 1.3) dağıtılır. Kendi eski yeri ise açık devre edilir. Ayrıca, devrenin analizi için Vin yerine bir değer vermemiz ve bir kaynak direnci kullanmamız zorunludur. Bu sadece hesaplamalar için gereklidir. Bundan sonra yapılacak olan, node'ları, branch'ları ve referans akım yönlerini belirledikten sonra devreyi bilgisayarımıza vermektir.

Bağımlı kaynakları belirtmek için "S" harfini kullanıyoruz. S'den sonra, çarpanı, kaynağın ne çeşit kaynak olduğunu belirten harfi ve son olarak da ilişkili olduğu branch numarasını veriyoruz. Burası önemli: bazen devredeki bağımlı kaynaklar node voltajlarına bağlı olabilir. Bu durumda biz, bağımlı kaynağı tanımlamak için bu node voltajını eşit bir branch voltajı bulmalıyız.

Aşağıda hangi harfin ne çeşit bir kaynağı tanımladığını bulacaksınız.

A: Voltaj Kontrollü voltaj kaynağı

B: Akım kontrollü voltaj kaynağı

C: Voltaj kontrollü akım kaynağı

D: Akım kontrollü akım kaynağı

Böylece editör ekranında aşağıdakine benzer bir veri düzeni oluşmalıdır.

Bu verileri COMPILE ettikten sonra RUN komutunu verin. Yaklaşık olarak iki dakika sonra istediğiniz bilgilere kavuşmuş olacaksınız. Dört numaralı node voltajını, bir numaralı node voltajına bölerek voltaj kazancını, aynı şekilde, sekiz numaralı branch akımını, dokuz numaralı branch akımına bölerek de akım kazancını bulabilirsiniz. Bulduğunuz sonuçlar, benim yukarıda bulduğum sonuçlar ile uyuşacaklardır. Bir sonraki programda görüşmek üzere...

Bu yazıdaki programlar

Dergideki dökümlerden çıkarıldı; satırlar derginin kontrol toplamlarıyla doğrulandı ve programlar VICE emülatöründe denendi. Tarayıcıdaki C64'te çalıştırabilir, indirip bir emülatöre sürükleyip bırakabilir ya da gerçek bir C64'te LOAD "AD",8,1 ile yükleyebilirsiniz. "Sorun bulundu" yazanlarda bazı satırlar okunamadı ya da tutmadı; düzeltilmiş bir sürümünüz varsa contact@coze.org adresine gönderin.