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?
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
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.
Das Problem ist die mittlere Leistung ...die ist im Mikroschrittbetrieb nämlich wurzel2 mal größer als bei normaler Beschaltung. Gruß, Nikias
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.
Trinamic scheidet aus, da kostet ein Modul fast 100. Da mache ich es notfalls mit Halbschritten.
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.
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.
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
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).
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.
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
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 ===
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?
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!
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.