Forum: Mikrocontroller und Digitale Elektronik I2C Motortreiber AMIS30624


von Cav P. (justcp213)


Lesenswert?

Hallo allerseits,



ich steuere im Moment eine Schrittmotor mittels eines I2C 
Schrittmotorentreibers ( AMIS 30624 Datenblatt: 
http://www.onsemi.com/pub_link/Collateral/AMIS-30624-D.PDF ) an für ein 
etwas größeres Projekt. Der Motor hat einen Schrittwinkel von 15° und 
ist zusätzlich noch mit einem Getriebe versehen welches eine 
Untersetzung von 900 hat.

Jetzt habe ich ein gaaaaanz großes Problem.
Ich kann ohne weiteres diesen Motor keine volle Umdrehung fahren lassen, 
da mir wahrscheinlich die Untersetzung einen Strich durch die Rechnung 
macht.

Wenn ich es richtig verstanden habe, kann ich mit dem Schrittmotor nur 
bestimmte Targets anfahren (S.17/18 Datenblatt). Wenn ich nun den Punkt 
32767 anfahre dreht sich ein herkömmlicher Schrittmotor ohne 
Untersetzung zig male, der jetzige jedoch vielleicht nur ca. 20°.

Any Ideas ? Habe ich evtl. etwas falsch verstanden im Datenblatt? Habe 
soweit alles durch. Ich dachte eher an eine Funktion, in der ich dem 
Treiber mitteilen kann das er z.B. 21600 Schritte für eine volle 
Umdrehung ausführen soll

(21600 weil ->360/( 15° Schrittwinkel_Motor * Untersetzung ( 1/900 ) ) )



Bin über jeden Tipp dankbar.

von Christian B. (luckyfu)


Lesenswert?

Schau mal in Tabelle 11 des Datenblattes. Dort steht, daß der Treiber 
+/- 2048 Vollschritte machen kann.

von Horst H. (horha)


Lesenswert?

Hallo,

wahrscheinlich nicht sehr hilfreich, weil der Motor wohl zum Stehen 
gebracht werden muss.Das wäre zu testen.
>ResetPosition
>This command is provided to the circuit by the I 2 C master
>to reset ActPos and TagPos registers to zero. This can be
>helpful to prepare for instance a relative positioning.
>ResetPosition corresponds to the following I 2 C command frame:

von Cav P. (justcp213)


Lesenswert?

Christian B. schrieb:
> Schau mal in Tabelle 11 des Datenblattes. Dort steht, daß der
> Treiber
> +/- 2048 Vollschritte machen kann.

Ja bei einem Herkömmlichen Motor (Schrittwinkel 1,8°) würde mich das auf 
ca. 10.24 Umdrehungen bringen.


Bei meinem Getriebemotor jedoch ca. 0.09 Umdrehungen also ca. 34.133 
Grad pro volle Umdrehung.



Zu Antwort 2:
Im Moment führe ich eine for-Schleife aus, welche permanent eine 
SetPosition auf 32768 ausführt und nach dieser fahrt gleich die Position 
zurücksetzt also ResetPosition. So habe ich nach 16 Durchgängen eine 
volle Umdrehung ( nach Augenmaß )

von Christian B. (luckyfu)


Lesenswert?

Aber mit Präzision hat das dann nicht mehr viel zu tun oder?
Leider kenne ich mich zu wenig damit aus, aber ich würde sagen: der 
Treiber ist für die Anwendung nicht geeignet. Evtl. gibt es einen 
geeigneteren? Auf jeden Fall gibt es Treiber die nur Takt und 
Richtungseingang haben und dann den Motor bewegen. Wenn du deine 
Steuerung entsprechend umprogrammieren kannst ist so etwas 
möglicherweise besser geeignet. (z.B.: A3987 von Allegro Mikrosystems)

: Bearbeitet durch User
von Cav P. (justcp213)


Lesenswert?

Ok werde mir mal diesen Treiber zulegen und schauen ob es funktioniert.

Egal wie ich es drehe und wende ich komme einfach nicht auf ein 
richtiges Ergebnis mit dem AMIS 30624.


Wenn ich eine 90° Drehung machen möchte,

führe ich den Treiber im Half Step Mode aus.
Das Positioning geht von -4096 <- 0 -> + 4095 (im Halbschrittmodus)
Also wenn ich die Position 4095 von null aus anfahre müssten das bei 
meiner Übersetzung 34.13° drehung ergeben. Das mache ich zwei mal und 
nun sollten mir ca 21,7 ° übrig bleiben... Das wären ungefähr 2600 
Halbschritte für den o.g. Motor

Meiner Rechnung zufolge inkl. 3er Bitshift und SignedBit = 1
wäre das ein Datenwort von 0xD1 und 0x40 oder löse ich das Datenwort 
einfach falsch auf ?

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.