Gönderen Konu: FİLTRE  (Okunma sayısı 11799 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

mustafa_ozcan

  • Ziyaretçi
FİLTRE
« : 28 Haziran 2010, 14:27:24 »
S.A. USTALAR DEDEKTÖRLERDEKİ UĞULTUYU VE DIŞ ETKENLERDEN KAYNAKLI PARAZİTLERİ BASTIRMAK İÇİN NELER YAPILABİLİR...

BEN BU DEVREYİ BULDUM İŞ GÖRÜRMÜ SİZCE...

http://freecircuitdiagram.com/2008/08/08/hum-filter-an-ultimate-weapon-to-remove-ac-line-noise/

BİRDE GEOTECHTE ROSPY'NİN YAYINLADIĞI SUPERSCAN ADLI DEVREDE S2 ANAHTARININ BULUNDUĞU OPAMP ACABA GÜRÜLTÜ BASTIRMAMI
http://www.geotech1.com/forums/showthread.php?t=15387
http://g.imagehost.org/view/0107/w

( ya bu filtrenin başında hum var bizim humhum filtreler konusunda deneyimli bildiğim kadarıyla cevap yazar inş.)
« Son Düzenleme: 28 Haziran 2010, 14:48:02 Gönderen: mustafa_ozcan »

BigBang

  • Ziyaretçi
Ynt: FİLTRE
« Yanıtla #1 : 28 Haziran 2010, 16:46:38 »
Yapmayı düşündüğünüz dedektörün hangi frekansta yapmayı düşünüyorsunuz ? Öncelikle gürültü kaynağına yönelik düşünmek lazım . Sebep kendi vericiniz ise farklı , 50 Hz. ise farklı , toprak ise farklı çözüm bulmak gerekebilir .50 Hz. gürültüden de korunmak için illa notch filtre yapmaya gerek yok.Çalışma frekansınızı 75-125 Hz gibi  frekansın kendinden ve harmoniklerinden uzak seçip darbantlı ( birkaç Hz.) bir bandpass filtre ile de çalışabilirsiniz. Yani sonuçta sizin yapmak istediğiniz daha önemli .

Çevrimdışı humhum

  • Yüzbaşı
  • ***
  • İleti: 623
  • humhum
Ynt: FİLTRE
« Yanıtla #2 : 24 Temmuz 2010, 00:58:20 »
Merhaba Arkadaşlar, PI MD için Geniş Band  20hz - 100Khz  arası Yer veya Topraktan  (akşam saatlerinde özellikle) gelen  50hz,60hz, 60Khz ...  frekasları süzecek Opamp'lı bir şemaya ihtiyacım var ,  yardımlarınızı bekliyorum.


 Saygılar.

Uykusuz

  • Ziyaretçi
Ynt: FİLTRE
« Yanıtla #3 : 24 Temmuz 2010, 10:44:16 »
Alçak frekanslı bileşenler için farksal örnekleme yüksek frekanslı bileşenler için de ortalama almak gözle görülür şekilde fayda sağlıyor. Saygılar.

Çevrimdışı humhum

  • Yüzbaşı
  • ***
  • İleti: 623
  • humhum
Ynt: FİLTRE
« Yanıtla #4 : 24 Temmuz 2010, 15:01:34 »
Alçak frekanslı bileşenler için farksal örnekleme yüksek frekanslı bileşenler için de ortalama almak gözle görülür şekilde fayda sağlıyor. Saygılar.

 Uykusuz kardeş, etkili olabilecek yada denenmiş   link yada şema vermen mümkün mü?   PI  Devre üzerinde deneyecem.

 Saygılar.

50_dark

  • Ziyaretçi
Ynt: FİLTRE
« Yanıtla #5 : 24 Temmuz 2010, 15:05:43 »
kolay gelsin arkadaşlar ben hassas bir metal dedektörü yapmak istiyorum da önerebileceğiniz bir devre var mı acaba yardımcı olursanız sevinirim

Uykusuz

  • Ziyaretçi
Ynt: FİLTRE
« Yanıtla #6 : 24 Temmuz 2010, 15:58:48 »
Merhaba

Ortalama alma işi yazılımsal yapılıyor. Ben PIM-1 projesinde bu yöntemleri uyguladım. İnternette böyle bir devreye rastlamadım henüz. Farksal  örneklemeyi analog olarak yapabilirsiniz. Delta pulse de sens potu GND örneğinin alındığı zamanı belirliyor ve bu örnek ile signal potunun belirlediği anda alınan örnek birbirinden çıkarılıp ses sinyaline çevriliyor. Örnek olarak deltanın  bu kısmını inceleyebilirsiniz.

50_dark, Hassas bir dedektör istiyorsanız delta pulse'yi yapabilirsiniz.

Saygılar.
« Son Düzenleme: 24 Temmuz 2010, 16:04:50 Gönderen: Uykusuz »

Çevrimdışı humhum

  • Yüzbaşı
  • ***
  • İleti: 623
  • humhum
Ynt: FİLTRE
« Yanıtla #7 : 25 Temmuz 2010, 00:35:13 »
Merhaba

Ortalama alma işi yazılımsal yapılıyor. Ben PIM-1 projesinde bu yöntemleri uyguladım. İnternette böyle bir devreye rastlamadım henüz. Farksal  örneklemeyi analog olarak yapabilirsiniz. Delta pulse de sens potu GND örneğinin alındığı zamanı belirliyor ve bu örnek ile signal potunun belirlediği anda alınan örnek birbirinden çıkarılıp ses sinyaline çevriliyor. Örnek olarak deltanın  bu kısmını inceleyebilirsiniz.

50_dark, Hassas bir dedektör istiyorsanız delta pulse'yi yapabilirsiniz.

Saygılar.

Tamam dediğin gibi bi deneyeyim bakalım nasıl bi sonuç alacağım.      Sağolasın.


50_dark

  • Ziyaretçi
Ynt: FİLTRE
« Yanıtla #8 : 25 Temmuz 2010, 17:02:09 »
teşekkür ederim Uykusuz üstad yardımcı olacağın devre varmı acaba pcb si olan link fln atarsan sevinirim.

mustafa_ozcan

  • Ziyaretçi
Ynt: FİLTRE
« Yanıtla #9 : 09 Ağustos 2010, 21:16:37 »
opampların birsürü tipi var kendi özelikleri bu işe yaramazmı low noise low distorsiyon vs. ekstradan filtre yapmaya ihtiyaç varmı birde schmitt trigger kapısı kullanılarak sinyaldeki paraziti temizliyorlar hangi yöntem uygun olur. op kazancını geri besleme direnciyle oynuyarakmı yoksa opun besleme voltajını artırarakmı daha güzel olur...
yorum ve görüşlerinizi bekliyorum saygıdeğer kıymetli ustalar....

BigBang

  • Ziyaretçi
Ynt: FİLTRE
« Yanıtla #10 : 10 Ağustos 2010, 02:22:07 »
Sanırım opamp seçimi isteğe bağlı olsa gerek . Aslında low noise opampları filtrelerde kullanmak bana daha mantıklı gelse de filtre katında JFet opamplar da kullanılıyor. Sanırım bunun sebebi de gain'i biraz yükseltmek olsa gerek . Ustalardan daha güzel açıklamalar gelecektir.Ben de bunu merakla bekliyorum .

Çevrimdışı nahita

  • Teğmen
  • *
  • İleti: 47
Ynt: FİLTRE
« Yanıtla #11 : 10 Ağustos 2010, 17:12:09 »
Geotech'deki CorbynPI devresini inceledinizmi? burada "part2" de opamplarla filtre devresi var belki fikir verir.

http://www.geotech1.com/cgi-bin/pages/common/index.pl?page=metdet&file=/projects/corbyn/index.dat

Çevrimdışı humhum

  • Yüzbaşı
  • ***
  • İleti: 623
  • humhum
Ynt: FİLTRE
« Yanıtla #12 : 11 Ağustos 2010, 22:33:08 »
Geotech'deki CorbynPI devresini inceledinizmi? burada "part2" de opamplarla filtre devresi var belki fikir verir.

http://www.geotech1.com/cgi-bin/pages/common/index.pl?page=metdet&file=/projects/corbyn/index.dat

Proteus'la ClonePI-2 yi  Opamp ile Filtrelemeyi  denedim filtreleme yapıyor istenmeyen frekansları , fakat sinyalde Faz kayması ve eyrilik oluşturuyor o yüzden bobin+direnç+Cap. daha verimli bilginize.

Çevrimdışı humhum

  • Yüzbaşı
  • ***
  • İleti: 623
  • humhum
Ynt: FİLTRE
« Yanıtla #13 : 26 Eylül 2010, 16:32:36 »
Merhabalar,  Yazılım bilen arkadaşlar     C 'de  ve Delphi 'de yazıl bu LMS türü gürültü ve parazit engelleyici filitreyi  PIC 'e  veya her.gi bir entegreye yükleyerek   denemeniz mümkün mü ?
 Sonuc olumlu olursa şema olarak paylaşırsanız sevinirim.

 Saygılar.

 Еще раз прошу хелпа по LMS шумопонижению. Надыбал алгоритм LMS шумопонижения "вслепую". Вот исходники на СИ:

// Denoise.cpp: implementation of the CDenoise class.
//
//////////////////////////////////////////////////////////////////////
 
#include "stdafx.h"
#include "RxDisp.h"
#include "Denoise.h"
#include "Soundcard.h"
 
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
 
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
 
CDenoise::CDenoise()
{
 
}
 
CDenoise::~CDenoise()
{
 
}
 
void CDenoise::Denoise(float *InBuff)
{
    int i, j;
    float fSampleOut, fErr, mu;
   
    mu = (float)0.017;
 
    for (i = 0; i < FRAMES_PER_BUFFER; i++)
    {
        // Filter the samples with the previous coefficients.
        fSampleOut = ShiftReg[DLY_LEN]*Coeff[0];
        for (j = 1; j < FLT_LEN; j++)       
            fSampleOut += (ShiftReg[DLY_LEN + j]*Coeff[j]);
 
        // Compare the input sample with the filtered output
        fErr = (float)(mu*(InBuff - fSampleOut));
       
        // Update the filter coefficients.
        for (j = 0; j < FLT_LEN; j++)
        {
            Coeff[j] *= (float)DECAY;
            Coeff[j] += (float)(fErr*ShiftReg[DLY_LEN + j]);           
        }
 
        // Shift the sample into the delay line/filter.
        for ( j = REG_LEN-1; j > 0; j--) ShiftReg[j] = ShiftReg[j - 1];
        ShiftReg[0] = InBuff;
 
        InBuff = fSampleOut;
    }
   
}
 
void CDenoise::InitLMS()
{
    int i;
 
    for (i = 0; i < REG_LEN; i++) ShiftReg = 0;
    for (i = 0; i < FLT_LEN; i++) Coeff = 0;
 
}


// Denoise.h: interface for the CDenoise class.
//
//////////////////////////////////////////////////////////////////////
#define FLT_LEN 32
#define DLY_LEN 1
#define REG_LEN FLT_LEN + DLY_LEN
#define DECAY   0.9995
 
#if !defined(AFX_DENOISE_H__C3207BF8_1B38_483B_8870_F03AA311F77E__INCLUDED_)
#define AFX_DENOISE_H__C3207BF8_1B38_483B_8870_F03AA311F77E__INCLUDED_
 
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
 
class CDenoise : public CObject 
{
public:
    void InitLMS();
    void Denoise(float *);
    CDenoise();
    virtual ~CDenoise();
 
private:
    float ShiftReg[REG_LEN];
    float Coeff[FLT_LEN];
};
 
#endif // !defined(AFX_DENOISE_H__C3207BF8_1B38_483B_8870_F03AA311F77E__INCLUDED_)






Вот то же самое на делфи:


 Delphi' de yazılmış  yazılım:






procedure THiAsmClass.doLMS(var _Data:TData; Index:word);
var ofl,i,j,lor:integer;
    Arr:PArray;
    Ind,Val:TData;
    yn,err:single;
    ala:integer;
    //als:string;
    //ald:integer;
begin
 ofl := ReadInteger(_Data,GoLMS,_prop_GoLMS);//если включено
 if ofl>0 then
  begin
   mu := ReadReal(_Data,Mju,_prop_Mju); //читаем МЮ
   Arr := ReadArray(ArrC);
   lor := ReadInteger(_Data,L_R,_prop_L_R);
   if lor = 0 then i :=0 else i := 1;//переключение левого и правого каналов
   if Arr<>nil then
    begin
     while i <= 2*nn-1 do //загружаем блок в массив
      begin
       Ind := _DoData(i); Arr._Get(Ind,Val); {ald}al[i div 2] := ToInteger(Val);
       //als := Int2Str(ald); al[i div 2] := Str2Double(als);
       inc(i,2);
      end;
    end;
  //*************************************
   for i := 0 to nn-1 do//LMS фильтрация блока по каждому семплу
    begin
     yn := reg[1]*coef[0];//выходной сигнал
     for j := 1 to M-1 do yn := yn + reg[j+1]*coef[j];
     err := mu*(al - yn);//ошибка
     for j := 0 to M-1 do //правка коэфф. фильтра 
      begin
       coef[j] := coef[j]*dcy;
       coef[j] := coef[j] + err*reg[j+1];//есть исполнение проги при откл. этой строки
      end;
     j := M; //сдвиг регистра
     while j > 0 do
      begin
       reg[j] := reg[j-1];
       dec(j);
      end;
     reg[0] := al;//есть исполнение проги при откл. этой строки
     al := yn;
    end;
  //**************************************
   if lor = 0 then i :=0 else i := 1;//грузим результат
   if Arr<>nil then
    begin
     while i <= 2*nn-1 do //загружаем блок
      begin
       Ind := _DoData(i);
       ala := trunc(al[i div 2]);
       if ala > 32767 then ala := 32767;//ограничение выхода
       if ala < -32767 then ala := -32767;
       Val := _DoData(ala);
       Arr._Set(Ind,Val);
       inc(i,2);
      end;
    end;
  end;
 _hi_OnEvent(onLMS,yn);
end;