PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : µStep Schrittmotorsteuerung



Viktor
23.11.2006, 18:52
Hallo liebe Kollegen!

Da die Microschrittsteuerung für bipolare Schrittmotoren heute so aktuell wie noch nie ist, habe ich mir gedacht eigene Schrittmotorenkarte zu bauen.
Deshalb auch eine Frage.

Ich möchte für die Ansteuerung eine Kombination aus einem L6506 und zwei L6203. An die Referenzspannungseingänge von L6506 wird ein 2xDAC 'gehängt', der von einem ATmega8 angesteuert wird.

1. Wie genau muss der DAC sein? (INL 1, 0,5 oder 0,1 LSB)
2. Auflösung des DACs? (8,10,12 Bit)
3. Inteface? (I²C oder SPI)

Ich habe mir schon einige DACs z.B.: MAX519 und MAX515 angeschaut.
Könnt ihr mir einen DAC emfehlen?
Am liebsten wär mir jedoch 2xDAC in einem Gehäuse wie MAX519.
Dieser DAC sollte natürlich leicht erhältlich sein. :)
Ich habe auch bereits mir die anderen Beiträge zu diesem Thema angeschaut.

eines noch, ich weiß leider noch nicht wie lange das dauern wird bis ich die Arbeit abgeschlossen hab (da ich leider nicht so viel Zeit habe), aber ich werde versuchen schnellst möglich über alles zu berichten.

Besten Dank im Voraus!

Manf
23.11.2006, 21:16
Welche Anforderungen hast Du denn an die Motorbewegung?
Hohe Auflösung?
Vibrationsfreiheit?
Manfred

MrNiemand
23.11.2006, 21:29
hm, wäre ein TMC249 oder so von Trinamic nicht etwas einfacher? Der kann das schon recht gut

Viktor
23.11.2006, 21:57
Hallo Manfred,
ich möchte diese Ansteuerung für meinen CNC-Plotter benutzen.
Ich habe mir diesen Beitrag hier gelesen:
https://roboternetz.de/phpBB2/viewtopic.php?t=15071
dort hat ein user erwähn das er nur 6 Bit PWM vom ATmega benutzt hat.
Ich habe gedacht µstep nur für langsame geschwindigkeiten zu verwenden und mit schteigender Eingansfrequenz am ATmega immer einen Gang hoch zu schalten, Eilfahrt zum Beipiel.

Über die Programierung habe ich mir bisher noch wenig Gedanken gemacht, ich habe bis jetzt mit Bascom programiert aber ich werde mich dann gleichzeitig in AVR-GCC einarbeiten (bin gerade dabei).
Könntest Du mich bei der umsetzung ein bisschen unter die Arme greifen?
Ich meine keinen fertigen code, aber vlt die vorgehensweise, oder besser die Reihenfolge.

Manf
23.11.2006, 22:09
Man sollte die Auflösbarkeit nicht überschätzen. In Richtung Vibrationsfreiheit geht sicher imer noch ein bisschen mehr, aber in Bezug auf Positions-Auflösung sind 4-5 Bit bei weitem ausreichend für die Präzision die der Motor dann auch liefern soll.
Bei 200 Schritten pro Umdrehung eine Steigerung um 20 also auf 4000 Schritte ist wohl etwa die Grenze für die Präzision des Drehwinkels (noch abgesehen von der Belastung).
Bei der Steigung einer Spindel von 2mm wäre das dann ein halber µm.
Wo soll es hin gehen, kommen 8-12 Bit überhaupt in Frage?
Manfred

Viktor
23.11.2006, 22:52
Ich habe Schrittmotoren mit einer Auflösung von 1,8°, also 200 Vollchritte pro Umdrehung mit einer Spindel mit 3mm/U Steigung.

Ich meine von der Auflösung würde ja dann MAX519 wohl reichen oder?

Spielt in diesem Fall auch die genauigkeit (1, 0.5, 0.1 LSB) des DACs eine sehr große Rolle?

Wie ist es mit dem Interface, würde da I²C mit 400kbps, wenn ich den Hardware TWI benutze, ausreichen?

@MrNiemand
Ich habe mir die TMC-Reihe schon angeschaut, aber ich weiß nicht wie ich dann in meinem fall 2-3 Motoren synchronisieren soll?(Interpolation)

Ruppi
24.11.2006, 18:39
hallo viktor!
die sache mit der 6bit-pwm-mikroschrittsteuerung war damals von mir. bei 6 bit kannst du ohne großen fehler den idealen sinus nachbilden und kommst auf 16-fachen mikroschritt. die 6 bit habe ich deshalb verwendet, um eine möglichst hohe pwm-frequenz zu erreichen. das ist von großer bedeutung, wenn man schnell wechselnde signalformen nachbilden möchte.
zwei dac's sind sicher besser als pwm, zumindest hast du dann zwei vernünftige referenz-spannungen für den l6506. ich würde dir dann einen 8-bit dac empfehlen, auf jeden fall aber mit einem schnellen interface! i2c scheidet demnach aus! selbst bei 400kbps wirds sicher nicht reichen, aber es kommt natürlich nur darauf an, wie schnell dein plotter sein soll. du musst immerhin mindestens 8 datenbits, start- und stoppbits übertragen. das ist nicht wenig... bei mikroschrittbetrieb mit hoher auflösung kommt man schnell an 30khz ansteuerfrequenz und mehr.
bei einem 8-bit dac musst du dir auch keine gedanken um die genauigkeit machen - was ist schon 1 lsb bei 8-bit??

weiterhin viel erfolg! ruppi

Viktor
24.11.2006, 21:26
Guten Abend!

Danke für deine Antwort Ruppi!

Sagen wir, ich will mit einer Schnitt geschwindigkeit von 300m/min Arbeiten das müssten dann 18mm/s, es sind dann mit meiner Spindel(Steigung 3mm/U) 6 volle Umdrehungen des Motors (200Steps/U) => 1200Steps.
Ist es so richtig? Wie viel µSteps (/ Frequenz) wären es denn in diesem Fall?

Könntest Du mir evtl. einen x2 DAC empfehlen?
MAX515 ist ein 1x DAC und mit 10Bits, aber ich schaue mich noch gleich bei MAXIM um.

Viktor
24.11.2006, 23:32
Ich denke, ich habe jetzt einen passenden DAC gefunden!
MAX522, Dual 8-Bit DAC mit 3-Wire SPI Interface @5MHz(max)

Es gibt so viele DACs auf der Seite vlt. könnt ihr mir sagen ob es noch einen besseren gibt, oder reicht dieser schon aus?

Hier ist der Link (http://www.maxim-ic.com/pl_list.cfm/filter/4/sort/2)zur Auswahl aller DACs von Dallas&Maxim Semiconductor.

KHS
26.11.2006, 17:18
Hallo Viktor,

ich bin zufällig auf dieses Forum gestoßen und habe mich gleich mal angemeldet :-). Erst mal halloooo an alle!

Vor längerem habe ich mal so eine schnelle Mikroschrittsteuerung für ein Teleskop (bis zu 4 Motoren, RS232 Steuerung) auf Basis des Atmel 2313 erstellt, vielleicht hilfts dir weiter:
http://www.s-line.de/homepages/schweikert/SMCtrl/smctrldocu.htm

Gesteuerte Grüße
Karl-Heinz

Viktor
26.11.2006, 18:22
Hallo Karl-Heinz!

Ich bin schon vor einiger Zeit auf deine Seite aufmerksam geworden. Ich bin von deinem Projekt echt angetan. :)

ich möchte die ganze Steuerung ein wenig unterteilen, d.h. ich möchte mit dem ATmega8 nur Takt, Richtung und einige andere digitale Signale auswerten und die Endstufe ansteuern.

Die Steuerung der Schrittmotorenkarten wird eine andere Karte, CNC-Controller, übernehmen, die die Motren synchronisiert und Takt-Richtungssignale erzeugt.

Aber an die Entwiklung des Controllers werde ich mich erst später setzen, nach dem die erste µStep-Karte fertig geworden ist! :)

Ruppi
26.11.2006, 19:44
hallo,
bei reichelt gibt es noch den max 549, das ist auch ein zweifach dac mit einem schnellen interface und 8 bit auflösung. er hat auch einen puffer, sodass du in einem rutsch die spannungen an die ausgänge legen kannst. ich habe mir genau das gebastelt, was du vor hast. drei einzelne schrittmotorkarten und einen usb-controller mit passender fräs-software. ich denke mal, der controller könnte dich (später) interessieren. er berechnet die interpolation der drei achsen, generiert die rampen und steuert relais für die frässpindel und den staubsauger (ok, das brauchst du für deinen plotter nicht unbedingt...). ist alles nicht so professionell wie bei karl heinz, aber es funktioniert.
halt uns mal auf dem laufenden mit deinem projekt, ist sehr interessant!

ruppi

Viktor
26.11.2006, 23:04
Hallo Ruppi!

usb-controller mit passender fräs-software. ich denke mal, der controller könnte dich (später) interessieren. er berechnet die interpolation der drei achsen, generiert die rampen und steuert relais für die frässpindel und den staubsauger (ok, das brauchst du für deinen plotter nicht unbedingt...)
ruppi
In der Tat, dein controller würd mich sehr interessieren! :)
Was ich baue/bzw. schon aufgebaut habe ist nicht wirklich ein Plotter sondern eine CNC-Fräse. Mir fehlen nur noch zwei Frästeile um sie zusammen bauen zu können, aber dazu später mehr!

Das Datenblatt zu MAX549 hab ich mir bereit herutergeladen und gleich überflogen. Danke für deine Recherche!

Ruppi
27.11.2006, 00:20
hi viktor!
ich wollte letztens selber eine mikroschrittkarte mit dem besagten max549 aufbauen, bin aber beim löten gescheitert (das gehäuse ist mal echt brutal klein!). nach wie vor läuft das ganze daher mit pwm...
an dem controller habe ich lange gefummelt, denn im netz hatte ich nichts über 3-achsen interpolation gefunden, zumindest nichts schnelles auf integerbasis. es gibt zwar den bekannten bresenham-algo, aber man muss ihn eben auf drei achsen erweitern, womit ich mich anfangs probleme hatte. was für dich vielleicht noch von interesse sein könnte, ist, dass es in bascom programmiert ist, womit du dich ja scheinbar auskennst.
vielleicht ist ja sogar die windows-software interessant für dich. der entsprechende treiber ließe sich ja anpassen, je nachdem, wie und was du vor hast.

ruppi

Viktor
27.11.2006, 17:16
Hi Ruppi!
Wegen dem MAX549, da hast du recht, das Gehäuse bei diesem IC ist nicht unbedingt üblich , µMax-Standart ist um einiges kleiner (50%!)als normale SO-Gehäusetypen! :cheesy:

Hast Du die Software für Win selber gesschrieben? Ich habe es eigentlich auch vor, in VB.Net 2005!
Wegen dem Controller das möcht ich mit Dir gerne etwas genauer besprechen, aber wie gesagt, erst später.

Ich schau mal wo ich die MAX549 in DIP Gehäuse her kriege. Ich sag Dir nacheher bescheid!
Noch eine Frage hätte ich noch an Dich Ruppi, hättest Du vlt. ein Paar Fotos von der Elektronik für mich?

Ruppi
27.11.2006, 18:07
klar kann ich fotos machen, vom controller oder von der µ-schrittkarte? momentan habe ich keine digi-cam, aber ich habe mal ein bild von sprint-layout gemacht und angehängt, dort kann man alles erkennen! Falls du den max549 im dip gehäuse bekommst, würde mich interessieren, woher! ich bestelle eigentlich ausschließlich bei reichelt, habe dort aber keinen passenden dac im dip-gehäuse gefunden.

ruppi

Viktor
27.11.2006, 18:24
hallo! Ich habe welche gefunden dort gibt es beides!
Ich bestelle eigentlich auch gerne bei Reichelt. Letztens habe ich Teile im Wert von ca. 260 € für die Netzteilplatine (hab jetzt eigentlich auch schon fertig!), Schrittmotorenkarten und Paar andere Sachen für meine Fräse bestellt! :)
Ach ja, die Wandler gibt es übrigens bei Kessler-Elektronik, also hier (http://www3.kessler-electronic.de)!

Ruppi
27.11.2006, 19:14
oh man, du steigst ja gleich in die vollen... was hast dir denn für eine netzteilplatine gebaut? welche spannung(en) liefert sie? danke übrigens für den link! kannte kessler, habe aber nie dort bestellt.
Übrigens, die software ist bis auf ein paar dll's in visual-basic geschrieben. sie enthält ein 3d-modell meiner fräse, man kann die fräskontur auf dem maschinentisch genau sehen und rotieren. ich habe zwei bilder eingefügt, dort kann man es zumindest ein bißchen sehen. in vb.net ist es ziemlich ähnlich, allzugroß sind die unterschiede nicht. aber trotzdem - da hast du dir ein projekt für ein ganzes jahr vorgenommen, egal wieviel hilfe du bekommen wirst! alleine die entwicklung meiner software hat mich 2 jahre gekostet. es kommt eben darauf an, welchen aufwand man betreiben möchte.

ruppi

Viktor
27.11.2006, 19:46
Die Software sieht echt geils aus!!!
Es ist mir durch aus bewusst, dass es eventuell etwas mehr Zeit in Anspruch nehmen wird. :) Es ist aber auch zugleich interessant so etwas zu erschaffen!

Für die Netzteilpaltine muss ich noch die Platine ätzen, aber für einen Abgleich und Funktionstest habe ich sie auf Steckbrett und Rasterplatinen aufgebaut.

Geätzte Platine wird 100x160 groß sein.
Eingang 2x 12VAC 6,63A in Reihe geschalten > 24VAC 6,63A (Ringkerntrafo)
Ausgänge:
1x ca. 34VDC (unbelastet) ungeregelt nur geglättet mit 14000µF
1x 12VDC 1A geregelt
1x 5VDC 1A geregelt

Bevor ich mit der Platine anfangen konnte, habe ich zuerst alle möglichen Seiten durchforstet, wegen Stabilisierung, Einschaltstrombegrenzug etc.
Die Bschaltung für einen sehr guten Schaltregler (LM2575-12V/ -5V) gibt es in dem Datenblatt.

Zur Funktion:
Nach dem Einschalten, wird mit einer kleinen Verzögerung erstes Relais eingeschaltet und lädt 3 Elkos(á 4700µF) auf, dabei wird gleichzeitig die Spannung gemessen. Sobald die Elkos geladen sind und die Spannung den Maximalwert erreicht hat, wird der Widerstand von dem zweitem Relais gebrückt und das erste Relais wird abgeschaltet.

Ruppi
27.11.2006, 21:04
schönes netzteil! könntest du den schaltplan posten? das könnte ich auch gebrauchen! was bezwecken die beiden relais und der 5w widerstand? ich nehme mal an, der widerstand dient zum entladen der kondensatoren im ausgeschalteten zustand, oder?

Ruppi
28.11.2006, 09:20
ups!! der schaltplan ist ja da...
wenn du möchtest, kann ich dir ein layout von der schrittmotorkarte mit dem max549 geben. es sei denn, du willst es selber anfertigen...

ruppi

Ruppi
28.11.2006, 09:54
hmm, bist du dir mit den relais sicher? normalerweise musst du doch nur dafür sorgen, dass die elkos beim einschalten entladen sind. ich habe in meinem netzteil daher nur ein relais, welches beim einschalten öffnet. sobald man das netzteil ausschaltet, werden die elkos über einen widerstand entladen.
allerdings vertragen die endstufen auch mal einen spannungssprung, kritisch ist das ja nur, wenn man die endstufe mit ca 40V betreiben möchte. bei deiner ausgangsspannung ist das alles kein problem, selbst wenn du das ganze weglassen würdest. so lief es bei mir anfangs auch und es hat nie probleme gemacht.

ruppi

Viktor
29.11.2006, 18:56
Hallo Ruppi!
Ich hab irgendwie ein Problem mit meinem Rechner, deshalb kann ich zur Zeit nicht viel machen. :(

Ich könnte natürlich den 5W Widerstand paralell zum Relais anschließen und den einfach mit einer bestimmten Zeitverzögerung brücken. Aber ich will, dass die Endstufen beim einschalten komplett von der Stromversorgung getrennt sind. Denn laut Datenlatt (wenn ich mich nicht irre) liegt die maximale Spannung, die die L6203'er vertragen können bei 34V!
Beim einschalten meines 'winzigen' (hat nur 160VA) RKTs entstehen Spannungsspitzen, die diese Grenze deutlich übersteigen können(!), so würden die L6203er sofort beim Einschalten geröstet, oder nicht?
Korrigiert mich bitte, wenn ich da falsch liege.

Normalerweise ist es auch üblich in die Primärseite einen NTC mit einem zu ihm paralell angeschlossenem Relais, vorzuschalten, der den Einschaltstrom beim Einschalten begrenzt.

Ruppi
29.11.2006, 20:13
hey!
glaube, da hast du dich vertan! der L6203 verträgt 48V, bei den maximum ratings steht sogar, dass er 52V vertragen würde, da bist du weit von entfernt. ich habe ja geschrieben, dass ich ihn schon länger ohne einschaltstrombegrenzung und ohne widerstand betrieben hatte, bisher alles ohne probleme.
trotzdem ist das netzteil für mich interessant, da ich noch einen ringkerntrafo habe, der etwa 42V DC liefern würde und da müsste ich dann wirklich was tun, um die endstufen nicht zu zerstören.

ruppi

Viktor
12.01.2007, 22:24
Hier bin ich wieder!

Ich habe inzwischen angefangen eine Schrittmotorenkarte in EAGLE zu zeichnen. Der Schaltplan ist noch nicht fertig.
@Ruppi
konntest du dir den Schaltplan anschauen. Hättest du vieleicht ein Paar Tipps für mich, wie hast du deine Platine gemacht?

Viktor
13.01.2007, 22:30
So, ich hab jezt noch das Layout vom Netzteil überarbeitet.
An der Seite mit viel Platz, wird ein großer gerippter Kühlkörper mit zwei M3 Schrauben festgeschraubt. Dieser Kühlkörper kühlt beide Spannungsregler und einen Darlingtontransistor.
-------------------------------------------------------------
Edit: ich habe das Layout wieder etwas überarbeitet.

Viktor
10.07.2007, 22:46
Ich hab in der Zeit wo ich nicht soviel davon hatte, ein paar Besorgungen gemacht und einiges gelernt, naja und vielleicht noch paar Sachen auf den Weg gebracht! ;) Dazu ein paar Fotos was ich bis jetzt so 'getrieben' habe! O:)

seht selbst!