Wprowadzenie do elektroniki/Filtry/Wstęp-Analiza układu RC

Filtr RC

edytuj

Schemat filtru RC dolnoprzepustowego

edytuj

 

Równanie w dziedzinie czasu

edytuj

Zaczynając rozdział chciałbym przytoczyć bardzo prosty układ filtru pasywnego składający się z dwóch elementów, rezystora R oraz kondensatora C. Następnie przytoczyć kilka możliwości jego opisu. Do zrozumienia rozdziału będzie konieczne zapoznanie się z takimi zagadnieniami jak liczby zespolone transformata Laplace'a, a także zagadnienia z zakresu rachunku różniczkowego.


Z napięciowego prawa Kirchhoffa wynika następująca zależność

 

Następnie należy wyznaczyć prąd płynący w obwodzie jako funkcję napięcia wyjściowego

 

Ładunek zgromadzony na kondensatorze wyraża się zależnością

 

Stąd równanie na prąd przyjmie postać

 

Ostatecznie stan w obwodzie możemy opisać takim równaniem różniczkowym w którym mamy tylko jedną niewiadomą.

 

 

Równanie to będzie stanowiło bazę do dalszych rozważań w tym rozdziale.

Metoda rozwiązania równania różniczkowego jest zależna od tego jak opisany będzie sygnał wejściowy filtru. Dla testu proszę sobie rozwiązać równanie kiedy wymuszeniem filtru będzie sygnał o stałej wartości   a watrość początkowa będzie 0.

Dla tych co nie wiedzą jak się do tego zabrać podaje gotowe rozwiązanie. Licealista znający podstawy obliczania pochodnych będzie mógł sprawdzić przez podstawienie czy rozwiązanie jest prawdziwe.

Równanie

 

Ma rozwiązanie

 

Równanie Różniczkowe - Transformata Laplace'a

edytuj

Transformata Laplace'a [1] jest to odwzorowanie przekształcające funkcję zmiennej t na funkcję zmiennej s

Transformata Laplace'a ma szereg właściwości ułatwiających rozwiązywanie równań różniczkowych, pozwala na łatwe przejście między opisem w dziedzinie czasu , dyskretnym czy opisem w dziedzinie częstotliwości. Umożliwia łatwe symulowanie układów w programie matlab.

W naszych rozważaniach skorzystamy z jednej właściwości transformaty Laplace'a. A mianowicie z tego, że transformata pochodnej funkcji jest równa transformacie funkcji pomnożonej przez zmienną s. Nasze równanie różniczkowe


 

Po zastosowaniu przekształcenia będzie wyglądało następująco

 

Widzimy, iż po takim przekształceniu z równania różniczkowego zrobiło nam się równanie algebraiczne. Możemy teraz wyznaczyć transmitancję układu jako stosunek sygnału wyjściowego do sygnału wejściowego

 

 

Powyżej otrzymane równanie użyjemy w kolejnym punkcie do analizy częstotliwościowej filtru. A teraz zostaje nam podzielenie obydwu stron równania przez   w celu obliczenia transmitancji fitru

 

I oto mamy transmitancję filtru którą możemy użyć do symulacji w programie matlab, i patrzeć jak zachowuje się układ pod wpływem różnych wymuszeń.

Opis w dziedzinie częstotliwości

edytuj

Uczyłeś się elektrotechniki?? Wiesz jak działa dzielnik napięcia?? Znasz podstawy liczb zespolonych?? oto fragment dla ciebie.

Zakładamy iż filtr został zasilony napięciem sinusoidalnym (większość przebiegów okresowych można aproksymować do sumy przebiegów sinusoidalnych rozwijając je w szereg furiera[2] - funkcje harmoniczne).

Reaktancja kondensatora w postaci zespolonej  

Całkowita impedancja zespolona układu jest równa

 

Z właściwości dzielnika napięciowego wiemy iż


 

Po podstawieniu mamy

 

Mnożąc obydwie strony ułamka przez   i pamiętając zależność dla liczb zespolonych   mamy

 

Zastępując wyrażenie RC stałą czasowa   otrzymamy

 

Przytoczę tutaj równanie jakie otrzymaliśmy w wyniku transformaty lapalcea  

Pewnie widzicie jak łatwo przy pomocy tego typu transformaty przejść do opisu w dziedzinie częstotliwości wystarczy bowiem za   podstawić  

Dyskretyzacja - Czyli jak zrobić taki filtr komputerowo??

edytuj

Teraz to co tygrysy lubią najbardziej.


Wiadomo że czasy w jakich przyszło nam żyć opanowały komputery. Sprzęt muzyczny opuszcza pomału analogowe układy (oczywiście że nigdy tego do końca nie zrobi). Również filtry przechodzą ze swoich analogowych wzorców do świata cyfrowego. W tym rozdziale zajmiemy się zagadnieniem jak przeportować nasz analogowy pierwowzór do procesora. Okazuje się, że wcale nie jest bo bardzo trudne. Można to zrobić na kilka sposobów: między innymi stosując transformatę Z. Ja tutaj przedstawię sposób z zamianą równania różniczkowego na różnicowe.

 


 

  1.   - n-ta próbka sygnału wejściowego
  2.   - n-ta próbka sygnału wyjściowego
  3.   - n-1 opóźniona o jeden (poprzednia) próbka sygnału wyjściowego
  4.   - Okres próbkowania

Należy teraz wyznaczyć  

 


 

a to próbkę n-tą wyznaczamy ze wzoru

 

Przykład

edytuj

Napiszemy program filtra cyfrowego wzorowanego na układzie RC. R=100kΩ, C=2μF, okres próbkowania 1ms, czas obserwacji 1s. Program będzie przeliczał dla wymuszenia skokowego i sinusoidalnego.  

 

 

Wszystkie współczynniki mamy już policzone więc zabieramy się do kodu

//Funkcja wciśnięcia przycisku
void MainWindowImpl::on_pushButton_clicked()
{
	double x[1000], y[1000], z[1000];
	double wy, we;	
	wy=0;
	we=0;
	for (int i=0; i<1000; i++)
		{
		x[i]=(double)i/1000;		
//wymuszenie sinusoidalne	
//		we=10*sin(10*x[i]);
//wymuszenie skokowe				
		we=10;		
		wy= (we+200*wy)/201;
				
		y[i] = we;
		z[i] = wy;
		}
qwtPlot->setAxisLabelRotation(QwtPlot::xBottom, -50.0);	
// dwie krzywe wartość zadana U_we oraz wartość wyjściowa U_wy
U_we->setSamples(x, y, 1000);
U_wy->setSamples(x, z, 1000);
qwtPlot->replot(); 
}

Oczywiście Część odpowiedzialna za obliczenia wygląda ona tak:

for (int i=0; i<1000; i++)
		{
		we=10;
		wy= (we+200*wy)/201;}

Prawda że proste ??

Dla niewtajemniczonych w języki programowania jeden szczegół zasługuje na wytłumaczenie. Chodzi mianowicie o to, iż zmienna wy znajdująca się po prawej stronie równania jest to wartość z wcześniejszej iteracji pętli. Ponieważ języki programowania działają w ten sposób, iż pierw wykonują działania a przypisanie wartości następuje na końcu. równanie   jest niepoprawne matematycznie a komputer najpierw wykona   a dopiero potem wynik przypisze do zmiennej   (zwiększenie wartości x o jeden).


Warto pokusić się o blisko dwukrotne skrócenie czasu wykonania pętli poprzez jednorazowe wyliczenie ilorazu 1/201 poza pętlą i zamianę ostatniej liniji pętli na równoważną (zamiast dzielenia w pętli mamy odejmowanie):

			wy= wy -(wy-we)*(1/201);}


Na koniec podaje jak wyszły wykresy wartości zadanej(czerwona linia) i wartości wyjściowej filtru(niebieska linia).

 

Teraz jeśli zmienimy wymuszenie na sinusoidalne (zakomentujemy linijkę we=10; a odkomentujemy linijkę we=10*sin(10*x[i]); ) to odpowiedź naszego filtru będzie wyglądała tak