PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] 5-Phasen Schrittotor Drehrichtungsfehler



sandro_nbg
13.11.2011, 01:15
Hallo,

ich arbeite gerade an einer Endstufe für 5-Phasen Schritmotoren. Als Treiber werden 5 x L6203 eingesetzt und von L6506 angesteuert. Das Schrittmuster generiert ein µController. Chopperfrequenz ist ca. 33kHz.

Maximale Drehzahl sind 500/min

Angesteuert wird das ganze von einem PC unter (realtime)Linux mit EMC2. Laut Test ca 7000ns Jitter.

Nun zu meinem Problem:

Der Motor dreht manchmal falsch herum, obwohl das Schrittmuster richtig sein sollte. Das Programm enthält momentan nur noch das Muster für eine Richtung! Und das Muster habe ich aus einem Datenblatt des Motorherstellers übernommen.

Momentan liegt der Motor auf meinem Schreibtisch. Ich habe aber das selbe Verhalten, unter Last, an dem Kreuztisch festgestellt an dem der Motor uhrsprünglich angebaut war.

Ich bin mit meinem Latein am Ende. Ich würde gerne verstehen was hier passiert. Leider habe ich kein Speicheroszi um mir das mal ganauer anzuschauen. Über Lösungsvorschläge wäre ich sehr dankbar.

ManuelB
13.11.2011, 08:16
Hallo,
kann man das Datenblatt mit dem Schrittmuster irgendwo einsehen?

MfG
Manu

Peter1060
13.11.2011, 10:31
moin moin,

in meiner kleinen Fräse habe ich 5Phasen Motore im Halbschrittbetrieb drin, keine Probleme mit der Drehrichtung.
Zeige mal die Ansteuersequenz...

MfG
Peter

sandro_nbg
13.11.2011, 12:33
Das ist die Tabelle die ich für das Programm benutzt habe.



//~schritt W1 W2 W3 W4 W5
//~ 20 S N S N N
//~ 1 S N S N -
//~ 2 S N S N S
//~ 3 - N S N S
//~ 4 N N S N S
//~ 5 N - S N S
//~ 6 N S S N S
//~ 7 N S - N S
//~ 8 N S N N S
//~ 9 N S N - S
//~ 10 N S N S S
//~ 11 N S N S -
//~ 12 N S N S N
//~ 13 - S N S N
//~ 14 S S N S N
//~ 15 S - N S N
//~ 16 S N N S N
//~ 17 S N - S N
//~ 18 S N S S N
//~ 19 S N S - N
//~ 20 S N S N N
//~ 1 S N S N -

ManuelB
13.11.2011, 14:07
Hat es eigendlich einen Grund, dass der Schritt 1 und 20 zweimal in der Tabelle stehen?

MfG
Manu

sandro_nbg
13.11.2011, 15:19
Das Programm ändert immer nur die Phase die notwendig ist. Und so konnte ich beim programmieren die notwendige Änderung besser erkennen.

Peter1060
13.11.2011, 17:32
ev. kurze Pikes in die falsche Richtung?
Seinerzeit habe ich die Ansteuerung in einen GAL gepackt:
;-------------------------------------------------------------------
;PALASM Design Description
;---------------------------------- Declaration Segment ------------
TITLE SM5P.PDS
PATTERN AREVISION 1.1
AUTHOR Peter
COMPANY privateDATE 15.11.2008
CHIP SM5P PAL22V10
;---------------------------------- PIN Declarations ---------------
DECLARATIONS
PIN 1 NC * *; VCC
PIN 2 NC * *; GND
PIN 3 NC * *; GND
PIN 4 NC * *; GND
PIN 5 A4 * *; INPUT MC ADR
PIN 6 A3 * *; INPUT MC ADR
PIN 7 A2 * *; INPUT MC ADR
PIN 8 A1 * *; INPUT MC ADR
PIN 9 A0 * *; INPUT MC ADR Halbschritt
PIN 10 NC * *; GND
PIN 11 NC * *; GND
PIN 12 GND
PIN 13 CC * *; INPUT Stromregler, L=On H=Off
PIN 14 MEL * *; OUTPUT
PIN 15 MEH * *; OUTPUT
PIN 16 MDL * *; OUTPUT
PIN 17 MDH * *; OUTPUT
PIN 18 MCL * *; OUTPUT
PIN 19 MCH * *; OUTPUT
PIN 20 MBL * *; OUTPUT
PIN 21 MBH * *; OUTPUT
PIN 22 MAL * *; OUTPUT
PIN 23 MAH * *; OUTPUT
PIN 24 VCC
SIGNATURE = SM5P
;---Decoderdeclaration-------------------------------------------
; 5Bit Dezimaldecoder
STRING Z00 '( /A0 * /A1 * /A2 * /A3 * /A4 )'
STRING Z01 '( A0 * /A1 * /A2 * /A3 * /A4 )'
STRING Z02 '( /A0 * A1 * /A2 * /A3 * /A4 )'
STRING Z03 '( A0 * A1 * /A2 * /A3 * /A4 )'
STRING Z04 '( /A0 * /A1 * A2 * /A3 * /A4 )'
STRING Z05 '( A0 * /A1 * A2 * /A3 * /A4 )'
STRING Z06 '( /A0 * A1 * A2 * /A3 * /A4 )
'STRING Z07 '( A0 * A1 * A2 * /A3 * /A4 )'
STRING Z08 '( /A0 * /A1 * /A2 * A3 * /A4 )'
STRING Z09 '( A0 * /A1 * /A2 * A3 * /A4 )'
STRING Z10 '( /A0 * A1 * /A2 * A3 * /A4 )'
STRING Z11 '( A0 * A1 * /A2 * A3 * /A4 )'
STRING Z12 '( /A0 * /A1 * A2 * A3 * /A4 )'
STRING Z13 '( A0 * /A1 * A2 * A3 * /A4 )'
STRING Z14 '( /A0 * A1 * A2 * A3 * /A4 )'
STRING Z15 '( A0 * A1 * A2 * A3 * /A4 )'
STRING Z16 '( /A0 * /A1 * /A2 * /A3 * A4 )'
STRING Z17 '( A0 * /A1 * /A2 * /A3 * A4 )'
STRING Z18 '( /A0 * A1 * /A2 * /A3 * A4 )'
STRING Z19 '( A0 * A1 * /A2 * /A3 * A4 )'
STRING Z20 '( /A0 * /A1 * A2 * /A3 * A4 )'
;---------------------------------Doc-------------------------------
;Def: N -> GND *MxH=L MxL=L
; * * * P -> 12P * MxH=H MxL=H
; * * * X -> OFF *MxH=L MxL=H;
;Step A B C D E
; 0 ** *X X X X X * *nur nach RESET
; 1 * * X X N X P
; 2 * * P X N X P
; 3 * * P X N X X
; 4 * * P X N N X
; 5 * * P X X N X
; 6 * * P P X N X
; 7 * * X P X N X
; 8 * * X P X N N
; 9 * * X P X X N
;10 * *X P P X N
;11 * *X X P X N
;12 * *N X P X N
;13 * *N X P X X
;14 * *N X P P X
;15 * *N X X P X
;16 * *N N X P X
;17 * *X N X P X
;18 * *X N X P P
;19 * *X N X X P
;20 * *X N N X P
;----------------------------------- Boolean Equation Segment ------
EQUATIONS
;Der ICL7667 invertiert das Signal...
;High-Seite decodieren,H wenn P & (I<xA)*
MAH = (Z02 + Z03 + Z04 + Z05 + Z06) * /CC*
MBH = (Z06 + Z07 + Z08 + Z09 + Z10) * /CC*
MCH = (Z10 + Z11 + Z12 + Z13 + Z14) * /CC*
MDH = (Z14 + Z15 + Z16 + Z17 + Z18) * /CC*
MEH = (Z18 + Z19 + Z20 + Z01 + Z02) * /CC*

;Low-Seite decodieren, L-Aktiv bei N
/MAL = Z12 + Z13 + Z14 + Z15 + Z16
/MBL = Z16 + Z17 + Z18 + Z19 + Z20
/MCL = Z20 + Z01 + Z02 + Z03 + Z04
/MDL = Z04 + Z05 + Z06 + Z07 + Z08
/MEL = Z08 + Z09 + Z10 + Z11 + Z12

sandro_nbg
13.11.2011, 20:53
Den Link zum Datenblatt musste ich noch raussuchen.
Hier ist er http://berger-positec.at/files/5_mot-rdm_d-ds350d.pdf

Peter1060,
wenn ich das richtig verstehe benutzt du eine andere Sequenz als ich. Bei dir sind maximal 3 Wicklungen bestromt. Bei mir sind es 4 im Vollschritt und 5 im Zwischenschritt. Vieleicht kommt es daher das du keine Probleme hast.

sandro_nbg
13.11.2011, 22:38
Peter1060,
testweise habe ich jetzt mal deine Sequenz implementiert. Der Motor dreht immer in die richtige Richtung. Aber leider ist das Drehmoment auf diese Art eher bescheiden.

Leder ist das für mich noch nicht die Lösung meines Problems. Ein möglichst hohes Drehmoment ist wichtig in meiner Anwendung.

ManuelB
14.11.2011, 04:55
Ach, die Berger Lahr ;)
Von den Dingern hab ich auch noch welche rumliegen. Ich bin aufgrund des Ansteueraufwandes aber lieber auf 2 Phasen umgestiegen.

MfG
Manu

ManuelB
14.11.2011, 18:57
Also nach dem was ich zurzeit überall gefunden habe und ich mich nicht verguckt habe sollte die Sequenz richtig sein. Tritt das Ändernd der Drehrichtung auch im Vollschritt auf?
Vielleicht liegt es ansonsten doch am Aufruf der Tabelle/Werte. Bei meiner 2 Phasen Endstufe bin ich einfach über Increment und Decrement die Tabelle abgegangen und am Tabellenende einfach wieder zum Anfang gesprungen. Deswegen fragte ich auch nach der doppelten 1 und 20.

MfG
Manu

sandro_nbg
14.11.2011, 22:46
Ja, im Vollschritt habe ich das gleiche Problem.
Ich benutze keine Tabelle. Im Programm wird einfach nur geändert was notwendig ist und dann wartet er auf einen neuen Schritt. Bei Schritt 20 gibt es einen Sprung nach vorne. Ich habe es extra so einfach wie möglich programmiert. Da kann fast kein Fehler drin sein. Im Halbschritt kann eigentlich auch kein Peak auftreten, da immer nur eine Phase geändert wird. Wird sie bestromt war sie davor aus. Ich setze erst das Richtungsmuster und danach aktiviere ich die Brücke.

sandro_nbg
15.11.2011, 22:59
Hat sich erledigt.
Es war ein Fehler auf der Platine.

Danke für die Hilfe.