Forum: Mikrocontroller und Digitale Elektronik L6506 - 10A Mikroschrittkarte - Probleme mit Strom-Regelung


von Franz K. (kaiser-f)


Lesenswert?

Hallo,

Ich habe mir für mein CNC-Projekt eine Schrittmotor-Karte gebastelt:
http://www.sir-kaiser.de/upload/IMG_8524.JPG

Zur Ausstattung:
 - Zwei N-Kanal H-Brücken aus jeweils 4 N-Kanal FETs
 - IR2104 Halbbrückentreiber für die FETs
 - ChargePump zur High-Side-Speisung bei Dauer-ON
 - L6506 zu Stromregelung
 - Zwei MAX522 (Dual Ch. 8BIT DAC)
 - OP07 Differenzverstärker, um die Sensspannung zu verstärken. Dadurch 
kann ein kleinerer Widerstand verwendet werden.
 - LM311 zur Überstrom-/Kurzschlussüberwachung (löst Interrupt aus)
 - -5V, +5V, +15V werden Onboard erzeugt
 - bis 60V Eingangsspannung
 - ATMega32
 - MAX232


Es funktioniert bisher alles, nur die Stromregelung will nicht:



Es sind zwei H-Brücken vorhanden. Der Shunt sitzt wie folgt:
http://www.sir-kaiser.de/upload/PowerStep-01.JPG

Genauer:
http://www.sir-kaiser.de/upload/IMG_8530.JPG

Die Leitungen S-A-H und S-A-L gehen zum Differenzverstärker:
http://www.sir-kaiser.de/upload/PowerStep-02.JPG

Der Ausgang des Differenzverstärkers geht nach einem kleinen
RC-Glied direkt zum L6506 Sense Eingang.

Rechts hängt noch ein Komperator, der einen Interrupt beim Atmel
auslöst, sollten 2V Überschritten werden. Hier kann ich dann die Stufe
abschalten... Aber das ist zunächst mal unwichtig!

Der L6506 ist dann wie folgt beschaltet:
http://www.sir-kaiser.de/upload/PowerStep-03.JPG

SYNC kommt vom Atmel PWM-Ausgang. Die Frequenz und die
Phase kann beliebig von mir konfiguriert werden.
H-IN-X gehen zu den jeweiligen Brücken.
IN-X kommen vom Atmel.

Die Referenzspannugnen werden wie folgt erzeugt:
http://www.sir-kaiser.de/upload/PowerStep-04.JPG

IC1 gibt den Maximalstrom vor.
IC12 soll dann das Microstepping realisieren.
Somit kann man IC12 immer gleich anstprechen,
nur IC1 ist für den Maximalstrom zuständig.


Nun, alles recht und schön, nur funktioniert es nicht richtig...

Ich habe mal REF-A unf SENSA direkt am L6506
mit meinem Oszi gemessen:
Beide Kanäle 0,5V/cm, 0,5ms/cm:

http://www.sir-kaiser.de/upload/PowerStep-05.JPG

http://www.sir-kaiser.de/upload/PowerStep-06.JPG

Die Gerade ist natürlich REF-A. Das andere SENSA. Man sieht hier zwei 
verschiedene vorgegebene Spannungen. Doch SENSA zeigt keine Änderung.
Selbst wenn REFA = 0V ist!!!

Hat jemand ne Idee was da Faul ist?
Ich hab schon überprüft, ob die Ausgänge für Kanal 1 des L6506 auch
zur richtigen H-Brücke gehen, das passt alles...

von Gast (Gast)


Lesenswert?

Ich finde nichts bei Deinen Anhängen, wie SYNC angesteuert wird. Um 
halbwegs brauchbare Mikroschritte hinzubekommen, muß das Tastverhältnis 
möglichst "ungleich" sein, so 1:50 oder 1:100.

Andernfalls kann kein kleiner Strom eingestellt werden, insbesondere 
wenn die Versorgungsspannung hoch ist.

von Franz K. (kaiser-f)


Lesenswert?

Hallo,

Vielen Dank für Deine Antwort,

SYNC wird direkt vom ATMEL angesteuert.
Dazu benutze ich den Timer 1, 16Bit Fast PWM.

Was genau meinst du mit Tastverhältnis?

Wie kann ihc das verstehen?

von Gast (Gast)


Lesenswert?

Ich schreibe mal, wie ich es noch in Erinnerung habe.

Das Signal an SYNC schaltet im aktiven Zustand die Treiber in jedem Fall 
ein, unabhängig davon, ob der Sollstrom schon erreicht ist. Nehmen wir 
hierfür 1µs an, was in etwa ein Minimum für sauberen Betrieb ist. Mit 
Tastverhältnis 1:100 meine ich, daß anschließend SYNC für 99µs inaktiv 
ist. Die SYNC-Ansteuerung wäre somit ein 10kHz Rechteck mit 
Tastverhältnis 1:100 (vom AVR).

Um hohe Drehzahlen zu erreichen verwendest Du 50V Betriebsspannung und 
vermutlich einen Motor mit Wicklungen 4V / 3A (mein geschäzter Wert) und 
entsprechend kleiner Induktivität. Da reicht schon eine 
(Zwangs-)Einschaltzeit von 1µs, um einen nennenswerten Strom fließen zu 
lassen, wenn die Wiederholfrequenz (hier 10kHz) nicht zu niedrig ist. 
Und diesen Strom kannst Du nicht kleiner bekommen - auch nicht mit Vref 
0V.

Sofern Deine Schaltung ansonsten funktioniert könntest Du probieren, die 
Versorgungsspannung deutlich zu senken (10V), um den Ruhestrom 
abzusenken. Alternativ kannst Du mit noch kleinerer Taktfrequenz 
ansteuern (1kHz mit 1:1000), was Du aber ohne Ohrenschützer wohl nicht 
lange ertragen wirst.

Probiere und berichte!

von Franz K. (kaiser-f)


Lesenswert?

Hi,

du hattest Recht!!!

Das PWM-Verhältnis war schuld!!!

Ich hab irgendwie das Datenblatt so interpretiert,
dass der L6506 immer ausschaltet,sobald der Strom
erreicht wurde... Das war falsch interpretiert!

Vielen Dank für diesen wertvollen Tipp!!!

Hier ein Kurzes Video:
http://www.sir-kaiser.de/upload/MVI_8531.AVI


Super GIEL, dann war da nur die PWM-Einstellung falsch!!!

Wenn du jetzt in meiner nähe wärst, würd ich dich küssen :-)
( Und wenn du eine Frau wärst :-) )

von Martin (Gast)


Lesenswert?

Hallo, mal ne Frage, wie hastn du das hingekriegt, dass die eine 
Wicklung nicht die andere beeinflusst? Bei mir habe ich das Problem, 
dass wenn die eine Wicklung schon abschaltet, dann kommt auf der zweiten 
Wicklung ein Peak, und der führt manchmal zu Fehlabschaltungen. Somit 
schwingt die ganze Sache, wenn die PWM Verhältnisse ca gleich sind. 
Kannst du mir vielleicht mal dein Layout schicken?
Mit einem Tiefpass kriege ich das nur teilweise in den Griff.

von Gast (Gast)


Lesenswert?

>Wenn du jetzt in meiner nähe wärst, würd ich dich küssen :-)

Das muß nicht sein, aber schick mir doch einfach Deine Visakartennummer 
:-)

von Franz K. (kaiser-f)


Lesenswert?

Hallo Leute!

ich arbeite momentan an den Feinheiten.

Ein weiteres Problem habe ich bei niedrigen Strömen.
Ich habe die karte im 1/16 Schritt mal im Sekundentakt betrieben.
Also jede Sekunde 1/16 Schritt.

Dabei beobachte ich, dass bei den unteren drei bzw. 4 teilschritten
kein strom fließt, obwohl spannung anliegt.

Ich habe im Versuch nur eine Phase betrachtet. Die andere habe ich 
abgeschlossen. Sie verhält sich genau so.

Hier könnt ihr im Video die Messung am Oszi betrachten:
http://www.sir-kaiser.de/upload/MVI_8554.AVI

Meine REF-Spannungen sind ziemlich unsauber.
Als 5V Schaltregler habe ich den LM2574 ADJ.

Trotz 1000µF Kondensator scheint die Spannung minimal zu rauschen.
Dies überträgt sich scheinbar über die DACs. Aber das
Rauschen müsste ja im verhältnis dann auch so klein sein,
wie bei den 5V. Evtl sollte ich mal andere DACs versuchen.

Die MAX522 sind eh so teuer... Ich glaube ich versuche in der nächsten 
Version die MAX549. Aber das Problem muss doch lpösbar sein, oder?

Evtl hat jemand von euch ne Idee, warum das nicht richtig will.
Ansonsten würde der motor schön ruhig laufen. Nur in diesem Bereich
mach er eben eine Vibration.

Besten Dank schon mal vorab.

Gruß,
Franz

von Franz K. (kaiser-f)


Lesenswert?

Lag an der Chopper-Frequenz. Der On-Impuls darf auch nicht zu kurz 
sein...

Jetzt muss ich nur noch Störugnen minimieren.

Noch eine Sache,

Ist der von mir gewählte Chopper-Betrieb auch der Richtige?
Oder soll ich die Karte lieber umgestalten auf Inhibit-Chopping?

Inhibit-Chopping würde verhindern, dass die Gespeicherte
magnetische Energie der Spule in form von Strom durch den Shunt
fließt... Die Energie würde dann nämlich über die Freilaufdioden
abklingen...

von Alois L. (Firma: TU München) (cnc)


Lesenswert?

Hallo Franz,

so wie ich das inhibit-chopping verstanden habe fließt der 
low-side-Strom im ausgeschalteten Zustand immer über die Diode. Der 
Unterschied liegt nur auf der anderen Seite: um einen schnelleren 
Stromabbau zu gewährleisten wird die Wicklung durch den eigentlich 
"falschen" high-side Mosfet an die Versorgungsspannung gelegt. Das Ganze 
nennt sich dann fast decay mode im Gegensatz zum Diodenfreilauf, dem 
slow decay mode.

Ich sehe gerade dass du die low side Freilaufdioden auf low side source 
legst. Die Anode könntest du auch auf GND legen, dann fließt dein 
Freilaufstrom nicht über den Shunt.

Läuft sonst schon alles? Ich plane derzeit eine sehr ähnliche 
Motorendstufe.
Gruß Alois

von Franz Kaiser (Gast)


Lesenswert?

Hallo Alois,

ich habe mittlerweile 4 oder 5 Prototypen gebaut.
Letzterer hat einigermaßen gut funktioniert...
aber so ganz zufrieden war ich damit nicht.

Und der L6506 war mir auch zu altmodisch.

Also habe ich mich dazu entschlossen, die ganze sache etwas moderner zu 
gestalten.

Es läuft im moment ein sehr sehr gut funktionierenden Versuche mit einem 
Texas DSP.

Der DSP erledigt unter anderem die Stromreelung.
Kein L6506, Kein D/A-Wandler, Einfach nur
8FETs, 2Brückentreiber und der DSP!

Das ist um welten besser als der L6506!

von Alois L. (Firma: TU München) (cnc)


Angehängte Dateien:

Lesenswert?

ah ok...
ich hab mich jetzt schon einige Zeit mit der Simulation gespielt, da die 
Stromregelung anfangs nicht ordentlich funktioniert hat. Mein Fehler war 
einfach eine RC-Entkopplung bei der Sense-Leitung einzubauen um die 
Spizenspannungen rauszufiltern.
Eine Frage zum Choppern habe ich noch:
Falls bei höheren Drehzahlen der Spulenstrom wieder abgesenkt werden 
soll wehrt sich diese etwas dagegen. Bei integrierten Controllern wird 
hier mit fast oder mixed decay dagegengearbeitet. Analog hab ich das 
noch nicht hinbekommen... Bringt das überhaupt was oder reicht der 
einfache slow decay mode?

Gruß Alois

von eProfi (Gast)


Lesenswert?

Ich betreibe meine Stepper auch mit einem DSP.
Anfangs ohne Stromregelung, ging mit einem Motor sehr gut, bei einem 
anderen Typen gab es extreme Resonanzen (mit der selben Ansteuerung).

Grund ist die Abhängigkeit der Induktivität von der Rotorposition.

Jetzt mache ich es auch mit Stromregelung.

Du musst auf jeden Fall in der fallenden Sinuswelle mit fast decay 
arbeiten, sonst bekommst Du die gespeicherte Energie nicht aus der 
Spule.

Bei höheren Schritt-Frequenzen (ab 2 - 3 kHz) schalte ich auf Fullstep, 
da der Strom sowieso ewig braucht, bis er fließt. Dann ist schon wieder 
Zeit zum Umpolen.

In der nächsten Version werde ich nicht mehr den Fet-Strom messen, 
sondern direkt den Spulenstrom. Wenn der vom Betrag her stimmt, wir 
überhaupt nicht geschaltet.

Mit einem DSP hat man wirklich freie Hand, was die Ansteuerung betrifft.

Wie macht Ihr die Strommessung?

von Alois L. (Firma: TU München) (cnc)


Lesenswert?

Die Strommessung funktioniert immer noch klassisch über den Shunt, was 
in meinen Augen den gravierenden Nachteil hat, dass während der off-Zeit 
einfach nicht gemessen werden kann.
Eine direkte Strommessung im Spulenzweig habe ich damals auch als Lösung 
gesehen, nur (warum auch immer) nicht weiterverfolgt.
Das mit der fallenden Sinuswelle habe ich auch schnell gemerkt, nur 
hatte ich bei meiner analogen Stromregelung das Problem dass beim fast 
decay switching eine negative Referenzspannung entsteht.
Also hierzu eine Grundsatzfrage: kann man mit einem einfachen 
Spannungskomparator überhaupt den Strom im fast decay modus regeln?
Falls die Spule den eingestellten Strom erreicht hat wird sie beim fast 
decay mode ja praktisch verpolt an die Versorgungsspannung gehängt. Hier 
kann man mit dem Shunt die Spannung nicht messen, da die Ist-Spannung zu 
dieser Zeit ja bereits negativ ist, also wenn man nichts unternimmt 
fließt dieser Gegenstrom bis zum nächsten Stromregelzyklus bis die Spule 
verpolt die Schaltschwelle erreicht.
hab ich da jetzt einen Denkfehler drin?
Mit einer direkten Strommessung würde das nicht passieren...

Gruß Alois

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.