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

nt

Emekli
Katılım
21 Nisan 2023
Mesajlar
1,215
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
5,848
Mesajlar
99,755
Üyeler
2,482
Son üye
ilker29

Son kaynaklar

Son profil mesajları

gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Back
Top