Cyfrowy filtr Chebyshev Design pomóc ->

N

neuralc

Guest
Witam wszystkich,

Próbuję projektowania lowpass Digital Chebyshev Filtr IIR, aby uzyskać średnią sinesoidal fali z niektórymi's cut z TRIAC.

Aby to zrobić, że staram się korzystać Filte.r Solution.s ale jeśli podasz 10 sig bitowy (do wykorzystania 10-bitowy ADC z 16F870) uzyskać nasycenie na filtr ...

Niektóre były wskazówki do tego.

Thank'sNeuralC

*****************************************
Prosimy nie odpowiadać, jeśli nie ma informacji, aby dodać do tego post.Thanks.

 
W twoim przypadku myślę, że istnieje problem z kompilatora.Sig 10 cyfr z FS nie oznacza 10bit.10bit to znaczy 0,001 ~ tak tylko 3 lub 4 cyfry lepiej wystarczą.Myślę, że problem może być compiller, że nie wie, co zrobić z tak wielu cyfr, czy może powinien zadeklarować stałe, jak pływak, lub konwersji 10bit A / D -> float (sądzę, że korzystanie z pływaków).Myślę, że zanim zaczniesz myśleć o filtr, sprawdzić obliczenia (obliczenia, co należy, a następnie sprawdzić symulowanej wartości).
Z drugiej strony sprawdzić FS odpowiedź.I've symulowanego obwodu w P * rotel i były różne odpowiedzi niż FS (około połowy dekady !!!).Ale nie było problemu z filtry cyfrowe

KamW
 
Hi neuralc

możesz znaleźć dobrego tła na ten temat w książce Oppenheim i Schafer "dyskretna
w czasie przetwarzania sygnałów".

Jak mam nie wykorzystane Filte.r Solution.s, nie mogę powiedzieć nic na ten temat.Dam kilka ogólnych pomysłów na metody w celu uniknięcia nasycenia.

Nasycenie problemy pojawiają się w zależności od używanego arytmetycznych.

(this is important).

Z zmiennoprzecinkowych nie powinno być żadnych problemów, więc mogę sobie wyobrazić korzystania stałym punktem arytmetycznych (np. 16 bitów) z 10-bitowe dane wejściowe dostosowane do mniej znaczących bitów
(jest to ważne).

I wyobrazić sobie korzystania z kaskady drugiej kolejności sekcji.Można obliczyć (lub pobrać przez symulacji) maksymalny zysk w pierwszej sekcji (na szczyt częstotliwości odpowiedzi) oraz, że maksymalne dopuszczalne amplitudy wejściowe nie są nasycenia tej sekcji.Jeśli to wejście amplituda jest niższa niż można się spodziewać,
musisz skalę (tłumienia) wejście w orden celu uniknięcia nasycenia.
Musisz postępować w ten sam sposób z innymi sekcjami filtr.Na każdym etapie, osłabienia wyników poprzedniego, jeżeli są one potrzebne.Nie złagodzenie zbyt wiele, w celu zachowania precyzji.
Ta metoda zapewnia, że nie ma żadnych nasycenia sinusoidalną wejściowych.(Istnieją inne kryteria i metody, ale ten jest ok).

Mam nadzieję, że tym pomóc.Jeśli potrzebujesz więcej szczegółów, let me know.
Pozdrowienia

Z

[Ta wiadomość była edytowana przez: zorro na 2002-01-31 17:00]

 
ThX wszystkim

KamW:
W FS, gdy idziesz do dyskretnych przeniesienia funkcji i wybierz opcję "unsign ustalić bin" etykieta sig cyfry są zmieniane na sig bity, więc tink, że
jestem poprawny (10 bitów
na sig do 10 bitów ADC).
Inne dziwne rzeczy to tam, gdzie korzystanie z Unsign Flt Bin lub Bin Unsign Fix kod generowany przez FS zawsze używać zmiennoprzecinkowych zmiennych!Zorro:
Moja wiedza na temat IIR są bardzo słabe, kiedy mówią "dostosowane do mniej znaczących bitów", co oznacza, że z?(10 bity są wyrównane do lewej lub prawej w 16-bitowy słowo?)

Wiesz niektórych aplikacji (nie FS), gdzie można symulować IIR filtr i automatycznie C kod jego realizacji?ThX

NeuralC
 
Hi NeuralC,

Odpowiadając na pytanie, przeznaczone do powiedzenia, że 10 bity powinny być dostosowane w prawo (zajmujące dolną część z 16-bitowe słowo).Pozostałe 6 bitów to rozszerzenie z najbardziej znaczących (znak) bit z 10-bitową wartość.Ponieważ pierwszy punkt porządku
2-ci może mieć większe zyski niż jedność, jeśli wejście jest silna jest ryzyko, aby uzyskać nasycenia na wyjściu, jeśli wartość jest dostosowane w lewo (w kierunku MSB).

Czy do pracy z C kod źródłowy?Jeśli tak, możesz wysłać je do mnie (z żądaną właściwości filtra) w celu podjęcia wygląd i pomóc ...

Pozdrowienia

Z
 
Hi NeuralC,

myślenia ponownie na Twoje zgłoszenie,
być może jest coś lepszego i łatwiej można zrobić, jeżeli jest to, czego potrzebujesz do pomiaru średniej wartości okresowego sygnału.

Suma próbek w ciągu całego okresu (lub całkowita liczba okresów).Nie ma znaczenia, na którym etapie okresowe sygnału uruchomieniu.W ten sposób będziesz mieć średnią sygnału w cyklu pomnożona przez liczbę zgromadzonych próbek.Jeżeli częstotliwość pobierania próbek jest wielokrotnością okresowych sygnału, pomiar nie marszczyć.

Jeśli to zrobisz continiously w cyklu Avery (lub N cykli), jest to równoważne do stosowania filtrów FIR averager których odpowiedzi impulsowej jest prostokątne okna, a następnie decimator (downsampler).Przeniesienie funkcja zerami na częstotliwości podstawowych i na wszystkich jej harmonicznych, więc nie marszczyć.

Metoda ta jest łatwa i bardzo szybka,
a wszystko co jest potrzebne, aby wykonać kwoty (nie produktów).Jedynym jest ostrożność, że musisz używać akumulatora wystarczająco długi orded w celu uniknięcia nasycenia.
Pozdrowienia

Z
 
Hi neuralc
Masz rację, istnieje możliwość, aby obciąć liczbę bitów, ale myślę, że nie działają.I sprawdzić FS i stwierdził, że jeśli mogę użyć podpisane lub unsigned istnieją zawsze pływaków i liczb ujemnych.Jest to bardzo interesujące własności FS nie jest to być może jest to problem z C * R * A * C * k.
jednak wrócić do swojego wniosku.Zawsze symulacji filtrów parametry VEE.Więc jeśli masz problemy z PM FS plik, mogę sprawdzić jak to działa.
 
Cześć,

Mam myśleć w rozwiązaniu dokonać suma wszystkich próbek w danym okresie i na końcu dokonać podziału.Problem znaleźć jej fakt, że każda próbka może osiągnąć wartość 3FF, więc z 16bit słowo mogę suma maksimum 64 próbek (które s wystarczy?).Każdy cykl ma okres 10 ms (100Hz), o częstotliwości próbkowania 6400 Hz, nie zaszumieć?Z cyklu na cykl Mam do sumy poprzedniej wartości rzeczywistych i holowania przez podział?

Moim głównym problemem jest to, że czas 16bit podział (I'm użyciu 16f870 na 10 MHz (400 ns)) ...wiesz asm lub C kod do poprawy tego?Dziękujemy za pomoc,

NeuralC
 
Hi NeuralC,

problemu można wymienić (maksymalna liczba próbek w celu zapewnienia nie nasycenia) jest przedmiotem I, o której mowa opowiadając, że można mieć ostrożnie używania akumulatora wystarczająco długi.Jeśli programowania w języku C,
należy użyć zmiennej typu długi akumulatora (należy upewnić się, że kompilatora używa 32-bitów dla długich zmiennych).Jeśli używasz języka montażu,
należy użyć wielu precyzyjne (24 lub 32 bity) arytmetycznych.

Wydział ma problemu jeśli dzielnik jest zasilanie z dwóch: w tym przypadku podział jest tylko arytmetyka zmiany (np. podzielić przez 64 przesunięcie 6 miejsc po prawej).W celu zachowania dokładności, można wykonać zaokrągleń (zamiast truncation) podsumowując 1 (przebicia przez jedności) akumulatora przed ostatnią zmianę.

Nawet jeśli rektyfikowany fali ma częstotliwość 100 Hz, zaleca się próbkę kompletnego 50Hz okresu (lub liczba z nich), ponieważ dwie połówki cykli nie muszą być identyczne.

Na przykład, jeśli częstotliwość pobierania próbek jest 6400 Hz, w jednym cyklu 50 Hz (20 ms),
musisz sumę 128 próbek.

signal you will shift it 7 places at right.

Po sumowaniu, akumulatora zawiera średnią z fali pomnożona przez 128, a jeśli chcesz tego wyniku w tym samym skalowania niż pierwotny
sygnał będzie przesunięcie go 7 miejsc po prawej stronie.Jednak w zależności od tego, co masz zamiar zrobić z tego wyniku,
być może trzeba innego skalowania, więc być może trzeba zastosować inną liczbę zmian.

Nie trzeba średnia pomiaru z poprzednią z cyklu do cyklu.Możesz to zrobić, oczywiście, a otrzymasz inną cechę filtrowania.

Mam nadzieję, że to pomoże.Pozostań w kontakcie.

Z
 
Hi NeuralC
Z prostego obliczenia w zegary (6400Hz z zegarem 10MHz) to można znaleźć, że jest czas tylko dla 2 lub wielu podziału na jeden punkt w zmiennoprzecinkowych matematyki.Myślę, że istnieje "filtr", które mogłoby rozwiązać problem.Jeśli znasz częstotliwość, kształt i fazę sygnału można użyć korelacji technik (tak caled dopasowane filtrowanie) trzeba tylko jeden multipe i dodatkowo na punkt (z tabeli).Albo jeśli dont know fazy, należy używać skomplikowanych obliczeń (musisz dwukrotnie obliczeń).Jest to bardzo skuteczne i szybkie metody zostały wykorzystane.Aby uzyskać więcej informacji sprawdź http://www.dspguide.com chapter7.(I've seen skopiować gdzieś w FM1)
 
Hi NeuralC
Z prostego obliczenia w zegary (6400Hz z zegarem 10MHz) to można znaleźć, że jest czas tylko dla 2 lub wielu podziału na jeden punkt w zmiennoprzecinkowych matematyki.Myślę, że istnieje

 
Hi all,

Zoro:

Mój pomysł suma średniej wartości z cyklu na cykl, ponieważ jest to system, w którym filtr zostanie dołączony jest do kontroli średniej tyristor kontrolą fali.Więc jeśli suma wartości mogę zobaczyć, jak wyjście to się zmienia i poprawne jej żądaną wartość.KamW:

Mówiąc ponownie o FS, teraz nie potrzebujemy CR (at) ck go, przejdź do tego posta i dostać pozwolenie:
http://www.elektroda.pl/eboard/viewtopic.php?topic=10816&forum=3

ale czy to z tego C wygenerować kod są zawsze z pływaka ....

ThX

NeuralC
 
Hi NeuralC,

Cytat:Dnia 2002-02-07 14:06, neuralc napisał:

.....

Mój pomysł suma średniej wartości z cyklu na cykl, ponieważ jest to system, w którym filtr zostanie dołączony jest do kontroli średniej tyristor kontrolą fali.
Więc jeśli suma wartości mogę zobaczyć, jak wyjście to się zmienia i poprawne jej żądaną wartość.

.....

 

Welcome to EDABoard.com

Sponsor

Back
Top