PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : parallelport ansteuerung



fab
23.05.2004, 18:05
Hallo,

ich besitze 3 schrittmotoren und eine ansteuerkarte die über den parallelport an den pc angeschlossen ist.
Ich wollte mich mal erkundigen wie und mit was ich am besten ein programm schreibe um diese anzusteuern.

danke im vorraus

mfg

fab

D34TH
23.05.2004, 21:31
hi

visual basic oder wenns kein optisches interface haben soll dann basic...
oder vieleicht auch c++

mfg Flo

art-hightech
24.05.2004, 12:58
Also mit QBasic geht es ziemlich schnell und einfach.
Zum Testen einfach mal den Computer mit einem DOS-basierendem Betriebssystem booten (also nicht 2000/XP), Qbasic starten und mit dem OUT-Befehl Signale rausgeben. So hab ich meine Schrittmotorsteuerung auch getestet.
Bsp.: OUT 888,0 ' Alle Datenleitungen auf 0V, Parallelportadresse 888=378h
Anstelle der 0 kann nun einfach eine 8 Bit Dezimalzahl gesetzt werden (also 0 - 255).

jamesbond007
24.05.2004, 15:23
Unter Linux geht das auch prima in C.

Ich kann ja mal ein Beispielprogramm posten, wenn du willst.

art-hightech
26.05.2004, 22:30
Jo des unter Linux würd mich auch interessieren ;)
Post doch mal dein Beispielprogramm. Welchen Compiler nimmst du unter Linux für sowas?

pbürgi
27.05.2004, 14:21
So was?
http://www.linux-magazin.de/Artikel/ausgabe/1998/03/Schrittmotoren/schrittmotoren.html

jamesbond007
27.05.2004, 15:14
Hier ist mein Programm.
Wichtig ist, das du es mit
gcc manuell.c -o manuell -lncurses
compilierst, außerdem muss das Paket "curses-devel" installiert sein.
Das Programm muss als root gestartet werden, weil nur root direkt auf die Hardware zugreifen darf!

Mit den Tasten 1-8 steuertst du die 8 Datenpins des Parallelports (Pin 2-9), mit q beendest du das Programm.

fab
30.05.2004, 13:51
vielen dank erstmal für eure antworten!

art-hightech, ich habe einfach mal unter Qbasic das mit dem OUT befehl getestet doch mein motor bewegt sich leider kein bissien vom fleck. wie kann ich den herausfinden welche pins ich genau ansteuern muss?

mfg

fab

Robbigay
30.05.2004, 14:33
Du hast 8 Datenbits am PP und ich nehme mal an das du die da dran hängen hast.
Ich weiß zwar nicht genau welche Karte du hast aber du hast wahrscheinlich nen Lamp Treiber drauf.

Da kommen dann 8 Datenbits drann und 12V + und Ground.

Beim PP immer auf die Negierten Pins achten!


Jo und dann kommt der schöne C++ Code:





#include <iostream.h>
#include <wtypes.h>
#include "C:\Programme\DLPortIO\API\DlportIO.h"
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>



#define data 0x378
#define status 0x379
#define control 0x37A

long time=10;

void set(int value) {
DlPortWritePortUchar(data, (UCHAR) value);
Sleep(time);
DlPortWritePortUchar(data, (UCHAR) 0x00);
}

int main(void)
{
char key;
set(0x00);
while(true)
{
if(kbhit()) {
key=getch();
if(key=='1') {time--;}
if(key=='2') {time++;}
cout << time << endl;
}

set(0x00);
set(0x00);
set(0x00);
set(0x00);
}

return 0;
}


bei dem Code kannst du dann mit 1 und 2 noch die geschwindigkeit einstellen. Brauchst aber die Wtype.h und Dlportio.h aber die kannst du googlen.

Bei der Set Funtion musst du dan nnoch die Passenden Werte eionsetzen.
0000 0000 = 00hex
Sind die acht Datenbits
0000 0001 = 01hex
Spricht dann den hintersten Bit an usw.
Also ganz hinten Schwarz anschließen usw.



Normalerweise ist am Schrittmotor die Belegung Weiß+ Rot = Ground
Schwarz,Geld,Braun,Orange ist die Schrittreihenfolge.
So ich hoffe ich konnte helfen.
CyA

30.05.2004, 17:48
wow vielendank :)
werde es gleich mal testen aber was muss ich denn genau unter set schreiben hab nämlich nen schrittmotor mit 4 ausgängen : schwarz,rot,braun und grün.

mfg

fab

Robbigay
31.05.2004, 14:48
mhh das scheint dann ein unipolarer zu sein...


Die Set Sache ist ganz einfach.

0000 0000
sind deine 8 bits

und wenn du 0000 0001
machst dann ist das in hexadzimal 01 (geht mitm Rechner)

jo und wenn du des schickst hast du dann auf dem letzten Pin deiner karte
den Strom durchgeschaltet.

d.h. an 8 bits können 2 Motoren

fab
02.06.2004, 17:02
Also ich habe mal dein programm comiliert doch der compiler gibt folgenden fehler wieder:
line 15 : "long int time" redeclaration as different kind of
soviel wie ich verstanden habe hat er nen problem mit dem time. hab bissl gegoogelt aber nix gefunden.

mfg

fab

fab
02.06.2004, 17:40
Tut mir leid das ich gleich nochmal was schreibe :
das mit dem time ist geklärt aber nun bringt mir mein comipler bloddshed den fehler : das was mit der ligne:


#include "backward_warning.h"

nicht stimmt.
was kann das sein ?

mfg

fab

MEP-one
17.03.2005, 14:29
hi fab
besuch mal franksteinberg.de (http://www.franksteinberg.de).
dort findest du einige sachen zu pinbelegung, parallelportansteuerung unter quickbasic und etc.