Mikrokontroller + UART + Schrittmotor-Karte

Hallo zusammen!

Ich habe mich jetzt mit Hilfe des Tutorials von

formatting link
etwas in die Materie eingearbeitet. Zu meinem Erstaunen haben alle Schaltungen von Anfang an funktioniert ;-)

Ich besitze außerdem die Schrittmotor Steuerkarte 3D-Step von

formatting link

Wenn man die Steuerkarte über einen PC mit Windows anspricht, kann es wegen der fehlenden Echtzeit-Funktionalität dazu kommen, dass man Schritte verliert. Ist das soweit richtig?

Daher möchte ich gerne einen Mikrokontroller zwischen schalten und diesen mit UART ansprechen.

Beispiel: Über UART sende ich von Windows aus z.B. "X300+" (Achse X 300 Schritte im Uhrzeigersinn) an den MC und der MC gibt das weiter an die Steuerkarte.

Geht sowas? Oder macht man das anders? Gibt es schon Lösungen dafür?

Vielen Dank.

Gruß Andreas

Reply to
Andreas Lademann
Loading thread data ...

"Andreas Lademann" schrieb im Newsbeitrag news:cdbbit$neg$01$ snipped-for-privacy@news.t-online.com...

...

Das kann man so machen. Ich bin selber gerade dabei, eine Schrittmotorsteuerung mit 89C51 und 3 Stück L239 zu realisieren. Momentan überlege ich noch, wie ich die gleichzeitige Ansteuerung von 3 Motoren so realisiere, dass sich die drei Motoren auf einer Geraden zur Zielposition bewegen.

Ich habe eine Timer-Routine, in der nachgesehen wird, ob die aktuelle X- Y- oder Z- Position mit einer Sollposition übereinstimmt. Wenn das nicht der Fall ist, machen die Motore entweder einen Schritt vor oder zurück.

Gruß

Stefan

Reply to
Stefan Broering

Das klingt doch schon mal gut. Bei mir müsste das erstmal garnicht gleichzeitig funktionieren. Erst X, dann Y, dann Z wäre ausreichend.

Hast Du vielleicht noch weitere Infos darüber? Kenn mich da nicht so gut aus. Wo wird den der MC an meiner Steuerkarte angeschlossen. Nehm ich da den Parallelport der normal in den PC geht und schalte ein paar PINs davon auf Eingänge vom MC?

Reply to
Andreas Lademann

Nein, es gibt genügend MCs mit serieller Schnittstelle, z.B. der uralte

8031. Dazu brauchst du noch einen MAX232 um den V24 Pegel zu erzeugen. Die Steuerung geht dann über die serielle Schnittstelle. Solange es die noch gibt, kannst du dann mit einem einfachen Terminalprogramm, z.B. Hyperterminal, mit dem MC kommunizieren.

Wegen der Ansteuerung des Motors google doch mal nach L239.

Gruß

Stefan

Reply to
Stefan Broering

Ich meinte ja nur, da die Schrittmotorkarte schon fertig ist und einen Parallelport-Anschluss hat, dass es sinnvoll ist diesen auch zu verwenden. Ich will ja keine neue Schrittmotorkarte mit MC bauen sonden den MC an die vorhandene Schrittmotorkarte anschließen. Der PC schickt doch auch bestimmte Signale über den Parallelport an die Karte, so dass sich dann der Motor bewegt. Diese Signale soll jetzt der MC schicken, wenn er vom PC dazu die Aufforderung kriegt. Nicht gut?

Wird gemacht.

Gruß Andreas

Reply to
Andreas Lademann

Ich hab soetwas einmal auf einem ähnlich schwachen system zweidimensional gemacht. Ich hab das durch addieren und vergleich gelöst, weil ich für Mul/Div nicht genug Rechenpower hatte.

Zuerst hab ich die Achse mit der grössten Differenz gesucht. Diese strecke ist dann A. Die kleinere strecke ist B. Die Achsen und die Richtung mußt du ja nur einmal berechnen.

Jetzt kannst du einen Timer laufenlassen und dan regelmassig folgendes machen:

If(count_a_steps) { calc_b=calc_b+B; if(calc_a>A) { calc_b=calc_b-a; step(B); } calc_c=calc_c+C; if(calc_>A) { calc_c=calc_c-c; step(C); } step(A); count_a_steps--; }

Wenn du das ganze mit "oversampling" machst, also nur bei jeden 4. bis 16. step(x) wirklich einen Schritt machst wirkt das ganze relativ elegant.

Die calc_x werte müssen initialisiert werden. Um Rundungsfehler zu vermeiden sollte immer eine Istposition mitgeführt werden die als ausgangspunkt für das nächste Ziel verwendet wird.

--
MFG Gernot
Reply to
Gernot Fink

nicht

machen:

prima, werd ich mir mal ansehen, genau das suche ich noch, bzw. versuche ich gerade selber auf möglichst simplem Weg zu realisieren

Gruß

Stefan

Reply to
Stefan Broering

Doch klar, genau so kann man das machen. Ich hatte dich offenbar falsch verstanden.

Gruß

Stefan

Reply to
Stefan Broering

Sehr schön. Wie du schon merkst kenn ich mich nicht besonders aus. Gibts dafür Literatur oder kannst du Tipps geben? Welche MC ist geeignet? Was brauch ich um einen Parallelport ansprechen zu können?

Danke für Deine Hilfe. Gruß Andreas

Reply to
Andreas Lademann

Hier ist was falsch: if(calc_b>A)

Hier auch: if(calc_c>A)

--
MFG Gernot
Reply to
Gernot Fink

Hallo Gernot!

Das Verfahren ist auch als "Bresenham-Algorithmus" bekannt. Gibt es für Geraden und Kreissegmente. Details siehe Google...

Gruß Thorsten

--
Kunst kommt aber von 'können',
nicht von 'kennst du schon den neuesten trick?'
   Gunther in oecher.computer zum Thema "Gutes Webdesign"
Reply to
Thorsten Ostermann

Hallo Andreas!

Ja. Bzw. es ist wird schwierig, eine gleichförmige Bewegung zu erzeugen, was sich auch im Bearbeitungsergebnis niederschlägt. Je nach dem, wie schnell deine Maschine ist, muß der PC Taktraten bis zu 20 kHz erzeugen. Das ist auch für einen GHz-Rechner immer noch ein Problem, wenn Windows im Spiel ist.

Es gibt einzelne Programme, die unter Windows funktionieren sollen (ich hab's selbst nicht getestet). Die Performance wird aber deutlich schlechter sein als bei DOS-Lösungen. Das ist auch der Grund, warum die DOS-Programme zu NC-Steuerung von Schrittmotoren noch so verbreitet sind.

Das geht, und das gibt es auch schon. Eine Lösung heißt WinPCNC [1] und kostet mit externem Controller (keine Ahnung, was genau drinn ist) rund

900 EUR. Nach allem was ich gelesen habe, eine recht professionelle Lösung, aber für den Hobby-Einsatz etwas teuer. Ich arbeite zur Zeit an einer Lösung, die deinem Ansatz ähnelt. Allerdings werde ich statt RS232 direkt USB einsetzen. Die Lösung wird natürlich pinkompatibel zur 3D-Step ausfallen [2].

Gruß Thorsten

[1]
formatting link
[2]
formatting link
--
Kunst kommt aber von 'können',
nicht von 'kennst du schon den neuesten trick?'
   Gunther in oecher.computer zum Thema "Gutes Webdesign"
Reply to
Thorsten Ostermann

Hm, mir fällt momentan kein MC ein, der da nicht für geeignet ist. Das ist wohl mehr eine Frage, womit man die meisten Erfahrungen und wofür man die notwendigen Entwicklungswerkzeuge hat. Ich persönlich bevorzuge PIC, z.B.

16F627 oder 8031 (z.B. AT89C51). Der PIC hat den Vorteil, dass man umfangreiche Softwarepakete, d.h. eine recht ordentliche IDE mit Simulator bei Microchip kostenlos herunterladen kann. Für den 8031 hab ich einen uralten DOS-basierten Assembler und auch einen Simulator, den ich aber nicht mehr verwende.

In meinem aktuellen Projekt verwende ich einen AT89C51 zusammen mit 3 Stück L293. Dazu nur noch einen 5V Festspannungsregler, einen MAX232, Quarz, Kondensatoren und einen Widerstand.

Für den 8031, 8051 etc. gibt es massenhaft Infos im www.

Aber wie gesagt, mit AVR oder was auch immer gehts auch.

Gruß

Stefan

Reply to
Stefan Broering

Danke für den Tip, schätze mal, das ist genau das, was ich gesucht habe.

Gruß

Stefan Bröring

Reply to
Stefan Broering

Andreas Lademann schrieb:

Wie schon erwähnt wird gerne immernoch DOS für sowas eingesetzt. Es gab dereinst etliche Selbstbauplotterprojekte wo du schauen kannst, z.B. der Mondrian von der Elektor. Ein alter PC für lau führt möglichersweise schneller zum Ziel als eine Mikrokontrollerlösung.

Unter Linux bzw. dessen Realtimevariante gibt es z.B. das EMC Projekt, deutschsprachige Seite dazu:

formatting link

Verwende Standards, z.B. G-Code (Din??)

Reply to
Uwe Bredemeier

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.