PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Servo's per PC steuern 2 bis 3 Stück..



jabbercat
15.10.2004, 11:41
Hey Leute, also ich will per PC über LPT ein paar Servo's steuern (die binäre Codierung mit der die Anzahl der Servo zusammenhängt ist erstmal nicht wichtig). Es geht darum mir mal ein Beipsiel oder so zu zeigen wie so ein Servo funktioniert, wie die Leitungen belegt sind usw.. Die Steuerung über den LPT stellt dabei kein Problem da, denn ich habe schon eine funktionierende Schnittstellenkarte gebaut auf der ich alle 8 Leitungen des LPT zur Verfügung habe... Danke für eure Hilfe

Bye Jabbercat

RCO
15.10.2004, 13:04
ALso wegen der Funktionsweise der Servos, einfach mal im Forum rumgucken, da gibts haufenweise dazu. Nur Grundsätzlich:
Servos sind Gertiebemotoren, die sich nur 180 drehen können, es sei denn, man beut sie selber entsprechend um. Drei Leitungen besitzt er, VCC; GND und ein steuersignal, dass folgendermassen aufgebaut ist:
Allle 10 oder 20 ms, abhängig vom Typ, wird ein Impuls von 1 bis 2 ms länge an den Servo gesendet, der Die Position angibt. Länge = Position.
1 ms z.B. gleich ganz links, 1,5 mitte 2 ms -> rechts.

wegen der Asnteuerung mit dem PC verweise ich mal auf:

Servos via rs232 oder usb direkt von PC aus steuern
https://www.roboternetz.de/phpBB2/viewtopic.php?t=1832

MFG Moritz

jabbercat
15.10.2004, 14:54
ist ja alles schön und gut, nur dass sich der servo nur in eine richtung dreht egal bei welcher impulslänge (ich programmiere in perl)???

Bye Jabbercat

RCO
15.10.2004, 15:01
Moment, jetzt komm ich nicht mit, du hast schon einen Servo angeschlossen oder nicht?

jabbercat
15.10.2004, 15:06
also ich habe jetzt hinter die karte denn servo gehängt (gelbe Leitung an die Karte leitung 0, rot an plus der Stromquelle und schwarz an minus der Stromquelle) ... das Programm zu tippen ist ja kein großes ding (dachte ich) ... nur er dreht sich halt immer in die selbe richtung???

Bye jabbercat

RCO
15.10.2004, 15:12
Also zu den Farben kann ich dir nicht viel sagen, denn die sind immer anders. Er dreht sich also bis zum Anschlag, und summt dann, oder bleibt stehen, oder?
Also du kannst die Pulslängen auch einfach mal veränder, sie müssen nciht zwangsläufig zwischen 1 und 2 ms liegen, bei mir (billig - Servo) liegen sie zwischen 0,2 und 0,9 ms. Aber das hängt bei mir auch vom reload-Wert ab, der bei mir mit 15 ms am besten läuft. probier mal was, so 1 sekunde 0,1 ms; 1 sek 2 ms, dann sollte sich was tun, später kannst du dann die Grenzen genauer bestimmen.

MFG moritz

jabbercat
16.10.2004, 17:10
Hey also ich hab jetzt mal geschaut ob der Servo mit Negativ- oder Positivimpuls arbeitet... da ist Fehler eins denn jetzt dreht er wenigstens mal nach links oder rechts, aber ich kann ihn nicht genau steuern... fehler 2 scheint wohl in der programmierung zu liegen, da der servo immer genau bei 1ms und 2 ms stellt und dabei mit kann man net viel anfangen um später nach dem einarbeiten einen kleinen walker zu bauen *träum*

wie macht ihr das mit dem servo am PC über den LPT?
was für eine Programmiersprache und was brauche ich dazu?
hat jemand einen kommentierten code für mich?
könnt ihr die impuls so genau (z.B. 1,5....) erzeugen?

17.10.2004, 23:57
Wenn Du welche hast, dann nutze Timingbefehle, die die einzelnen Pins ein- und ausschalten lassen. (am besten alle 20ms)
Direkt aus dem Druckerport dürfte das aber recht schwierig werden.
Servos kann man vom PC aus recht leicht über RS232 (Com-Port) steuern. Dazu brauchste aber nen Controller, der die Daten in die Steuersignale für den Servo umwandelt.
Hier im Forum gibts einen Bereich der sich ausschließlich mit der Programmierung von Controllern mittels Bascom beschäftigt.
Basic ist ja leicht zu erlernen und die Hardware zum brennen von µC kostet im einfachen Fall gerade mal 5 Eu's.

jabbercat
18.10.2004, 12:18
Hey, ich hab alles an Problemen gelöst... Danke für eure Hilfe... n timer konnte ich net nehmen. die waren alle zu ungenau. bediene mich jetzt eines tricks mit einer genauen Zeitmessung (Time:HiRes)... ich lasse eine schleife eine bestimmte zeit laufen bis die gewünschte impuls länge erreicht ist und setze dann den Pin wieder Low.. der Takt von 20ms war kein Problem da tut's n normaler Timer... Trotzdem interessiert es mich mit der steuerung über com-port auch mal?

Bye jabber


Ps: werde sehr wahrscheinlich Lösung in den nächsten Tagen ins Netzt stellen für andere ... ich denke mal unter www.derboardplanet.de.vu oder eine andere Addi aufmachen, aber dann meld ich mich hier nochmal

RG
18.10.2004, 20:01
"Der FT639 ist ein Chip zur Ansteuerung von Modellbau RC Servos. Es besteht mit ihm die Möglichkeit, bis zu 5 Servos, über eine serielle 2400 Baud Schnittstelle, zu steuern.
Zum Anschluß an eine handelsübliche RS-232 Schnittstelle, wie sie z.B. in PC's Verwendung findet, werden nur zwei Widerstände und eine Diode benötigt...
Es werden keine zusätzlichen Bauteile bei einer seriellen 0-5 Volt Schnittstelle benötigt. Diese findet man an vielen Microcontrollern und der FT639 kann meist direkt angeschlossen werden."
Zitat aus der Produktbeschreibung des FT639 Servo Controller Chip von FerretTronics.
RG

Blackbird
19.10.2004, 09:15
@jabbercat,

in C/C++: EscapeCommFunction () setzt/reset Pins der seriellen Schnittstelle (nicht TxD, sondern DTR und/oder RTS.

Leider wird auch der HighResolutionTimer durch das Task-Scheduling von Windows ausgebremst. D.h., der Impuls von 1 bis 2 ms wird immer mal wieder riesengroß werden, das Servo "zuckt" dann.

Sauberer ist die Lösung mit einem externen Controller, der Seriell (oder Parallel) nur den Digitalwert bekommt und selbständig den Imuls generiert.

Blackbird