Forum: Mikrocontroller und Digitale Elektronik Schrittmotor: Microstepping über PWM der Referenzspannung


von Stefan K. (sdwarfs)


Lesenswert?

Hallo,

ich möchte mir preislich günstige Motorsteuerung für Schrittmotoren 
(2phasen, bipolar) basteln, die ein vernünftiges Microstepping umsetzt. 
Vorweg: Ich habe zuvor noch nicht praktisch mit Schrittmotoren 
gearbeitet, aber einiges an theoretischem Wissen angelesen.

Ich hätte eine Idee, wie ich da etwas zusammenfummeln könnte. Bevor ich 
jetzt aber Bauteile einkaufe und damit gleich im Anschluss noch die 
teuren Schrittmotoren abfackle, wollte ich hier mal nachfragen, ob das 
so funktionieren kann... und zwar:

Ich wollte als Schrittmotortreiber den L6219 verwenden und den über 
einen µC ansteuern (Hauptaufgabe). Ja, der L6219 soll (laut einem 
anderen Thread) nicht so gut für Microstepping geeignet sein, aber ich 
hab da eine Idee, die an der Vorgabe des Datenblatts vorbei geht.

Das hier ist die Schaltung des Datenblatts:
http://circuits.datasheetdir.com/391/L6219-circuits.jpg

Wenn ich das richtig verstanden habe, muss man für "optimale" 
Mikroschrittelung die Stromstärke in den 2 Windungen so steuern, dass 
diese einer Sinus- bzw. Cosinus-Funktion mit entsprechender Frequenz 
folgen. Laut Datenblatt soll man dafür die Eingänge I01-I11 und Ph1/2 
verwenden, was ich für zu "grob" empfinde, da man pro Windung nur 
jeweils Fließrichtung und 0, 33%, 66% und 100% (2 bit + sign bit) 
Stromstärke einstellen kann. Die Frage ist, wie schnell und sauber der 
IC hier auf Wechsel der I01-I11 Eingänge reagiert und ob man hier 
sinnvoll mit Pulsweitenmodulation arbeiten kann.

Meine Überlegung ist, ob man stattdessen die I01-I11 auf HIGH lässt 
(100% der max. Stromstärke nutzen) und dann die max. Stromstärke über 
Pulsweitenmodulation an den Referenz-Spannungs-Eingängen moduliert. Die 
Stromrichtung würde über Ph1 und Ph2 hin und her geschalten. Damit spart 
man sich auch 2 IO-Pins...

Vereinfacht würde das so aussehen:

f = Schritt-Frequenz [in Hz]
t = Zeit [in s]

a = sin(f*2*PI*t);
b = cos(f*2*PI*t);
Vref1 = abs(a);
Ph1 = a > 0 ? 1 : 0;
Vref2 = abs(b);
Ph2 = b > 0 ? 1 : 0;

Die Pulsweitenmodulation muss natürlich ausreichend schnell sein 
(Mikroschrittzahl * Vollschritte pro Sekunde). Wahrscheinlich ist es 
sinnvoll die Eingangsspannung für Vref1 und Vref2 noch etwas mit einem 
Kondensator zu glätten... aber vom Prinzip her sollte doch der 
Motor-Treiber-IC dann die Stromstärke entsprechend regeln, oder?

Meine Fragen:

1. Was haltet ihr davon? Hat das Chancen?

2. Die Angabe im Datenblatt vom Schrittmotor für den maximalen 
Phasenstrom (z.B. 0.4A pro Phase) ist doch die Dauerstrombelastung, 
richtig? Dabei spielt doch die thermische Belastung die Hauptrolle, 
welche laut meinen Infos quadratisch mit der Stromstärke steigt. Das 
hieße, dass ich die Stromstärke eigentlich auch kurzzeitig höher jagen 
kann, solange ich durchschnittliche thermische Belastung (im Zeitraum 
von Millisekunden) entsprechend unter dem Equivalent der Dauerlastgrenze 
(hier 0.4A) halte. Das entspräche bei einer Sinuskurve einer Amplitude 
von ca. 141% Dauerlast bzw. ~0.565A; Entsprechend wäre das erzeugte 
Drehmoment 41% höher (weil linearer Zusammenhang von Stromstärke und 
Drehmoment). Ist das soweit richtig?

Danke fürs Lesen und für deine Meinung/Kritik...

Grüße
Stefan

von Purzel H. (hacky)


Lesenswert?

Erstens muss der Motor fuer Mikroschritt gebaut sein. Denn wenn das 
Rastmoment zu hoch ist, ist nichts. Es ist unwahrscheinlich, dass das 
Drehmoment am oberen ende der Spezifikation linear zum Strom ist

von Stefan K. (sdwarfs)


Lesenswert?

Zwei von Drei schrieb:
> Erstens muss der Motor fuer Mikroschritt gebaut sein. Denn wenn das
> Rastmoment zu hoch ist, ist nichts.

Ich hatte an diesen Motor gedacht: 
http://www.pollin.de/shop/downloads/D310453D.PDF

Wenn ich das richtig sehe:
Rastmoment: 2.2 N.cm
Haltemoment: 38 N.cm
Drehmoment im Halbschrittbetrieb mit niedriger Drehzahl etwa 22 N.cm.

Wäre so ein Schrittmotor geeignet?
Und: Es geht mir weniger um genauere Positionierung, sondern 
gleichmäßigeres Drehmoment und Laufruhe.

> Es ist unwahrscheinlich, dass das
> Drehmoment am oberen ende der Spezifikation linear zum Strom ist

Gibt's für sowas typische Kennlinien?


Prinzipiell sollte da doch aber ein direkter physikalischer Zusammenhang 
(Lorentzkraft oder sowas) bestehen. Zumindest bei niedrigen Drehzahlen.
Aber natürlich sieht das bei höheren Drehzahlen anders aus (war das mit 
Ende der Spezifikation gemeint?), weil dann Reibungsverluste mit 
quadratisch oder gar kubisch in die Energie-Umwandlungs-Gleichung 
eingehen.
Die maximale Drehzahl wird natürlich nicht 41% höher, aber das wirkende 
Drehmoment bei gleicher Drehzahl sollte bei höherer Stromstärke höher 
werden. Es sei denn Windungen fangen an sich arg zu erwärmen und der 
Widerstand der Windungen steigt, was dann zu einer verstärkten 
Umwandlung von Energie in Wärme führen würde...
Wenn aber das Limit 41% höher liegt, sind wir zumindest mal erst bei 
~70% der möglichen Leistung. D.h. eine merkliche Leistungssteigerung ist 
sicher drin...
Hätte ich das dann so richtig verstanden, oder gibts da noch andere 
Effekte, die mir entgangen sind?

von Michael A. (Gast)


Lesenswert?

Warum nimmst du nicht gleich eine SM-Treiber, der Mikroschrittbetrieb 
vernünftig macht und den Phasenübersetzer gleich mit drin hat, z.B. den 
A3967

von Stefan K. (sdwarfs)


Lesenswert?

Michael A. schrieb:
> Warum nimmst du nicht gleich eine SM-Treiber, der Mikroschrittbetrieb
> vernünftig macht und den Phasenübersetzer gleich mit drin hat, z.B. den
> A3967

Da gibt's mehrere Gründe:
1. Beschaffbarkeit: Ich finde die ICs nur bei ebay und dort. Und mit 
Ort: "China" oder "Hong Kong". Das bedeutet ~2 Wochen Lieferzeit (nix 
für Ungeduldige und bei Problemen mit der Ware keine Chance); Zudem soll 
die Schaltung auch später nochmal aufgebaut werden. Wer weiß, wie lange 
der überhaupt noch verfügbar ist. Ansonsten kommt ab irgend nem Preis 
auch Zoll hinzu. Bis 20 EUR glaub noch nicht...

2. Es handelt sich um einen SOIC, den ich schlecht auf nen Steckbrett 
drauf bekomme, um vorab zu testen. Zudem halte ich es für heikel (bei 
meinen Lötfähigkeiten) so ein Bauteil selbst auf eine Platine zu löten. 
Klar ich muss irgendwann mal damit anfangen, auch SOICs zu löten, aber 
ich glaub dann sollt ich erst einmal einen nehmen der nicht gleich 24 
pins hat, um auch nen Erfolgserlebnis zu haben. Da konntest Du natürlich 
nicht ahnen... is aber ein wichtiger Grund für mich. Ich versuch erstmal 
bei DIP zu bleiben, da kann ich notfalls auch nen Sockelt verlöten und 
dann den IC reinstopfen.

3. Preis: Als fertiges Board gabs für ~13 EUR (ebay/China). Was eher zu 
teuer ist; Die aktuelle Schaltung wären Bauteile für 3,18 EUR + Platine 
(d.h. IC + Bauteile drumherum); Ich brauch davon am Ende 3 Stück, wären 
also knapp 30 EUR mehr. Würd ich die Arbeitszeit mitrechnen, wäre das 
billiger, aber ich denke ich will den Preisunterschied nutzen (=kleine 
Motivation), um es selbst zusammen zu basteln und etwas Erfahrung zu 
sammeln. Eine Alternative wäre dann auch mit L297/L298 zu arbeiten. Dann 
ist man beim gleichen Preis (~8 EUR nur für die 2 ICs, glaub ich).

von Michael A. (Gast)


Lesenswert?

Stefan K. schrieb:
> 1. Beschaffbarkeit: Ich finde die ICs nur bei ebay und dort. Und mit
> Ort: "China" oder "Hong Kong". Das bedeutet ~2 Wochen Lieferzeit (nix
> für Ungeduldige und bei Problemen mit der Ware keine Chance); Zudem soll
> die Schaltung auch später nochmal aufgebaut werden. Wer weiß, wie lange
> der überhaupt noch verfügbar ist. Ansonsten kommt ab irgend nem Preis
> auch Zoll hinzu. Bis 20 EUR glaub noch nicht...

Den A3967 gibt's bei jedem vernünftigen Distributor:
Digikey, Farnell, RS-Components - nur um mal drei zu nennen.
Zoll und 20 EUR ist ein Märchen - das sollte man wissen, nicht glauben. 
Was bei Auslandsbestellungen über Grenzwert (ca.20Eur) dazu kommt, ist 
die EUSt. von 19% (entsprechend im Inland der MwSt.). Für Digikey gibt 
es hier im Marktforum oft Sammelbestellungen, so dass man nur 
Inlandsporto für einen Brief mit den Bauteilen hat.

Stefan K. schrieb:
> 2. Es handelt sich um einen SOIC
Zur Not gibt's da Adapter, um auf DIL zu kommen. Aber die Beschaltung 
ist so elementar, dass du auch gleich auf eine Platine gehen kannst. 
Beispiele gibt's im Netz und das Löten ist bei dem wirklich gut 
hinzukriegen. Gut Flußmittel dazu und einmal mit der breiten Lötspitze 
langsam rüber jede Pinreihe rüberziehen.

Stefan K. schrieb:
> 3. Preis: Als fertiges Board gabs für ~13 EUR (ebay/China).
> ... aber ich denke ich will den Preisunterschied nutzen (=kleine
> Motivation), um es selbst zusammen zu basteln und etwas Erfahrung zu
> sammeln.
Die Analogsteuerung der Referenz für jeden einzelnen Motorschritt ist 
schon Extraaufwand. Funktionieren wird das IMHO schon, aber ob das 
lohnt.

Viel Erfolg

von Stefan K. (sdwarfs)


Lesenswert?

> Den A3967 gibt's bei jedem vernünftigen Distributor:
> Digikey, Farnell, RS-Components - nur um mal drei zu nennen.

Ah, da hatte ich nicht geschaut... Farnell hat den für 3,39 
Einzelstückpreis (bei 10+ 2,49 EUR). Da sind wir wieder bei Preisen und

> Zoll und 20 EUR ist ein Märchen
Die Grenze steht offiziell irgendwo beim deutschen Zoll auf der 
Webseite.
Ab irgend nem Wert kommt halt noch irgend ne Bearbeitungs-Gebühr hinzu 
(glaub 150 EUR). Und unter irgend nem Wert (meiner Erinnerung nach eben 
20 EUR deklarierter Wert).
Aber die sind telefonisch für Rückfragen absolut nicht erreichbar. Ich 
hatte mich damals mal versucht wg. nem Ersatzteil schlau zu machen 
(neues LCD für nen Notebook). Die Infos, um die genauen Gebühren im 
Voraus zu kennen sind aber auf jeden Fall nicht auf der Webseite zu 
finden oder total unverständlich. Aber zum Glück komme ich ja hier drum 
herum.

> Zur Not gibt's da Adapter, um auf DIL zu kommen. [...] Gut Flußmittel
> dazu und einmal mit der breiten Lötspitze
> langsam rüber jede Pinreihe rüberziehen.
Gut zu wissen, dass es dafür Adapter gibt (ohne löten, nur klemmen?). 
Dann wär' ich von der Beschränkung schon mal weg... und mit dem Löten 
könnt ich ja dann mal probieren.


> Die Analogsteuerung der Referenz für jeden einzelnen Motorschritt ist
> schon Extraaufwand. Funktionieren wird das IMHO schon, aber ob das
> lohnt.
Also Software schreiben kann ich... daran würde es nicht scheitern. 
Denke aber, dass die Herausforderung SOIC dann erst einmal ausreichen 
wird.


> Viel Erfolg
Danke... und vielen Dank für die Hinweise!

Ne Alternative die ich noch überlegt / grad angefangen habe, war die 
Schaltung selbst zu entwerfen... d.h. H-Brücke aus NMOS/PMOS-Bausteinen 
(am besten CMOS für geringe Verlustleistung; Stückpreis < 20 cent), dazu 
nen Comparator (Operationsverstärker) an einen in Reihe zur Last 
geschaltenen kleinen Widerstand (Strommessung). Das Ganze je ein mal pro 
Motorwindung... dazu käme nen NAND-Gatter um die Stromrichtung über nur 
einen IO-Pin umschalten zu können. Das ganze hätte den Vorteil, dass man 
notfalls die H-Brücke anders dimensionieren könnte, um höhere Ströme zu 
erlauben.
ABER:  Ich denke, das werde ich aber mal angehen, wenn obige Lösung 
funktioniert hat... Wäre aber glaub nen gutes Übungs-/Lern-Projekt. Die 
Schaltung würde ich vorher in SPICE simulieren. Da keine extravaganten 
ICs dabei sind, gibt's da auch keine Probleme...

Ich mach mich dann mal an die Arbeit (Beschaltung genauer anschauen & 
Co)...

von Michael A. (Gast)


Lesenswert?

Stefan K. schrieb:
> ... dazu käme nen NAND-Gatter um die Stromrichtung über nur einen IO-Pin
> umschalten zu können.

Außerdem mußt du dafür sorgen, dass die FETs einer Halbbrücke mit 
Zeitversatz umgeschaltet werden. Sonst sind sie kurzfristig beide 
leitend und schließen die Versorgungsspannung kurz, was kein guter Stil 
ist und wofür die FETs insbesondere oft nicht ausgelegt sind. 
Insbesondere ist die Überraschung groß, wenn man die Schaltung dann mal 
an einem kräftigen Netzteil oder einem niederohmigen Akku betreibt ;-)

von Stefan K. (sdwarfs)


Lesenswert?

Michael A. schrieb:
> Außerdem mußt du dafür sorgen, dass die FETs einer Halbbrücke mit
> Zeitversatz umgeschaltet werden.

Das ist richtig. Hab ich der Einfachheit halber mal "unterschlagen". 
Spontan würd' ich das über ne leichte Modifikation der Schaltspannung 
eines FETs jedes Päärchens lösen. Wahrscheinlich reicht nen 
Widerstand... dann schalten sie Zeitversetzt. Müsste man in der 
Simulation dann schauen... sieht man dort ja reicht zuverlässig, was da 
vom Timing her passiert.
Sich das mit dem Oszilloskop (welches ich nicht besitze, aber 
wahrscheinlich aus bissl Kabeln und meiner Soundkarte im Notebook 
basteln könnte; Limit: 192kHz Auflösung) anzuschauen, wäre da schon 
schwieriger. Insbesondere, da die Sampling-Rate möglicherweise zu grob 
ist (1 Sample pro 5,2 µs), um die Effekte zu sehen.

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.