PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Servos per PC steuern



erik.rostock
10.08.2004, 13:50
Wie soll ich motoren und Servos per PC steuern
Der Pc sollte auch Sensoren überwachen können

Bluegu
10.08.2004, 14:09
Da es hierfür eine ziemlich große Anzahl an Lösungsmöglichkeiten gibt würde ich dir Vorschlagen du wühlst dich mal ein wenig durchs Forum oder beschreibst vielleicht ein wenig genauer, was du machen willst.
LG Bluegu

Albanac
10.08.2004, 20:50
Würde es nicht gehen über den LPT ein PWM Signal zu erzeugen und so einige wenige Servos direkt zu bedienen?
(oder scheitert das wieder am Multithread/tasking von Windows?)

Bluegu
11.08.2004, 10:48
das es geht habe ich schon gehört, mit meiner unwissenheit möchte ich aber sonst lieber nicht mehr dazu sagen *g*

erik.rostock
11.08.2004, 12:21
Also hier eine genauere beschreibung:
ich wollte einen Roboterarm manuell und automatisch per PC steuern

am besten wäre aber immer noch wenn ihr mir sagen könntet wie ich eine RC steuerung per PC steuern kann

erik.rostock
11.08.2004, 12:22
übriegns ich hab winXP

11.08.2004, 12:31
Ein Servo braucht Impulse zwischen 0,5..2,5ms und eine "Ruhezeit" von 10..20ms. Also muss ein Bit über die serielle Schnittstelle geschaltet werden.
Die Zeitsteuerung kannst Du mit Visual Basic oder Visual Basic Application/ in Excel integriert erledigen. Erforderlich ist dafür die Einbindung einer DLL in Windows, z.B. PORT.DLL oder ´RSAPI.DLL. Dort gibt es Zeitsteuerbefehle undBefehle zum Ansteuern der Ausgabebits über die serielle Schnittstelle.
Such auf der Hompepage von B.Kainka, dort findet man die DLL.

Ich habe die Servosteuerung mit Excel/VBA auf diese Weise realisiert.

Harald

erik.rostock
11.08.2004, 12:45
danke

floomy
16.08.2004, 12:07
Hast dus geschafft?

16.08.2004, 17:36
der servo macht nur was er will .... ???

Bastlwastl
03.12.2004, 12:01
Ich würde mal tippen dass Die Signale die Am LPT ausgegeben werden dem Servo nicht passen.

Arbeitet dein Programm mit einem 100ns Intervall für die Zeitmessung?
Oder einfach mit dem 0815 1ms intervall?

Besorg dir die exakten Signale die das Servo braucht.
So wird das Rechteckpulssignal bei manchen mit 50Hz gebraucht und andere wieder mit 60Hz.

Auch die Pulsbreiten sind von Typ zu Typ unterschiedlich.

Am Besten ist du schaust dir die Signale eines passenden Empfängers auf einem Oszi an.

Normalerweise liegt die Mittelstellung eines Servos bei ca. 1,5ms Pulsbreite.
Die Pulsbreiten bewegen sich im Bereich von 1ms bis 2ms.

Es gibt aber aber bei der Pulsbreite von Hersteller zu Hersteller gewisse Abweichungen.

Am Besten ist du schaust dass du zuerst die richtige Frequenz findest. (60 oder 50Hz.)

Als einfach mal ein 50Hz-Signal mit 1ms Pulsbreite ausgeben und dann ein 60Hz-Signal mit 1ms Pulsbreite.

Bei der Einstellung bei der das Servo ruhig bleibt bleibst du dann.

Wenn du die Frequenz hast kannst du dann ausprobieren welche Pulsbreiten dein Servo verarbeiten kann.

Am Besten lässt du das Steuerprogramm unter Dos laufen.
(Da läuft das Programm konstanter.)

Wenn du aber Windows verwenden mußt schau dass KEINE anderen Programme laufen.

Das heißt:
Kein MP3-Player, kein Internet oder anderes Netzwerk, kein Antivirus Programm, keine Firewall oder was sonst noch so im Hintergrund läuft.

Also nur dass was für das laufen des Programms umbedingt benötigt wird.

Und trotzdem kann es immer wieder zu "zuckungen" des Servos kommen.
Der Grund ist der dass Windows in keinster Weise echtzeitfähig ist und desswegen Zeitkritische Signale nicht immer rechtzeitig abgearbeitet werden können.

Es gibt zwar Programme die solche Probleme kompensieren können, aber die sind für eine Privatperson unerschwinglich.

PicNick
03.12.2004, 12:13
Vielleicht kann man auch eine WAV-File zusammeneditieren (mit Träger)und mit einem Schmitt am analogausgang wieder schön rechteckisieren. Müßt ich mal mit Oszi gucken, ob das so geht. mfg

Bastlwastl
09.12.2004, 11:03
Das dürfte zu ungenau sein.

Weiters binn ich jetzt durch Versuche darauf gekommen dass man die Signale unter Windows nicht Zeitgerecht ausgeben kann.

Da kommt es immer wieder vor dass das Signal etwas zu Spät kommt.

Die einzig venünftigen Ergebnisse hab ich unter DOS erhalten.

Unter Windows hatte ich immer dass Problem dass das Servo einfach herumzappelte.
(Auch in der Dosbox)

erik.rostock kann es so machen:.
Entweder Dos installieren oder über einen Mykrokontroller arbeiten.

Das mit dem Mikrokontroller könnte so funktionieren:

Du giebst an den Mikrokontroller über eine Schnittstelle Binär die Position aus die angefahren werden soll und der Miikrokontroller kiebt das passende Signal an das Servo weiter bis er einen neuen Befehl erhält.

Damit minimierst du die Probleme die du unter Windows hast.

mfg Bastlwastl

09.12.2004, 13:53
Am sinnvollsten ist es wenn Du einen µC nimmst der die Signale für die Servos eigenständig erzeugt. Über die RS232 oder LPT-Schnittstelle verklickerst Du dem Controller welchen Servo er wo hinbewegen soll.
Windoof beherrscht solche Zeitkritischen Dinge nicht.

Bastlwastl
10.12.2004, 10:01
Wenn du meinen letzten Beitrag gelesen hättest, hättest du gemerkt dass ich das gleiche vorgeschlagen hab.
(Auch wenn ich einige Rechtschreibfehler gemacht hab und mich etwas umständlich ausgedrückt habe.)

Das mit dem über Dos direkt ansteuern hab ich jetzt auch ausgeschlossen weil der Rechner etwas zickt bei der benötigten Geschwindigkeit.
(Hab noch nicht exakt lokalisieren können obs an der Soft- oder Hardware liegt.)

mfg Bastlwastl