PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Modellbau Servos über den Parallelport ansteuern



Tüftler
25.03.2005, 11:46
hi hätte mal ne frage ich würde gerne 4 servos über meinen pc ansteuern diese sollen dafür sein 1. einen mast auszufahren, 2. eine kamera zu steuern (links-Rechts), 3.die kamera neigen (hoch-Runter), und 3. den zoom der camera zu sterern!
gibt es eine möglichkeit dieses über den parallelport zu machen??
parrallelport weil dieser einfacher zu programieren sein müßte
bin für jede antwort dankbar bis dann holger

clemens69
25.03.2005, 12:06
Hallo,

ich experimentiere derzeit mit dem Parallelport (unter Linux in C++).
Du hast 12 i/o Pins und 4 reine Eingänge zur Verfügung.
Der Einfachheit halber benutze ich eine Library, um auf den Port zuzugreifen
(parapin), aber du kannst natürlich auch die Adress-bytes direkt ansprechen.
Das sind dann 3 bytes, mit welchen du den Port einrichten mußt.
Wenn du also 4 DC-Motoren ansteuern möchtest, benötigst du schon mal 8 Ausgänge, wenn du die vielzitierte H-Schaltung benutzt. So bleiben dir immerhin noch 4 weitere i/o's und die 4 reinen Eingänge. Somit ist der Parallelport doch eine recht günstige Angelegenheit für einfache Steuer/Regelungsaufgaben.

Gruß,
Clemens

clemens69
25.03.2005, 12:15
hoppla, ich war jetzt erstmal von normal Gleichstrommotoren ausgegangen...
Wenn du Modellbauservos einer Fernsteueranlage verwenden möchtest, dann sieht die Sache natürlich etwas anders aus. Diese arbeiten irgendwie mit Rechteckimpulsen, welche du dann erzeugen müsstest. Daher wird man solch einen Servo wohl eher mit einer entsprechenden Elektronik ansteuern müssen, welche diese Impulse erzeugt. Aber selbst dann wäre es immer noch möglich, den PC/Parallelport zumindest zur Ansteuerung dieser Elektronik zu benutzen. Vielleicht gibt es so etwas hier schon irgendwo??

just4fun
25.03.2005, 12:15
Hi Tüftler,



gibt es eine möglichkeit dieses über den parallelport zu machen??
parrallelport weil dieser einfacher zu programieren sein müßte

Soweit ich weiß, kann man unter WinXP keine direkten Hardwarezugriffe aus nem C-Programm machen kann, ohne irgendwelche Treiber, Librarys etc. zu nutzen. Ich habe für dieverse Ansteuerungen das Toolkit "TVicPort" benutzt. Das gibt’s übrigens hier:
http://www.entechtaiwan.com/tools.htm


Damit sieht ein Zugriff auf die Hardware zum Löschen eins LPT-Port-Bits z.B. so aus (ich habe in C++ mit dem C++-Builder 3.0 gearbeitet. Alt, aber ok.):



// Bit löschen
MainForm->VicPort1->Port[LPTAdresse] = MainForm->VicPort1->Port[LPTAdresse] & (255 - 4);


"MainForm" ist hierbei das Hauptfenster in meiner GUI.
"VicPort1" ist das Objekt, dass den direkten Hardwarezugriff ermöglicht (über eine VXD-Datei (Gerätetreiber) im WinXP-Systemverzeichnis).
"LPTAdresse" ist die 0x378 bei mir.
Und gelöscht wird hier Bit Nr. 2 mit der dezimalen Wertigkeit 4, was dem LPT-PIN (am Stecker) Nr. 4 entspricht.

Zum Setzen eines Bits sieht das ganze dann so aus (habe das gleiche Bit genommen):



// Bit setzen
MainForm->VicPort1->Port[LPTAdresse] = MainForm->VicPort1->Port[LPTAdresse] | 4;


Hilft dir das weiter?

Tüftler
25.03.2005, 12:34
nee hilft leider noch nicht weiter ich habe noch nie mit dem lpt port gearbeitet habe keinen plan wie ich den angesteuert bekomme noch wie ich die servos oder umgebaut auf normale dc motoren mit getriebe angesteuert bekommen soll

NumberFive
26.03.2005, 09:43
wenn du servos an steuern willst reicht in meinen augen der Parallle port alleine nicht aus den das recht eck was du brauchst ist zu hoch freq um es mit einem PC zu erzeugen bzw. der PC mach dann nur das signal und sonst nix.

Aber wenn ich das noch richtig weiß gibt es servo treiber die man per I²C an steuern kann. und bei robotikhardware gibt es ein I²C parallel port interface damit sollte es dann möglich sein das gewünschte zu erreichen.

Oh habe gerade gesehen geht noch einfacher

Servotreiber RNS1 - 10 Servos per RS232 ansteuern

jetzt brauchst du nur noch ein pegel wandelr für die PC Serial dann bist du fertig

toffa
25.04.2005, 14:49
noch ne möglichkeit den servo über parallelport anzusteuern.

http://www.linux-magazin.de/Artikel/ausgabe/1998/11/Rtlinux/rtlinux2.html

ich wollte das so machen, hat aber bis jetzt noch nicht ausreichend geklappt.
rtlinux installieren ging aber die gezielte ansteuerung vom servo hab ich dann nicht hinbekommen. Dürfte aber eigentlich nicht so sehr schwer sein. Denk oder hoffe ich mal.

Xtreme
27.04.2005, 18:16
Also falls es dir hilft, Delphi ist schnell genug um die Rechtecksimpulse zu erzeugen! Funktioniert einwandfrei!

binaer
12.05.2005, 22:50
habe keinen plan wie ich den angesteuert bekomme noch wie ich die servos oder umgebaut auf normale dc motoren mit getriebe angesteuert bekommen soll
Solange der Drehwinkel von ca. 200° der ein Servo im Originalzustand hat reicht, musst du die Servos nicht bearbeiten.


Delphi ist schnell genug um die Rechtecksimpulse zu erzeugen!
Kannst du da mal Quellcode posten oder so? Habe noch nie gesehen, dass ein LPT saubere PWM Signale ausgibt. Wenn das mit Delphi machbar ist, sehe ich keinen Grund, warum es mit C/C++ nicht möglich sein sollte.

lg binaer

Xtreme
17.05.2005, 09:58
Wir reden hier nicht von PWM sondern von PCM Signalen!
Ich verwende eine Library (PORTINC). Man nehme einen 20ms Timer und schalte damit einen Prot (z.B. DTR) an und wieder aus.
Die Zeit zwischen an und wieder aus schalten bestimmt die Position des Servos.

a
-----+ 20ms +---+ 20ms +---+ 20ms usw.
+---------+ +---------+ +-------

a ist die Impulslänge, die die Position bestimmt. Sie muss zw. 1 und 2ms liegen wenn ich mich nicht täusche. Die 20ms müssen natürlich nicht immer 100%ig stimmen, aber mit dem Rechner bekommt man die Impulse recht gut hin. Liegt daran, dass man mit PORTINC mit der fkt. realtime(true) die Priorität der Anwendung auf hoch setzen kann. Unter C/C++ funktioniert die Library meines wissens nicht. Nur unter Delphi und VB. Aber sowas gibt sicher auch für C.
Achja, bei manchen Rechnern muss man zw. Impulsport und Impulseingang des Servos einen Widerstand einbauen, damit der Pegel stimmt. Kann auch von den verwendeten Servos abhängig sein => ausprobieren :-)

MfG
xtreme

Xtreme
17.05.2005, 10:13
Da sich die Darstellung verschoben hat, hab ich's dir mal aufgezeichnet.