Myrek1 napisał: Rozumiem, że w projekcie Chana było gorsze rozwiązanie, które pochłaniało całą pamięć Atmegi8. No to faktycznie lepiej to rozdzielić, chyba pomyślę nad tym, ale muszę jeszcze zrozumieć działanie tego filtra max29x.
Wcale nie gorsze, tylko inne. Oba mają swoje zalety i wady, a to że zużywa całą pamięć, to w niczym nie przeszkadza, bo to co nie będzie zużyte będzie się zwyczajnie marnowało.
Podział pasma na dwie części daje jak na razie taki efekt, że układ potrafi czasem "zgubić" jakiś krótki dźwięk o wysokiej częstotliwości, który jest wyraźnie słyszalny. Przyczyną tego jest duży czas akwizycji w kanale niskich częstotliwości (32ms).
Myrek1 napisał: W jaki sposób otrzymałeś konfigurację tego MAXa na częstotliwość 16KHz i 4KHz? Nie bardzo mogę to zrozumieć. Z początku myślałem, że to całe pasmo do 50KHz jest podawane na wyjście. Później że można je zmienić taktem, gdzie przełączają się pojemności. Ale skoro masz dwie częstotliwości z jednego układu przy stałym taktowaniu to o czym myślałem jest bez sensu.
Jak ustawia się te częstotliwości odcięcia, co ma na nią wpływ?
Częstotliwość odcięcia filtra ustala się częstotliwością taktowania, która dla MAX297 jest 50 razy większa od częstotliwości odcięcia, a dla pozostałych MAX29x 100 razy większa.
Dla 16kHz kondensator 25pF. Z obliczeń wychodzi większy (41.7pF), ale do tego dochodzą jeszcze pojemności wewnętrzne, indukcyjności ścieżek i końcówek oraz wszelkiej maści rozrzuty produkcyjne. Stanęło na tym, że jest 25pF, wartość dobrana eksperymentalnie i niekoniecznie powtarzalna. To już jest bardzo blisko skrajnych wartości częstotliwości taktowania i chyba nie bez powodu nie ma dla tak małych wartości pojemności stosownego wykresu w nocie katalogowej. Przy tych częstotliwościach raczej lepiej by było, gdyby układ był taktowany zewnętrznym generatorem.
Dla
2kHz (4kHz to częstotliwość próbkowania) chyba dałem taki, jak wyszedł ze wzoru i chyba nie trzeba było poprawiać, ale nie wiem, bo potrzebowałem układ do czegoś innego i tamten kondensator zmieniłem na inny.
Z jednego układu nie ma dwóch częstotliwości, albo inaczej, filtrowany sygnał trafia tu tylko na jedno wejście. Docelowo w analizatorze będzie tak, że na wejściu znajdzie się filtr dolnoprzepustowy w okolicy 16kHz (prawdopodobnie na wbudowanym w MAX297 wzmacniaczu) i z niego sygnał podawany będzie bezpośrednio na jedno z wejść przetwornika oraz na wejście filtra i dopiero z wyjścia filtra sygnał "okrojony" z wyższych częstotliwości trafi na drugie wejście ADC.
W układzie prototypowym zrobione to było tak, że były dwa układy MAX297, jedne dla 2kHz, drugi dla 16kHz, ale to tylko dlatego, że miałem gotową płytkę z zamontowanymi dwoma filtrami.
Chyba lepszą opcją będzie taktowanie tego z timera w procesorze, bo nie trzeba się bawić w dobór kondensatora na wejściu, a i potem w razie potrzeby w banalnie prosty sposób częstotliwość można zmienić. No i będzie o jeden element i dwa otwory mniej na płytce ;].
Myrek1 napisał: Wydaje mi się, że w Twoim projekcie można było zastosować max293 (przepuszcza do 25KHz) bo masz maksymalną częstotliwość 16MHz, czy to prawda?
Chodziło Ci o 16kHz?
Tak, można zastosować MAX293. Jeszcze lepiej w roli filtra antyaliasingowego sprawdzi się MAX294 (bardziej strome opadanie charakterystyki). Użyłem MAX297, bo takie miałem.
Tak przy okazji, to żeby zlikwidować aliasing, pasmo powinno być ograniczone trochę bardziej niż połowa częstotliwości próbkowania. Dla MAX297 i MAX293 pasmo zaporowe zaczyna się od 1.5 * częstotliwość charakterystyczna filtra, a dla MAX294 współczynnik ten wynosi 1.2.
Co do zasady działania, to jest to ździebko skomplikowane. Rzecz sprowadza się do tego, że kondensator przełączany między wejściem a wyjściem zachowuje się jak rezystor. Tak jak przez rezystor przy różnicy napięć pomiędzy wejściem a wyjściem będzie płynął prąd. Tylko że tu prąd ten popłynie porcjami, na przemian z wejścia do kondensatora i z kondensatora do wyjścia. Zasada jest mniej więcej ta sama, tylko że tu mamy do czynienia z systemem z czasem dyskretnym. O ile w systemach z czasem ciągłym prąd (właściwie to natężenie prądu) to pochodna z przepływającego ładunku elektrycznego po czasie (i = dq / dt), do w systemie z czasem dyskretnym mamy już do czynienia ze skończonymi przyrostami i i=Δq/Δt. Δq to różnica ładunku zgromadzonego w kondensatorze, czyli ilości ładunku, który pobrał i który oddał w ciągu jednego okresu, Δt to czas trwania jednego okresu. (oczywiście równanie i = dq / dt wciąż obowiązuje, ale nas interesują wartości uśrednione w czasie).
Ładunek zgromadzony w kondensatorze Q = C * U, C to pojemność, U to napięcie.
W kompletnym cyklu ładowania i rozładowania ładunek który przepłynie przez kondensator będzie równy: Δq = C * (U1 - U2), gdzie U1 i U2 to napięcia odpowiednio na wejściu i na wyjściu (dowód tego sobie darowałem, jest to po prostu różnica ładunku zgromadzonego przy napięciu U1 i przy napięciu U2).
Stąd mamy, że przez taki układ popłynie prąd:
i = C * (U1 - U2) / Δt.
Prawo Ohma: R = U / I.
Prąd mamy, napięcie mamy (U1 - U2), to wstawiamy:
R = (U1 - U2) / (C * (U1 - U2) / Δt)
Po uproszczeniu:
R = Δt / C
Skoro:
Δt = 1 / f
Gdzie f jest częstotliwościa przełączania
To:
R = 1 / (f * C)
Oczywiście jak by oglądać na oscyloskopie przebieg na wyjściu takiego "rezystora" to zobaczymy "sieczkę", bo tutaj ważny jest średni prąd jaki przez niego płynie w jednym okresie, a nie wartość chwilowa w danym momencie okresu.
Żeby można było cokolwiek z takim "rezystorem" zrobić napięcie wyjściowe trzeba by jakoś "wygładzić". Włączając na wyjście kondensator dostaje się prosty filtr RC, który można już do czegoś wykorzystać.
Ogromna zaleta jest taka, że wartość "rezystancji" możemy sobie zmieniać bez użycia elementów mechanicznych, co umożliwia realizację przestrajanych filtrów w układach scalonych.
Taki przykład z symulacji:
Schemat:
Przebiegi na wejściu, wyjściu i sygnał przełączający klucze (dla częstotliwości przełączania: zielony - 10kHz, niebieski - 50kHz, czerwony - 100kHz):
Pojedyncze przebiegi dla częstotliwości przełączania kolejno; 10kHz, 50kHz i 100kHz:


Dla porównania przebieg z takiego filtra przy częstotliwości przełączania 10kHz. Dla C=1nF mamy R = 1 / (10k * 1n) = 100k i rzeczywistego filtra RC
W układach scalonych z takich symulowanych rezystorów i rzeczywistych kondensatorów (lub układów powielania pojemności(!)) składa się rozmaite topologie filtrów aktywnych, takie same jak składa się ze wzmacniaczy operacyjnych, rezystorów i kondensatorów. Można też podejść inaczej, tak jak jest to zrobione w MAX29x i stworzyć analog drabinkowego filtra LC. Indukcyjność uzyskuje się z pojemności w układzie żyratora.
Układy powielania pojemności pozwalają na zmianę wartości pojemności przy pomocy rezystorów, które oczywiście wykonane są jako przełączana pojemność.
Dzięki temu uzyskuje się filtr, który składa się z elementów o parametrach "dopasowujących" się do żądanej częstotliwości.