AGB  ·  Datenschutz  ·  Impressum  







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

pwm oder takt erzeugen mit delphi

Ein Thema von unk · begonnen am 24. Sep 2006 · letzter Beitrag vom 25. Sep 2006
Antwort Antwort
Seite 1 von 2  1 2      
unk

Registriert seit: 22. Sep 2006
3 Beiträge
 
#1

pwm oder takt erzeugen mit delphi

  Alt 24. Sep 2006, 07:44
Hi,

ich würde gern in Delphi ein PWM Signal mit genau definiertem Takt erzeugen und es über die LPT1 ausgeben. Die Ausgabe über LPT1 ist kein Problem. Allerdings ist mir nicht bekannt wie ich unter delphi einen Takt (z.B 1MHz) erzeugen kann, oder wie ich ein PWM Signal erzeuge. Wer nett, wenn mir da mal jemand nen Tipp geben könnte.

Bsten Dank
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: pwm oder takt erzeugen mit delphi

  Alt 24. Sep 2006, 09:04
Herzlich willkommen in der Delphi-PRAXiS, unk.

Um dich an die Lösung heranzutasten kannst du dich erstmal mit der TTimer-Komponente von Delphi (Palettenseite Sytem) beschäftigen. Damit solltest du unter gewissen Bedingungen einen Takt bis zu 100 kHz realisieren können. Sobald du diese Technik ausgereizt hast kannst du im Microsoft Platform SDK das Kapitel Timers durcharbeiten. TTimer kapselt SetTimer (WM_TIMER). Mit passender Interrupt-Technik und den high performace counters lässt sich eventuell mehr machen, aber das ist nicht direkt mein Thema. Vermutlich ist eine spezielle PWM-Logik auf einem Adapter die eleganteste und zuverlässigste Lösung, aber vielleicht geht es dir ja nur ums Prinzip.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
unk

Registriert seit: 22. Sep 2006
3 Beiträge
 
#3

Re: pwm oder takt erzeugen mit delphi

  Alt 24. Sep 2006, 12:24
hm...hab ich mir auch schon mal angeguckt. Allerdings bräuchte ich nen schnelleren Takt. hab schon mal überlegt, ob ich den Takt extern, also von einem Quartz generieren lasse und dann über einen Eingang von LPT1 in meinem Programm verarbeite. Ist aber auch nicht ganz so einfach, weil ich ja auf die Taktflanken zugreifen können müsste, was ich allerdings auch nicht hinbekomme. Am liebsten hätte ich was derart, das ich das in Zeitabschnitten angebe, also : 1,01 ms bis 1,50 ms -> ausgang auf '1', sonst ausgang '0'. Dafür bräuchte ich aber n Timer der in dem Bereich arbeitet und nicht wie bei einem Wait oder Delay gleich den ganzen rechner bremst.
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#4

Re: pwm oder takt erzeugen mit delphi

  Alt 24. Sep 2006, 12:27
du kannst doch das timer intervall auf 1 setzen, dann hast du 1ms.
  Mit Zitat antworten Zitat
Maximus

Registriert seit: 26. Okt 2003
169 Beiträge
 
#5

Re: pwm oder takt erzeugen mit delphi

  Alt 24. Sep 2006, 12:32
1ms reicht ihm nicht.

Ich weiß es nicht wie dringend/für was du es brauchst, aber du könntest ja einen Mikroprozessor dranhängen und per LPT ihn beauftragen das PWM Signal ein/ausschalten. Mit denen lässt sich sowas relativ einfach umsetzen (1-2€ für den Prozessor, paar cent für einen Quarz).

MFG
Maximus
  Mit Zitat antworten Zitat
unk

Registriert seit: 22. Sep 2006
3 Beiträge
 
#6

Re: pwm oder takt erzeugen mit delphi

  Alt 24. Sep 2006, 13:02
Hab schon nen Mikrocontroller den ich als PWM Generator benutzen könnte, habe aber das Problem, das ich ein Steuerbares PWM Signal brauch. Ich muss also das Signal über den PC ändern können und zwar in einer Unterteilung von mind. 100 Schritten und das wie gesagt in Echtzeit vom PC aus. da die Parallele schnittstelle nur 8 Ausgänge hat, kann ich die 100 schritte damit nicht codieren.

Also erzähl erstmal schnell was ich machen will, vielleicht gibts dafür ja ne andere bessere Lösung und ich denk mal wieder zuviel im Kreis.
Ich möchte über ein Delphi Programm Modellbau Servos in echtzeit ansteuern (mind. 3 Stück gleichzeitig). Als schnittstelle habe ich mir die LPT1 ausgesucht, weil ich da sowohl ausgänge wie auch eingänge hab, die ich über Delphi programmieren kann. So ein Servo braucht ein PWM Signal, welches einen Puls von 1ms bis 2ms länge alle 20ms (glaub ich) sendet. da ich aber den servo nicht bloss ganz nach links oder ganz nach rechts bewegen will, sondern in beliebige Positionen, muss ich den 1-2ms Puls genau einstellen können (ca 100 schritte von 1 bis 2 ms), also 1,01 -> 1,02 -> ...-> 1,98 -> 1,99 -> 2ms.

Am besten wäre wenn ich das PWM Signal in delphi erzeugen könnte, dann könnte ich nämlich bis zu 8 Servos ansteuern (weil acht datenleitungen bei der Parallelschnittstelle).
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: pwm oder takt erzeugen mit delphi

  Alt 24. Sep 2006, 13:36
Zitat von fwsp:
du kannst doch das timer intervall auf 1 setzen, dann hast du 1ms.
Weniger wie 10 msec sind da wohl nicht zu machen - Windows ist schließlich kein Echtzeit-Betriebssystem.

Aber die 20 msec scheinen mir machbar. Einfach einen Timer dafür verwenden und im OnTimer()-Event das Signal hochsetzen, die pulse width in einem tight loop überwachen, und anschließend das Signal wieder herunterziehen. Die betroffenen Servos werden dann allerdings synchron gesteuert.

Das Signal extern erzeugen lassen ist nicht nötig und würde wohl nur dann etwas bringen, wenn der MC auch die Servos steuern würde und der PC nur die Benutzerschnittstelle bereit stellen würde.

marabu
  Mit Zitat antworten Zitat
Maximus

Registriert seit: 26. Okt 2003
169 Beiträge
 
#8

Re: pwm oder takt erzeugen mit delphi

  Alt 24. Sep 2006, 20:03
Zitat von unk:
Hab schon nen Mikrocontroller den ich als PWM Generator benutzen könnte
Na dann ist es ja noch einfacher! Du schließt ihn an den PC an und steuerst per Delphi Programm nur die Parameter für das PWM Signal, damit ist das Servo steuern ein Kinderspiel
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#9

Re: pwm oder takt erzeugen mit delphi

  Alt 24. Sep 2006, 22:39
Windows ist kein Echtzeitsystem!
Insbesondere ist die Jitterzeit nicht determiniert.
Läuft z.B. ein Floppylaufwerk, dann hält Windows schon mal für eine Sekunde an. Reger Netzwerkverkehr tut ein übriges.
Alles was unter 20 ms liegt macht Probleme.
Ich habe mal eine Steuerung für eine Anlage auf Basis von Windows NT und Delphi geschrieben.
Die Peripherie war über Interbus angeschlossen. (ca, 800 Meßstellen und 400 Aktoren.)
So ich unter 20 ms Systemtakt ging, gab es nicht definierte Störungen und Aussetzer auf dem Bus.

Eine Stoppuhr für den Sportbereich, welche über den Parallelport von Lichtschranken gesteuert wird,
habe ich unter DRDos laufen. Auf Window erreiche ich heute noch nicht die notwendige Genauigkeit und vor allen
keine Reproduzierbarkeit, geschweige denn Eichbarkeit.

Für die Lösung Deines Problems gibt es mehrere Ansätze. ( Wobei 1 MHz über den Parallelbus nicht übertragbar sind.)
1. Ein externer Mikroprozessor, den würde ich dann seriell anschließen.

2. Eine Soft-SPS.
Da gibt es zum Beispiel bei Beckhoff eine Soft-SPS als Evaluierungsvariante. Die kann auch den Parallelport als I/O ansprechen.
Die kostenfreie Variante ist auf eine Laufzeit von 1 Monat begrenzt.
Einfaches Deinstallieren und neu Installieren verlängert die Laufzeit jeweils um einen Monat.

3. Es gibt Zusatzkarten, muss man mal im Internet suchen, die so etwas machen. Sind in der Regel aber nicht ganz billig.

Müsste ich die Aufgabe lösen, so würde ich in Richtung seriell angeschlossene Karte mit einem Atmel denken.
Solche Karten sind in der Größenordnung 40 - 80 € fertig kaufbar und der zugehörige Assembler ist kostenlos.

Gruß Peter
  Mit Zitat antworten Zitat
Maximus

Registriert seit: 26. Okt 2003
169 Beiträge
 
#10

Re: pwm oder takt erzeugen mit delphi

  Alt 25. Sep 2006, 13:27
Zitat von hanspeter:
Müsste ich die Aufgabe lösen, so würde ich in Richtung seriell angeschlossene Karte mit einem Atmel denken.
Solche Karten sind in der Größenordnung 40 - 80 € fertig kaufbar und der zugehörige Assembler ist kostenlos.
Mit etwas Eigenarbeit lässt sich das auch viel günstiger bekommen. Sofern man einen Lötkolben daheim hat lässt sich sowas für <10€ oder je nach Umfang auch >5€ zusammenbasteln!

MFG
Maximus
  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 22:50 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