Forum: Mikrocontroller und Digitale Elektronik Problem mit schrittmotorsteuerung


von Silvan (Gast)


Angehängte Dateien:

Lesenswert?

Hi zusammen
Ich bin gerade dabei eine Schrittmotorsteuerung in Betrieb zu nehmen, 
leider läuft das ganze nicht so richtig
Das Problem ist, dass sich der unipolare Schrittmotor immer einen 
Schritt vorwärts bewegt und wieder ein Schritt Rückwärts
Folgender Quellcode
1
Sub Drehung(byval Tangle As Word)
2
   Local I As Integer
3
   Local Stp As Integer
4
   If Tangle > Rangle Then
5
      Stp = 1
6
   Else
7
      Stp = -1
8
      Tangle = Tangle - Stp
9
   End If
10
   For I = Rangle To Tangle Step Stp
11
    A1 = 1
12
    A2 = 0
13
    Wait 1
14
    B2 = 0
15
    B1 = 1
16
    Wait 1
17
    A1 = 0
18
    A2 = 1
19
    Wait 1
20
    B1 = 0
21
    B2 = 1
22
    Wait 1
23
    Rangle = Rangle + Stp
24
   Next
25
End Sub

Rangle und Tangle sind Start- (=4000) und Zielschrittnummer (=2000), das 
ist aber unwichtig.
Wichtig ist dasjenige zwischen den For schleifen.
A1 A2=A-strich, B1 B2(=B=strich) sind angeschlossen wie auf dem 
Dateianhang
Ich hoffe dass jemand hier das Problem erkennt
Mfg Silvan

von Purzel (Gast)


Lesenswert?

Naja. Die 4 Wicklungen werden falsch angesteuert sein. Ich wuerd die mal 
permutieren. Allenfalls mit dem Scope nachmessen.

von Reinhard Kern (Gast)


Lesenswert?

Silvan schrieb:
> Wichtig ist dasjenige zwischen den For schleifen.

Eigentlich kann der Stepper nur in eine Richtung laufen, weil der Ablauf 
in der For-Schleife ja immer der gleiche ist. Zur Umkehr müsste die 
Schleife von unten nach oben durchlaufen werden. Der Befehl zum 
Abschalten eines Strangs sollte immer zuerst kommen, damit nicht 2 
gegenläufige Stränge gleichzeitig an sind.

Gruss Reinhard

von Silvan (Gast)


Lesenswert?

Hi zusammen
mir geht es nicht darum, dass er nur in eine richtung dreht, das stellt 
kein problem dar, wenn dieses problem gelöst ist, auch die Anschlüsse 
wurden schon getauscht.

Das Problem ist, er dreht sich einen schritt vorwärts und dann wieder 
ein schritt zurück

von Reinhard Kern (Gast)


Lesenswert?

Silvan schrieb:
> Das Problem ist, er dreht sich einen schritt vorwärts und dann wieder
> ein schritt zurück

Soweit ich das aus deiner For-Schleife ersehen kann, ist es nicht so - 
wahrscheinlich sind hardwareseitig Anschlüsse vertauscht.

Gruss Reinhard

von Karl H. (kbuchegg)


Lesenswert?

Silvan schrieb:
> Hi zusammen
> mir geht es nicht darum, dass er nur in eine richtung dreht, das stellt
> kein problem dar, wenn dieses problem gelöst ist, auch die Anschlüsse
> wurden schon getauscht.
>
> Das Problem ist, er dreht sich einen schritt vorwärts und dann wieder
> ein schritt zurück


Nimm die Anschlüsse vom µC weg.

Und dann bestromst du erst mal einen (einfach Draht an Stromquelle 
halten). Der Motor wird einen Satz machen und sich in eine Stellung 
drehen. Beschrifte den Draht mit 1   (aus Klebeband eine Fahne 
rumkleben, und 1 drauf schreiben)

Dann probierst du einen der anderen 3 Anschlüsse aus. Du suchst den 
Draht, bei dem der Motor den kleinsten Schritt in eine Richtung macht. 
Einer von den 3 muss es sein. Mit einem der anderen macht der Motor 
einen Schritt in die entgegengesetzte Richtung und mit dem 3.ten macht 
er einen großen Schritt (wenn überhaupt). Du brauchst den, bei dem der 
Motor einen kleinen Schritt in eine RIchtung macht (die Richtung kannst 
du dir aussuchen, zb im Uhrzeiger). Es hilft auch, sich mit Klebeband 
eine kleine Fahne an die Motorachse zu kleben, dann sieht man die 
Bewegung besser.

Zwischen deinen Versuchen stellst du den Schrittmotor immer wieder mit 
Draht 1 'auf 0 zurück'. Denn du suchst ja den Draht, bei dem der Motor 
aus 1 heraus einen SChritt macht. Also muss der auch bei JEDEM Versuch 
in Position 1 sein.

Den so gefundenen Draht, bei dem der Motor einen kleinen Schritt zb im 
Uhrzeiger macht, nennst du 2. (Fahne auf den Draht und 2 draufschreiben)

Von den restlichen beiden Drähten suchst du wieder den raus, bei dem der 
Motor einen kleinen Schritt im Uhrzeiger macht. Wenn du den falsch 
erwischt, dann zurück zu Position 'Draht 2'.

Damit hast du Draht 3 gefunden

und der der übrig bleibt, ist Draht 4



Wenn du also die 4 Drähte in der Reihenfolge

   1
   2
   3
   4

jeweils an deine Stromquelle hältst, muss der Motor immer einen kleinen 
Schritt im Uhrzeiger machen. Und wenn du dann wieder bei 1 anfängst, 
geht die Drehung weiter.

Nachdem du die Drähte identifiziert hast, schliesst du sie wieder an 
deinen µC an, und steuerst sie in genau der gleichen Reihenfolge vom µC 
aus an. Dann muss der Motor auch drehen, denn der weiß ja nicht ob du 
oder dein µC die Anschlüsse bestromt. Wenn nicht, dann hast du einen 
Fehler im Programm. Da du aber weißt, in welcher Reihenfolge die 
Ausgänge eigentlich geschaltet werden sollten, kannst du das (bei ganz 
langsam laufendem Programm, viele Verzögerungen) auch zb mit einem 
Voltmeter an den Ausgängen nachvollziehen, welche Reihenfolge eigentlich 
sein sollte und welche Reihenfolge tatsächlich vorliegt.


Ist doch nicht so schwer. Mit ein bischen logischem Nachdenken und 
Fantasie und Improvisieren kriegt man auch solche Dinge raus. Nur muss 
man eben systematisch vorgehen und nicht einfach nur drauflos irgendwie 
irgendwo irgendwas.

Und auch wenn sich das jetzt aufwändig anhört, es geht schneller als du 
glaubst. Auf jeden Fall viel schneller als von gestern abend 21:00 bis 
jetzt 18:00. In längstens 15 Minuten hast du "den Dreh raus".

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.