Hlavní stránka‎ > ‎

Výpočty vodiče, Ohmova zákona (Delphi)

Představuji Vám program pro výpočty U, I, R, P podle Ohmova zákona. Stačí zadat jakékoli dvě hodnoty (U, I, R, P) a  zbylé dvě hodnoty (po kliknutí do dalšího pole) program dopočítá.

Další funkcí programu je výpočet průměru a průřezu vodiče na základě proudové hustoty vodiče.

Třetí a prozatím poslední funkcí programu ve verzi v.: 2.0 je výpočet odporu vodiče při zadání délky vodiče, průměru vodiče, teploty vodiče nebo teploty prostředí, ve kterém se vodič nachází. Další potřebnou hodnotou pro výpočet je zadání látky vodiče, kde se v návaznosti automaticky výplní i hodnota měrného elektrického odporu vodiče a teplotní součinitel vodiče. Tyto poslední dvě automaticky doplňované kolonky umožňují i volný zápis.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Program Výpočty vodiče a Ohmova zákona v.: 2.0 - stáhnout zde 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Náhled do výpisu programu:
 
 
 
Náhled do výpisu programu:
 
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, XPMan, ExtCtrls, ShellApi, Comobj, DB, DBClient,
  MConnect, SConnect, OleCtrls, SHDocVw, Sockets, ComCtrls;
type
  TForm1 = class(TForm)
    XPManifest1: TXPManifest;
    Panel1: TPanel;
    MaskEdit1: TMaskEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    ComboBox1: TComboBox;
    Label3: TLabel;
    Label4: TLabel;
    Panel2: TPanel;
    Label5: TLabel;
    Label8: TLabel;
    MaskEdit2: TMaskEdit;
    Button2: TButton;
    Label7: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    MaskEdit3: TMaskEdit;
    MaskEdit4: TMaskEdit;
    MaskEdit5: TMaskEdit;
    Panel3: TPanel;
    Label6: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    MaskEdit6: TMaskEdit;
    Button3: TButton;
    MaskEdit7: TMaskEdit;
    MaskEdit8: TMaskEdit;
    Label15: TLabel;
    Label16: TLabel;
    ComboBox2: TComboBox;
    ComboBox3: TComboBox;
    ComboBox4: TComboBox;
    Label17: TLabel;
    Label18: TLabel;
    Panel4: TPanel;
    Label19: TLabel;
    Label20: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure MaskEdit2Click(Sender: TObject);
    procedure MaskEdit3Click(Sender: TObject);
    procedure MaskEdit4Click(Sender: TObject);
    procedure MaskEdit5Click(Sender: TObject);
    procedure MaskEdit2Exit(Sender: TObject);
    procedure MaskEdit3Exit(Sender: TObject);
    procedure MaskEdit4Exit(Sender: TObject);
    procedure MaskEdit5Exit(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure Panel4Click(Sender: TObject);
   // procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
   Flg2, Flg3, Flg4, Flg5,Flgs, FlgsDEC:Integer;
implementation
{$R *.dfm}
function RoundNumber(Value: Extended; Precision: Word): Extended;
begin
   Result := StrToFloat(Format('%.*f',[Precision,Value]));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Label2.Caption := 'průměr vodiče = '+(FloatToStr(RoundNumber(Sqrt((4*(StrToFloat(MaskEdit1.Text)/StrToFloat(ComboBox1.Text)))/pi),(3)))) + ' mm ';
MaskEdit7.Text :=  FloatToStr(RoundNumber(Sqrt((4*(StrToFloat(MaskEdit1.Text)/StrToFloat(ComboBox1.Text)))/pi),(3)));
//Kniha 'Vzorce pro elektroniku' str.: 76.
Label19.Caption := 'průřez vodiče = '+(FloatToStr(RoundNumber((StrToFloat(MaskEdit7.Text))* (StrToFloat(MaskEdit7.Text)) * (0.785 ),(3)))) + ' mm2 ';
end;
 

procedure TForm1.Button2Click(Sender: TObject);
var
U,I,R,P :Extended;
begin
 If Button2.Caption = 'Nové zadání' then
      begin
       MaskEdit2.Clear;
       MaskEdit3.Clear;
       MaskEdit4.Clear;
       MaskEdit5.Clear;
       MaskEdit2.Enabled := True;
       MaskEdit3.Enabled := True;
       MaskEdit4.Enabled := True;
       MaskEdit5.Enabled := True;
       Flg2 := 0;
       Flg3 := 0;
       Flg4 := 0;
       Flg5 := 0;
       Flgs := 0;
       FlgsDEC :=0;
       Button2.Enabled := False;
      end;
If Button2.Caption = 'Vypočti' then
  begin
  if MaskEdit2.Text >= '0' then  I :=  StrToFloat(MaskEdit2.Text) else I := 0;
  if MaskEdit3.Text >= '0' then   U :=  StrToFloat(MaskEdit3.Text) else U := 0;
  if MaskEdit4.Text >= '0' then   R :=  StrToFloat(MaskEdit4.Text) else R := 0;
  if MaskEdit5.Text >= '0' then   P :=  StrToFloat(MaskEdit5.Text) else P := 0;
  if FlgsDEC = 6 then
                    begin
                    P := U*I;
                    R := U/I;
                    end;
  if FlgsDEC = 10 then
                    begin
                    U := I*R;
                    p := U*I;
                    end;
 if FlgsDEC = 12 then
                    begin
                    I := U/R;
                    P := U*I;
                    end;
 if FlgsDEC = 18 then
                    begin
                    U := P/I;
                    R := U/I;
                    end;
 if FlgsDEC = 20 then
                    begin
                    I := P/U;
                    R := U/I;
                    end;
  if FlgsDEC = 24 then
                    begin
                    I := Sqrt(P/R);
                    U := I*R;
                    end;
  MaskEdit2.Text := FloatToStr(I);
  MaskEdit1.Text := FloatToStr(I);
  MaskEdit3.Text := FloatToStr(U);
  MaskEdit4.Text := FloatToStr(R);
  MaskEdit5.Text := FloatToStr(P);
  Button2.Caption := 'Nové zadání';
  Button1.Click;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Flg2 := 0;
 Flg3 := 0;
 Flg4 := 0;
 Flg5 := 0;
 Flgs := 0;
 FlgsDEC := 0;
end;

procedure TForm1.MaskEdit2Click(Sender: TObject);
begin
 Button2.Caption := 'Vypočti';
end;
procedure TForm1.MaskEdit3Click(Sender: TObject);
begin
 Button2.Caption := 'Vypočti';
end;
procedure TForm1.MaskEdit4Click(Sender: TObject);
begin
 Button2.Caption := 'Vypočti';
end;
procedure TForm1.MaskEdit5Click(Sender: TObject);
begin
 Button2.Caption := 'Vypočti';
end;
procedure TForm1.MaskEdit2Exit(Sender: TObject);
begin
if Flg2 = 0 then
  begin
  Flg2 := 2;
  FlgsDEC := FlgsDEC + Flg2;
  if Flgs < 1 then  Flgs := Flgs + 1 else
    begin
    MaskEdit2.Enabled := False;
    MaskEdit3.Enabled := False;
    MaskEdit4.Enabled := False;
    MaskEdit5.Enabled := False;
    Button2.Enabled := True;
    Button2.Click;
    end
   end;
end;
procedure TForm1.MaskEdit3Exit(Sender: TObject);
begin
 if Flg3 = 0 then
  begin
  Flg3 := 4;
  FlgsDEC := FlgsDEC + Flg3;
  if Flgs < 1 then  Flgs := Flgs + 1 else
    begin
    MaskEdit2.Enabled := False;
    MaskEdit3.Enabled := False;
    MaskEdit4.Enabled := False;
    MaskEdit5.Enabled := False;
    Button2.Enabled := True;
    Button2.Click;
    end
   end;
end;
procedure TForm1.MaskEdit4Exit(Sender: TObject);
begin
if Flg4 = 0 then
  begin
  Flg4 := 8;
  FlgsDEC := FlgsDEC + Flg4;
  if Flgs < 1 then  Flgs := Flgs + 1 else
    begin
    MaskEdit2.Enabled := False;
    MaskEdit3.Enabled := False;
    MaskEdit4.Enabled := False;
    MaskEdit5.Enabled := False;
    Button2.Enabled := True;
    Button2.Click;
    end
   end;
end;
procedure TForm1.MaskEdit5Exit(Sender: TObject);
begin
if Flg5 = 0 then
  begin
  Flg5 := 16;
  FlgsDEC := FlgsDEC + Flg5;
  if Flgs < 1 then  Flgs := Flgs + 1 else
    begin
    MaskEdit2.Enabled := False;
    MaskEdit3.Enabled := False;
    MaskEdit4.Enabled := False;
    MaskEdit5.Enabled := False;
    Button2.Enabled := True;
    Button2.Click;
    end
   end;
end;
procedure TForm1.ComboBox2Change(Sender: TObject);
begin
ComboBox3.ItemIndex := ComboBox2.ItemIndex;
ComboBox4.ItemIndex := ComboBox2.ItemIndex;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
q,l,a,T,prum : Extended;
begin
q := StrToFloat(ComboBox3.Text);
l := StrToFloat(MaskEdit6.Text);
a := StrToFloat(ComboBox4.Text) / 1000;
T := StrToFloat(MaskEdit8.Text);
prum := Sqr(StrToFloat(MaskEdit7.Text));

Label16.Caption := 'odpor vodiče = ' + FloatToStr(RoundNumber(q*(l*(4/(pi*prum)))*(1+a*(T-20)),(3))) +' Ohmu ';
end;
procedure TForm1.FormActivate(Sender: TObject);
 var
 i: integer;
 const
  u = 2;
 begin
   if self.AlphaBlendValue < 255 then
  begin
   for i:= 0 to (255 * u ) do
   begin
    AlphaBlendValue := i div u;
    Application.ProcessMessages;
  end;
 end;
end;
 

procedure TForm1.Panel4Click(Sender: TObject);
begin
ShellExecute(Application.Handle, 'open', PChar('http://www.amaterskaelektronika.cz/'),'','',SW_SHOWNORMAL);
end;
//procedure TForm1.FormShow(Sender: TObject);
//var
//voice: OLEVariant;
//begin
//  voice := CreateOLEObject('SAPI.SpVoice');
//  voice.Speak('Welcome   amaterskaelektronika', 2);
//end;
end.