AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

(realistische) Dämpfung eines Pendels

Offene Frage von "Wheelie"
Ein Thema von Wheelie · begonnen am 5. Jul 2004 · letzter Beitrag vom 9. Jul 2004
Antwort Antwort
Seite 1 von 2  1 2      
Wheelie

Registriert seit: 21. Okt 2003
Ort: Dresden
177 Beiträge
 
#1

(realistische) Dämpfung eines Pendels

  Alt 5. Jul 2004, 10:41
Wie einige schon wissen, entwickle ich für eine kleine Belegarbeit eine grafische Pendelkomponente zur Simulation eines mathematischen Pendels. Dabei habe ich mich an Luckie's Pendelsimulation orientiert ... Danke schonmal an Luckie

Nun möchte ich die reale Pendeldämpfung bei maximaler Auslenkung entwickeln, finde dazu aber überhaupt keinen Ansatz.

Hier der bisherige Quelltext:
Delphi-Quellcode:
unit Pendel;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, Math;

type
  TPendel = class(TCustomControl)
  private
    { Private-Deklarationen }

    Timer: TTimer;
    Bitmap: TBitmap;

    Winkel, PendelLaenge: Integer;
    PendelLinks: Boolean;

    procedure TimerOnTimer(Sender: TObject);
    procedure PendelZeichnen(Winkel: Integer);

  protected
    { Protected-Deklarationen }

  public
    { Public-Deklarationen }

    constructor Create(AOwner: TComponent); override;
    procedure Paint; override;
    function Gegenkathete(Winkel: Integer): Real;
    function Ankathete(Winkel: Integer): Real;

  published
    { Published-Deklarationen }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Pendel', [TPendel]);
end;

function TPendel.Gegenkathete(Winkel: Integer): Real;
begin
  Result := Sin(DegToRad(Winkel)) * PendelLaenge;
end;

function TPendel.Ankathete(Winkel: Integer): Real;
begin
  Result := Cos(DegToRad(Winkel)) * PendelLaenge;
end;

constructor TPendel.Create;
begin
  inherited Create(AOwner);

  if Width = 0 then Width := 300;
  if Height = 0 then Height := 250;

  Bitmap := TBitmap.Create;

  Timer := TTimer.Create(Self);
  Timer.Interval := 50;
  Timer.OnTimer := TimerOnTimer;
  Timer.Enabled := True;
end;

procedure TPendel.TimerOnTimer(Sender: TObject);
begin
  if (Width <> Bitmap.Width) or (Height <> Bitmap.Height) then
  begin
    Bitmap.Width := Width;
    Bitmap.Height := Height;
    PendelLaenge := Height - 50;
  end;

  if not PendelLinks then Inc(Winkel)
   else Dec(Winkel);

  if Winkel = 30 then PendelLinks := True;
  if Winkel = -30 then PendelLinks := False;

  Paint;
end;

procedure TPendel.PendelZeichnen(Winkel: Integer);
begin
  Bitmap.Canvas.MoveTo(Width div 2, 25);

  // Pendelfaden
  Bitmap.Canvas.LineTo(Width div 2 + Round(Gegenkathete(Winkel)),
    Round(Ankathete(Winkel)));

  // Pendelkörper
  Bitmap.Canvas.Brush.Color := clBlack;
  Bitmap.Canvas.Brush.Style := bsSolid;
  Bitmap.Canvas.Ellipse(Width div 2 + Round(Gegenkathete(Winkel))
    - 20, Round(Ankathete(Winkel)) - 20, Width div 2 +
    Round(Gegenkathete(Winkel)) + 20, Round(Ankathete(Winkel)) + 20);
end;

procedure TPendel.Paint;
begin
  inherited Paint;

  // Pendel auf Bitmap im Speicher zeichnen
  PendelZeichnen(Winkel);

  // Bitmap auf Canvas der Komponente kopieren
  BitBlt(Canvas.Handle, 0, 0, Width, Height,
    Bitmap.Canvas.Handle, 0, 0, SRCCOPY);

  // Bitmap mit weiß überschreiben
  Bitmap.Canvas.Brush.Color := clWhite;
  Bitmap.Canvas.Rectangle(0, 0, Width, Height);
  Bitmap.Canvas.Brush.Color := clBlack;
end;

end.
Tatsache ist, dass das Intervall des Timers ständig geändert werden muss. Zur Berechnung fehlt mir aber irgendwie das physikalische Hintergrundwissen (), ihr könnt mir da aber bestimmt weiterhelfen
  Mit Zitat antworten Zitat
Benutzerbild von atreju2oo0
atreju2oo0

Registriert seit: 5. Dez 2003
Ort: Berlin
289 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: (realistische) Dämpfung eines Pendels

  Alt 5. Jul 2004, 12:07
Das sind die Vorbereitungen die wir in der Uni bekommen haben...
Da steht alles drin was Du brauchen solltest...
PDF-Datei
Thomas
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: (realistische) Dämpfung eines Pendels

  Alt 5. Jul 2004, 12:08
Du veränderst mit jedem Timer-Aufruf den Winkel um 1? So ein Ansatz dürfte nicht funktionieren, da der Timer nicht "echtzeitfähig" ist.

Besser: Im Timer den Zeitablauf seit Start bestimmen und daraus den Winkel berechnen. Als Ansatz könnte dienen, das die Schwingungszeit eines Pendels ja konstant ist. Wie Du aber die Dämpfung rein rechnen könntest, weiß ich nicht.

[edit]Da war wohl jemand schneller und hatte gleich die Lösung zur Hand [/edit]
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Wheelie

Registriert seit: 21. Okt 2003
Ort: Dresden
177 Beiträge
 
#4

Re: (realistische) Dämpfung eines Pendels

  Alt 7. Jul 2004, 16:26
mmh ... hab mir das pdf-file zwar durchgelesen, finde dort aber keinen hinweis für die lösung meines problems. am besten wäre wirklich eine funktion, der die zeit in sekunden übergeben wird und die als funktionsergebnis den entsprechenden winkel liefert (pendellänge und fallbeschleunigung/erdbeschleunigung spielen natürlich auch eine rolle). ist sowas möglich?

EDIT: übrigens soll das pendel nicht gedämpft sein, sondern einfach eine dynamische winkelgeschwindigkeit besitzen (-> mathematisches pendel), sprich die geschwindigkeit nimmt bei maximaler auslenkung ab.
  Mit Zitat antworten Zitat
Benutzerbild von atreju2oo0
atreju2oo0

Registriert seit: 5. Dez 2003
Ort: Berlin
289 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: (realistische) Dämpfung eines Pendels

  Alt 7. Jul 2004, 16:37
Also für ein mathematisches Pendel reicht doch ne einfache Sinus-Funktion für die Winkelbestimmung...???
Aber je realistischer das ganze werden soll desto mehr wirst Du Dich wohl mit dem Hauptsatz der Kinetik beschäftigen müssen:
Ekin=EPot

Ekin ist die kinetische Energie(Also die Geschwindigkeit in diesem Fall)
EPot ist die potentielle Energie(Also die Höhe mal masse)

In den oberen Wendepunkten ist Epot maximal und in der Mitte Ekin!
Dann noch die Dämpfung als Reibung reinrechnen und schon siehts schön aus...
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: (realistische) Dämpfung eines Pendels

  Alt 7. Jul 2004, 17:49
Nun ja. Wo druch wird denn das Pendel gedämpft? Durch den Luftwiderstand, durch die Reibung am Aufhängepunkt. Und damit sind wir dann bei Differenzialgleichungen gelandet, um eine realistische Dämpfung hinzubekommen.

Ein mathematisches Pendel funktioniert ja so, dass es am Punkt der maximalen Amplitude die Geschwindigkeit null hat. Mist, jetzt habe ich den Faden verloren...
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
em-sigma

Registriert seit: 8. Jul 2004
38 Beiträge
 
Delphi 2005 Personal
 
#7

Re: (realistische) Dämpfung eines Pendels

  Alt 8. Jul 2004, 08:22
Hallo zusammen,

so wie ich Wheelie verstanden habe, möchte er nur ein simples (mathematische Pendel) ohne gedämpfte Schwingung, sondern nur mir dynamischer Geschwindigkeit (also abhängig von der Auslenkung).

atreju2oo0 hatte schon recht mit dem Sinus. Das sieht prinzipiell folgendermaßen aus:

Auslenkung = sin(Zeit*2*pi)*MaxWinkel oder
Auslenkung = sin(Zeit*360)*MaxWinkel

MaxWinkel= maximale Auslenkung in Grad
Zeit = Periodendauer
Auslenkung = Auslenkungswinkel, abhägig von der Zeit

Ich hoffe das hilft.

Have fun,

em-sigma
  Mit Zitat antworten Zitat
em-sigma

Registriert seit: 8. Jul 2004
38 Beiträge
 
Delphi 2005 Personal
 
#8

Re: (realistische) Dämpfung eines Pendels

  Alt 8. Jul 2004, 09:01
... und hier noch ein kleiner Zusatz:

möchte man wirklich ein Pendel mit gedämpfter Schwingung, wird noch eine Exponential-Funktion benötigt.

Die Formel sieht dann folgendermaßen aus:

Auslenkung = sin(Zeit*2*pi)*exp(Zeit*Stärke)*MaxWinkel

Stärke < 0 : Schwingungsamplitude wird kleiner
Stärke > 0 : Schwingungsamplitude wird größer

Auf diese Weise wird aus dem mathematischen Pendel ein realistisches Pendel.

Viel Spaß,

em-sigma
  Mit Zitat antworten Zitat
Benutzerbild von Christian S.
Christian S.

Registriert seit: 19. Apr 2003
Ort: Düsseldorf
835 Beiträge
 
#9

Re: (realistische) Dämpfung eines Pendels

  Alt 8. Jul 2004, 09:54
Hi!

Ich habe mal alle drei Gleichungen, die man bei einer gedämpften Schwingung erhalten kann, zusammengefasst und auch aufgeschrieben, wie man über die Lösung der DGL daran kommt.

MfG
Peter

//edit: Irgendwie komme ich mit Aktualisieren des Attachments nicht klar
Angehängte Dateien
Dateityp: pdf schwingung_gedaempft.pdf (46,2 KB, 26x aufgerufen)
Christian S.
Admin in der Entwickler-Ecke
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#10

Re: (realistische) Dämpfung eines Pendels

  Alt 8. Jul 2004, 10:10
Zitat von atreju2oo0:
Ekin=EPot
Das stimmt so natürlich nicht, da bei Dämpfung ja grad Energie verloren geht... Peter Lustig hat genau geschrieben, wie du ans Problem ranzugehen hast. DGl aufstellen, lösen, Systemparameter einsetzen (Pendellänge, Auslenkung, Dämpfungskonstante) und für gegebene Zeitpunkte t die Lösung ausrechnen (liefert dir dann die Auslenkung zum Zeitpunkt t) und zeichnen...

Gruß,
Tom
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz