Elektromotor über delphi ansteuern?

hi,
ich möchte über delphi einen kleinen elektromotor ansteuern (nur an oder aus) und hab keine ahnung, wie man sowas macht.
ich hab schonmal n bissl rumgeguckt und mir gedacht, dass es über den com-port gehen könnte. da man da aber blos digitale daten ausgeben kann, kam ich da auch nicht weiter :frowning:
kann mir jemand helfen und erklären, wie ich das ganze ansteuer? bräuchte ja im prinzip nur ne leitung, auf der zu bestimmten zeiten durchgang ist oder nicht.

danke für jede hilfe

Hallo,
das Problem hat ja nicht wirklich mit delphi zu tun.
Du kannst den Motor prinzipiell mit allen zur Verfügung
stehenden schnittstellen ansteuern. Die einfachsten und
bequemsten sind COM und LPT.

  1. COM: direkte Anstuerung geht prinzipiell über die
    Daten- und Handshakeleitungen. Ist aber nicht sehr elegant.
    Sehr elegant dagegen wäre ein kleiner Mikrokontroller (z.B. C-Control)
    der über COM einen befehl erhält und dann den Motor entsprechend steuert -> Delphi-Objekt „ComPort“

  2. LPT: Das geht direkt. Muß dazu ein Delphi-Treiber für die
    Schnittstelle suchen. Dann kannst Du mittels der Datenleitungen
    etwas ein-/ausschalten.

In jedem Fall brauchstDu aber einen Motortreiber, die die
erforderliche Leistung/Strom schafft und die Datenleitungen des
PC vom Rest der Schaltung entkoppelt (damit der PC-Port nicht mal
versehentlich kaputt geht)
Gruß Uwi

ich möchte über delphi einen kleinen elektromotor ansteuern
(nur an oder aus) und hab keine ahnung, wie man sowas macht.
ich hab schonmal n bissl rumgeguckt und mir gedacht, dass es
über den com-port gehen könnte. da man da aber blos digitale
daten ausgeben kann, kam ich da auch nicht weiter :frowning:
kann mir jemand helfen und erklären, wie ich das ganze
ansteuer? bräuchte ja im prinzip nur ne leitung, auf der zu
bestimmten zeiten durchgang ist oder nicht.

danke für jede hilfe

  1. LPT: Das geht direkt. Muß dazu ein Delphi-Treiber für die
    Schnittstelle suchen. Dann kannst Du mittels der
    Datenleitungen
    etwas ein-/ausschalten.

das heißt, man kann beim lpt-anschluss zwischen 2 pins bestimmen, ob durchgang ist oder nicht? (das wäre ja im prinzip genau das, was ich brauch)
wenn ja, wie? (wenn’s in delphi nicht geht, dann vielleicht in assembler?)

Hallo,

das heißt, man kann beim lpt-anschluss zwischen 2 pins
bestimmen, ob durchgang ist oder nicht? (das wäre ja im
prinzip genau das, was ich brauch)

das mit dem „Durchgang“ ist Quatsch. Man kann die Datenleitungen ansteuern und damit bestimmen, ob Low- oder Highpegel anliegt.
-> Low = ca. 0,3V
-> High = ca. 4,8V
Die Belegung des Parallelport LPT findest Du z.B. hier:
-> http://www.kabelfaq.de/

wenn ja, wie? (wenn’s in delphi nicht geht, dann vielleicht in
assembler?)

Bin sicher, das es da auch eine Delphi-Componente gibt.
Gruß Uwi

hi,
das mit dem low- und high-pegel is schonmal gut, damit kann man was anfangen.
jetzt stellt sich bloß noch die frage, wie ich die einzelnen pegel einstell…

hi,
Ich hätte ne alternative Lösung!
Es gibt Delphi-Komponenten zur Ansteuerung des ComPorts.

Ich kann dir da 2 Varianten anbieten. Die komplexere beinhaltet
den ganzen Datenversendungskram. Man kann allerdings auch mit ihr
einfach High und Low Pegel setzen. Ich hab das bisher bei max. 5 von 9 Pins geschafft.
Nachteil: ich hab sie aus dem Internet und es sind teilweise Beschränkungen drauf z.b. nicht für militär Projekte…

Alternativ kann ich dir noch eine von mir programmierte Komponente anbieten. Sie ist ganz klar auf einfache Aufgaben ausgelegt, z.B.
Motor an,Motor aus und dementsprechend leicht zu bedienen. Das sieht dann z.B. so aus >.
(Der Pin DCD wird auf High gesetzt)
Nachteil: Datenübertragung unterstützt sie leider nicht.
Auserdem kannst du nur 4 von 9 Pins ansprechen.

Abfragen ob am Pin X High liegt gehen übrigens mit beiden.

Also welche Lösung passt eher zu deinem Projekt?

p.s. ich kann erst wieder ab Di Abend antworten, bin in der Zwischenzeit auf ner Lan. Auserderm kann das Installieren der Komponenten ein Problem werden, da ich immoment kein Delphi hab
ich hoffe du hast so was schon mal gemacht!

das klingt schonmal gut, ich glaub deine eigene variante ist die interessanteste.
ich hab aber sowas noch nie gemacht und so sehr gut kenn ich mich in delphi auch nicht aus :wink: wobei wir auch schon bei den problemen wären :wink:
kann man mit deiner variante eigentlich beide com-ports ansteuern? und warum sind nur 4 pins pro port ansteuerbar? (is zwar jetzt erstma ziemlich egal, aber könnte evtl. später interessieren)

Hi, kann kurzfristig doch schon heute antworten

  1. ganz wichtig ich hab vergessen. Bei meinen Komponenten kann es
    eventuell zu Problemen mit XP kommen. Ich weiß es nich, hab nur 98!!

  2. zu deinen Fragen

kann man mit deiner variante eigentlich beide com-ports ansteuern?

klar das ist nie ein Problem jeder Port hat einen Namen.
du kannst also soviele Ports ansteuern wie du im Rechner hast

und warum sind nur 4 pins pro port ansteuerbar?

Sorry da hab ich mich vertan (is schon länger her,das ich Coms genutzt hab) Aber jetzt mal ganz genau!

Dazu muss ich n bisschen abschweifen. Die Ports sind ja eigentlich zur Daten-und Befehlübertragung gedacht. Das sollte auf 2 Pins laufen einer für den Empfang (RxD Nr2 ). 1 Pin spielt Erde (GND Nr 5).
Dann gibts noch Sendeteil einschalten (RTS Nr7-&gt:wink:
Endgerät bereit (DTR Nr4-&gt:wink:
Sendebereitschaft (CTS Nr8 Ausgang]

Was du also vorhast und was ich auch schon gemacht hab geht so ziemlich komplett an der Grundidee vorbei. (kein Datenversand/keine Befehlsausgabe z.b. an einen IC sondern einfach an aus)Ich hab nur einen Weg gefunden die Belegung oben weiter zu nutzen. ES gibt also z.B. max 3 Ausgänge pro ComPort.

mit meiner Komponente kannst du also
CTS,DSR,DCD,RI abfragen ob Strom eingeleitet wird. //Rxd und
DTR,RTS Strom ausgeben. //TxD hab ich nicht rausgefunden wie

wenn du die komplexere Komponente nimmst kannst du auch noch auf
TxD Strom ausgeben und auf Rxd irgendwie abfragen ob was kommt. Auserdem ist die XP-sicherer. (wie gesagt bei meiner weiß ichs nich)

Gut zusammenfassend würd ich dir folgendes raten:
wenn du bei einfachen Sachen wie E-Motor und soweiter bleiben willst,
dich auf keinen Fall in Digitaltechnik und ICs einarbeiten willst,
die zwei nicht funzenden Pins (TxD,RxD) nichts ausmachen und du nicht auf XP angewiesen bist nimm meine Komponente.

Wenn nicht kann ich dir helfen die andere Komponente so zu nutzen, das man damit an aus hinkriegt. Alles andere müsstes du dir selbst erarbeiten. Es gibt zwar Tutorials aber sie ist schon sehr komplex.

p.s. gib vielleicht deine E-mail an, damit ich die Komponente deiner Wahl schicken kann!
Und was das Delphi wissen betrifft, ich bin erst 16 und habs auch irgendwie hingekriegt, es is nicht so schwer wenn man Hilfe hat.

hi,
gut, also an deiner komponente wäre ich erstma interessiert, die kannst mir ja schonmal zuschicken ([email protected]).
die andre vielleicht auch, damit werd ich mich evtl. später mal beschäftigen.
hab übrigens auch win 98 (erste edition) und 16 bin ich auch :wink:
das mit dem IC (was auch immer das is :wink:) und dem zeugs tät mich dann auch interessieren, aber erstma will ich nur den einen motor betreiben…
achso, wenn du icq hast: 109573906

Hi

ich hätte bitte auch gerne die Komponente. Ich versuche mit 2 Schrittmotoren einen kleinen inteligenten Robotor zu bauen und habe noch Probleme die Motoren anzusteuern.

Bitte schickt mir die komponenten an:

[email protected]

Vielen Dank

PS: Ich bin schon 19!

Ich kann „U w i“ da nur zustimmen. Parallelport geht am einfachsten.
Du kannst eine der 8 Datenleitungen benutzen um irgendeinen Treiber
( z.B. einen Transistor) anzuschalten, der wiederrum deinen Motor anschaltet.
Ich habe da ne Delphi Procedure für dich, wenn du das ganze unter Win95/Win98 benutzen willst :

uses math // muss hinzugefügt werden( wegen Power funktion)

var value,value2 : byte //globale Variable

// Signal ausgeben
procedure Writeport(Port :word; Daten :byte);
begin
asm // befehle für assembler folgen
MOV AL,Daten // Variable Daten in Al-Register bewegen
MOV DX,Port // Variable Port in DX-Register bewegen
OUT DX,AL // Ausgabe der Daten(AL) auf dem Port(DX)
end;
end;

procedure ausgabe(channel : extended);
begin
if channel 8) and(channel