mikrocontroller.net

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


Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Nikias Klohr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Nikias Klohr (Gast)
Datum:

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

Gruß,
Nikias

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Trinamic...
Gibt es sogra bei Reichelt.

Autor: Thomas O. (Gast)
Datum:

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

Autor: Andreas Lang (andreas) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ssss Ssssss (sssssss)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso kostet trinamic 100 Eur ?
http://www.reichelt.de/artikeldruck.html?ARTIKEL=T...

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

Bye, Simon

Autor: Andreas Lang (andreas) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian Kreuzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Lang (andreas) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
                                 ===

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stevko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.