Forum: Mikrocontroller und Digitale Elektronik Frequenz Schrittmotor über Computer


von Patrick K. (pkiefer)


Lesenswert?

Hallo zusammen,
Ich möchte einen Schrittmotor direkt vom Computer (mit Python) ansteuern 
um eine Achse zu positionieren. Ich habe mir von Numato das 32 channel 
usb gpio module angeschafft und für den Driver einen TB6600. Ich habe 
aber nicht überlegt, dass das USB GPIO maximal ca. 20-50Hz erreicht. Den 
Motor möchte ich aber mit mindestens 1KHz ansteuern. Ich muss aber genau 
wissen, wieviele Schritte gemacht werden. Hat da jemand eine Idee? Von 
Numato finde ich keine wirklich aussagekräftigen Datenblätter, könnte es 
aber sein, dass das Ethernet GPIO Modul (auch von Numato) eine viel 
höhere Übertragungsfrequenz erreicht? Oder gibt es Alternativen?

Raspberry oder Arduino kommen nicht in Frage, ich will den Motor direkt 
über den PC ansteuernn können.

Besten Dank im Voraus
P. Kiefer

von Guest (Gast)


Lesenswert?

Ich nehme an du meinst dieses Modul?

https://numato.com/product/32-channel-usb-gpio-module-with-analog-inputs

Wie kommst du darauf, dass du mit dem Modul nur auf 50Hz kommst? In den 
Spezifikationen habe ich mal auf Anhieb nichts dazu gefunden, da es aber 
die GPIOs des Mikrocontrollers sind sollten die locker mehrere KHz wenn 
nicht MHz machen. Und der Full Speed USB sollte da auch kein 
limitierender Faktor sein.

von Walter T. (nicolas)


Lesenswert?

Patrick K. schrieb:
> Oder gibt es Alternativen?

Mikroschritt-Teilungsfaktor verringern

von m.n. (Gast)


Lesenswert?

Patrick K. schrieb:
> Raspberry oder Arduino kommen nicht in Frage, ich will den Motor direkt
> über den PC ansteuern können.

Ich denke, mit den paar Milliampère, die ein PC an irgendwelchen 
Ausgängen liefern kann, wird sich kein Schrittmotor zufrieden geben.
Mein Vorschlag: Den Motor von einem separaten µC ansteuern lassen (ggf. 
auch Arduino) und vom PC nur die Befehle vorgeben. Beispiel: 
http://mino-elektronik.de/Generator/takte_impulse.htm#bsp8

von Guest (Gast)


Lesenswert?

m.n. schrieb:
> Ich denke, mit den paar Milliampère, die ein PC an irgendwelchen
> Ausgängen liefern kann, wird sich kein Schrittmotor zufrieden geben.
> Mein Vorschlag: Den Motor von einem separaten µC ansteuern lassen (ggf.
> auch Arduino) und vom PC nur die Befehle vorgeben.

Das ist doch genau das was er vor hat er glaubt nur das das Board zu 
langsam ist.

von m.n. (Gast)


Lesenswert?

Guest schrieb:
> Das ist doch genau das, was er vor hat; er glaubt nur, daß das Board zu
> langsam sei.

Per PC einzelne Pins wackeln zu lassen, zudem noch mit 1 kHz, ist 
ungeschickt. Sofern diese 1 kHz über per Start-Stoppfrequenz des Motors 
liegen, wird jeder Ruckler in der Taktausgabe zum Stillstand führen.

Das von Dir gezeigte USB-IO-Board zuzüglich eines Treiber-ICs erscheint 
mir darüber hinaus als umständlicher Weg. Ein Arduino + Treiberplatine 
ergibt weniger Aufwand zu vermutlich günstigerem Preis. Alternativ 
könnte ich auch noch eine (Leer)platine für ATmega328 + A4982 als 
Treiber anbieten.

In beiden Fällen könnte der Motor dann mit 1 kHz oder 10 kHz laufen. 
Meines Erachtens der einzig sinnvolle Weg.

von Guest (Gast)


Lesenswert?

Das es umständlich ist, ist klar. Mich würde einfach interessieren wie 
die 50Hz zustande kommen. Den Stepper Treiber zu verwenden finde ich 
jetzt nicht so schlimm, allerdings würde ich persönlich das Step und Dir 
Signal dann mit einem STM32 und einem der Timer erzeugen. Da hat man ein 
sauberes und vor allem genaues Signal und viele möglichkeiten PWM mit 
variabler DC und Frequenz zu erzeugen (stichwort DMA). Und dem STM würde 
ich persönlich auch G Code oder ähnliches schicken. Den Pin über den PC 
zu toggeln stell ich mir umständlich und nervig vor.

von Patrick Kiefer (Gast)


Lesenswert?

Hallo zusammen, erstmal besten Dank für die Antworten.

Walter T. schrieb:
> Mikroschritt-Teilungsfaktor verringern

Geht natürlich nicht, da ich die Achse entweder im Schneckentempo bewege 
oder keine genaue Positionierung mehr erreiche.

m.n. schrieb:
> Ich denke, mit den paar Milliampère, die ein PC an irgendwelchen
> Ausgängen liefern kann, wird sich kein Schrittmotor zufrieden geben.

Dazu habe ich den TB6600, dieser erreicht 4A, vom PC soll lediglich das 
Pulsing kommen.


Guest schrieb:
> Ich nehme an du meinst dieses Modul?
>
> https://numato.com/product/32-channel-usb-gpio-module-with-analog-inputs
>
> Wie kommst du darauf, dass du mit dem Modul nur auf 50Hz kommst? In den
> Spezifikationen habe ich mal auf Anhieb nichts dazu gefunden, da es aber
> die GPIOs des Mikrocontrollers sind sollten die locker mehrere KHz wenn
> nicht MHz machen. Und der Full Speed USB sollte da auch kein
> limitierender Faktor sein.

Genau dieses Modul. Die 50 Hz habe ich gestern irgendwo gelesen, finde 
den Link leider nicht mehr. Ich bin absolut kein Elektronik Fachmann 
aber ich vermute es hat mit der Ansprechzeit zu tun oder kann das nicht 
sein? Ich habe ein kleines Programm in Python geschrieben. Einen Output 
100x setzen und löschen (direkt vom PC aus) dauert (ohne delays) rund 
eine halbe Sekunde. Das gibt mir zwar mehr als 50 Hz, aber trotzdem viel 
zu wenig. Leider habe ich bei Numato ebenfalls keinerlei Informationen 
dazu gefunden. Ich habe nun direkt bei Numato mal nachgefragt und warte 
auf die Antwort.

Guest schrieb:
> das Step und Dir
> Signal dann mit einem STM32 und einem der Timer erzeugen. Da hat man ein
> sauberes und vor allem genaues Signal und viele möglichkeiten PWM mit
> variabler DC und Frequenz zu erzeugen (stichwort DMA).

Tönt interessant, soweit ich es verstehe. Den STM32 kenne ich nicht, 
mache mich aber mal schlau. Wozu wird dann der Timer benötigt?


Mir kam noch der Gedanke, dass ich dem USP GPIO von Numato allenfalls 
den Befehl erteilen kann, dass dieser das Pulsing direkt auf der Platine 
erzeugt, ich denke das sollte doch möglich sein? Das heisst, ich müsste 
nur den Befehl zur Pulserzeugung über das USB-Kabel schicken, nicht die 
einzelnen Pulse.

Und entschuldigt, falls mein Verständnis in der Elektronik und 
Steuerungstechnik sehr begrenzt ist, ich komme aus dem Maschinenbau 
(Konstruktion, Simulation, Werkstoffwissenschaften) mit etwas Erfahrung 
im Bereich Computer Vision und Machine Learning.

von m.n. (Gast)


Lesenswert?

Die angeschlossenen USB-Geräte werden vom PC im ms-Takt nacheinander 
abgefragt. Da kommt eine Latenz von 20 ms schnell zusammen.

Ob AVR, STM32 oder sonst ein µC ist doch egal. Die obere Schrittfrequenz 
hängt vom Motor und seinem Treiber ab.

von m.n. (Gast)


Lesenswert?

Patrick Kiefer schrieb:
> Dazu habe ich den TB6600, dieser erreicht 4A, vom PC soll lediglich das
> Pulsing kommen.

TB6600 bezeichnet eigentlich das IC. Unter der Bezeichnung gibt es auch 
ein fertiges Modul. Hast Du Letzteres vor Dir zu liegen?

Welchen Motor verwendest Du und was soll angetrieben werden?
Die angegebenen 4 A besagen nicht sehr viel - insbesondere wenn ein 
kleiner Motor verwendet werden soll. Da ist es dann wichtiger, eine 
automatische Ruhestromabsenkung zu haben, um den Motor im Stillstand 
kühl zu halten. Bei hohen Drehzahlen sind der Motorstrom in der Regel 
deutlich ab und kann garnicht genutzt werden, sofern die 
Versorgungsspannung nicht entsprechend hoch ist.

Schreib vielleicht ein wenig über Deine Anwendung; da wird manches 
klarer.

Patrick Kiefer schrieb:
> Das heisst, ich müsste
> nur den Befehl zur Pulserzeugung über das USB-Kabel schicken, nicht die
> einzelnen Pulse.

Das ist mein Vorschlag gewesen. Dafür reicht wie gesagt auch ein 
Arduino, der mit seinem Timer die Schrittfrequenz erzeugt.

von Guest (Gast)


Lesenswert?

Patrick Kiefer schrieb:
> Wozu wird dann der Timer benötigt?

Mit dem Timer generierst du das PWM (STEP-Signal)

von Frank K. (fchk)


Lesenswert?

Patrick K. schrieb:

Ich denke, Du hast das falsche gekauft.

Schau mal hier:

https://www.pololu.com/product/3141

Das sollte eher was für Dich sein.

fchk

von Patrick Kiefer (Gast)


Lesenswert?

Frank K. schrieb:
> Ich denke, Du hast das falsche gekauft.
>
> Schau mal hier:
>
> https://www.pololu.com/product/3141
>
> Das sollte eher was für Dich sein.

Hallo Frank,

danke für den Link und den Hinweis. Wenn ich nun aber 3 Achsen ansteuern 
will, dazu eine Kamera triggern, Endschalter abfragen etc. brauche ich 
drei solche Elemente und trotzdem noch ein GPIO Modul, wie ich das im 
Moment habe oder liege ich da falsch? Dazu kommt dann, dass 4 USB 
Anschlüsse gebraucht werden am Computer?

Beste Grüsse
Patrick

von Sebastian S. (amateur)


Lesenswert?

Ist das ganze Vorhaben nicht bereits für die Miezekatze?

Um im KHz-Bereich Ausgänge zu setzen bzw. rückzusetzen, brauchts ein 
System, das nicht dauernd unterbrochen wird. Das wiederum gilt für 
Fenster und auch für Pinguin, nicht.

von Frank K. (fchk)


Lesenswert?

Patrick Kiefer schrieb:

> danke für den Link und den Hinweis. Wenn ich nun aber 3 Achsen ansteuern
> will, dazu eine Kamera triggern, Endschalter abfragen etc. brauche ich
> drei solche Elemente und trotzdem noch ein GPIO Modul, wie ich das im
> Moment habe oder liege ich da falsch? Dazu kommt dann, dass 4 USB
> Anschlüsse gebraucht werden am Computer?

Das hast Du in Deinem ersten Posting nicht geschrieben. Aber ja, Du hast 
prinzipiell recht. Es gibt aber auch Controller für drei Achsen.

Die Anzahl der USB-Ports ist unerheblich, denn es gibt ja Hubs.

Wichtig für Dich zu wissen ist, dass Deine Idee, die Schrittmotorpulse 
über USB einzeln zu erzeugen, einfach eine dumme Idee ist. USB ist dafür 
nicht gemacht und geeignet. Du brauchst externe Controller, denen Du 
Positionierbefehle schickst und die sich dann selber um die 
Schrittmotoren und idealerweise auch um die zugehörigen Endschalter 
kümmern.

So etwas gibts fertig zu kaufen, zb. für CNC-Maschinen.

fchk

von Patrick Kiefer (Gast)


Lesenswert?

Frank K. schrieb:
> Das hast Du in Deinem ersten Posting nicht geschrieben.

Das stimmt, das hatte ich nicht erwähnt.

Frank K. schrieb:
> Wichtig für Dich zu wissen ist, dass Deine Idee, die Schrittmotorpulse
> über USB einzeln zu erzeugen, einfach eine dumme Idee ist.

Das habe ich auch gemerkt.

Ich habe da was gefunden, was aus meiner Sicht passen sollte.
Falls das nicht so ist, bitte ich um Hinweise.

PoKeys 57E - Programmierbares GPIO-Modul mit Ethernet
https://www.reichelt.com/ch/de/pokeys-57e-programmierbares-gpio-modul-mit-ethernet-pokeys57e-p258728.html?CTYPE=0&MWSTFREE=0&PROVID=2788&gclid=CjwKCAjwq4fsBRBnEiwANTahcIiJ_ZQ75VTPXTLFKT55-bWVZNsTYPtHEkzIpJZan--SRNZsNFH90RoCfegQAvD_BwE&&r=1

von m.n. (Gast)


Lesenswert?

m.n. schrieb:
> Schreib vielleicht ein wenig über Deine Anwendung; da wird manches
> klarer.

Keine weiteren Fragen sondern Antworten werden gebraucht.

von Patrick Kiefer (Gast)


Lesenswert?

Ich möchte Makrofotografien von Fräswerkzeugen machen. Die Werkzeuge 
sind unterschiedlich gross in Durchmesser und Länge. Da ich nur die 
Werkzeugspitze abfotografieren möchte/kann (begrenztes Bildfeld), aber 
der Prozess vollautomatisch sein soll, will ich zuerst das Werkzeug 
anhand der ersten Bilder automatisch ausrichten. Dazu brauche ich zwei 
Linearachsen (Spindelantrieb, Nema23 Schrittmotor) in X und Z sowie eine 
Drehachse um das Werkzeug zu drehen. (Y-Achse ist nicht notwendig) Die 
Bildverarbeitung habe/werde ich in Python programmieren. Da meine 
Kenntnisse in anderen Programmiersprachen sehr begrenzt sind, wäre es 
aus meiner Sicht sinnvoll, die komplette Programmierung in Python 
durchzuführen.

Da bei der Makrofotografie die Schärfentiefe sehr gering ist, braucht 
man das sogenannte Focus Stacking, wobei viele Bilder in verschiedenen 
Ebenen gemacht werden. Diese Bilder werden schlussendlich zusammengefügt 
zu einem Bild, auf dem das gesamte Objekt scharf abgebildet ist. Diese 
Verschiebung übernimmt die X-Achse, so dass die Fokusebene der Kamera 
über das ganze Objekt gefahren wird und beispielsweise alle 0.2mm wird 
ein Bild geschossen (mit einer Nikon D810 und Makroobjektiv, Triggering 
über Fernauslöser-Anschluss) Zudem möchte ich natürlich eine 
Referenzfahrt an einen Endschalter durchführen können.

Kurz gesagt: Ich möchte das Werkzeug einspannen und 10 Sekunden später 
ein Bild, welches die Schneidspitze über den gesamten Bereich scharf 
abbildet, erhalten.

Ich hatte in meiner ehemaligen Firma einen Prototypen aufgebaut, die 
Steuerung erfolgte über ein Raspberry Pi, das heisst ich habe die Driver 
TB6600 direkt über den Raspi gepulst. Die gesamte Bildverarbeitung habe 
ich auf dem Computer mit Python gemacht. Die Ausrichtung musste ich 
manuell machen. Dadurch liefen natürlich immer mehrere Programme 
(Raspberry & Computer) nebeneinander und ich musste diese bedienen.

von Frank K. (fchk)


Lesenswert?

Und Du hast es nicht geschafft, den PI über sein LAN mit dem PC zu 
verbinden, damit der PC dem Pi die Steuerungsbefehle gibt? Das wäre der 
fehlende Baustein gewesen.

fchk

von Stefan F. (Gast)


Lesenswert?

Patrick Kiefer schrieb:
> Ich habe da was gefunden, was aus meiner Sicht passen sollte.

Ich denke, das ist auch nicht das richtige Produkt. Du brauchst einen 
"intelligenten" Motorcontroller, dem du sagen kannst, wie viele Schritte 
der Motor mit welcher Geschwindigkeit machen soll. Dazu gehört auch die 
Berücksichtigung von Beschleunigungs-Rampen und Bremsvorgängen.

von Wolfgang (Gast)


Lesenswert?

Guest schrieb:
> Mit dem Timer generierst du das PWM (STEP-Signal)

Was will man mit einem PWM-Signal für den Schrittmotortreiber?
Der Step Eingang braucht ein ganz gewöhnliches Taktsignal mit 
einstellbarer Frequenz. Das Tastverhältnis darf dabei konstant sein, 
i.e. es gibt keinen Grund daran zu drehen.

von Ro n. (rwth2212)


Lesenswert?

Das Einfachste wäre du nimmst einen fertigen Achscontroller.
Den fütterst du vom PC aus mit entsprechenden Befehlen und er generiert 
dann die Takt/Richtungs-Signlale für die Endstufen.

Vereinfacht gesagt: dem Controller sagst du "beweg X-Achse 50 Schritte 
nach links" und der generiert dann die ganzen zeitkritischen Signale 
PC-unabhängig.

Google mal nach "Mach3 motion controller"

auch bei Pollin gibt es da grad was:

https://www.pollin.de/p/schrittmotoren-endstufe-postep60-256-bis-6-a-phasenstrom-810745


Dazu brauchst dann nat. noch Schrittmotor-Endstufen die mit deinen 
Motoren zurechtkommen.

von svensson (Gast)


Lesenswert?

Stefanus F. schrieb:
> Ich denke, das ist auch nicht das richtige Produkt. Du brauchst einen
> "intelligenten" Motorcontroller, dem du sagen kannst, wie viele Schritte
> der Motor mit welcher Geschwindigkeit machen soll. Dazu gehört auch die
> Berücksichtigung von Beschleunigungs-Rampen und Bremsvorgängen.

Das sehe ich auch so. Schaue einmal bei TRINAMIC, die haben Controller 
in diversen Varianten, die sich direkt per Seriell, USB, CAN oder I/O 
ansteuern lassen. Mit deren Programmiersprache TMCL (Download) kann man 
dann die Kommandos direkt vom PC aus senden, z.B. "Fahre zu Postion x 
mit Geschwindigkeit y, dann Stop".
Manche Controller lassen sogar eigene Programme mit mehren Hundert 
Assemblerbefehlen zu.

Wenn man es ganz einfach haben möchte, gibt es auch Kombinationen aus 
Motor und angeflanschtem Controller, praktisch ready to use.

von m.n. (Gast)


Lesenswert?

Ich denke, der TO ist mit den meisten Vorschlägen hier etwas 
überfordert, zumal keiner für ihn direkt eine Lösung darstellt. Hinzu 
kommt, daß er mit einer GPIO-Karte einen sehr schlichten Ansatz gemacht 
hat und noch verstehen muß, daß es dann doch nicht so einfach geht.

Es wurde eine Referenzfahrt erwähnt. Diese wird von keinem der 
vorgeschlagenen Controller/Endstufen erledigt. Aber solche Funktionen 
müssen lokal von einem Controller ohne äußere Aktivität ausgeführt 
werden.
Jede Lösung mit frei programierbarem µC ließe sich dahingehend 
erweitern, aber nicht in Python und wohl auch nicht vom TO.
Man könnte jetzt eine passende Lösung anbieten, muß aber wohl erst 
abwarten, bis die Erkenntnis dafür "gereift" ist.

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

Ich hab vor fast 30 Jahren eine CNC Maschine gebaut, die mit der 
parallelen Schnittstelle gesteuert wurde und das sicher im KHz Bereich. 
BS war aber DOS. Mit heutigem Windows wird das vermutlich nix mehr. Aber 
Linux-CNC arbeitet auch mit paralleler schnittstelle. Braucht man halt 
Linux.

Grüsse

von leo (Gast)


Lesenswert?

Gebhard R. schrieb:
> Linux-CNC arbeitet auch mit paralleler schnittstelle.

Linux ist von Haus aus nicht echtzeitfaehig, i.e. es gibt keine Garantie 
fuer minimale Pausenzeiten (daran wird grad gearbeitet).

So einfach ist das also nicht, s.a.:
http://wiki.linuxcnc.org/cgi-bin/wiki.pl?RealTime

leo

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

Hmmm... mein Bekannter fräst seit Jahren mit Linux-CNC über parallele 
schnittstelle. Also sollte das soweit gehen. Klar, us genaues timing 
wird man nicht hinbringen.

von NichtWichtig (Gast)


Lesenswert?

Da steckt aber mit hoher Wahrscheinlichkeit eine Steuerelektronik am 
Parallelport welche aus Commandos die Schritte erzeugt.

Ich habe vor Jahren mit dem Entwickler von PCDreh zusammen gearbeitet 
und selbst solche Anwendungen (Stepper-Prüfstand) 
gebaut/entwickelt/programmiert.

Ein schnöder 8052 von Atmel nahm am LPT die gewünschten Befehle entgegen 
und erzeugte daraus dann die Rampen/Impulse.

Ansteuern direkt vom LPT ergibt Murks, allein schon wegen dem 56µs timer 
interrupt.

von Stefan F. (Gast)


Lesenswert?

Ein ganz simpler Test:

Schreibe Dir ein Programm, dass an einem "echten" Parallel-Port einen 
gut hörbaren Ton (z.B. 1kHz) ausgibt und hänge da einen Lautsprecher 
dran.

Du wirst schon ohne Messinstrumente knatternde Geräusche hören - so 
schlecht ist das Timing.

von Patrick Kiefer (Gast)


Lesenswert?

svensson schrieb:
> Das sehe ich auch so. Schaue einmal bei TRINAMIC, die haben Controller
> in diversen Varianten, die sich direkt per Seriell, USB, CAN oder I/O
> ansteuern lassen. Mit deren Programmiersprache TMCL (Download) kann man
> dann die Kommandos direkt vom PC aus senden, z.B. "Fahre zu Postion x
> mit Geschwindigkeit y, dann Stop".

Ich habe mir die Produkte von Trinamic angeschaut, das ist doch genau 
wonach ich suche! Es gibt sogar ein Python Library (TMCL) zur 
Kommunikation mit dem Controller. Klar sind die Controller etwas teurer, 
dafür habe ich eine saubere Lösung. Besten Dank!

von svensson (Gast)


Lesenswert?

Gern geschehen.

Bei den Controllern sollte man vielleicht beachten, daß die je nach 
Modell verschiedene Möglichkeiten bieten. Und nicht jeder Controller paß 
zu jedem Motor.

Den Controller mitten im Projekt zu wechseln, kann etwas frustrierend 
sein, so meine Erfahrung.

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Hallo Namenloser,

NichtWichtig schrieb:
> Da steckt aber mit hoher Wahrscheinlichkeit eine Steuerelektronik am
> Parallelport welche aus Commandos die Schritte erzeugt.
>
> Ich habe vor Jahren mit dem Entwickler von PCDreh zusammen gearbeitet
> und selbst solche Anwendungen (Stepper-Prüfstand)
> gebaut/entwickelt/programmiert.
>
> Ein schnöder 8052 von Atmel nahm am LPT die gewünschten Befehle entgegen
> und erzeugte daraus dann die Rampen/Impulse.
>
> Ansteuern direkt vom LPT ergibt Murks, allein schon wegen dem 56µs timer
> interrupt.

Nur weil PC-Dreh einen externen Controller gebraucht hat, heißt das 
nicht das das zwingend so sein muss. Sowohl WinPCNC als auch Mach3 
funktionieren unter Windows (32bit) auch ohne externen Controller, mit 
direktem BitBang auf dem Parallelport. Damit kann man Taktraten bis ca. 
20kHz erreichen. Höhere Frequenzen und geringeren Jitter erreicht man 
dann nur mit externen Controllern, so wie das inzwischen bei WinPCNC USB 
oder Mach3 mit SmoothStepper Standard ist.

Interessant zu hören, dass du damals für Matthias Potthoff den 
Controller gemacht hast. Leider lebt Matthias ja nicht mehr. Und mit ihm 
ist auch sein schönes Programm verschwunden. Das Bedienkonzept war zwar 
an manchen Stellen etwas eigenwillig, aber man merkte schon, dass das 
von einem Praktiker gemacht war...

Mit freundlichen Grüßen
Thorsten Ostermann

von m.n. (Gast)


Lesenswert?

Thorsten O. schrieb:
> Nur weil PC-Dreh einen externen Controller gebraucht hat, heißt das
> nicht das das zwingend so sein muss. Sowohl WinPCNC als auch Mach3
> funktionieren unter Windows (32bit) auch ohne externen Controller, mit
> direktem BitBang auf dem Parallelport.

Unter DOS programmiere ich Dir das auch. Aber nimm mal einen WIN10 PC 
(o.ä.) und erledige das mit Python. Das Problem fängt ja schon mit der 
Suche nach LPT1 an.
Die Zeiten dafür sind einfach vorbei!

von NichtWichtig (Gast)


Angehängte Dateien:

Lesenswert?

Stimmt, PCDreh hatte die die Impulse für 3 Achsen direkt am LPT Port 
angeklemmt, Richtungsbit dazu und Endstufen dahinter.

Potty war schon genial mit dem war er machte, selbst als er tot krank in 
der Chemo lag programmierte er noch ne Achse mehr an seine Software oder 
baute krasse Modelle.
Informatiker, Modellbauer, Tüftler, Biker, Spaßkopp, Kumpel - r.i.p.


Ich hatte mir damals ein Impulsmeßgerät gebaut und eine Win32 
Testprogramm um einen Impuls/Zeit Diagramm erweitert.
Dabei zählt ein 16 Bit Counter die Zeit zwischen den Motorimpulsen und 
übertrug diese an den Meß-PC (2x8255 am 16Bit ISA-Bus)
Man konnte ein Quarzoszillator aufstecken und per Vorteiler dann den 
Zähltakt jumpern, z.B. 20MHz/4 oder so..

Habe mal in meinen Archiven gesucht und was aus den 90ern gefunden:

Hier ein Beispiel, wie ein DOS-Programm die Impulse erzeugt.
Das die Rampe exponetiell mit der Geschwindigkeit steigt, ist gut zu 
erkennen. Sie wurde hier ohne Motor aufgenommen, der bei solch einer 
Beschleunigung keine Chance hat, den Impulsen zu folgen.
Diese Rampe wird in der Praxis bis etwa 4000 Impulse verwendet.

Es sind auch deutlich die Einbrüche der Impulspausen zu sehen, die durch 
den DOS-Timer-Interrupt alle 56ms erzeugt werden.
Immer wenn DOS seine Timer-Interrupt-Routine ausführt, fehlt dem 
Impulsprogramm diese Zeit.
Daraus ergibt sich eine Verlängerung der Impulspause, was für 1, 2 
Impulse eine geringere Frequenz bedeutet.
(Ließe sich mit der Zoom-Funktion präzise feststellen)

von Patrick K. (pkiefer)


Lesenswert?

Hallo zusammen,
ich möchte noch kurz ein Update geben. Ich habe den TMCM-3110 von 
Trinamic gekauft (Knapp 300 Euro). Top Controller, einfach ansteuerbar 
über TMCL (mit intuitivem GUI oder direkt aus Python. Der Controller 
kann mit dem Library PyTMCL problemlos und ohne Einschränkungen 
angesteuert werden. Im Library stand, dass er über RS-485 angeschlossen 
werden MUSS, USB funktioniert aber auch einwandfrei.
Besten Dank an alle für die (hilfreichen) Inputs, besonders an svensson.
Kann das Produkt nur empfehlen.

Beste Grüsse
P. Kiefer

von TheBug (Gast)


Lesenswert?

Das Problem mit diesem I/O-Modul ist, dass es als pseudo-serielle 
Schnittstelle läuft. Da ist der Datendurchsatz weder genau spezifiziert, 
noch sicher vorhersehbar. Steckt z.B. ein Memory-Stick mit am USB, dann 
kann der dem I/O die Bandbreite klauen, wenn grad auf Dateien 
zugegriffen wird.

Einen zuverlässigen Durchsatz von 1000 Datenpaketen und damit 1000 
Änderungen der Ausgänge pro Sekunde, bietet z.B. der IO-Warrior28:
https://www.codemercs.com/de/io/full-speed

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
Noch kein Account? Hier anmelden.