Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Echzeitfähigkeit von Windows - Schrittmotor

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
storno



Anmeldungsdatum: 13.05.2009
Beiträge: 16

BeitragVerfasst am: 24.05.2009, 19:40    Titel: Echzeitfähigkeit von Windows - Schrittmotor Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 24.05.2009, 19:46    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
storno



Anmeldungsdatum: 13.05.2009
Beiträge: 16

BeitragVerfasst am: 24.05.2009, 19:55    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 24.05.2009, 20:21    Titel: Antworten mit Zitat

storno hat Folgendes geschrieben:
FreeBasic läuft ja auch unter Linux oder?

Ja

storno hat Folgendes geschrieben:
@Sebastian kennst du dich mit Mikrocontrollern aus?

Mit AVR-Controllern von ATMEL (insb. ATMega) habe ich schon viel gearbeitet. Zur Programmierung verwende ich dabei C (WinAVR + AVR Studio). Mit anderen Controllerfabrikaten etwa von TI oder Microchip habe ich aber bisher nur wenig Erfahrung.
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
storno



Anmeldungsdatum: 13.05.2009
Beiträge: 16

BeitragVerfasst am: 24.05.2009, 23:07    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 25.05.2009, 06:50    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
storno



Anmeldungsdatum: 13.05.2009
Beiträge: 16

BeitragVerfasst am: 25.05.2009, 09:50    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 25.05.2009, 11:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz