Hallo, Hab eine Frage zur LPT-Ansteuerung; Ich möchte gerne einen Modellbau-Servo ansteuern. Dazu brauche ich ein Signal der folgenden Form: 1-2ms Signal 1 20ms Signal 0 und das ganze alternierend. 1-2ms ergibt sich daraus, dass der Servo durch diese Signallänge seine Stellposition ermittelt. 1ms==> max Linksausschlag 2ms==> max Rechtsausschlag alles dazwischen ergibt die jeweilige Winkellage. Habe dafür auch eine (ganz) einfache Optokopplerschaltung gelötet. der Servo hat also eine eigene Stromversorgung. Allerdings scheitert es an dem Programm. Hab einige Erfahrung mit LabView, konnte damit auch den LPT ansteuern. aber es kommt nur zu Stöhrungen. Danac ha ich das ganze in Java Eclipse gemacht. Auch hier schaffe ich die LPT-Ansteuerung.==>Stöhrungen Also hab ich mir in LabView ein Programm geschrieben, mit dem ich die Signale am LPT in einem Diagramm darstellen kann und damit das laufende Java-Programm "gemessen". Leider musste ich feststellen, dass das Signal am LPT alles andere ist als das Signal, welches von Java ausgegeben wird. Daraus ergeben sich die Stöhrungen. Daher meine Frage an alle Forumsbesucher was kann ich da machen, um ein "genaues" Signal mit obigen Bedingungen am Lpt zu realisieren. PS:bin eigentlich Maschinenbauer und daher nicht allzu versiert im Programmieren. Abgesehen von LabView und ein bisschen JAVA.
Das wird höchstens unter DOS oder einem Echtzeit-Betriebssystem etwas. Kannst mal probieren, den Prozess auf Echtzeitpriorität zu setzen, aber schon Mauszeigerbewegungen können es versauen.
Da hast du heutzutage eigentlich keine Chance, weil dir das Betriebssystem immer dazwischenfunkt. Nimm einen kleinen µC.
Hallo, danke für die raschen Meldungen. das mit dem Mikrocontroller klingt nicht schlecht. Ich muss aber zugeben, dass ich kein Elektroniker bin. Wie könnte ich denn so eine Schaltung am einfachsten realisieren? Gibts da dann auch Möglichkeiten, dem Mikrocontroller die "Stellposition" über ein einziges Pinsignal mitzuteilen?
Das geht wie schon beschrieben nur, solange das System wenig ausgelastet ist. Ich habe Dir schnell ein Beispiel gelinkt, was in etwa die gewünschte Impulsfolge am LPT1 (0378H) Pin 2 (D0) ausgibt, nur mal so zum testen.
Du könntest dir das Tutorial zum AVR mal ansehen. Da wird eigentlich alles behandelt, was du dazu brauchst.
Viel wichtiges und richtiges ist bereits von den Vorpostern gesagt worden. Hier noch ein paar Zusatzinformationen und Vorschläge: Reine Softwarelösungen über Parallelport ---------------------------------------- Damit das Servo halbwegs ruckelfrei angesteuert werden kann, darf der Jitter des vom PC erzeugten PWM-Signals maximal bei etwa 10 µs liegen. Damit kann man ca. 100 verschiedene Winkelstellungen auflösen. Das geht unter Mainstream-Betriebssystemen wie Windows oder Linux ohne Echtzeitzusätze definitiv nicht. Unter DOS könnte es prinzipiell gehen, man ist sich aber auch hier nicht vor sporadischen Interrupts sicher, die man auch nicht unbedingt alle sperren möchte. Linux mit dem RT-Patch von Ingo Molnar könnte ähnlich gute Ergebnisse wie DOS liefern, aber auch hier kann der maximale Jitter nur sehr schwer vorausgesagt werden. Linux mit RT-Linux oder RTAI ist hart echtzeitfähig mit Latenzzeiten im µs-Bereich (oder sogar noch besser, je nach Rechner) und erfüllt die Anforderungen locker, der Weg zum ersten lauffähigen Programm kann aber etwas steinig sein. Echtzeiterweiterungen gibt es m.W. auch für Windows, sind aber ebenfalls Frustdünger, und die meisten davon (oder alle?) kosten Geld. Beim Einsatz solcher Erweiterungen ist die Programmierprache natürlich nicht mehr Java, sondern C oder (für ganz Mutige) Assembler. Lösungen mit externer Hardwareunterstützung ------------------------------------------- Die Möglichkeit, den echtzeitkritischen Teil durch einen Mikrocontroller erledigen zu lassen, wurde schon genannt. Prinzipiell würde aber ein externer Timer-Baustein ala 82C54 zur Generierung des PWM-Signals genügen. Der hat gegenüber dem µC den Vorteil, dass er nicht programmiert werden muss und somit für einen µC-Unkundigen etwas schneller zum Ziel führt. Allerdings reichen die Steuerleitungen des Parallelports nicht ganz aus, den Baustein direkt anzusteuern. Man wird also noch etwas Interface-Logik drumherumbasteln müssen. Es gibt aber auch PWM-Bausteine mit SPI oder I²C-Interface. Die müsste man direkt an die Parallelportleitungen anschließen können. Im Moment habe ich leider keine Typenbezeichnung im Kopf. Lösung mit interner Hardwareunterstützung ----------------------------------------- Einen 82C54 muss man gar nicht notwendigerweise extern anschließen, da bereits einer im PC drinsteckt (bzw. etwas kompatibles als Teil eines der Mainboard-Chips). An einen der Ausgänge des Timers ist der PC-Lautsprecher angeschlossen. Je nachdem, wie das Lautsprechersignal aussieht (Spannungspegel, AC-Kopplung) kann man es mit etwas Glück direkt dem Servo zuführen. Ansonsten bedarf es einer kleinen Interfaceschaltung, oder man versucht, das Signal schon vor dem Lautsprecherverstärker als reines Digitalsignal abzugreifen. Ich bin jetzt mir nicht sicher, ob diese Lösung irgendwelche Fallstricke in sich birgt. Wenn nicht, verbindet sie minimalen Hardware- und Software-Aufwand mit maximaler Echtzeitfähigkeit. Wenn doch, würde ich als Nächstes einen externen SPI-PWM-Controller am Parallelport favorisieren, gefolgt von einer RT-Linux/RTAI-Lösung. Der externe µC ist natürlich dann die beste Wahl, wenn man ihn sowieso schon in der Schublade liegen hat, einen Programmieradapter parat hat, die Entwicklungstools eh schon auf dem Rechner hat und sie auch schon ein paar Male benutzt hat. Dann ist es eine Sache von vielleicht einer Stunde, damit einen PWM-Adapter mit Parallelport- oder RS-232-Anschluss zusammenzupappen und zu programmieren :)
> An einen der Ausgänge des Timers ist der PC-Lautsprecher angeschlossen.
Geniale Idee :-)
die DOS variante startdiskette mit Q-basic oder auch dosmodus q-basic-Compiler dann kannst du dein servo in 3 Stunden experimentel ansteuern. Mache ich manchmal heute noch natürlich mit extra comp. manchmal aber auf diese weise. Q-basic ist sehr gut. danach kannst du immer noch eine eigenständige steuerung mit Controller (was ich aus zeitgründen nicht empfehlen kann) aufbauen. das einfache zuerst viel erfolg
Hallo! Beschäftige mich seit längeren mit RTAI-Linux und bin da mal über folgendes Projekt gestoßen: http://linuxdevices.com/articles/AT9847654820.html Persönlich finde eine µC Lösung ebenfalls die beste Lösung. Habe so auch mehrere Roboter mit Servos realisiert und per PC+Windows+SCICOS dann die Inversekinematik getestet. Da man dann unter Windows nur mehr den Winkel vorgeben muss reicht hier die "weiche Echtzeitfähigkeit" von Windows. mfg Weinga-Unity
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.