Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
storno
Anmeldungsdatum: 13.05.2009 Beiträge: 16
|
Verfasst am: 24.05.2009, 19:40 Titel: Echzeitfähigkeit von Windows - Schrittmotor |
|
|
Hallo miteinander,
da ich mich ja seit einiger Zeit mit Schrittmotoren beschäftige und dies bisher nur unter QBASIC/DOS betrieben habe wollte ich mich nun mal an FreeBasic/WindowsXP versuchen.
Folgende Probleme tauchen dabei auf:
-Windows ist nicht Echtzeitfähig, dadurch ruckeln die Motoren und verlieren massig an Schritte
-kein direkter Zugriff mehr auf den LPT Port unter WinXP
Für das Zugriffs-Problem gibt es ja Lösungen die hier im Forum beschrieben sind. Ich habe mich für die UserPort.exe entschieden.
Was kann man aber gegen das Echzeit Problem tun? Einen Lösungsansatz den ich gefunden habe für Windows XP:
Man kann Programme mittels einer kleinen BAT in einem Realtime Modus starten:
@echo off
start /realtime programm.exe
Das habe ich mit folgenden FreeBasic Code mal probiert:
Code: | DIM Richtung as INTEGER
DO
Richtung = 0
IF MULTIKEY(75) THEN Richtung = 1
IF MULTIKEY(77) THEN Richtung = 3
OUT 888, 0
SLEEP 1
OUT 888, Richtung
LOOP |
Die Motoren drehen sich, aber sehr langsam --> hierzu könnt Ihr euch das Video mal anschauen http://www.youtube.com/watch?v=ju_qeUu7q7M. Zu Schrittverlusten kommt es nicht. Der SLEEP Befehl soll wenn ich mich nicht verlesen habe Wartezeiten von 1 ms ermöglichen. Doch die Motoren drehen sich dafür zu langsam. Mit einer FOR NEXT Schleife als Wartezeit ist mein PC komplett eingefroren.
Die Frage ist jetzt, ob der Echtzeitmodus mit start /realtime tatsächlich funktioniert oder ob es hier bessere Alternativen gibt und wie man die Motoren dazu bewegt sich schneller zu drehen.
gruß storno |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 24.05.2009, 19:46 Titel: |
|
|
Hallo,
wenn die Steuerung über einen Windows-PC erfolgen soll, ist es vielleicht empfehlenswert, einen Mikrocontroller zu benutzen. Dieser könnte den Schrittmotor problemlos ohne Nebenwirkungen von Multitasking steuern und über die serielle Schnittstelle (auf µC mit UART/USART zurückgreifen) vom Computer Kommandos entgegennehmen ("Motor aus", "Motor langsamer", ...). Dann müsstest du nicht jeden Schritt vom PC aus steuern, sondern nur dann etwas senden, wenn sich etwas verändern soll (schneller / stopp / ...).
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
storno
Anmeldungsdatum: 13.05.2009 Beiträge: 16
|
Verfasst am: 24.05.2009, 19:55 Titel: |
|
|
Hallo Sebastian,
das habe ich auch bereits überlegt. Wollte aber erst versuchen das so hinzubekommen.
Es gibt wohl auch eine Linux Variante die Echtzeitfähig ist. FreeBasic läuft ja auch unter Linux oder?
gruß storno
EDIT:
@Sebastian kennst du dich mit Mikrocontrollern aus? |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
storno
Anmeldungsdatum: 13.05.2009 Beiträge: 16
|
Verfasst am: 24.05.2009, 23:07 Titel: |
|
|
Ich hab mir das mit den Mikrocontrollern mal durchgelesen. Das finde ich ja höchst intressant diesen Bereich.
Mich würde zunächst einmal der ATMega32 in verbindung mit BASCOM inreressieren. Kannst du da ein Board empfehlen mit dem man als Anfänger gut zurecht kommt? |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 25.05.2009, 06:50 Titel: |
|
|
ein attiny 2313 oder ähnlicher derivat reicht hier völlig aus .. du hast ne rs schnittstelle interruptfehig und genügend ports für die motoren. zumal er auch günstiger is.
Der Code wird nicht wirklich wild und ist wohl mit rund 10 zeilen komplett. da du die regelung sowieso per pc machen willst, brauchst du den avr eigentlich nur zur unterbrechungsfreien ansteuerung der pulse. und das ist für den avr keine grosse aufgab. darum reicht ein solch kleiner völlig aus.
Board brauchste in der regel auch nicht .. kostet alles nur geld .. einzigste anschaffung ist ein ISP-Programmer. (HV Programmer is auch overpowerd).. Die ISP-Programmer kann man sich aus nem alten kabel 5 dioden n paar widerstände und na LPT Buchse auch zusammen schustern.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
storno
Anmeldungsdatum: 13.05.2009 Beiträge: 16
|
Verfasst am: 25.05.2009, 09:50 Titel: |
|
|
Hallo ThePuppetMaster,
und wenn ich die Steuerung komplett ohne PC realisieren möchte? Geht das dann auch noch über den attiny oder braucht man da schon was größeres?
Ich meine letzenendes muss ich 3-4 Schalter abfragen. Einen Schrittmotor Steuern (Endstufe ist ja bereits vorhanden die per TTL angesteuert wird) und 3-4 Relais auslösen --> Hier habe ich auch bereits eine Karte für den LTP Port.
gruß storno |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 25.05.2009, 11:38 Titel: |
|
|
Hallo!
Zitat: | und wenn ich die Steuerung komplett ohne PC realisieren möchte? Geht das dann auch noch über den attiny oder braucht man da schon was größeres? |
Ein ATMega32 ist für das Unterfangen vielleicht etwas überdimensioniert, während der von TPM vorgeschlagene Typ bestimmt auch ausreicht, vielleicht aber die Verwendung von Schieberegistern für mehr Ein- und Ausgänge nötig macht, je nachdem, wie viele du brauchst.
Ein ATMega48 könnte da bequem passen, der ist deutlich preisgünstiger als ein Mega32 und hat mehr freie I/O-Pins als der ATTiny. Wenn du einen solchen Controller mit einer ausreichenden Zahl an I/O-Pins nimmst, brauchst du dir nicht die Mühe machen, auch noch Schieberegister, also weitere ICs, anzuschließen und im Programm anzusteuern, wenn du mehr Schalter o.ä. überwachen möchtest.
Zu den Boards gibt es hier eine schöne Übersicht: http://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
|