Forum: Mikrocontroller und Digitale Elektronik Schrittmotor im /4 S.-betrieb statt Voll- und Halbschritt?


von Thomas O. (Gast)


Lesenswert?

Hallo,

habe hier eine kleinen Tacho Schrittmotor den ich erfolgreich in Voll-
und Halbschritten bewegt habe. Jetzt wollte ich mal fragen wie ich die
Auflösung noch feiner hinbekomme, da das ganze doch noch etwas "grob"
läuft. Will dazu keinen speziellen Treiber benutzen sondern das per
Software hinbekommen.

Was mich interessiert wäre also der Ablauf. Dachte mir vielleicht bei
jedem 2ten oder 3ten Rechtshalbschritt einen Linkshalbschritt
hinzuzufügen oder wie wird das sonst gemacht?

von Nikias Klohr (Gast)


Lesenswert?

Hallo,
dein Stichwort ist "Mikroschrittbetrieb". Der Trick liegt darin
"zwischen" den Schritten per PWM ein sinusförmigen Verlauf der Ströme
in den 2 beteiligten Spulen einzuprägen. Das ganze ist rein
Softwaremäßig möglich solange deine restliche Schaltung auf PWM
ausgelegt ist. Vorsicht ist bezüglich der benötigten Leistung geboten.
Vor allem um den Motor zwischen zwei Schritten auf einem beliebigen
Winkel zu halten...muss ja dauerhaft ein Strom fließen...nicht jeder
Schrittmotor macht sowas mit.

Gruß,
Nikias

von Thomas O. (Gast)


Lesenswert?

meinst du mit "nicht mitmachen" das es bei manchen nciht funktioniert
oder das Sie sogar kaputt gehen, was ich mir aber nicht vorstellen kann
weil die doch frei drehen und keine mechanische Verbindung haben.

Mal schauen ob ich vielleicht so nen Treiber finde der Microstepping
kann. Weil das Projekt später eh aus 4 solcher Motoren besteht.

von Nikias Klohr (Gast)


Lesenswert?

Das Problem ist die mittlere Leistung ...die ist im Mikroschrittbetrieb
nämlich wurzel2 mal größer als bei normaler Beschaltung.

Gruß,
Nikias

von Thomas O. (Gast)


Lesenswert?

achso da wird also auf beiden Spulen PWM draufgegeben um die Spulen zw.
2 Schritten zu halten. Ist dann in Software doch etwas aufwändiger.
Werd mich mal nach einem speziellem IC umschauen.

Leistungsmäßig habe ich noch Reserven die Spulen haben nen Wiederstand
von 130 Ohm was bei 5V knapp 40mA sind und der L293D verträgt 600mA pro
Kanal da kann ich also noch die Spannung weiter erhöhen.

von Rahul (Gast)


Lesenswert?

Trinamic...
Gibt es sogra bei Reichelt.

von Thomas O. (Gast)


Lesenswert?

Trinamic scheidet aus, da kostet ein Modul fast 100€. Da mache ich es
notfalls mit Halbschritten.

von Andreas Lang (andreas) (Gast)


Lesenswert?

Mit einem AVR geht das recht einfach:
Einen Timer mit 2 PWM-Ausgängen nehmen, PWM-Frequenz recht hoch wählen
und sich eine kleine Sinus-Tabelle berechnen. Die Beiden Signale sind
einfach 90° Phasenverschoben. Das geht auch mit normalen Treiber-ICs.
Ich steuere so z.B. einen Schrittmotor aus einem alten Scanner an. Der
fühlt sich so richtig wohl.

Wenn die Tabelle im RAM liegt, sähe das z.B. so aus:

uint8_t sinus[32]; //32 Schritte, ergibt 8 Mikroschritte pro
Vollschritt
uint8_t z1=0, z2=8;

void schritt(int8_t schritte){
   z1+=schritte;
   z1&=31;
   z2+=schritte;
   z2&=31;
   OCR1A=sinus[z1];
   OCR1B=sinus[z2];
}

In sinus[] liegt die Sinustabelle (Werte von 0 bis 255,
sinux[x]=128+sin((pi/16)*x) für x=0...31)
Die Werte kann man sich per EXCEL oder was auch immer berechnen.
Durch einen aufruf von void schritt(schritte) kann man den Motor um
"schritte" Microsteps bewegen. Wichtig ist aber, dass schritte nicht
größer gewählt wird, als die anzahl der Microsteps zwischen zwei
Vollschritten (in diesem Fall also 8). Mit negativen Werten läuft der
Motor rückwärts.

von Thomas O. (Gast)


Lesenswert?

Hallo,

mit C kenne ich mich eigentlich garnicht aus. Werde jetzt doch mal die
Schrittmotoren bestellen die ein Getriebe haben. Dann hab ich nen
Vollschrittwinkel von 0,33° statt der jetzigen 1,8° und kann mir das
mit den Microstepps sparen.

Trotzdem danke.

von Ssss S. (sssssss)


Lesenswert?

Wieso kostet trinamic 100 Eur ?
http://www.reichelt.de/artikeldruck.html?ARTIKEL=TMC%20246A-PA

Die anderen von denen kosten auch kaum mehr ;)
Musst nur noch ne Platine drumrumstricken.

Bye, Simon

von Andreas Lang (andreas) (Gast)


Lesenswert?

Ohne C:
Man hat eine Wertetabelle mit einer Sinuskurve.
Man hat zwei Variablen, die auf die Werte in der Tabelle zeigen.
Wenn z1=0, dann zeigt es auf den ersten Eintrag der Tabelle usw.
Man zählt dann für jeden (Mikro)Schritt z1 und z2 hoch.
Wenn z1 größer wird als die nummer des letzten Eintrags (hier 31), dann
wird z1 wieder auf 0 gesetzt (geht mit "z1=z1 AND 31"). Dadurch, dass
man hier das AND nimmt, funktioniert die Sache auch rückwärts und auch
dann, wenn man zu z1 mehr als 1 hinzuzählt.
Für z2 macht man genau das gleiche, nur setzt man z2 beim
Programmbeginn so, dass es auf den Wert für sin(pi/2) zeigt (hier ist
das Wert nummer 7, wenn der erste Eintrag Nummer 0 ist).

von Thomas O. (Gast)


Lesenswert?

sorry hatte statt tmc nach trinamic gesucht und da war das billigste
Teil 82€.

Also nun scheint mir doch die Softwareversion das einfachere zu sein.
Habe jetzt noch ein paar genauere Fragen. Muss das umbedingt per
Sinuskurve geschehen oder geht es einfach um das Stromverhältniss zw.
den 2 Spulen? Wenn jetzt eine Spule etwas mehr Strom hat dann wird der
Zeiger zu dem größeren Magnetfeld wandern. Deswegen wird es dann kurz
gestoppt oder die Spulen immer kurz abwechselnd erregt damit der Zeiger
in einer gewünschten Stellung zw. den Schritten bleibt?

Hab ich das richtig verstanden? Wenn ja dann werde ich mich ans
probieren machen das per Software selbst hinzubekommen.

von Christian Kreuzer (Gast)


Lesenswert?

Hallo,

die sind relativ günstig und laufen absolut problemlos:
http://www.nanotec.de/page_steuerungen__de.html
der IMT901 oder IMT 902 dürften was für dich sein.

Viele Grüße,
Christian

von Andreas Lang (andreas) (Gast)


Lesenswert?

Sinus sollte schon sein, damit der Motor rund läuft (Man bekommt
Schrittmotoren mit gutem Microstepping beinahe lautlos zum drehen)
Die Sinuswerte muss man ja nicht dauernd neu berechnen. Es gibt derer
genau 32 (eher mehr, bei weniger lohnt es sich nicht wirklich mit dem
Microstepping). Man kann aber z.B. nur die erste Halbwelle im RAM/Flash
halten und den Rest umrechnen (eigentlich würde ja auch eine viertel
Periode reichen). Sinnvoller ist es aber die Tabelle im RAM zu halten,
weil die Motorroutine dann extrem klein und schnell bleibt.




                                  î VCC
                                  |
                        |\   .---------.
            PWM_1 ---o--| >O-|A       A|----)|
                     |  |/   |         |    )| Motorwicklung 1
                     '-------|B       B|----)|
                             |         |
                        |\   |         |
            PWM_2 ---o--| >O-|C       C|----)|
                     |  |/   |         |    )| Motorwicklung 2
                     '-------|D       D|----)|
                             '---------'
                                  |   Motortreiber
                                 ===

von Thomas O. (Gast)


Lesenswert?

will das Projekt wieder aufnehmen und wollte nochmal kurz zur
Sinusspannung was fragen brauche ich positive und negative Halbwellen
also ne Wechselspannung oder reichen positive Halbwellen? Ich muss doch
einfach die Versorgungsspannung der Motoren am L293D mit dieser
Sinusspannung versorgen oder?

von Profi (Gast)


Lesenswert?

Die Nanotec IMT901 sind umgestempelte Toshiba TA8435H = NMB SDI - C403.
Die kosten (bei Glyn?) deutlich weniger und können 1/8-Schritt, wenn
ich mich richtig erinnere.

"Ich muss doch einfach die Versorgungsspannung der Motoren am L293D
mit dieser Sinusspannung versorgen oder?"

??? Du legst nirgens eine Sinusspannung an, sondern das PWM-Signal wird
mit dem Sinus moduliert, daraus entsteht ein sinusförmiger
Stromverlauf.

Alternativ kannst Du z.B. beim L6208 die beiden Referenzspannungen
durch PWM erzeugen, dann macht er auch Microschritt.

Hierbei brauchst Du nur positive Spannungen, die negativen Ströme
werden durch Umpolen in der H-Brücke erzeugt.

Bei den Herstellern gibt es viele ANs zu lesen!

von Thomas O. (Gast)


Lesenswert?

Verstehe das nicht ganz,welche Spannung muss ich mittels PWM auf
Sinusart bringen? Der L293D hat ja einmal ne Versorgungsspannung für
die Motoren und einmal für den Chip selber.

Kann mir da jemand nen externen Baustein(einfachen Sinusgenerator)
nennen.

von Stevko (Gast)


Lesenswert?

Hallo Thomas,

wie schon mehrmals erwähnt, nimm den IMT_901!
Ich wollte auch erst über den L239D gehen, doch der Aufwand gegenüber
dem IMT war mir zu groß.

Der IMT bietet folgende Möglichkeiten:

 * 1/1; 1/2; 1/4; 1/8 Schritt
 * Vorwärts/Rückwärts
 * Motorstrom an/aus
 * Motorstromreduzierung auf 67%(wegen Haltemoment)
 * mehr fällt mir momentan nicht ein

Mit 20-Zeilen Code bekommst Du den Motor zum Drehen, kannst Rampen
generieren(mit mehr Code), die Drehrichtung ändern und und und.
Die Beschaltung ist nicht aufwändig und Du mußt nur den Takt vorgeben.

Ich bin nicht von Nanotec!
War nur fasziniert, wie man mit wenig Aufwand gute Resultate erreichen
kann. Und bestelle den Chip nicht bei Nanotec. Die Versandkosten sind
ja der Hammer!

Gruß
  Stevko

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.