Projekt FILTRU Marcin Łupina ED 6.3, Politechnika Lubelska, Studia, Semestr 6, sem VI


Wydział Elektryczny

Politechniki Lubelskiej

Instytut Podstaw Elektrotechniki i Elektrotechnologii

LABORATORIUM

KOMPUTEROWEGO WSPOMAGANIA PROJEKTOWANIA

Temat : Projekt filtru dolnoprzepustowego LC typu Π utworzonego w programie DELPHI

Grupa ED 6.3

Łupina Marcin

Machometa Jakub

Symulowany rodzaj filtru

0x01 graphic

Rys.1. Schemat filtru dolnoprzepustowego LC typu PI.

Obliczenia do projektu

Parametry łańcuchowe dla czwórnika typu Π:

A = 1+Y1*Z

B = Z

C = Y1+Y2+Y1*Y2*Z

D = 1+Y2*Z

Badany filtr jest filtrem symetrycznym toteż: Y1 = Y2

Y1 = jωC1 Y2 = jωC1 Z = jωL

Parametry łańcuchowe dla filtru z zastosowaniem liczb zespolonych:

A = 1- ω2(LC)

B = - jωL

C = 2jωC + jω3(L+C2)

D = 1- ω2(LC)

Częstotliwość graniczna:

f = 0x01 graphic

Pulsacja graniczna:

ωo = 0x01 graphic

Impedancja falowa

ZC = 0x01 graphic

Wstęp do programu

0x01 graphic

Rys.2. Główne okno programu

0x01 graphic

Rys.3. Wstawianie danych do obliczeń

0x01 graphic

Rys.4.Przykładowy przebieg współczynników tłumienia i fazowego.

0x01 graphic

Rys.5. Dobór parametrów dla dławika

0x01 graphic

Rys.6. Okno z danymi katalogowymi

Opis procedur programu

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, Unit2, Math;

type

TForm1 = class(TForm)

GroupBox2: TGroupBox;

Edit7: TEdit;

Button1: TButton;

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

Edit2: TEdit;

Button2: TButton;

GroupBox1: TGroupBox;

Label3: TLabel;

GroupBox3: TGroupBox;

Image1: TImage;

Image2: TImage;

Image3: TImage;

Button3: TButton;

Label4: TLabel;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure drawC(c: array of TComplexNumber; r: bool; col: TColor; l: string; x,y: integer; cl:bool);

function czest(l,poj,f,i: double): TComplexNumber;

function complex(r,i: double):TComplexNumber;

procedure drawU(l,c,f: double);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Unit3;

{$R *.dfm}

var cp: TComplexMath;

var ega: array of TComplexNumber;

function TForm1.complex(r,i: double):TComplexNumber;

begin

result.R:=r;

result.I:=i;

end;

procedure Tform1.drawC(c: array of TComplexNumber; r: bool; col: TColor; l: string; x,y: integer; cl:bool);

var i,yy: integer;

rr: TRect;

begin

rr.Top:=0;

rr.Left:=0;

rr.Right:=image2.Width;

rr.Bottom:=image2.Height;

if cl then image2.Canvas.FillRect(rr);

image2.Canvas.MoveTo(0,0);

image2.Canvas.Pen.Color:=col;

image2.Canvas.Font.Color:=col;

for i:=0 to image2.Width do

begin

if r then

yy:=round(c[i].r*20)

else

yy:=round(c[i].i*20);

yy:=round(image2.Height/2)-yy;

image2.Canvas.LineTo(i,yy);

end;

image2.Canvas.TextOut(x,y,l);

end;

function TForm1.czest(l,poj,f,i: double): TComplexNumber;

var

y,z,a,b,c,eg: TComplexNumber;

omega: double;

begin

omega:=2*pi*f;

z:=complex(0,omega*l);

y:=complex(0,omega*poj);

a:= cp.Add(complex(1,0),cp.Multiply(z,y));

b:= z;

c:= cp.Add(cp.Multiply(complex(2,0),y),cp.Multiply(cp.Square(y),z));

eg:=cp.Add(a,cp.SquareRoot(cp.Multiply(b,c)));

result:=eg;

end;

procedure TForm1.drawU(l,c,f: double);

var i,s,u2,i2,multi: integer;

y,z,a,b,cc,eg,zc,u2c: TComplexNumber;

omega: double;

r: TRect;

begin

r.Top:=0;

r.Left:=0;

r.Right:=image3.Width;

r.Bottom:=image3.Height;

image3.Canvas.FillRect(r);

multi:=10;

s:=image3.Height div 2;

image3.Canvas.MoveTo(0,s);

image3.Canvas.Pen.Color:=clBlack;

for i:=0 to image3.Width do

begin

image3.Canvas.LineTo(i,s+round(sin(degtorad(i mod 360))*multi));

end;

omega:=2*pi*f;

z:=complex(0,omega*l);

y:=complex(0,omega*c);

a:= cp.Add(complex(1,0),cp.Multiply(z,y));

b:= z;

cc:= cp.Add(cp.Multiply(complex(2,0),y),cp.Multiply(cp.Square(y),z));

zc:=cp.SquareRoot(cp.Divide(b,cc));

eg:=cp.Add(a,cp.SquareRoot(cp.Multiply(b,cc)));

image3.Canvas.MoveTo(0,s);

image3.Canvas.Pen.Color:=clBlue;

for i:=0 to image3.Width do

begin

u2:=round(cp.complexAbs(cp.Divide(complex(sin(degtorad(i mod 360)),0),eg))*multi);

if sin(degtorad(i mod 360))<0 then u2:=u2*-1;

image3.Canvas.LineTo(i,s+u2);

end;

image3.Canvas.MoveTo(0,s);

image3.Canvas.Pen.Color:=clGreen;

for i:=0 to image3.Width do

begin

u2c:=cp.Divide(complex(sin(degtorad(i mod 360)),0),eg);

i2:=round(cp.ComplexAbs(cp.Divide(u2c,zc))*multi);

if sin(degtorad(i mod 360))<0 then i2:=i2*-1;

image3.Canvas.LineTo(i,s+i2);

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

var

l,c,f0:double;

i:integer;

begin

l:=strtofloat(edit1.Text);

c:=strtofloat(edit2.Text)*10e-6;

f0:=(2/sqrt(c*l))/(2*pi); //wzór na f0

Label3.Caption:=Format('Wyliczona przez program: %.3fHz',[f0]);

image2.Canvas.MoveTo(0,0);

image2.Canvas.Pen.Color:=clBlack;

setLength(ega,image2.Width+1);

for i:=1 to image2.Width do

begin

ega[i]:=czest(l,c,f0*(i/image2.Width),i); // *(i/image2.Width) - krok przy rysowaniu wykresów a i b - chyba lepiej by wyglądało gdyby to rosło logarytmicznie nie liniowo

end;

drawC(ega,true,clRed,'a',5,5,true);

drawC(ega,false,clBlue,'b',5,25,false);

drawU(l,c,f0/2);

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

cp := TComplexMath.Create(Form1);

end;

procedure TForm1.Button2Click(Sender: TObject);

var

f0, cl: double;

q: integer;

begin

f0:=strToFloat(edit7.Text)*1000;

cl:=math.Power(1/(pi*f0),2); //wzór na iloczyn cl

q:=MessageBox(form1.Handle,PChar(format('Iloczyczn indukcyjnosci i pojemnosci użytych w filtrze musi wynosic: %3.10f.'#10#13'Przykładowe elementy:'#10#13'Cewka L=1H'#10#13'Kondensator C=%3.0fuF'#10#13#10#13'Wstawic do obliczen?',[cl,cl*10e10])),PAnsiChar('Wyliczanie parametrów'),(MB_YESNO + MB_ICONASTERISK));

if q=6 then

begin

edit1.Text:='1';

edit2.Text:=floatToStr(round(cl*10e10));

end;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

Form3.ShowModal();

end;

end.

Wnioski końcowe

Założenie teoretyczne dotyczące projektowania filtru dolnoprzepustowego zostały pomyślnie wprowadzone do struktury programu Delphi. Wszelkie błędy które mogły wyniknąć z nie idealnego symulowanie pracy filtru w powyższym programie, wzięły się z mojej dość małej wiedzy na temat programowania w środowisku DELPHI. Wyznaczanie częstotliwości granicznej na podstawie jednej stałej wartości indukcyjności i zmiennej pojemności.



Wyszukiwarka

Podobne podstrony:
Sprawozdanie FEMM michna ED 6.3, Politechnika Lubelska, Studia, Semestr 6, sem VI
sciaga ze wspomagania, Politechnika Lubelska, Studia, Semestr 6, sem VI, Komputerowe wspomaganie pro
komputerowe wspomaganie projektowania, Politechnika Lubelska, Studia, Semestr 6, sem VI, Komputerowe
komputerowe wspomaganie projektowania godz2255, Politechnika Lubelska, Studia, Semestr 6, sem VI, Ko
Politechnika Lubelska mathcad, Politechnika Lubelska, Studia, Semestr 6, sem VI, semestr 6, komputer
Własności Intelektualne ED 8, Politechnika Lubelska, Studia, semestr 5, Sem V, Nowy folder
Projekt z wytrzymałości - Ugięcie belki, Politechnika Lubelska, Studia, Semestr 6, sem VI, Laborka
sprzabespeczenia11, Politechnika Lubelska, Studia, Semestr 6, sem VI, VI-semestr, 05labsieci
sprawozdanie.sieci.6.marek, Politechnika Lubelska, Studia, Semestr 6, sem VI, VI-semestr, 05labsieci
!!Politechnika Lubelska w Lublinie!!, Politechnika Lubelska, Studia, Semestr 6, sem VI
Oświecenie - 8, Politechnika Lubelska, Studia, Semestr 6, sem VI, oświetlenie sprawozdania2007-2008
cw9, Politechnika Lubelska, Studia, Semestr 6, sem VI, semestr 6, napędy elektryczne
bierzcie i jedzcie wszyscy z tego, Politechnika Lubelska, Studia, Semestr 6, sem VI
skrypt ćw1, Politechnika Lubelska, Studia, Semestr 6, sem VI, VI-semestr, energoelektronika-lab

więcej podobnych podstron