Alçak geçiren filtre

YucaTR

Üye
Katılım
11 Haz 2021
Mesajlar
4
Puanları
1
Yaş
27
Merhabalar, Pic16f616 ile yazılımsal olarak alçak geçiren filtreyi nasıl yapabilirim veya yapabilir miyim? Teşekkürler
 
mehmet.bey genelde hangisini kullanıyorsunuz?

1)
int RawData;
Float SmoothData;
kayan nokta LPF_Beta = 0.025; // 0<ß<1

void main (void){
// LPF: Y(n) = (1-ß)*Y(n-1) + (ß*X(n))) = Y(n-1) - (ß*(Y(n-1)- X(n)));
süre(1){
// Fresh Data'yı RawData'ya getiren fonksiyon
RawData = GetRawData();
SmoothData = SmoothData - (LPF_Beta * (SmoothData - RawData));
}
}

2)
int RawData;
imzalı uzun SmoothDataINT;
imzalı uzun SmoothDataFP;
int Beta = 4; // Filtrenin uzunluğu < 16

void main (void){
süre(1){
// Fresh Data'yı RawData'ya getiren fonksiyon
RawData = GetRawData();
RawData <<= FP_Shift; // Sabit noktaya kaydır
SmoothDataFP = (SmoothDataFP<< Beta)-SmoothDataFP;
SmoothDataFP += RawData;
SmoothDataFP >>= Beta;
// Daha fazlasını yapmak istiyorsanız aşağıdaki vardiyayı yapmayın
// SmoothData kullanarak sabit noktalı hesaplamalar
SmoothDataINT = SmoothDataFP>> FP_Shift;
}
}
 
Birinci seçenek. Biraz yer kaplıyor float
olduğu için.
 

Forum istatistikleri

Konular
128,122
Mesajlar
915,181
Kullanıcılar
449,826
Son üye
SK.

Yeni konular

Geri
Üst