Forum: Mikrocontroller und Digitale Elektronik 3-Achs Schrittmotorsteuerung mit Trinamic TMC260 und AVR


von Steffen H. (avrsteffen)



Lesenswert?

Hallo

Ja,ja ich weiß. Schon wieder ne Schrittmotorsteuerung. Aber, was haltet 
ihr von einer 3-Achs Schrittmotorsteuerung auf Basis der neuen Treiber 
von Trinamic TMC260 ?

Diese Treiber können via SPI parametrisiert werden und über 
Takt/Richtung gesteuert werden.

Vorteile:
- die Treiber übernehmen vollständig den Chopperbetrieb der Spulen
- Fast/Slow/Mixed Decay
- Stall Guard Technologie für Referenzfahrt/Schrittfehler Erkennung
- integrierte Mosfets / kein Kühlkörper erforderlich (cool Step)

Nachteile
- nur max 1,7A Phasenstrom möglich
- ???

Ich hab mir gedacht, ein AVR mega32 - mega 644 könnte doch da als 
Positionscontroller herhalten. Diese muss dann die Anfahr-/Bremsrampen 
erzeugen und übernimmt auch gleich die Interpolation von 2 bzw 3 Achsen.

Jetzt bitte nicht gleich lachen und abwinken. Ich hab hier einen 
ATtiny2313 der sowas macht! Leider sind hier die veralteten einer 
Heizung ähnelnden L298 als Treiber drauf. Gechoppert wird in Hardware 
mit Komeratoren. Leider nicht so Optimal!

Deswegen ein neuer Ansatz. Außerdem hab ich noch seriellen Speicher 
vorgesehen falls man doch noch das ganze als Standalone Version haben 
will.

Was meint Ihr? Will jemand mit aufspringen?


Gruß Steffen

von Jakov K. (jackenkoffer)


Lesenswert?

Servus !
Entschuldige, wenn ich das so dreißt ausdrücke:
was ist den deine Frage ?

oder brauchst du eine Bestätigung von jemandem , dass es funktioniert ?
und: was meinst du mit "mit aufspringen" ?


Gruß,
Jakov

von Steffen H. (avrsteffen)


Lesenswert?

Jakov K. schrieb:
> Servus !
> Entschuldige, wenn ich das so dreißt ausdrücke:
> was ist den deine Frage ?
>
Okay, ich hab mir den Eröffnungs-Beitrag gerade nochmal durchgelesen. 
Die Frage ist wirklich schlecht gestellt.

Also nochmal:
Was haltet Ihr von meinem Vorhaben, diese Treiber (TMC 260) für eine 
3-Achs Schrittmotorsteuerung zu verwenden?

UND

Was haltet Ihr davon, einen ATmega32 - ATmega644 als Positionscontroller 
für die 3 Achsen zu verwenden.



> oder brauchst du eine Bestätigung von jemandem , dass es funktioniert ?
> und: was meinst du mit "mit aufspringen" ?
>



Will jemand mit aufspringen? -> soll heißen:
Ich hab jetzt eine Leiterplatte entworfen die ich fertigen lassen würde. 
Vielleicht hat jemand ja auch Intresse, an solch einer 3-Achs-Steuerung 
auf TMC 260er Basis?

Allerdings existiert für den AVR noch keinerlei Firmware.


Gruß Steffen

von Michael N. (much)


Lesenswert?

Steffen H. schrieb:
> Hallo
> was haltet
> ihr von einer 3-Achs Schrittmotorsteuerung auf Basis der neuen Treiber
> von Trinamic TMC260 ?

ich hatte voreiniger Zeit mal mit Treibern von Trinamic zu tun. Leider 
weiß ich mehr um welches Modell es sich damals gehandelt hat. Jedenfalls 
haben mich die Treiber damals vollkommen überzeugt. Auch wenn ich die 
TMC260 jetzt nicht wirklich kenne bin ich der Meinung, dass die Trinamic 
Treiber ein gute Wahl sind.

> Ich hab mir gedacht, ein AVR mega32 - mega 644 könnte doch da als
> Positionscontroller herhalten. Diese muss dann die Anfahr-/Bremsrampen
> erzeugen und übernimmt auch gleich die Interpolation von 2 bzw 3 Achsen.
>
> Jetzt bitte nicht gleich lachen und abwinken. Ich hab hier einen
> ATtiny2313 der sowas macht!

Das klingt ja interessant. Wie ist das den gelöst (die Trajektorie meine 
ich)? Ich bastle nämlich gerade an einer Steuerung (Atmega644) die drei 
L297/L298 Kombinationen ansteuert (waren halt noch in der Bastelkiste). 
Hast du die Beschleunigungs-/Bremsrampen mithilfe der Timer realisiert? 
Und wen ja jeweils ein Timer pro Motor?

lg much

von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

Michael N. schrieb:
> Das klingt ja interessant. Wie ist das den gelöst (die Trajektorie meine
> ich)? Ich bastle nämlich gerade an einer Steuerung (Atmega644) die drei
> L297/L298 Kombinationen ansteuert (waren halt noch in der Bastelkiste).
> Hast du die Beschleunigungs-/Bremsrampen mithilfe der Timer realisiert?
> Und wen ja jeweils ein Timer pro Motor?

Ich habe nur nachgebaut und die Firmware etwas abgeändert. Ur-Firmware 
selbst hat jemand anderes geschrieben. Die Ansteuerung von 4 
Schrittmotoren inclusive Beschleunigungs-/Bremsrampen und bis zu 3-Achs 
Interpolation übernimmt hier ein ATtiny2313 ! Ja genau ! Mit nur 2K 
Flash und 128Bit SRAM !

Respekt vor diesem hochoptimierten Assembler Code von 
Karl-Heinz-Schweikert.

Ich blick da immer noch nicht richtig durch, wie er die Interpolation 
gebaut hat. Jedenfalls hat es Funktioniert. Alle 3 Motoren kamen zur 
selben Zeit am Ziel an. Und das selbst wenn man während der aktuellen 
Bewegung eine neue Ziehlposition für einen Motor eingegeben hat. Sofort 
wurde der Master zur Interpolation neu berechnet und die Slaves neu 
gesetzt.

Das ganze lief dann noch im Mikrostep Betrieb.

Hier mal die dazugehörige Seite:
http://www.s-line.de/homepages/schweikert/SMCtrl/smctrldocu.htm

Ich habe mir die 4-Achs Multiplex-Version gebaut.


Gruß Steffen

von Michael N. (much)


Lesenswert?

Hey, danke für den Link. Habs jetzt mal kurz überflogen. Sieht sehr 
interessant aus.

lg much

von AVRsteffen (Gast)


Lesenswert?

Hallo Leute,

So wenig Interesse an solch einer Schrittmotorsteuerung hätt ich jetzt 
nicht erwartet. Naja, hab mir gestern jedenfalls schon mal den 
Prototypen geätzt und werd ihn heute Abend anfangen zu bestücken. 348 
Durchkontaktierungen, wird wohl bis in den Morgen dauern.

Gruß Steffen

von oe6jwf (Gast)


Angehängte Dateien:

Lesenswert?

So die Antwort auf deinen Post passt hier besser rein als im 
Mechanik-Forum :)

Die TMC-Controller lesen sich nicht schlecht, aber ich will LinuxCNC als 
Steuerung, da mir der komplette Selbstbau zu zeitintensiv ist. Damit ist 
für mich das SPI-Interface uninteressant.

Mit einem China-Board hab ich schon spekuliert, aber wenn man die ganzen 
Threads durchliest, ist da auch nicht allzuwenig Arbeit noch zu tun, 
damit die dinger auch so funktionieren wie sie sollten.

Mir geht es vor allem darum, ein qualitativ hochwertiges Treiberboard 
für vernünftiges Geld zu designen.

Der Linear-Typ aus dem anderen Thread und der TMC sind mir zu teuer... 
der TB6560 wäre Ok, ein DRV8811 oder A3977SLPTR kann ich mir auch 
vorstellen... da werd' ich noch etwas herumsuchen...

Aber ich hab da noch Zeit... ;)

73

von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

Hallo oe6jwf

Genau so wie du planst hab ich meine L298 auf der Platine befestigt. 
Sind ja Power-SMD's. Deswegen hab ich ja auch die Freifräsungen in der 
Platine unter den L298'ern. Kühlblech hab ich dann dementsprechend 
gefräst, dass es an den ensprechenden Stellen durch die Leiterplatte bis 
an die Kühlflächen der Power-SMD-L298 ragte. Dann noch mit Bügel über 
den Treibern mit dem Kühlkörper befestigt, fertig war ich.

Steffen

von Steffen H. (avrsteffen)


Lesenswert?

oe6jwf schrieb:
> Die TMC-Controller lesen sich nicht schlecht, aber ich will LinuxCNC als
> Steuerung, da mir der komplette Selbstbau zu zeitintensiv ist. Damit ist
> für mich das SPI-Interface uninteressant.

Naja, die TMC26x Treiberfamilie lassen sich nach der 
Initialisierung/Parametrierung auch mit dem Clock/Dir Interface 
ansteuern.

von Hans (Gast)


Lesenswert?


von TF (Gast)


Lesenswert?

Hallo,
Dein Layout solltest Du noch einmal überarbeiten:
Ich würde die Treiber um 180° drehen, dann kannst Du die Masse der 
Sensewiderstände und der Elkos direkt auf Top verbinden und die 
Versorgung auf Bottom am Rand des PCBs als Plane ausführen. Die 
derzeitige Ausführung der Versorgung schränkt die Wirkung der Elkos 
C11,C22,C33 durch die schmalen und langen Leiterbahnen stark ein.
Den Schaltregler solltest Du auch neu platzieren und zwar so das GND von 
C45, C46 und D4 direkt und kurz durch eine Plane  auf Top verbunden sind 
um optimale EMV zu erhalten.
Gruß

von Steffen H. (avrsteffen)


Angehängte Dateien:

Lesenswert?

Hallo,
TF (Gast) schrieb:
>Dein Layout solltest Du noch einmal überarbeiten:
Das werde ich machen. Die Treiber werden schon etwas warm (bei 30V/0,8A 
Phasenstromlimit). Da hab ich bei dem TMC Treiber an den 
Motoranschlüssen doch glatt die Kühlfahne im Layout vergessen!

Aber.. es gibt Neuigkeiten

Auf dem Board läuft seit ein paar Tagen ein angepasster 
G-Code-Interpreter Namens "grbl". Grbl ist von Simen Svale Skogsrud 
entwickelt worden und steht unter der GNU General Public License 
[http://www.gnu.org/licenses/quick-guide-gplv3.html].
Quelle:
http://dank.bengler.no/-/page/show/5470_grbl

Was schon alles implentiert ist:
- G-Code Interpreter für einige RS274/ngc Standard-Befehle
- einen Bewegungs-Abblauf-Planer der bis zu 18 Sets im Voraus plant
- Beschleuniguns-/Bremsrampen Management
- mit einer jitterfreien bis zu 30kHz schnellen Step/Dir Rate

G-Code-Befehle:
G0                Geradeninterpolation im Eilgang
G1                Geradeninterpolation mit Vorschub [F xxxx]
G2                Kreisinterpolation Bogen links (im Urzeigersinn)
G3                Kreisinterpolation Bogen rechts (gegen Urzeigersinn)
G4                Verweihlzeit mit Parameter P xxxx
G17               Ebnenauswahl [X | Y | Z]
G18               Ebnenauswahl [X | Z | Y]
G19               Ebnenauswahl [Y | Z | X]
G20               Maßangaben in inch
G21               Maßangaben in mm
G28/G30           Referenzfahrt zu den Limits, erst in Z, dann in X/Y
G53               absoluten Nullpunkt setzen
G80               Bohrzyklus aufheben/Bewegung anhalten
G90               absolute Maßangabe
G91               inkrementale Maßangabe
G93               Vorschub in 1/min
G94               Vorschub in mm/min oder inch/min

M0/M1/M2/M30/M60  Programm Stop/Pause/Ende
M3                Spindel Start / im Urzeigersinn
M4                Spindel Start / gegen Urzeigersinn
M5                Spindel Stop

T xxxx            Werkzeigauswahl (wird zwar erkannt, bewirkt aber 
nichts)
F xxxx            Vorschub
P xxxx            Pausenzeit
S xxxx            Spindeldrehzahl (wird zwar erkannt, bewirkt aber 
nichts)

I xxxx.xxx        bei G2/G3 Bogenzentrum in X
J xxxx.xxx        bei G2/G3 Bogenzentrum in Y
K xxxx.xxx        bei G2/G3 Bogenzentrum in Z
R xxxx.xxx        bei G2/G3 Radius
X xxxx.xxx        Koordinate X-Axis
Y xxxx.xxx        Koordinate Y-Axis
Z xxxx.xxx        Koordinate Z-Axis

Die serielle Schnittstelle habe ich mit der Hardware (CTS) Flow-Control 
ausgestattet, damit man den G-Code mit einem Terminalprogramm bequem an 
das Board senden kann.

Hier gibt es auch ein kleines Video (leider schlechte Quali)
http://www.youtube.com/watch?v=qvTnohhg8GQ&feature=plcp
http://www.youtube.com/watch?v=kbjn9jjbg2w&feature=plcp
http://www.youtube.com/watch?v=UPoO3jW2jNM&feature=plcp

TODO:
Motorparameter bei der Initialisierung aus dem EEPROM über SPI an die 
Treiber senden, Positionsausgabe über Schnittstelle (RS232 oder SPI), 
Spindeldrehzahl mit PWM



Gruß Steffen

von Andreas (Gast)


Lesenswert?

Hallo Steffen

Wie weit bist Du mit Deinem Controller ?

Hätte Interesse daran, würde eine Null Serie mit prof gefertigten Print 
machen lassen wenn Du Intersse daran hast.

Gib mir mal Antwort bzw Tel Nummer.

Kannst mich erreichen unter +43 664 1500174

email: apo@csie-data.com

Liebe Grüße
Andreas

von Steffen H. (avrsteffen)


Lesenswert?

Der Tread ist umgezogen:
Beitrag "G-Code-Interpreter und µStep-Controller mit ATmega644"

Da gibt es auch ein neues Layout mit mehr Kühlflächen für die TMC 
Treiber. Ubrigens sollte die Kombination aus TMC261 und LM2591/LM2691 
das ganze auf 60V aufbohren lassen.

Gruß Steffen


Edit: Ich hab selber noch 2 industriell gefertigte Leiterplatten 
rumliegen. Aber danke für das Angebot.

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.