Forum: Mikrocontroller und Digitale Elektronik Schrittmotorsteuerung mit AVR und Mosfets inkl. Chopping


von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

Ich habe letztens einen Thread aufgemacht in dem es um eine 
Schrittmotorsteuerung mit Trinamic-Bausteinen ging. Weil diese Bausteine 
jedoch nicht so meinen Anforderungen entsprachen, überlege ich mir nun 
eine eigene Schrittmotorsteuerung zu bauen.

Die Steuerung soll folgende Kriterien erfüllen:
- Strom bis 4A
- Spannung bis 48VDC
- Phasen-Chopping zur Stromregelung mit ca. 25kHz
- Mikroschritte (ich denke 8 oder 16 reichen)

Ich habe viel im Forum gesucht, doch die meisten Steuerungen sind mit 
den L297/L298 gemacht, welche aber keine 4A liefern können.

Ich habe mal ein Schaltplan angehängt, dieser hat aber bestimmt noch 
Fehler, denn ich bin in der Leistungselektronik nicht sehr erfahren. Für 
jeden Hinweis bin ich sehr dankbar. Insbesondere auch bei der Wahl der 
Bauteile.

Der Leistungsteil kommt auf eine separate Platine, welche Eingänge für 
5V-Signale, aber auch für echte 12V-Mosfet-Signale besitzt.

Eine Frage beschäftigt mich momentan aber ganz besonders:
Kriegt man mit einem AVR die Ansteuerung der Mosfets nach den obigen 
Kriterien hin? Also Chopping mit ca. 25kHz und Mikroschritten?
Oder ist dafür ein AVR eher zu langsam?

Schlussendlich soll man mit drei Schrittmotoren (für eine CNC-Steuerung) 
absolut synchron auf jeweils drei verschiedene Positionen fahren können. 
Also entweder muss ein einziger AVR alle drei Motoren steuern, oder drei 
AVRs müssen ihre Motoren synchron zueinander ansteuern.

Was denkt Ihr, wäre das theoretisch machbar?

Vielen Dank schonmal für eure Hilfe!

mfg
Urban

von Floh (Gast)


Lesenswert?

Was soll Q5 machen?

von Gelöscht (kami89)


Lesenswert?

Floh schrieb:
> Was soll Q5 machen?

Der ist zum Invertieren des Einganssignals falls man bereits einen 
Mosfet-Treiber an den Eingang anschliesst. Das habe ich eingeplant falls 
ich doch mal ein Trinamic-IC (TMC249) anschliessen will. Die 
Invertierschaltung dazu habe ich auch aus dessen Datenblatt entnommen.

mfg

von spess53 (Gast)


Lesenswert?

Hi

>Ich habe viel im Forum gesucht, doch die meisten Steuerungen sind mit
>den L297/L298 gemacht, welche aber keine 4A liefern können.

Seit wann ist ein Forum dafür relevant?

L6203/L6201 können z.B. 4A

MfG Spess

von Gelöscht (kami89)


Lesenswert?

spess53 schrieb:
> Hi
>
>>Ich habe viel im Forum gesucht, doch die meisten Steuerungen sind mit
>>den L297/L298 gemacht, welche aber keine 4A liefern können.
>
> Seit wann ist ein Forum dafür relevant?
>
> L6203/L6201 können z.B. 4A
>
> MfG Spess

Ach du meine Güte, da ist ja doch eine integriete H-Brücke für 4A, 
welcher in der Schweiz erhältlich ist :D

Auf der H-Brücken Übersichtsseite war ich eigentlich schonmal und hab 
geschaut was es da so gibt, aber aus unerklärlichen Gründen ist mir der 
L6203 nicht ins Auge gesprungen.

Vielen Dank an dich, Spess, dieses Bauteil scheint wohl total geeignet 
zu sein für meine Anwendung! Auch das Choppen mit 25kHz scheint damit 
kein Problem zu sein.

Also wenn ich da nicht noch irgendwelche Nachteile vom L6203 finde, 
werde ich diesen wohl verwenden.
Der L6201PS unterscheidet sich vom L6203 nur im Gehäuse oder?

Dann wäre aber immernoch die Frage, ob die Ansteuerung direkt mit einem 
AVR möglich ist, also Choppen und Mikroschritte.

Die Fertigen Ansteuerbauteile die es ja zu kaufen gibt, scheinen nur 
Halbschritte machen zu können.

Gruss
Urban

von eProfi (Gast)


Lesenswert?

Wenn überhaupt, dann mit dem PWM-AVR.
Aber bedenke, dass Du den Strom jeder Phase regeln musst.
Das würde ich kein zweites mal mehr in Software machen.

Lies Dir das mal durch:
Beitrag "L298 = total langsam?"
Beitrag "6A Schrittmotoransteuerung -alternative gesucht zu L297 & L6203"

Und schau Dir fertige Lösung wie die CSD, NDC, HGD-Serien von RTA an:
http://www.rta-deutschland.de/rta_de/PROD/PROD_STEP.HTM

Der AVR ist mit den drei synchronen Kanälen und Mini-/ Mikrostep schon 
gut ausgelastet.

von spess53 (Gast)


Lesenswert?

Hi

>Weil diese Bausteine
>jedoch nicht so meinen Anforderungen entsprachen, überlege ich mir nun
>eine eigene Schrittmotorsteuerung zu bauen.

Dem Thread entnehme ich, das du nichts praktisch getestet hast. Und das 
du die Trinamic-Entwickler übertreffen kannst, wage ich zu bezweifeln.

MfG Spess

von Gelöscht (kami89)


Lesenswert?

Hallo eProfi,

Dass der Strom geregelt werden muss, ist mir klar. Mir schwebt da etwa 
diese Vorgehensweise der Software vor (erstmal im Halbschritt):

- Wenn ein Eingang des L6203 von low auf high geschalten werden muss, 
wird einfach ein PWM-Ausgang eingeschaltet, welcher dann mit 25kHz 
taktet (Einschaltdauer erstmal egal)
- Beim Wechsel von high auf low wird der PWM-Timer einfach wieder 
deaktiviert
- Bei aktiviertem PWM wird ständig am ADC die Spannung vom Sense-R 
gemessen (Peak) und mit dem Sollwert verglichen
- Falls es Abweichungen zwischen Soll- und Istwert gibt, wird nur die 
Einschaltdauer vom PWM-Timer angepasst

Um mit drei Motoren synchron fahren zu können dachte ich übrigens auch 
an folgendes Prinzip:
- Ein Master-uC schickt Steuerbefehle an drei Slaves via I2C oder SPI.
- Der Master gibt ausserdem noch ein Taktsignal heraus (relativ schnell)
- Die Slaves führen die verlangte Bewegung nun in Abhängigkeit vom 
Taktsignal aus, was eine absolute Synchronität sicherstellt
- Beschleunigungsrampen könnten dadurch ev. sogar auf den Master 
ausgelagert werden (das Taktsignal wird schneller/langsamer), was die 
Slaves entlastet

Könnte das so funktionieren? Oder dauert das Einlesen vom ADC vielleicht 
zu lange um bei 25kHz noch gescheit regeln zu können?

mfg
Urban

von Gelöscht (kami89)


Lesenswert?

spess53 schrieb:
> Hi
>
>>Weil diese Bausteine
>>jedoch nicht so meinen Anforderungen entsprachen, überlege ich mir nun
>>eine eigene Schrittmotorsteuerung zu bauen.
>
> Dem Thread entnehme ich, das du nichts praktisch getestet hast. Und das
> du die Trinamic-Entwickler übertreffen kannst, wage ich zu bezweifeln.
>
> MfG Spess

Das Problem bei diesen Bauteilen ist eigentlich nur, dass Trinamic es 
anscheinend nicht vorgesehen hat, dass man mit drei Motoren synchron 
verfahren kann. Mit viel Herumprobieren mit Parametern usw. würde man 
vermutlich akzeptable Lösungen finden, aber ich denke das braucht sehr 
viel Zeit und am Schluss hat man doch keine 100-Prozentige saubere 
Lösung.

Herumprobiert habe ich noch nicht, eben weil ich denke dass das schlecht 
investierte Zeit ist.

Dass ich Trinamic nicht übertreffen kann ist mir natürlich klar. Die ICs 
von denen sind in sehr vielen Hinsichten praktisch nicht zu übertreffen 
und haben viele nützliche Funktionen.

Was ich an dieser Stelle noch erwähnen sollte, ist die Tatsache dass 
diese Steuerung erstmal nur ein Lernprojekt ist, das mir Spass bereiten 
und mein Wissen erweitern soll. Ich investiere also lieber 10 Mal soviel 
Zeit wie für die Trinamic-Lösung, wenn ich mit einer eigenen Steuerung 
viel Lernen kann.

Momentan bin ich mir übrigens noch am überlegen ob ich vielleicht doch 
keine Mikroschritte einplanen, sondern bei Halbschritten bleiben soll. 
Ich hatte jedoch mal mit einer Trinamic-Steuerung die Erfahrung gemacht, 
dass der Motor im Mikroschrittmodus wirklich seidensanft läuft im 
Vergleich zum Halbschrittmodus. Das war übrigens ein "Trinamic Pandrive" 
mit 3,2Nm Haltemoment.

Nachtrag:
Ein Vorteil vom Software-Choppen ist halt noch dass man dann den Strom 
einfach per Software einstellen kann. Das würde ich eben schon gerne 
machen können. Aber wenns sein muss könnte ich auch auf das 
verzichten... ;-)

von Gelöscht (kami89)


Angehängte Dateien:

Lesenswert?

So, hab mal ein Schema und das Board dazu gezeichnet, siehe Anhang.

Gibts Verbesserungsvorschläge, Kritik?
Die Leistungswiderstände sind übrigens in SMD, wie auch alle anderen 
Widerstände. Auch fast alle Kondensatoren sind in SMD, was die 
Platzierung zwischen den Beinen vom L6203 ermöglicht.

Das Board werde ich später einseitig Isolationsfräsen. Der Top-Layer 
sind Drahtbrücken.

Die Kombination von 100 Ohm und 4,7nF an den Sense-Widerständen habe ich 
aus dem Datenblatt vom TMC429 entnommen, da wird es bei einer diskreten 
Halbbrücke empfohlen, ich denke mal das kann auch beim L6203 nicht 
schaden oder?

Für die Stromregelung hatte ich übrigens auch noch eine andere Variante 
im Kopf. Man könnte jeweils die PWM-Ausgänge einfach auf logisch 1 
setzen, und dann warten bis der Strom den Sollwert erreicht. Dann sofort 
den Ausgang wieder abschalten. Und das ganze mit 25kHz.

Könnte das klappen?

Gruss
Urban

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.