PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eigener Schrittmotortreiber testweise am PC.



Tredory
26.06.2007, 20:07
Hallo

Also ich möchte Anfangen mich ein wenig mit Microcontrollern und Robotik zu beschäftigen. Nächsten Monat wenn ich wieder bisschen Geld habe hole ich mir eine RN-Control zum Anfangen. Jetzt habe ich vorab schonmal eine Schrittmotorsteuerung mit L297/L298 aufgebaut und an meinem LPT-Experimentierboard angeschlossen. Es funktioniert auch soweit sehr gut, nur habe ich das Problem das meine Software (Profilab Expert) es nicht so schön hinbekommt die Impulse für die Schritte Stabil rauszugeben bei 400 Hz merkt man es manchmal das der Motor Ruckt, bei höheren Schrittgeschwindigkeiten bleibt er dann stehen und kann nicht wieder Anlaufen. Es wird deutlich besser wenn ich alle hintergrundprogramme schließe, aber wirklich "gut" läuft es dennoch nicht, nur wenn ich im Prozessmanager die Priorität für Profilab auf Echtzeit stelle dann läuft er wirklich sehr schön, allerdings kann ich dann auch garnichts mehr am PC machen, die Maus bewegt sich nicht mehr, die tastatur interessiert ihn nicht mehr, muss dann den ganzen rechner resetten um da wieder rauszukommen.

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1682

Kann man den LPT Port auch irgendwie mit mit Visual Basic .NET ansteuern ich finde da nichts, nur für die Serielle schnittstelle sind da wohl funktionen drin, aber da ist die Hilfe nicht sehr weiterhelfend, weswegen ich auch keine ahnung habe wie ich die Serielle schnittstelle nutzen könnte. Und wenn funktioniert das ganze da dann besser oder kann ich Windows für solche sachen vergessen ?

Und noch eine Frage zu dem Schrittmotor: Es ist ein Mitsumi M55SP-1 (http://www.mitsumi.co.jp/Catalog/pdf/motor_m55sp_1_e.pdf), ist es normal dass Schrittmotoren so piepende geräusche machen, man könnte denken das da nen Piezzo drin ist der Musik macht ;) wenn der motor steht und man mit gewalt an der Welle dreht verändert sich die Tonlage von dem Pfeifen usw. Habe vorher noch nie was mit Schrittmotoren gemacht, bzw eigendlich auch mit Elektronik im allgemeinen nicht viel, aber da der motor richtig läuft geh ich mal nicht davon aus das er kaputt ist, und ich habe 2 von den motoren und die Geräusche machen beide.

MFG
Jens R.

Tredory
29.06.2007, 17:39
Keiner eine idee dazu ?

Goblin
29.06.2007, 19:21
lpt geht mit visual basic recht einfach. da gibts ne libary für. hier ein link der dir helfen sollte.

http://www.vbarchiv.net/workshop/workshop76.php

was deine prozesspriorität angeht: ist klar, dass die mouse sich nicht mehr bewegt, wenn du das teil auf echtzeit stellst. dazu müsstest du wissen was prozesse sind und wie scheduling funktioniert. das wissen dazu findest du bei wikipedia, sehr interessant alles, wie ich anmerken muss. wenn du den schrittmotor wirklich effizient und vernünftig ohne externen hardware-buffer ansteuern willst, dann musst du das in einem echtzeit-betriebssystem machen. da läuft dann nur 1 prozess und es ist wirklich echtzeit, anders als die echtzeit-priorität bei winxp, die nicht wirklich echtzeit ist. also da kannst du entweder nen altes dos nehmen, da ist das mit dem lpt auch einfach. es gibt allerdings auch einige linux-distributionen, die echtzeit-betriebssysteme sind. nen ubuntu gibts da glaub ich beispielsweise.

Tredory
29.06.2007, 21:15
Ubuntu hat mein Vater testweise auf seinem Rechner, allerdings nicht für so etwas wofür ich es dann brauchen würde. Ich hätte dann nur das Problem, dass ich keine Linux erfahrungen besitze, und nicht wüsste was es da dann für Programmiersprachen o.ä. gibt.

Goblin
30.06.2007, 08:46
ubuntu ist nicht = ubuntu. ich denke nicht dass dein vater die echtzeit-version hatte. schau mal ob du ne schrittmotorsteuerung (software) für dos findest. ansonsten musst du es halt so machen, dass der rechner die befehle sendet und eine externe hardware die motoren steuert.

Tredory
30.06.2007, 23:20
Ich werde mir demnächst sowieso das RNControl-board holen, und das dann damit Steuern. Aber Ubuntu habe ich mir heute mal Runtergeladen und installiert, was gibt es da so für Programmiersprachen womit man auf die com und lpt ports zugreifen kann ?

Goblin
01.07.2007, 11:35
c oder java zum beispiel. oder matlab

wiebel
01.07.2007, 12:47
Ja, aber ... er hat doch einen L297 drauf, dann ist doch echtzeit wahrlich nur noch für ersthafte Anwendungen nötig, wenn er jetzt den L298 direkt betreiben würde, müsste ich der Echtzeitfraktion ja zustimmen, aber so, ab und an mal dem L297 sagen was er tun soll, das schafft man ja auch ohne RT, sieht ja noch nicht so aus als wäre das eine CNC maschine die unbedingt diagonal oder gar im Kreis fahren möchte.

Tredory
01.07.2007, 15:31
@wiebel
ja ich hab da einen l297 mit drauf, aber wenn ich den moter etwas schneller laufen lassen möchte muss der clock eingang numal die impulse recht schnell bekommen, und ohne echtzeit bekommt windows das nicht stabil hin.

muss ich mir die programmiersprachen mal angucken die es da so gibt, aber vergleichbar mit basic wird da dann wohl eher keine sein :(.

wiebel
01.07.2007, 17:53
hmm für clock einfach einen 555er nehmen?

vohopri
01.07.2007, 18:15
Hallo Jens,

wie hoch soll die Frequenz der Clock Impulse aus dem PC denn sein?

Über die Soundkarte kann ich 20kHz nach aussen bringen und das brauche ich keinen Echtzeit Betrieb.

grüsse,
Hannes

mlinka
02.07.2007, 09:41
Hallo

Also ich möchte Anfangen mich ein wenig mit Microcontrollern und Robotik zu beschäftigen. Nächsten Monat wenn ich wieder bisschen Geld habe hole ich mir eine RN-Control zum Anfangen. Jetzt habe ich vorab schonmal eine Schrittmotorsteuerung mit L297/L298 aufgebaut und an meinem LPT-Experimentierboard angeschlossen. Es funktioniert auch soweit sehr gut, nur habe ich das Problem das meine Software (Profilab Expert) es nicht so schön hinbekommt die Impulse für die Schritte Stabil rauszugeben bei 400 Hz merkt man es manchmal das der Motor Ruckt, bei höheren Schrittgeschwindigkeiten bleibt er dann stehen und kann nicht wieder Anlaufen. Es wird deutlich besser wenn ich alle hintergrundprogramme schließe, aber wirklich "gut" läuft es dennoch nicht, nur wenn ich im Prozessmanager die Priorität für Profilab auf Echtzeit stelle dann läuft er wirklich sehr schön, allerdings kann ich dann auch garnichts mehr am PC machen, die Maus bewegt sich nicht mehr, die tastatur interessiert ihn nicht mehr, muss dann den ganzen rechner resetten um da wieder rauszukommen.

https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1682

Kann man den LPT Port auch irgendwie mit mit Visual Basic .NET ansteuern ich finde da nichts, nur für die Serielle schnittstelle sind da wohl funktionen drin, aber da ist die Hilfe nicht sehr weiterhelfend, weswegen ich auch keine ahnung habe wie ich die Serielle schnittstelle nutzen könnte. Und wenn funktioniert das ganze da dann besser oder kann ich Windows für solche sachen vergessen ?

Und noch eine Frage zu dem Schrittmotor: Es ist ein Mitsumi M55SP-1 (http://www.mitsumi.co.jp/Catalog/pdf/motor_m55sp_1_e.pdf), ist es normal dass Schrittmotoren so piepende geräusche machen, man könnte denken das da nen Piezzo drin ist der Musik macht ;) wenn der motor steht und man mit gewalt an der Welle dreht verändert sich die Tonlage von dem Pfeifen usw. Habe vorher noch nie was mit Schrittmotoren gemacht, bzw eigendlich auch mit Elektronik im allgemeinen nicht viel, aber da der motor richtig läuft geh ich mal nicht davon aus das er kaputt ist, und ich habe 2 von den motoren und die Geräusche machen beide.

MFG
Jens R.

Hy!
Ich habe auch L297-L298 gebaut.
Ich habe ein bipolar schritt motor aus hp drucker
Vref = 0.5V
Vs=36.5V
Vss=5V

Mein motor drehts nichts.

Kannst du mir sagen welche pins aus der paralell port hast du benutz, und wie hast du die an L297-L298 karte verbindet?

Sorry fur meine sprache, ich bin aus croatien.

Tredory
02.07.2007, 14:36
@mlinka
Ich benutze Die Datenleitungen 0 bis 5 und GND
um ihn zu Steuern. Habe dann einfach ein wenig rumexperimentiert welche leitungen ich auf masse ziehen muss. und Habe jetzt nurnoch die Anschlüsse
- CW/CCW
-Clock
-Half/Full
-Reset
-Enabled
-Control
-und halt GND
Mit dem LPT Port verbunden, und damit geht das wunderbar bis ca 600HZ, wenn ich da drüber gehe und lpt port schickt mal wieder nen Fehler mit steht der Motor und kann nicht mehr anlaufen.

@vohopri
Ja das mit der Soundkarte hört sich gut an, aber wie mach ich das wie steuer ich die an ? kann den motor ja nicht zur Musik laufen lassen ;) Wäre natürlich top wenn man das mit Visual Basic machen könnte, bzw C++.

mlinka
02.07.2007, 16:29
@mlinka
Ich benutze Die Datenleitungen 0 bis 5 und GND
um ihn zu Steuern. Habe dann einfach ein wenig rumexperimentiert welche leitungen ich auf masse ziehen muss. und Habe jetzt nurnoch die Anschlüsse
- CW/CCW
-Clock
-Half/Full
-Reset
-Enabled
-Control
-und halt GND
Mit dem LPT Port verbunden, und damit geht das wunderbar bis ca 600HZ, wenn ich da drüber gehe und lpt port schickt mal wieder nen Fehler mit steht der Motor und kann nicht mehr anlaufen.

@vohopri
Ja das mit der Soundkarte hört sich gut an, aber wie mach ich das wie steuer ich die an ? kann den motor ja nicht zur Musik laufen lassen ;) Wäre natürlich top wenn man das mit Visual Basic machen könnte, bzw C++.

kannst du mir sagen welcher paralell port pin geht wo?
Ich habe jetzt:
pin 2 auf CLOCK
pin 3 auf CW/CCW
pin 4 auf ENABLe
pin 18 auf GND
HALF/FULL habe ich auf GND (fur fullschritt)

wo kann ich diese frequenz stellen?
Ich benutze software: KCAM auf win XP.
Ich sehe da nur port setup.

vohopri
02.07.2007, 17:08
Hi Jens,

es ist zwar nicht musik, auf die der Motor dann reagiert, aber wenn man es sich anhört, ist es ein Knurren, Brummen, Summen oder Peifen mit Obertongesang. Hört sich recht lustig an, aber das wird eher zweitrangig sein. Signale zwischen 50 Hz und 20 kHz kann man durchaus kann man nciht nur hören , sondern auch mit dem Windows API WIE Musik erzeugen und nach aussen übertragen. Das Windows API kannst du ansprechen, womit du möchtest. Ich persönlich mach das mit Delphi, aber ich hab auch schon von VB und C++ gehört, dass sich das eignet.

Das Ganze funktioniert über die Waveout Functions der Windows API. Die sind in der msdn Library dokumentiert. Wenn du c++ schreibst brauchst du ohnehin weniger umdenken, als ich als Delphinutzer.

Grob skizziert, geht das dann so:
Du öffnest die Soundkarte als waveout device. Du generierst die Impulsdaten im Programm und übergibst die Daten an das Waveout Device. An den Lineout Ausgang der Soundkarte hängst du ein kleines Interface mit 2 Transistoren. Der erste verstärkt und der zweite schaltet. Und schon hast du Deine Daten auf TTL Level oder was auch immer.

Eine Inteface Schaltung zum Abändern und Nachbauen findest du hier:http://www.jbergsmann.at/servo-soundcard.htm

grüsse,
Hannes

AndreasHL
05.05.2008, 13:23
Hallo,

die Geräusche sind normal. Es hat sogar schon mal jemand ein Musikstück komponiert, nur durch das fiepen des Servos. Kein Witz !

Gruss

Andreas