watterott ;title =
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 25 von 25

Thema: Schrittmotorsteuerung zuckt

  1. #21
    Kabelträger
    Registriert seit
    04.11.2016
    Beiträge
    12
    Hallo Norbert,
    zwei SAchen sind mir aufgefallen:
    -der A3967 ist für die Ansteuerung von bipolaren Stepper Motoren gedacht,
    du verwendest aber unipolare! Das fließen unvermeidliche Querströme über die gemeinsame Mittelanzapfung, welche zu unkonventionellen Reaktionen führen können. Das mag bei Referenzfahrten kein Problem sein da der Motor solange angesteuert wird bis der entspr. Sensor ein Stopp veranlasst.
    -Du parkst den Controller gern in Endlosschleifen:
    Do
    Loop Until......

    da kommt er nur durch interrupt raus und auch nur wenn in der isr die Abbruchbedingung erfüllt wird. Ich meine eine etwas ...befremdliche vorgehensweise
    Normalerweise stehen zwischen Do und Loop until Anweisungen die irgendwann die Abbruchbedingung erfüllen oder es erfolgt ein exit.
    Gruß
    Chris

    -

  2. #22
    Kabelträger
    Registriert seit
    16.12.2016
    Beiträge
    18
    Moin,

    Die PWM ist für die (spätere) Ansteuerung von zwei Reglern gedacht (die die SPJ antreiben). Das hat erstmal nichts mit der Steuerung der Stepper zu tun.

    Chris:
    Auf den ersten Blick magst Du Recht haben aber ich mache nur Vollschrittbetrieb, damit sollte das kein Problem sein. Halbschritt oder feiner geht allerdings nicht, da hast Du Recht.
    Und wie gesagt, ich kann den Motor ununterbrochen hin- und herfahren lassen - kein Problem. Erst wenn die Positionsregelung ins Spiel kommt, fängt es an zu spinnen.

    Du meinst sowas wie
    Do
    Loop Until Stepdone = 1 'Update every 1ms @ 1kHz

    Die Abbruchbedingung ist eben Stepdone = 1 und die wird in der Step_isr alle 1ms gesetzt.
    Das ist der Int Oc2a und das Ding läuft im Dauerbetrieb.

    Gruß,
    Norbert
    Geändert von sonero (20.12.2016 um 10:53 Uhr)

  3. #23
    Platinenputzer
    Registriert seit
    02.11.2016
    Ort
    09481
    Alter
    60
    Beiträge
    52
    150 mA Stromeinstellung ist definitiv zu wenig.Dies ist ein Grund für Ruckeln und zugeln.Der A3967 ist grunsätzlich für bipolare Schrittmotore entwickelt worden.
    Siehe #21 Meine 12V Schrittmotore vom gleichen Typ funktionieren nicht im Vollschrittbetrieb ,ich habe aber keine Pobleme mit Halbschrittbetrieb.Die stromaufnahme bei 5 Volt Typen und geringer Last liegt bei min 350mA.Im Anschluß erfolgt noch ein Beispielprogramm. Irgendwer hat diese Motore auch schon auf Bipolar umgebaut,war aber eine ziemliche Friemelei,Mittelanzapfung der
    Spulen auftrennen.Einfach mal Googeln.
    Geändert von ftelektro (20.12.2016 um 13:07 Uhr)

  4. #24
    Platinenputzer
    Registriert seit
    02.11.2016
    Ort
    09481
    Alter
    60
    Beiträge
    52
    Beispielprogramm:
    Code:
    'Kette,Koenige,Hirtenantrieb mit Schrittmotor 28BYJ-48  12V 1Umdrehung = 4096 Schritte
    'Portd.6 = Schrittimpulse zum Zähler
    'Portd,5-Portd.2 = Schrittsteuerung Motor
    
    
    $regfile = "attiny2313.dat"
    $crystal = 8000000
    $hwstack = 40
    $swstack = 40
    $framesize = 40
    
    
    Config Porta.0 = Output
    Config Porta.1 = Output
    Config Porta.2 = Output
    Porta.0 = 0
    Porta.1 = 0
    Porta.2 = 0
    
    Config Portd.2 = Output
    Config Portd.3 = Output
    Config Portd.4 = Output
    Config Portd.5 = Output
    
    Config Pinb.0 = Input
    Config Pinb.1 = Input
    Config Pinb.2 = Input
    Config Pinb.3 = Input
    Config Pinb.4 = Input
    Config Pinb.5 = Input
    Config Pinb.6 = Input
    Config Pinb.7 = Input
    
    Portb.0 = 1
    Portb.1 = 1
    Portb.2 = 1
    Portb.3 = 1
    Portb.4 = 1
    Portb.5 = 1
    Portb.6 = 1
    Portb.7 = 1
    
    Dim A As Byte
    Dim B As Word
    
    A = 1
    
    Do
       Porta.0 = 0
       Porta.1 = 0
       Porta.2 = 0
      'Kette Schrittweise vor
       If Pinb.7 = 0 Then Gosub Evor
    'Kette Schrittweise rueck
       If Pinb.6 = 0 Then Gosub Erueck
    'Kette vor
       If Pinb.5 = 0 Then Gosub Vor
    'Kette rueck
       If Pinb.4 = 0 Then Gosub Rueck
    'Könige Links
       If Pinb.3 = 0 Then Gosub Links
    'Könige Links1
       If Pinb.2 = 0 Then Gosub Links1
     'Könige Rechts
       If Pinb.1 = 0 Then Gosub Rechts
     'Hirten
       If Pinb.0 = 0 Then Gosub Hirten
    Loop
    End
    
    Drehen:
    'Tabelle Halbschrittsteuerung   PortD.5 zu PortD.2
       Select Case A
          Case 1 : Portd = &B00100000
          Case 2 : Portd = &B00110000
          Case 3 : Portd = &B00010000
          Case 4 : Portd = &B00011000
          Case 5 : Portd = &B00001000
          Case 6 : Portd = &B00001100
          Case 7 : Portd = &B00000100
          Case 8 : Portd = &B00100100
       End Select
    Return
    
    Evor:                                                       'Einzelschritte vorwärts
       Porta.1 = 1
       A = A + 1
       If A = 9 Then A = 1
       Gosub Drehen
       Portd.6 = 1
       Waitms 2
       Portd.6 = 0
       Portd = 0
       Porta.1 = 0
    Return
    
    Erueck:                                                     'Einzelschritte vorwärts
       Porta.1 = 1
       A = A - 1
       If A = 0 Then A = 8
       Gosub Drehen
       Portd.6 = 1
       Waitms 2
       Portd.6 = 0
       Portd = 0
       Porta.1 = 0
    Return
    
    Vor:
       Porta.1 = 1
       For B = 1 To 6050 Step 1
          A = A + 1
          If A = 9 Then A = 1
          Gosub Drehen
          Portd.6 = 1
          Waitus 3200
          Portd.6 = 0
       Next B
       Portd = 0
       Porta.1 = 0
    Return
    
    Rueck:
    
       Porta.1 = 1
       For B = 1 To 6050 Step 1
          A = A - 1
          If A = 0 Then A = 8
          Gosub Drehen
          Portd.6 = 1
          Waitus 3200
          Portd.6 = 0
       Next B
       Portd = 0
       Porta.1 = 0
    Return
    '______________________________________________________________________________
     'antrieb mit schrittmotor 3Könige
    '______________________________________________________________________________
    Links:
       Porta.2 = 1
       For B = 1 To 1024 Step 1
          A = A + 1
          If A = 9 Then A = 1
          Gosub Drehen
          Portd.6 = 1
          Waitus 5000
          Portd.6 = 0
       Next B
       Portd = 0
       Porta.2 = 0
    Return
    
    Links1:
       Porta.2 = 1
       For B = 1 To 1024 Step 1
          A = A + 1
          If A = 9 Then A = 1
          Gosub Drehen
          Portd.6 = 1
          Waitus 5000
          Portd.6 = 0
       Next B
       Portd = 0
       Porta.2 = 0
    Return
    
    Rechts:
       Porta.2 = 1
       For B = 1 To 2048 Step 1
          A = A - 1
          If A = 0 Then A = 8
          Gosub Drehen
          Portd.6 = 1
          Waitms 1
          Portd.6 = 0
       Next B
       Portd = 0
       Porta.2 = 0
    Return
    '______________________________________________________________________________
       'Hirtenantrieb mit Schrittmotor 28BYJ-48  12V 1Umdrehung = 4096 Schritte
    '______________________________________________________________________________
    Hirten:
    
       Porta.0 = 1
       For B = 1 To 900 Step 1
          A = A - 1
          If A = 0 Then A = 8
          Gosub Drehen
          Portd.6 = 1
          Waitms 3
          Portd.6 = 0
       Next B
       Portd = 0
       Wait 3
       For B = 1 To 900 Step 1
          A = A + 1
          If A = 9 Then A = 1
          Gosub Drehen
          Portd.6 = 1
          Waitms 8
          Portd.6 = 0
       Next B
       Portd = 0
       Porta.0 = 0
    Return

  5. #25
    Kabelträger
    Registriert seit
    16.12.2016
    Beiträge
    18
    Moin ftelektro,

    Man betreibt Schrittmotoren ja auch nicht mit der Nennspannung. Die 5V Version hat schon 50 Ohm Spulenwiderstand und beim Schalten fliessen da noch weniger als die 100mA.
    Ich betreibe die Dinger mit 12V und 150mA im Vollschritt und verdammt das läuft doch!
    Nach wenigen Minuten Dauerbetrieb wird das Ding auch gut warm, der Strom passt.

    Das ist die Rechnerei für die Position. Ich kommentiere jetzt mal aus und teste den Kram einzeln per Uart.

    Gruß,
    Norbert

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •