Şimdi Ara

Pic 16F877A ve CCS C ile ilgilenmiş arkadaşlar yardım eder misiniz?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
8
Cevap
0
Favori
659
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Tepe değeri 5v olan bir sinüs dalgasını opamplarla doğrulttum. Ancak bu sinyal dc değil, sadece negatiften kurtardım, dalga pozitif alternansta yani. Şimdi bu sinyali 16f877a nin adc sinden okutup lcd ye yazdirmam gerekiyor. Anlık olarak, rms değeri ve tepe değerini yazdırmak istiyorum. Epey bi uğraş verdim ama yapamadım. Yardım edebilirseniz çok sevinirim.

    < Bu ileti mobil sürüm kullanılarak atıldı >



  • Opamplı işareti pozitife çekme devrenizin çıkışı, girişte işaret yoksa 2,5V çıkışmı veriyor?
    Diğer bir ifade şekli ile Vpp=3V ise opamp çıkışı, alt tepe noktasında 1V, üst tepe noktasında 4V üretecek şekildemi çıkış üretiyor? (İşaretin sıfır noktasının ofsetini 2.5V a mı çektiniz?)

    Diğer bir soru, işaretin frekansı sabitmi değişkenmi? Yoksa sadece genlikmi değişiyor?
  • rafet32 kullanıcısına yanıt
    Pic 16F877A ve CCS C ile ilgilenmiş arkadaşlar yardım eder misiniz?

    Hocam resim ekledim. Offset vermedim. +5v -5v arasında olan sinüs sinyalin +5v una dokunmadım, -5v unu tersledim. Bu şekilde sürekli 0 dan başlayıp +5v ta yükselip tekrar sıfıra inen dalgalar elde ettim. Frekans sabit. Dalganın genliği değişiyor.
  • merik and sago M kullanıcısına yanıt
    Problem çözümüne yaklaşım tarzı olarak şu şekilde tavsiyede bulunabilirim.

    Sinüs işaretin frekansı : 50Hz olduğunu kabul edelim.
    Doğrultulmuş işaret 100Hz
    Doğrultulmuş işaret peryot T = 1/100 = 10ms

    Burada 10 milisaniye boyunca peryodik zaman aralıkları ile bir dizi ölçüm yapmamız ve en yüksek değeri tespit etmemiz gerekiyor. Ölçümler arasındaki delta zaman aralıklarının eşit olması ölçüm sonucunun doğruluğu ve tekrarlanabilirliği açısından çok önemli.

    İşlemcimizin hızı ve diğer donanım parametrelerine göre belirli bir sayıda ölçüm için şu şekilde bir tanımlama yapınız.


    #define BIR_PERYOT_OLCUM_ADET 100 // 10milisaniye boyunca her 100microsaniyede bir ölçüm yap
    #define _FREKANS 100 // Çalışılan frekans 50Hz*2 doğrultulduğu için
    #define _PERYOT_US 1000000 / _FREKANS
    #define ORNEKLEME_GECIKME _PERYOT_US / BIR_PERYOT_OLCUM_ADET


    Aşağıdaki kod örneğinde işaretin tepe değerini bulup, işaretin sinüs olduğunu bildiğimiz için rms değerini bu tepe değeri kullanarak hesaplıyoruz.


    void Ac_olc_Max()
    {
    int16 i;
    float tepe_deger,rms_deger;
    int16 max_deger = 0;
    int16 anlik_deger;


    //--------------- Bir peryot süresince örnekleme al -------------------
    // max tepe değerini bul
    max_deger = 0;
    for (i=0; i < BIR_PERYOT_OLCUM_ADET; i++)
    {
    anlik_deger = read_adc();
    if ( anlik_deger > max_deger ) max_deger = anlik_deger;
    delay_us(ORNEKLEME_GECIKME);
    }
    //-------------- ölçüm sonuçları------------------
    // max 5000mv giriş Adc çözünürlük 1023 ~1000 kabul ettik
    // 5000/1000=5 adc değerini mV a çevirme katsayısı

    tepe_deger = max_deger * 5; // işaretin Vp değeri milivolt cinsinden
    rms_deger = tepe_deger / 0.7071 ; //Vrms=Vp/kök(2)


    }



    < Bu mesaj bu kişi tarafından değiştirildi rafet32 -- 16 Ocak 2020; 14:56:17 >




  • rafet32 kullanıcısına yanıt
    Çok çok teşekkür ettim hocam. Sayenizde hallettim.
  • merik and sago M kullanıcısına yanıt
    Özel mesajınıza forumda gsm onayını yapmadığım için okuyup cevap yazamıyorum.

    Problemi çözmenize sevindim.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: rafet32

    Özel mesajınıza forumda gsm onayını yapmadığım için okuyup cevap yazamıyorum.

    Problemi çözmenize sevindim.
    Eyvallah hocam
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.