PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : DAC für Microstepping



Majuz
20.11.2009, 16:55
Hallo zusammen,

ich möchte meine Schrittmotorsteuerung mit L297 und L6203 gerne durch eine Schrittmotorsteuerung ersetzen die Microstepping unterstützt (bis allerhöchstens 1/64). Diese werde ich dann auch mit dem L6203 aufbauen, aber als Regel-IC den L6506 verwenden. Zusammen mit einem AVR, der dann die Steuerung übernimmt.

Für die generierung der Referenzspannung benötige ich ja einen DAC. Dabei dachte ich an eine Auflösung von 8 Bit.
Nach einigem lesen hier und auf anderen Seiten habe ich 4 Möglichkeiten gefunden dies zu realisieren.

- R2R-Widerstandsnetzwerk
- PWM + Tiefpass
- seperater DAC-Chip (z.B. MAX522)
- spezieller AVR mit eingebautem DAC

Nun stellt sich mir die Frage welche für diesen Anwendungsfall die richtige ist. Dafür habe ich hier nun mal versucht die Vor- und Nachteile der einzelnen Lösungen aufzuschreiben.

R2R:
Vorteile:
- sehr schnell
Nachteile:
- viele Bauteile
- genaue Bauteile nötig (teuer)
- viele Pins nötig

PWM:
Vorteile:
- Einfacher Aufbau
- nur 2 Pins nötig
Nachteile:
- evtl. "unsauberes" Signal

DAC-Chip:
Vorteile:
- Einfacher Aufbau
- wenige Pins notwendig
Nachteile:
- langsamer

AVR mit DAC:
Vorteile:
- keine extra-Bauteile nötig
Nachteile:
- Spezialchip mit dem ich noch nie gearbeitet habe

Was meint ihr was für diesen Anwendungsfall am besten ist?

gruß
Marius

ManuelB
20.11.2009, 17:11
Also ich verwende einen DAC (MAX549) für die Referenzspannungserzeugung. Hatte vorher auch erst an PWM+Tiefpass gedacht aber die PWM Frequenz die ich mit dem AT Mega8 generieren konnte war zu niedrig. Da müsste man dann auf eine PWM Quelle zurückgreifen die schnell genug ist. R2R wäre mir zu platzverschwenderisch, man braucht ja auch noch für jede Phase ein eigenes.
Bis 1/64 Auflösung könnte schwieriger werden mit dem L6506. In slow Decay kriege ich nur bis 1/8 Auflösung halbwegs vernünftig hin, dann wirds schwierig bei den kleinen Strömen diese sinnvoll genau zu regeln (pfeifen, Schwingungen zu niediger Strom, Fehlerkennung des Spitzenstromes)
Bräuchte man mind. fast Decay besser mixed.

MfG
Manu

Majuz
20.11.2009, 19:19
Hi

1/8 würde eigentlich auch schon fast reichen. Allerdings habe ich vor die Fast-Decay-Variante zu bauen die hier (http://www.st.com/stonline/products/literature/an/8700.pdf) beschrieben ist (Figure 13b auf Seite 12). Ich muss dann halt probieren wie hoch ich gehen kann.

R2R mit SMD wäre ja auch relativ klein. Da es mir nix macht wenn die Platine Euroformat hat ist der Platz auch egal. Sie wär halt wohl die schnellste.

Wie schnell müsste denn die PWM denn sein? Ein Mega 8 kann ja bis zu 16Mhz Taktfequenz.

Die Frequenz in der der DAC neue werte liefern muss wird ja immer höher, je kleiner die Schritte sind. also 1/16 schritt braucht die doppelte Frequenz wie 1/8 schritt. Wie schnell kommt da ein externer DAC mit?

[/url]

ManuelB
20.11.2009, 19:39
Ich habe als Controller den Mega8. Hier sind schon alle Ausgänge für die Ansteuerung einer Karte belegt ink. 2 mal PWM für die Ansteuerung der Stromregelung. R2R braucht ja auch noch einiges an Ausgängen zum Ansteuern und ich weiß nicht wie es unter Umständen ist mit Einsteuungen durch die ganzen Leiterbahnen.
Der Mega 8 läuft jetzt auf 16MHz. Der DAC wird mit, wenn ich micht recht entsinne (ist schon ein Weilchen her), 8MHz via SPI mit Daten geladen. Für das rüberladen braucht man nicht all zu viel Zeit. Die paar 16 Bit Befehle rüber zu schieben. Register A neu Register B neu und zusammen ausgeben. Da dauert der Rest des Interrupts ja schon bald länger ;)

Der PWM Timer braucht dagegen recht lange zum hochzählen. Hatte es aber am Anfang nur mit 8MHz versucht, und da man deutlich fehler in der Referenzspannung gesehen hat bin ich gleich auf DAC übergegangen.
Wollte es aber ev. noch mal mit einem separaten Tiny mit 20Mhz versuchen. Die sind ja auch nicht all zu teuer.

Fast Decay ist ab und zu anfälliger in der Stromregelung, da der Ripplestrom höher ausfällt. Also muss man ev. mit dem Layout etwas spielen, niederinduktive Sense-Widerstände (SMD) usw.

MfG
Manu

PICture
20.11.2009, 19:50
Hallo!

@ Majuz

Der schnellster, günstiger und leicht erhältlicher mir bekannter 8-bit DAC, der laut Datenblatt mit 30 MHz wandeln kann, ist TDA8702 (beim Reichelt 2,15 €)

MfG

ManuelB
20.11.2009, 19:55
Hm, da bräuchte man, wenn ich das nach kurzen überfliegen richtig gesehen hab, aber zwei von pro Endstufe. Da ist der MAX nicht mehr viel von entfernt. Mit serieller Kommunikation spart man auch noch Ausgänge.

MfG
Manu

Majuz
20.11.2009, 20:49
ja, da bräuchte man 2. Und Ausgänge braucht man auch 16. Dann kann man auch R2R machen....
Mal kurz mit den Pins rechnen:
Die Ansteuerung der restichen Schaltung benötigt 6 Pins
Als Eingänge braucht man mindestens 2 Pins (Takt + Richtung)
bei R2R braucht man 2*8 für die DACs
Macht insgesamt 24 Pins. Ein Mega8 hat ja 23 verwendbare Pins. Also reicht es net. Dann müsste ein Mega16 oder Mega32 her... ist aber irgendwie überdimensioniert.
Wenn die PWM-Geschwindigkeit der Chips nicht ausreicht bleibt ja eigentlich nur ein externer Chip, der über SPI angesteuert wird (I2C ist wohl zu langsam)

Was für AVRs mit internem DAC gibt es und hat jemand schon damit gearbeitet? Sind die sonst "identisch" mit "normalen" AVRs?


Bis 1/64 Auflösung könnte schwieriger werden mit dem L6506
Kannst du (oder jemand anderes) mir einen anderen Chip empfehlen, der einfach anzusteuern ist und gut zu bekommen? Ich bin da eigentlich offen. Bisher hab ich mit den L6203 halt gute Erfahrungen gemacht und wollte die wieder verwenden und habe dann diese Schaltung mit L6506 gefunden.


Bräuchte man mind. fast Decay besser mixed.
Was heißt "mixed" davon hab ich bisher noch nix gelesen... immer bloss slow oder fast decay.

Ich hab auch noch eine Frage zu den Schaltbildern 13a und 13b in meinem verlinkten PDF bezüglich der µC-Ports "Px5" und "Px6". Ich meine es so verstanden zu haben, dass diese den Motor einschalten, also während sich der Motor dreht auf "dauer 1" sind. Im Text darüber verstehe ich es aber so, dass da ein PWM-Signal angeschlossen werden muss?? Oder verstehe ich es falsch und die reden da die ganze zeit von der Erzeugung der Referenzspannung?[/quote]

PICture
20.11.2009, 21:07
@ Majuz

Die benötigte Pinzahl des µCs kann man mit Schieberegister und die Anzahl des DACs durch multiplexen erheblich reduzieren. Um beliebige Anzahl von Bits in Schieberegister zu übertragen, reichen nur zwei Pins.

MfG

Majuz
20.11.2009, 21:39
ja, aber durch Schieberegister wird der geschwindigkeitsvorteil der parallelen Ausgabe ja wieder zunichte gemacht. Dann kann man auch gleich den MAX 549 mit SPI nehmen.

Eine kleine Rechnung:
SPI geht bis 10MHz. Da man 16 Bits übertragen muss erreicht man mit ein paar Bits Reserve 500kHz. Bei 1/64 Schritt und einem Motor mit 200 Schritte/Umdrehung entspricht das ca. 39U/sec also etwa 2300U/min. So viel schafft wohl kein Schrittmotor. Wie viel erreicht denn ein guter Schrittmotor? Ich hab 3 von diesen hier (http://www.orientalmotor.de/de/sites/produkt_4.php?ida=3&idser=69&idpr=1209&sgid=128) (Das Diagramm im Datenblatt geht bis 1000u/min).
Diese haben folgende Daten:
Schrittwinkel: 1,8°
Spannung: 3,4V
Strom: 2,8A.
Widerstand: 1,2 Ohm
Inductivität: 3,54mH
Rotorträgheit: 570gcm²
Haltemoment: 2,2Nm


Außerdem habe ich noch 3 Motoren die momentan mit meiner L297/L6203 Combi gesteuert werden.
Diese haben folgenden Daten:
Schrittwinkel: 1,8°
Spannung: 3,2V
Strom: 2,8A
Widerstand: 1,24Ohm
Inductivität: 5mH/Phase
Rotorträgheit: 480 gcm²
Haltemoment: 1,9Nm

(Welche sind denn davon besser?)

Nun ist allerdings die Frage wie schnell man den SPI mit Bascom (was anderes kann ich leider net) hinbekommt.

ManuelB
20.11.2009, 21:51
Also mixed Decay ist halt die Mischung aus fast und slow. Also Stromabbau erst langsam und dann schnell. Ist z.B. in den Datenblättern des Toshiba TB6560HQ dargestellt http://www.markusmechatronics.com/TB6560HQ_FG.pdf
Also Brücken hab ich auch die L6203 im Einsatz aber halt nur bis 1/8 Schritt. Mit mixed hab ich auch noch nichts gemacht. Ich hatte nur mal mit der L297/L6203 Kombi die Fast Decay im Halbschritt ausprobiert, was sich in doch recht ordentlicher Geräuschemission geäußert hat.
Müsste man aber ausprobieren. Ich habe den Stromregler derzeit aus Logikbausteinen aufgebaut aber noch slow Decay.

Bezüglich des Datenblattes
Das PWM-Signal auf den Enable wird bei Fast durch den L6506 generiert. Die Ports des µC (im Beispiel Px5 und Px6) brauchen dann nur High sein.

MfG
Manu

Peter1060
20.11.2009, 22:44
moin moin,

die TB6560HQ habe ich mir für ca. 8€/Stück bei mouser geordert. Dazu noch je 2 SMD 1W mit 0,25Ohm für 2A. Bin von dem IC begeistert.

MfG
Peter

ManuelB
20.11.2009, 22:49
Ich hab auch einige davon rumliegen. Sind nur etwas empfindlich auf die Spannungs Zu- und Abschaltung bezüglich Logik- und Motorspannung.

MfG
Manu

Besserwessi
20.11.2009, 23:40
Wenn man den Schrittmotor wirklich schnell bewegt, braucht man keine Mikroschritte mehr, und auch fast kein PWM mehr. Selbst wenn man dem L6506 oder so noch Mikroschritte vorgiebt kann der irgendwann nicht mehr folgen und erzeugt einfach nur noch Vollschritte.

So besonders schnell muß der DAC also nicht sein.

ManuelB
21.11.2009, 22:18
Jup, dem kann ich nur zustimmen. Es gibt auch einige Endstufen die bei höheren Geschwindigkeiten auf Vollschritt umschalten. Die Masse des Motors und des daran hängenden Systems sorgt bei höheren Drehzahlen für eine ausreichende Dämpfung, so dass man Mikroschritt nicht mehr benötigt. Außerdem wird es immer schwieriger den Strom gezielt abzubauen und die Sinusform aufrecht zu erhalten.

MfG
Manu

Peter1060
22.11.2009, 12:08
moin moin,

die Berechnung der Schrittzahl erfolgt auf Basis der Microschritte, ein Übergang zu Vollschritten wird problematisch. Der TB6560 liefert ein Signal MO, wenn eine Vollschrittposition erreicht wurde, danach müßte die Steuerung die Schrittzahl neu berechnen und auch noch eine eventuelle Bremsrampe berücksichtigen. Bei 3 Achsen muß das Ganze auch noch synchron sein.
Den TB6560 habe ich bisher mit max. 10KHz getaktet

MfG
Peter

ManuelB
22.11.2009, 16:06
Nicht unbedingt. Ich hab auch spaßeshalber eine Umschaltung in Vollschritt bei mir drin. Umschaltung erfolgt nur in Vollschrittpositionen. Bei Vollschritt mus der DAC aber nicht mehr mit neuen Werten geladen werden, es reicht wenn der Stromwert für Vollschritt gehalten wird. Intern im Controller kann man die Mikroschritte ja weiterzählen. Die Zeit für das Neuladen des DAC entfällt dann aber.

MfG
Manu

Majuz
22.11.2009, 23:25
ich hab mich jetzt für die Lösung mit externem DAC entschieden. Hab bei Maxim mal ein paar Samples geordert. Den Max549 gibt es bei Reichelt nur im µMax-Package. Scheint ziemlich klein zu sein. Kann man das noch von Hand löten? "Normale SO-Gehäuse" (z.B. SO18) hab ich schon gelötet und ging auch noch ganz gut...
Ich habe hier auch noch zwei Mega8, also probier ich dann mal etwas rum. L6203 und L6506 hab ich leider nicht mehr... gibts davon auch irgendwo samples? ;-)

EDIT: Hab jetzt mal auch bei ST paar samples geordert :-) bin mal gespannt ob die das schicken....Leider gabs vom L6203 keine samples:-(

ManuelB
23.11.2009, 05:43
Bislang hab ich die L6203 am "günstigsten" bei Reichelt gesehen. Samples weiß ich nicht wo oder ob es die gibt.
Das MSOP Gehäuse des MAX kann man noch von Hand löten. Am besten alle Beinchen mit Lötzinn benetzen und dann mit Entlötlitze vom überschüssigen Lot befreien. Die Leiterbahnen dürfen dann nur nicht zu dicht zusammen unter dem Gehäuse laufen, so das sich Schlüsse bilden können die man nicht sieht. Hat bislang einwandfrei geklappt.

MfG
Manu