Opamplı Devrede Eksik Nedir?

Başlatan HAKKITANIR, 25 Kasım 2019, 18:51:08

Sozuak

Orijinal sistemde adc  anlık olarak verileri almak yerine  bizim bir ölçüm sisteminde yaptığımız gibi ortalama alıyor hatta ortalama alırken aldığı örnekler içindeki minimum-maksimum uçlardaki aşırı farklı değerleri dışlıyor olabilir. Düzgün çalışması için ille de donanımsal birşey olması gerekmez.

HAKKITANIR

#16
diferansiyel opamp önerisinden sonra işte buda güzeldi.

bizde pic'in serbestçe koşturduğu while(1) program döngüsü içerisinde, kodun adc kanal okuma kısmında çoklu okumalar yapıp, bu okumaların sayısı belirli bir ikili sayı sistemi ve katlarına ulaştığında, bunların ortalamasını alıp değerlendirmeye tabi tutmayı denedik. 2-4-8-16-32-64-128-256-512-1024 kez okuyup okumaları üst üste toplayıp, ondan sonra bunların ortalamasını almanın hepsini test ettim. ama yinede adc pot okuma sonucu zıplaması sorunu hala mevcuttu.
birde okumaları üstde bahsettiğim gibi değilde, while(1) içerisinde serbest döngü koşturması içerisinde, adc kanal okuma kod kısımlarına her bir kez uğradığında değilde, program adc kanal okuma kısmına tek bir kez uğradığında programı istenilen adc örnekleme okuma sayısı bitene kadar orada çakılı halde bekletmeyide denedik. sonra istenilen sayıda okuma yapıldığında ortalamasını alıp programı döngü içinde diğer işlerini yapması için serbest bıraktık.
her iki neticede aynıydı aralarında pek fark yok. sorun hala gözle gözlemlenebiliyordu. burada gözlem sonuçları gözle yapılıyor tabiki.

yalnız biz bu adc öreklemelerini hiç bir zaman topluca veya bireysel ayrı ayrı elemeye tabi tutmadık.
siz yazınca bunu farkettim. hemen bunu nasıl yapabiliriz diye düşündüm.

şöyle bir şeymi yapmak gerekiyor?;
potu peş-peşe araya farklı program döngüleri sokmadan veya yine serbest program döngüsü içerisinde adc pot okuma sırası geldiğinde yine çoklu olarak okuyup, bu sefer değerleri direkt üst üste toplamadanmı, elemeye tabi tutacağız. yoksa yine çoklu okuyup ortalamasını aldıktan sonra, alınan bu ortalamalarımı kendi arasında elemeye tabi tutmak gerekiyor?

"minimum-maksimum uçlardaki aşırı farklı değerleri dışlıyor" kısmını biraz daha açık anlatmanız mümkünmüdür acaba? burda bir lamba yandı kafamda ama ne yapacağımı tam çıkaramadım. belki bu kısmın kodunu yazmakta bile zorlanabilirim, uzun zamanda sürebilir. ama öncelikle ne yapacağımı anlamam yeterli olur.

secretagent

Sıralama algoritmalarını inceleyiniz bubble  sort algoritması ile belirli zamanda aldığınız ölçümleri küçükten büyüğe sıralama sokup istemedikleriniz atıp kalanların ortalamasını alabilirsiniz.

Örnek kod :
public void bubblesort(int [] A) // bir diziyi parametre alan fonksiyon
  {
     int tmp;

    for(int i=0; i<A.length; i++)
    {
    int sirali=1;
      for(int j=A.length-1 ; j>0;j--)
      {
        if(A[j-1]>A[j]) //şayet buraya girmiyorsak dizi sıralı demektir
        {
          sirali=0;  //şayet giriyorsak sıralı değil demektir
          tmp=A[j-1];
          A[j-1]=A[j];
          A[j]=tmp;
        }
      }
      if(sirali)//şayet dizinin üstünden geçtiğimiz halde
                //hiç bir değer yer değiştirmiyorsa
                // dizi sıralıdır döngüden çıkılabilir
         break;
    }
  }

HAKKITANIR

" Sıralama algoritmalarını inceleyiniz bubble  sort algoritması ile belirli zamanda aldığınız ölçümleri küçükten büyüğe sıralama sokup istemedikleriniz atıp kalanların ortalamasını alabilirsiniz. "

istediklerimizi atmamız istediklerimizi değerlendirmeye almamız kısmında sorun var.
neye göre hangi referansa şarta göre değeri kabul veya red edeceğiz. birçok yöntem oluşturulabilir burda.
dijital bir yazılım filtresi ile uğraşacağız görünen o, adc için en berbat en zor konu, tek bir kanal için bunu yapıyor olmamız da bir bakıma iyi aslında. ilk kez deneyeceğim bir yöntem olacak. dsPIC de bu yönde filtrelerde kullanılabiliyor diye görüyorum ama ben bunu kullanmayı şu anda bilmiyorum. kılasik yöntemlerle kod ile yazarak uğraşmayla başlayacağım. yöntemi doğru ve etkin olanından belirlersek kod kısmına ondan sonra odaklanabilirim. diye düşündüm.

bir çok yöntem geliyor aklıma, ama hangisi daha doğru olanıdır, bunu bilerek bilinçli başlamak lazım.

öncelikle bu sefer donanımsal olarak hiç denemediğim diferansiyel opamp modeliyle örnekleri almayı denemek istiyorum. bu model hoşuma gitti birden nedense. burada topraktan geldiğini ve sürekli olmayıp, anlık olduğunu düşündüğüm ve sıkıntının kaynağı zıplamalı dalgalanmaları altdaki gibi bir şematikle dekarte etmeyi planladım. öncelikle bu doğru bir donanım modelimidir bununla ilgili genel görüşleri almayı isterim.

akılı şöyle yürüttüm;
gerilimini/voltajını pic adc si ile ölçeceğimiz potun orta bacağındaki artan yöndeki ve sürekli olmayan dalgalanmalarla karşı karşıyayım gördüğüm bu benim (yanlışta görebiliyor olabilirim tabiki son anda sürprizi yiyebilir yine belki), böyle ise potun diğer bacaklarında +5V. ve toprak bağlı. buradaki yalnızca toprak pic adc okuma kanalıylada ortak olmak durumunda yoksa okuma gerçekleşmez. demekki potun orta bacağındaki dalgalanma topraktada olmalı galiba. bu yüzden altdaki şemada diferansiyel opampın V1 girişine toprağı girsek ve tüm dirençleri eşit kullansak, Vout = V2-V1 olacağından toprakdan gelen dalgalanmalar yani opamp çıkışında elenmiş olur mu? bu mantık işe yarar mı? acaba. yararsa yazılımda fazla kastırmam belki. V1 girişine toprak vermek doğru değilsede potun orta bacağında artan yöndeki ama nezaman ne kadar arttığı belli olmayan anlık gerilimi bir şekilde verebilirsek bu iş donanımsal olarak bile çözülmüş olabilir belki, ne dersiniz doğru bir şey düşünmüşmüyüm?


tüm dirençler eşit olduğunda, Vout = V2-V1 oluyormuş. V1 e dalgalanmayı arttıran kısmı girmek lazım galiba, bu durumda diğer V1 girişi pot orta bacağı yani pic adc si ile asıl okunmak istenen kısım olucak. son olarak resimdeki şema çıkışına 330R bir direnç ekler direk pic adc sine gireriz bu olurmu?

mustafa_cmbz

Pcb tasarımını hala merak ediyorum. 🤣 İlla potun ucundan gelen akım VS den bahsediliyor ama hiç bu konulara değinilmiyor.

Karda çektiğiniz besleme kablosundan 220v verip kartın yanına bir güç kaynağı koydunuz mu?

Sozuak

Artık iş tamamen farazi konuşmaya kaldı.  Ya pot verileri dijital yolluyorsa diyeceğim.  Ortada nasıl bağlandığı belli olmayan bir pot var ille de ona birşeyler uydurmaya çalışıyoruz. Bence sahada biraz daha fazla incelemede bulunmanız lazım. Ortada tek bilgi var o da potun orta ucu. Siz birşeyleri atlıyorsunuz gibi geliyor. O atladığınız şeyi bir bilsek  ben bunu daha önce düşünmüştüm vay canına yapmışlar demek diyeceğiz ya :)

HAKKITANIR

Alıntı yapılan: mustafa_cmbz - 26 Kasım 2019, 17:14:15Pcb tasarımını hala merak ediyorum. 🤣 İlla potun ucundan gelen akım VS den bahsediliyor ama hiç bu konulara değinilmiyor.
Karda çektiğiniz besleme kablosundan 220v verip kartın yanına bir güç kaynağı koydunuz mu?

Bunu yazmıştım. Karta çekilen besleme kablosundan DC 24 V. veriliyor. 220v. potun yanında uzakta kalıyor. 220v. la işimiz yok.

diferansiyel opamp ve adc yazılım filtrelemeleri ile denemeler yapalım o zaman artık. uygulamaya zamanı...

mustafa_cmbz

🤓 Arkadaş hepimizden akıllı boşuna nefesinizi tüketmeyin ne söylediğimiz dinliyor nede anlamak için çaba sarf ediyor.

Ama cidden çok merak ediyorum pcb çizimi ni atmamakta ki ısrarın nedir acaba?

Aga uzaktaki kart dediğine +24v çektiğin kablodan 220v gönder kartın yanına başka bir güç kaynağı koy diyorum zahmet edip dinlemiyor bile 🤣

Tırmala dur ne diyeyim. Ortada bir tane opam bir tane pot muhabeti dönüyor dünden beri ne tespit ne gözlem hiç birşey yok elinde sahadan aldığın veri yok yazılım ile çözmeye çalışıyorsun. Ne diyim Allah senle uğraşanlara sabır versin.