Elektirik sinyalleri üretme, efekt uygulama, görselleştirme

nt

Emekli
Katılım
21 Nisan 2023
Mesajlar
1,221
Açık kaynaklı özgür yazılım programı ESS (Elektirirk Sinyal Similasyonu)

Elektrik sinyalleri üretme, efekt uygulama ve görselleştirme üzerine bir Python kodu yazıyorum. Ancak bazı yerlerde takıldım ve bu efekt fonksiyonlarının nasıl çalıştığına ve nasıl kullanılacağına dair bazı belirsizliklerim var.

Şu anda kodumda bulunan efekt fonksiyonlarının ne işe yaradığını ve nasıl kullanılacağını aşağıdaki şekilde açıklayan bir metin hazırladım:

Direnç Efekti (direnc_efekti):
sinyal üzerinde herhangi bir değişiklik yapmıyor.
Fonksiyon, giriş olarak sinyal ve direnç miktarını alır.

Kondansatör Şarj/Deşarj Efekti (kondansator_sarj_desarj_efekti):
Birinci dereceden bir filtre uygulayarak sinyali değiştirir.
Fonksiyon, giriş olarak sinyal ve kondansatör sabitini alır.
Şarj/deşarj sürecini simüle eder.

Bobin Efekti (bobin_efekti):
Bobin özelliklerine bağlı olarak sinyali değiştirir.
Fonksiyon, giriş olarak sinyal, bobin kapasitesi ve bobin sarım sayısını alır.
Bobin özelliklerine göre indüktansı ve akımın çarpımını hesaplar.

Diyot Efekti (diod_efekti):
Negatif değerleri sıfıra sabitleyerek sinyali değiştirir.

Transistor Efekti (transistor_efekti):
Giriş sinyalinin bir kısmını doğrusal olarak geçirir, diğer kısmını ise negatif değerleri sıfıra sabitleyerek geçirir.




fonksiyonların nasıl çalıştığı ve nasıl kullanılacağı konusundaki belirsizliklerimi gidermek için sizden yardım istiyorum.
Belki de her bir fonksiyonun örnek bir kullanımını paylaşabilir veya bazı örnekler üzerinden açıklayabilirsiniz.


Taktiklerinizi bekliyorum

Teşekkürler!


bobin örneği:

Python:
indüktans = (bobin_cap / 2) * (bobin_sarim_sayisi ** 2)
akım = np.gradient(sinyal)
gerilim = indüktans * akım
 

Ekler

  • simplescreenrecorder-2024-02-20_13.18.20.mp4
    290.5 KB
Son düzenleme:
tam bir teletext yaptım :D
Screenshot_2024-02-20_13-51-33.png
 
Belli bir sinyali üretip ses kartından çalan bir program yap :) Mesela sinüs dalgası, üçgen dalga, kare dalga, testere dalga, gürültü.
 
  • Beğen
Reactions: nt
@taydin bi firmware bekliyorum abi :D
 

Ekler

  • simplescreenrecorder-2024-02-22_14.16.24.mp4
    1.1 MB
kodun tamamı :
Python:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from scipy.signal import lfilter
from colorama import Fore, Style

class colors:
    red = Fore.RED + Style.BRIGHT
    gren = Fore.GREEN + Style.BRIGHT
    blue= Fore.BLUE + Style.BRIGHT
    yellow= Fore.YELLOW + Style.BRIGHT
    magenta = Fore.MAGENTA + Style.BRIGHT
    cyan = Fore.CYAN + Style.BRIGHT
    white = Fore.WHITE + Style.BRIGHT

def elektrik_sinyali_olustur(sinyal_tipi, frekans, genlik, sure, ornekleme_orani):
    t = np.linspace(0, sure, int(sure * ornekleme_orani))
    if sinyal_tipi == 1:
        sinyal = genlik * np.sin(2 * np.pi * frekans * t)
    elif sinyal_tipi == 2:
        sinyal = np.full_like(t, genlik)
    else:
        raise ValueError("Geçersiz sinyal tipi. 1 (AC) veya 2 (DC) olarak belirtin.")
    return t, sinyal

def direnc_efekti(sinyal, direnc_miktari):
    return sinyal

def kondansator_sarj_desarj_efekti(sinyal, kondansator_sabit):
    alpha = 1 - np.exp(-1/kondansator_sabit)
    return lfilter([1-alpha], [1, -alpha], sinyal)

def bobin_efekti(sinyal, bobin_cap, bobin_sarim_sayisi):
    indüktans = (bobin_cap / 2) * (bobin_sarim_sayisi ** 2)
    akım = np.gradient(sinyal)
    gerilim = indüktans * akım
    return gerilim

def diod_efekti(sinyal):
    return np.maximum(0, sinyal)

def transistor_efekti(sinyal):
    return 0.5 * sinyal + 0.5 * np.maximum(0, sinyal)

def animasyon_gorsellestir(t, sinyal):
    fig, ax = plt.subplots(facecolor='black')
    ax.set_facecolor('black')
    ax.set_xlim(0, max(t))
    ax.set_ylim(-1.5 * max(abs(sinyal)), 1.5 * max(abs(sinyal)))
    line, = ax.plot([], [], lw=2, color='pink')

    def init():
        line.set_data([], [])
        return line,

    def animate(i):
        x = t[:i]
        y = sinyal[:i]
        line.set_data(x, y)
        return line,

    ani = FuncAnimation(fig, animate, init_func=init, frames=len(t), interval=50, blit=True)
    plt.xlabel('Zaman (s)')
    plt.ylabel('Genişlik')
    plt.title("Elektirirk Sinyal Similasyonu")
    plt.grid(True)
    plt.show()

def menu_goster():
    print(colors.magenta + """
░░▒▓████████▓▒░░▒▓███████▓▒░▒▓███████▓▒░░
░░▒▓█▓▒░      ░▒▓█▓▒░     ░▒▓█▓▒░        
░░▒▓██████▓▒░  ░▒▓██████▓▒░░▒▓██████▓▒░░
░░▒▓█▓▒░             ░▒▓█▓▒░     ░▒▓█▓▒░░
░░▒▓████████▓▒░▒▓███████▓▒░▒▓███████▓▒░░

""" + Style.RESET_ALL)
   
def ana_menu():
    menu_goster()
    print(colors.cyan + "Elektirirk Sinyal Similasyonu")
    sinyal_tipi = int(input("Sinyal tipini seçin (1 - AC, 2 - DC): "))
    if sinyal_tipi not in [1, 2]:
        print(colors.red + "Geçersiz sinyal tipi seçimi. 1 veya 2." + Style.RESET_ALL)
        return
    frekans = 0.0
    if sinyal_tipi == 1: 
        frekans = float(input(colors.magenta + "Frekansı girin (Hz): "))
    genlik = float(input(colors.red + "Genlik (V): "))
    sure = float(input(colors.yellow + "Süre (saniye): "))
    ornekleme_orani = float(input(colors.blue + "Örnekleme Hızı (Hz): "))
    t, sinyal = elektrik_sinyali_olustur(sinyal_tipi, frekans, genlik, sure, ornekleme_orani)
    animasyon_gorsellestir(t, sinyal)

    while True:
        print(colors.yellow + "\nEfekt Seçenekleri:")
        print(colors.red + "1. Direnç")
        print(colors.cyan +"2. Kondansatör Şarj/Deşarj")
        print(colors.magenta +"3. Bobin")
        print(colors.yellow +"4. Diyot")
        print(colors.white +"5. Transistor")
        print(colors.yellow +"6. Yeni Sinyal Oluştur")
        print(colors.red + "7. Çıkış" + Style.RESET_ALL)
        secim_efekt = input("Uygulanacak efekti seçin (1-7): ")
        if secim_efekt == "1":
            direnc_miktari = float(input("Direnç miktarını girin (Ohm): "))
            sinyal = direnc_efekti(sinyal, direnc_miktari)
            animasyon_gorsellestir(t, sinyal)
        elif secim_efekt == "2":
            kondansator_sabit = float(input("Kondansatör sabitini girin: "))
            sinyal = kondansator_sarj_desarj_efekti(sinyal, kondansator_sabit)
            animasyon_gorsellestir(t, sinyal)
        elif secim_efekt == "3":
            bobin_cap = float(input("Bobin kapasitesini girin (H): "))
            bobin_sarim_sayisi = float(input("Bobin sarım sayısını girin: "))
            sinyal = bobin_efekti(sinyal, bobin_cap, bobin_sarim_sayisi)
            animasyon_gorsellestir(t, sinyal)
        elif secim_efekt == "4":
            sinyal = diod_efekti(sinyal)
            animasyon_gorsellestir(t, sinyal)
        elif secim_efekt == "5":
            sinyal = transistor_efekti(sinyal)
            animasyon_gorsellestir(t, sinyal)
        elif secim_efekt == "6":
            ana_menu()
        elif secim_efekt == "7":
            print("Bye.")
            break
        else:
            print(colors.red + "Geçersiz efekt. Lütfen (1-7) arasında bir seçenek girin." + Style.RESET_ALL)

if __name__ == "__main__":
    from colorama import init
    init(autoreset=True)
    ana_menu()
 
Sinyal üretimi güzel olmuş. Ama skalada x ve y eksenlerine değerleri yazman lazım. x saniye olarak zaman, y volt olarak genlik. Eğer zaman çok küçük ise, kenara 10-6 yazıp zamanın mikrosaniye olduğunu ifade edebilirsin. Ayrıca örnekleme noktalarını da bir şekilde işaretlemen lazım.

Komponent efektlerine gelelim. Her komponentin belli ve sabit bir efekti yoktur. Devrelerin bir efekti vardır. Mesela yükseltici, türev alıcı, integral alıcı, limitör, doğrultucu vs vs
 
  • Beğen
Reactions: nt
Helal olsun valla. Piton exe vermiyor mu biz de bakalım, web çıktısı verebiliyor diye biliyorum.
 
  • Beğen
Reactions: nt

Çevrimiçi personel

Forum istatistikleri

Konular
6,947
Mesajlar
118,687
Üyeler
2,822
Son üye
lalemasall

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top