Forum: Analoge Elektronik und Schaltungstechnik Bitte um Hilfe bei L6208


von Florian (Gast)


Lesenswert?

Hallo zusammen,

ich versuche mich gerade an einer Käsefräse.
Bei dem Projekt gehts eher ums Lernen da für mich Motoren
irgendwie große gruselige Monster sind...
für mich persönlich nichts einfaches, warum auch immer...

Nunja, ich habe mir für meinen Zweck erstmal günstige
Schrittmotoren besorgt Vexta PK244-0244-C23

Hier zwei Links zu denen
http://www.interinar.com/public_docs/PK244-02AA-Oriental-Motor.pdf
http://www.interinar.com/public_docs/PK244-02AA.pdf

Als Treiber habe ich für den L6208 entschieden von ST.
http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00002294.pdf
http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/APPLICATION_NOTE/CD00004339.pdf

So, sitze nun etwas länger an der Application Note,
und komme nicht vorran da ich anscheinend einige Begriffe nicht 
verstehe.

Wer kann mir z.B. verraten was der Sinn eines Charge Pump sein soll?
Desweiteren möchte ich wissen wie ich mein Vref einstelle,
also welche Spannung brauche ich (und warum?)

Im Application Note wird nur was von einer PWM vom mC geschrieben...

da ich aber den Sinn dieser Referenzspannung selbst nicht verstehe,
stehe ich einwenig auf dem Schlauch. Referenzwert ist ja meist
ein fest eingestellter Wert, oder nicht?

Vielleicht kann mir jemand einen Tipp geben.

Grüße
Flo

: Verschoben durch Admin
von Falk B. (falk)


Lesenswert?

@  Florian (Gast)

>Wer kann mir z.B. verraten was der Sinn eines Charge Pump sein soll?

Die sorgt dafür, dass immer eine ausreichend hohe Spannung (VS+10V) zur 
Ansteuerung deiner "oberen" FETs zur Verfügung seht, egal wie deine 
H-Brücken geschaltet sind.

"Using N-Channel Power MOS for the upper transistors in the bridge 
requires a gate drive voltage above the
power supply voltage. The bootstrapped supply voltage VBOOT is obtained 
through an internal Oscillator and few
external components to realize a charge pump circuit as shown in Figure 
6. The oscillator output (VCP) is a
square wave at 600KHz (typical) with 10V amplitude. Recommended 
values/part numbers for the charge pump
circuit are shown in Table 1."

>Desweiteren möchte ich wissen wie ich mein Vref einstelle,

VRef muss so groß sein wie der maximale Spannungsabfall über R_sense.

>also welche Spannung brauche ich (und warum?)

Irgendwas im Bereich 0,1-1V, bei hohen Strömen eher 0,1V. Mit R_sense 
wird der Strom durch die H-Brücke gemessen, Vref sagt, wenn die 
zulässige Grenze erreicht wurde. Damit kann der Strom von dem IC allein 
geregelt werden.

>stehe ich einwenig auf dem Schlauch. Referenzwert ist ja meist
>ein fest eingestellter Wert, oder nicht?

Ja

>Vielleicht kann mir jemand einen Tipp geben.

PWW, hier genutzt als Konstantstromquelle.

von Florian (Gast)


Lesenswert?

Sorry für die späte Antwort...

Danke Falk :)

Da kommt doch einwenig mehr Licht ins Dunkle.

Muss nur über Deinen Tipp nachdenken...

von Florian (Gast)


Lesenswert?

Hallo zusammen, ich bins wieder.

hab noch einige Verständnisschwierigkeiten was den Baustein angeht
(leider -_-)

ok, Vref dient zur oberen Stromgrenze, soweit so gut.

Jetzt hab ich was von Microstepping gelesen...
sauberes laufen, durch kleinere Schritte (grob gesagt)

und jetzt verstehe ich den Zusammenhang nicht,
das ich mit einer Sinuskurve am Vref (welches ja zur Strombegrenzung 
dient)
die GateLogic beeinflussen kann, bzw. das die GateLogic irgendwelche 
Analogwerte übernimmt.

(Link: 
http://www.otocoup.com/DocTech/Stepper_cont_driver_bip_2.8A_L6208_App_Note.pdf
Timing: Figure32 und Figure16)

Ich hätte es verstanden wenn ich die cmos in der h-brücke
mit sinusfunktion ansteuere, und mit clk noch ge'time't
und somit die Mikrosteps so hinbekommen würde.

Btw. die Phasenverschiebung übernimmt auch die GateLogic?

Ich wäre um Hilfe dankbar

von Florian (Gast)


Lesenswert?

habs anscheinend nach nem kaffe das dann doch selbst hinbekommen...
anscheinend ist die Grafik schöner und dient eher zum Verständnis ^^

http://www.elektroniknet.de/fileadmin/user_upload/wor_pics/c1bab72baae21c4e208ce10c1dbf1fec_568x528.jpg

jetzt verstehe ich bloß nicht wie das mit dem Timing von slow decay und 
fast decay gemeint ist (Figure33 in AppNote)

also immer wenn ein Vref seinen negativen "Peak" hat, soll/ darf man das 
fast decay nutzen... aber wie lange, bzw. wie breit darf dieser Impuls 
sein?

von Wolfgang (Gast)


Lesenswert?

Falk Brunner schrieb:
>>stehe ich einwenig auf dem Schlauch. Referenzwert ist ja meist
>>ein fest eingestellter Wert, oder nicht?
>
> Ja

Nein.
Wenn man die Referenz variabel vorgibt (z.B. per PWM und TP vom µC) kann 
man den Schrittmotorstrom und damit das Drehmoment vorgeben, 
beispielsweise für eine Reduzierung des Haltestroms.

von Florian (Gast)


Lesenswert?

@Wolfgang

Das wars auch was mich zuerst verwirrt hatte.

Hast du ne Idee zum Decay?

von Wolfgang (Gast)


Lesenswert?

Florian schrieb:
> Hast du ne Idee zum Decay?

Vielleicht findest du hier etwas. Es geht zwar um einen anderen 
Controller, aber das ändert ja nichts am Prinzip:
http://www.thsengineering.com/2009/04/understanding-mixed-decay-and-the-allegro-a3977-pfd-percent-fast-decay-feature/

von eProfi (Gast)


Lesenswert?

Der Control-Pin entscheidet, welches Decay gemacht wird.

Slow-Decay: beim Erreichen des Sollstromes wird die Wicklung 
kurzgeschlossen, die in der Spule gespeicherte Energie wird in Wärme 
umgewandelt.

Fast-Decay: beim Erreichen des Sollstromes wird die Wicklung 
"offengelassen", d.h. die Spannung kann sich umkehren (bis zur negativen 
Versorgungsspannung) und der Strom sinkt sehr schnell ab. Die 
gespeicherte Energie wird zum großen Teil in die Versorgung 
zurückgespeist.

Das ganze hat großen Einfluß auf die Laufeigenschaften des Motors bei 
verschiedenen Frequenzen, wie er sich bei Resonanzen verhält etc.
Lies Dir die ganzen ANs durch, vor allem die mit Microstepping, da wird 
das sehr schön erklärt.

Beim Microstepping wird zwischen den beiden Modi umgeschaltet, damit bei 
langsamen Stromänderungen der Ripple klein bleibt (Slow Decay) und bei 
schnellen Stromänderungen (beim Sinusnulldurchgang ist die Steigung am 
größten) diese auch wirklich schnell stattfinden können (Fast Decay).

Was nämlich noch dazukommt ist die Gegen-EMK, d.h. durch die Drehung des 
Rotors wird in den Spulen eine Spannung induziert.

Ich weiß, das sind schwierige Zusammenhänge. Immer wieder lesen, 
probieren und messen! Eine Current Probe (Stromzange) für den Oszi ist 
da Gold wert.

Eines verstehe ich nicht, warum lädst Du die AN nicht von der 
Herstellerseite herunter?

von eProfi (Gast)


Lesenswert?

Nochwas: leider muss auch zu den Zeiten der geringsten Steigung (Sinus 
+1 oder -1) Control auf Low gezogen werden, da es nur einen Control-Pin 
gibt, der auf beide Spulen wirkt.
Besser wäre, wenn es für jede Stufe ein eigenes Control gäbe.
Immerhin gibt es für jede Stufe ein eigenes Vref, was ja das 
Microstepping überhaupt erst möglich macht.

Wenn man das Hin- und Herschalten von Control nicht macht, folgt der 
Strom nicht so gut der Vref.

Beherzige unbedingt die Layout-Vorschriften:
 - alle Leitung so kurz wie möglich, vor allem die zu den Rsense.
 - Cs so dicht an das IC wie möglich.
 - saubere Masseführung.
Sonst funktioniert die Stromregelung nicht gescheit und der Motor 
quietscht.


Wenn die Vref mit PWM erzeugt wird: PWM-Frequenz so hoch wie möglich 
wählen, damit der Glättungs-C klein bleiben kann, sonst ergibt sich eine 
zu große Phasenverschiebung.

Ich erzeuge die PWMs mit einer DDS (mit zwei Abgriffen für Sin und Cos).
So sind Drehzahlen von 0,091 - 3000 Upm in beiden Richtungen möglich. 
Eine lineare Beschleunigung kommt durch eine einfache Addition einer 
Konstanten in das FCW (Frequency Control Word = Additionswert der DDS) 
zustande:

//alle Variablen INT32;
if(DDSistSpeed < DDSsollSpeed){DDSistAccel =  DDSsollAccel;} else
if(DDSistSpeed > DDSsollSpeed){DDSistAccel = -DDSsollAccel;} else
                               {DDSistAccel =             0;}

DDSistPos   += DDSistSpeed >> 16;
DDSistSpeed += DDSistAccel;

VrefA = SinTable[ DDSistPos & 0xFF    ];
VrefB = SinTable[(DDSistPos & 0xFF)+64]; //bei DDSsize = 1,75*256
//Tabelle kann auch halb so lange sein, da hier nicht zwischen Pos und 
Neg unterschieden wird.

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.