PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (Unter-)Projekt Schrittmotor-Controller



MeckPommER
31.05.2009, 00:24
Da ich Schrittmotoren u.a. auch für Marvin einsetzen möchte, habe ich ein Controllersystem entwickelt. Rahmenbedingungen für diese Entwicklung waren folgende:

- Die Stepperansteuerung muss preiswert sein, da viele Controller hergestellt werden müssen.
- Die Controller müssen leicht sein, da Marvin die Controller im Körper bzw. auf den Beinen zu sitzen hat, also keine schweren Kühlkörper.
- Die Ansteuerung der Controller darf keinen hohen Traffic auf dem Datenbus hervorrufen
- Die Controller müssen mit Marvins Datenbus ansprechbar sein
- Die Controller müssen in Hard und Software identisch sein um die Herstellung und Wartung zu erleichtern
- Die Controller müssen bis 1A liefern können.
- Für Mechaniken in denen mehrere Schrittmotoren für eine Bewegung zuständig sind, müssen die Steppermotoren absolut synchron betrieben werden können.
- Die Controller müssen die Motoren mit variabler Leistung ansteuern können.

Meine Lösung:
Ein Interface-Controller zwischen Marvins Bussystem und dem Stepperbus wandelt Marvins Befehle in Steuerbefehle für die einzelnen Schrittmotorcontroller um.
Die einzelnen Schrittmotor-Einheiten unterscheiden sich nur durch eine Geräteadresse im EEPROM.
Komplexe Bewegungsabläufe werden vom Interface-Controller nacheinander zu den einzelnen Schrittmotor-Controllern geschickt und in einem Ringbuffer abgelegt. Diese Daten bestehen aus einer Zielposition, der Zeit in der diese Position zu erreichen ist und der Stromstärke für den Schrittmotor in dieser Bewegungsphase.
Nachdem alle Daten übertragen wurden (was ja nicht auf Marvins Bus sondern getrennt auf dem Stepperbus in hoher Geschwindigkeit erfolgen kann), wird die komplette Befehlssequenz (bis zu 128 Einzelbewegungen je Motor) auf ein Befehl des Interface-Controllers hin ausgeführt.
Die komplette Schrittmotorsteuerung erfolgt durch eine timergesteuerte ISR, welche in Assembler geschrieben wurde. Die Routine zum Datentransfer zwischen den Modulen sind ebenfalls in Assembler. Der Rest ist Basic (Bascom).
Die Hardware besteht aus je zwei TEA3718 Treiberstufen und einem Atmega644 da ich von diesen DIL-Atmegas noch einige übrig hatte.
Den Nachteil des größeren Platzbedarf habe ich dadurch ausgeglichen, das ich einiges an Elektronik unter dem Atmega untergebracht habe.

http://www.youtube.com/watch?v=nUkDDkwh4Ak

Gruß MeckPommER

P.S.: mein Schrittmotor-Geschwindigkeitstest -> http://www.youtube.com/watch?v=YAWUDQny_qM

Sven04
31.05.2009, 09:58
Sieht net schlecht aus.

1A Arbeit. Was haben die Schrittmotoren für eine Stellkraft?


Gruß,
Sven

daniel.weber
31.05.2009, 10:18
hey sehr cool, endlich mal wieder was neues von meinem Lieblings-Hexa-Projekt.

Bin auch total begeistert von Schrittmotoren und ich verstehe nicht warum man unbedingt Servos nehmen muss, da die doch viel teurer sind. Ok die Ansteuerung mag einfacher sein aber dennoch mit Schrittmotoren hat man viel mehr Möglichkeiten :)

Hab noch ein paar Fragen, verwendest du den Standardaufbau, also 2 TEA3718 pro Endstufe? Wie sieht dann die Ansteuerung vom Controller aus? Laut Datenblatt sehe ich da 6 Eingänge.

Wie warm werden die TEAs bei Volllast? Mit 1A bist du ja noch nicht am Leistungsmaxima von 1,5A.

Es gibt die TEAs auch in SO-20 Gehäusen, vielleicht sparen die so noch ein wenig Platz.

@sven
Die haben 8Ncm

MeckPommER
31.05.2009, 10:34
@sven04: Die Schrittmotoren haben ca. 22Ncm. Nicht viel, aber für meine Zwecke über Getriebe völlig ausreichend.

@daniel.weber: wenn man gute Schrittmotore nimmt und bedenkt, was die Elektronik drumherum kostet, sind Schrittmotore nicht wirklich billiger, glaube ich ;-) Servos sind halt um einiges einfacher in der Anwendung, da man sich über Anfangspositionen etc. keine Gedanken machen muss.
Ja, ich nehme den Standardaufbau mit 2 TEA3718. Die Ansteuerung erfolgt per 6 Leitungen auf Logik-Niveau und variablem VRef über PWM von Controller.
Was das Leistungsmaxima angeht ... da fangen die 3718 wohl schon an zu dampfen ;-) Maximallast in meiner Schaltung liegt bei 750mA und dann sind die Regler etwas über handwarm.

Da ich noch am Experimentieren bin, wollte ich die ICs im DIL-Gehäuse verwenden um sie in IC-Sockeln zu betreiben und ggf. auch in späteren veränderten Schaltungen einsetzen zu können.

Gruß MeckPommER

ikarus_177
31.05.2009, 11:50
Hi ;-)

wirklich toll und sauber aufgebaut, meine Hochachtung!

Möchtest du alle Servos durch Schrittmotoren ersetzen? Das wäre ja ein ziemlicher Hardwareaufwand, wenn ich mir die 18 Reglerkarten vorstelle. Die brauchen ja dann auch einiges an Platz...

Welche Spannung benötigen denn die Stepper? Bei den 30V aus dem Speedtest - Video bräuchte man schon eine eigene Versorgung, da wirds mit Akkus alleine etwas eng, oder irre ich mich da?

Viele Grüße
ikarus_177

MeckPommER
31.05.2009, 11:56
Nein, es werden nicht alle Schrittmotore ersetzt ... mal gucken, bin ja noch in der Entwicklungsphase ;-)
Mit Akkus ist das kein Problem, es wird ein 8s1p LiPo-Akku werden, und Marvin V4 wird ja auch um einiges größer wegen des Platzbedarfs der Mechanik und Elektronik. Die meisten Treiberplatinen verschwinden dann auch in den Beinen.
Gruß MeckPommER

daniel.weber
31.05.2009, 12:20
wie muss so eine Ansteuerung vom Controller aussehen? ist das ein 6Bit Muster oder wie kann man sich das vorstellen?
Das Datenblatt gibt da nicht wirklich auskunft drüber oder ich bin wieder einmal blind :)
Woher hast du die Motoren und was haben die gekostet?

Fragen über Fragen :)

Bammel
31.05.2009, 12:51
hi... die idee finde ich genial!!!!

nur wirst du trotzdem ein poti oder ähnliches mit anbringen um die aktuelle position zu erfassen?
denn wenn du die haltkraft der stepper überschreitest kann er sehr schnell schritte verlieren. wäre für deine weiteren berechnungen fatal!

gruß bammel

MeckPommER
31.05.2009, 13:08
@daniel.weber: je Treiberbaustein sind es 2 Bit für die Stromstärke (I0 und I1 im Datenblatt) und ein Bit für die Stromrichtung. Daraus ergibt sich bei 2 Treibern - wie du schon richtig sagst - ein 6-Bit Muster.

Die Motoren habe ich von der Bucht für ca. 4 Euro/Stück - sind meilenweit besser und stärker als die von Pollin und dabei auch leichter.

@Bammel: Es wird kein Poti verbaut sondern eine Reflex-Lichtschranke, die an der Welle die Bewegungen der Achse kontrolliert. Schrittverlust wäre in der Tat fatal.

Gruß MeckPommER

BlackDevil
31.05.2009, 15:26
Sieht sehr hübsch aus :) Aber doch eine riesen Platine ... Was für Busse verwendest du? ATmega als Gateway? Gefällt mir!

Schrittmotoren sind zwar Cool, brauchen aber mehr Platz als Servos (oder sind in der größe sehr teuer 9

MeckPommER
31.05.2009, 15:35
Jo ... erstmal sind das Platinen, die zwar Marvin-Kompatibel sind, aber hauptsächlich wohl in anderen Projekten Anwendung finden werden. Bei den endgültigen Marvinplatinen wird dann um jeden Gramm gefeilt ;-)

Marvins Bus ist ein selbstgestrickter Paralleler Bus aus 2 x 8 Leitungen.

Bammel
31.05.2009, 18:35
aber bei einer reflex-lichtschranke hast du doch das problem das du keine relative position erfassen kannst. was ich damit sagen will du musst es jedes mal am anfang "nullen" quasie an einen endanschlag fahren.

MeckPommER
31.05.2009, 19:13
Entweder Nullen oder die Position im EEPROM sichern. Ich bin da aber eher fürs Nullen.

Bammel
31.05.2009, 19:39
muss genullt werden! im eeprom bringt dir nichts den im stromlosen zustand könnten ja die positionen verändert werden das würde dann auch nicht mehr mit der info aus dem eeprom übereinstimmen

MeckPommER
31.05.2009, 20:11
Mit Schneckengetriebe ändert sich im stromlosen Zustand nichts, deshalb habe ich diese Getriebeart vorgesehen.

kalletronic
31.05.2009, 20:11
Hi, kannst du vllt den schaltplan reinstellen, wäre echt super.

MeckPommER
31.05.2009, 20:46
Leider habe ich keine Schaltpläne - es geht immer gleich vom Datenblatt auf die Platine.

daniel.weber
01.06.2009, 12:20
Hi, kannst du vllt den schaltplan reinstellen, wäre echt super.

die Grundschaltung findest du auch in den Datenblätter der TEAs.

Bammel
01.06.2009, 14:43
hi,

schneckengetriebe is natürich was feines! wird es dann den noch schnell genug sein? den nen stepper verliert ja bei hohen drehzahlen an moment! das ist ja anders als bei nem elekromotor.

in dem fall würde ich die position doch im eeprom abspeichern. aber trotzdem was zum nullen vorsehen.

gruß bammel