- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 27 von 27

Thema: Schrittmotor: Wie viele Schritte pro Sekunde?

  1. #21
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.09.2009
    Beiträge
    164
    Anzeige

    Powerstation Test
    So, ich hoffe der Timer0 ist jetzt in Ordnung

    Allerdings dreht sich der Schrittmotor immer noch nicht.

    Wahrscheinlich ist die Frequenz zu hoch, sollte nach meinen Erkenntnissen z.Z. bei 62500 Hz liegen, oder? Laut einem Beitrag, ziemlich am Anfang meines Problems, sollte der Schrittmotor 200 Hz vertragen können, d.h. ich lasse den Timer0 von 62300 an zählen und habe somit eine Frequenz von 200 Hz. So meine Annahme, aber trotzdem dreht sich der Schrittmotor immer noch nichtL

    Was läuft falsch?

    Hier noch einmal das geänderte Programm:

    Code:
     ' Stepper Testprogram
     
    $prog , 255 , &B11011001,
    $regfile = "m2560def.dat"
    $hwstack = 82                                               '80
    $framesize = 68                                             ' 64
    $swstack = 68                                               '44
     
     
    $crystal = 16000000                                         'Quarzfrequenz
    $baud = 19200
     
     
    Config Pind.5 = Output
    Led Alias Portd.5
     
    Config Pinc.0 = Output                                      ' Stiftleiste JP 2; Pin 3; PC0
    Stepper1_reset Alias Portc.0
     
    Config Pinc.1 = Output                                      ' Stiftleiste JP 2; Pin 4; PC1
    Stepper1_direction Alias Portc.1
     
    Config Pinc.2 = Output                                      ' Stiftleiste JP 2, Pin 5; PC2
    Stepper1_enable Alias Pinc.2
     
    Config Pinc.3 = Output                                      ' Stiftleiste JP 2, Pin 6; PC3
    Stepper1_step Alias Pinc.3
     
    Dim I1 As Integer
     
     
    Echo Off
     
    Led = 0                                                     ' LED einschalten
     
    Stepper1_enable = 1                                         ' Stepper1 off
     
    I1 = 0
     
    Do
       Toggle Led
       Waitms 75
       I1 = I1 + 1
    Loop Until I1 = 20
     
    Wait 5
     
    Stepper1_direction = 1
    Stepper1_enable = 0                                         ' Stepper1 on
     
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Config Timer0 = Timer , Prescale = 256                      ' Stiftleiste JP 1; Pin 26
    Enable Timer0
    On Timer0 Timer_irq
    Enable Interrupts
    Timer0 = 62300
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
     
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
      Do
             Toggle Led
             Waitms 70
      Loop
     
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    End
     
    'Dies ist der Programmteil, der in dem von ihnen gewählten
    'Intervall aufgerufen wird
    Timer_irq:
    Timer0 = 62300.
    Stepper1_step = 0 : Waitus 1 : Stepper1_step = 1
    Return
    Hat jemand einen Tipp?

    Vielen Dank.

  2. #22
    Erfahrener Benutzer Robotik Einstein Avatar von Geistesblitz
    Registriert seit
    15.03.2011
    Ort
    Dresden
    Alter
    36
    Beiträge
    1.937
    Ich glaub, da hast du was durcheinandergebracht.
    Den Timer0 kannst du nur bis 255 einstellen, Timer1 geht bis 65535.
    Wenn du dann den Timer auf 62300 stellst, zählt er von da an bis 65535 und läuft dann über. Macht 3236 Zeiteinheiten. Bei 16Mhz Taktfrequenz hast du eine Taktzeit von 0,0625µs, multipliziert mit dem Prescaler ist eine Zeiteinheit des Timers 16µs. 3236*16µs ergibt einen Takt von 51,776ms, ergo eine Frequenz von eta 19,3 Hz. Eigentlich müsste der Schrittmotor damit schon langsam laufen. Ich schätze mal, wenn du Timer1 verwendest, sollte das laufen, vorrausgesetzt natürlich, du hast den Treiber richtig angeschlossen

  3. #23
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.09.2009
    Beiträge
    164
    Aha, gut. Dann stell ich morgen früh mal auf Timer1 um. Kannst du mir noch einmal erklären wie du auf folgende Werte kommst:
    Taktzeit 0,0625µs
    Zeiteinheit des Timers 16µs
    von 51,776 ms auf 19,3 Hz

    Vielen Dank für deine Mühe

  4. #24
    Erfahrener Benutzer Robotik Einstein Avatar von Geistesblitz
    Registriert seit
    15.03.2011
    Ort
    Dresden
    Alter
    36
    Beiträge
    1.937
    Controllertakt: 16000000 Hz -> 1/Takt=0,0625 µs
    0,0625 µs * 265 (Prescaler) = 16 µs
    Alternativ kannst du auch den Controllertakt durch den Prescaler Teilen und dann das Reziproke daraus bilden, kommt aufs selbe hinaus.

    1/51,776ms = 19,3 Hz

  5. #25
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.09.2009
    Beiträge
    164
    Vielen Dank!

    Ich habe den Timer1 eingebaut und jeweils ein 20 Hz und 200 Hz starkes Signal erzeugt.

    Leider dreht sich der Schrittmotor immer noch nicht

    Hier noch einmal das Programm mit 200 Hz, ein Fehler erkenn ich nicht. Wenn ich an dem Ausgangspin Pin 6 eine LED anschließe blinkt sie wunderbar.

    Code:
     ' Stepper Testprogram
     
    $prog , 255 , &B11011001,
    $regfile = "m2560def.dat"
    $hwstack = 82                                               '80
    $framesize = 68                                             ' 64
    $swstack = 68                                               '44
     
     
    $crystal = 16000000                                         'Quarzfrequenz
    $baud = 19200
     
     
    Config Pind.5 = Output
    Led Alias Portd.5
     
    Config Pinc.0 = Output                                      ' Stiftleiste JP 2; Pin 3; PC0
    Stepper1_reset Alias Portc.0
     
    Config Pinc.1 = Output                                      ' Stiftleiste JP 2; Pin 4; PC1
    Stepper1_direction Alias Portc.1
     
    Config Pinc.2 = Output                                      ' Stiftleiste JP 2, Pin 5; PC2
    Stepper1_enable Alias Pinc.2
     
    Config Pinc.3 = Output                                      ' Stiftleiste JP 2, Pin 6; PC3
    Stepper1_step Alias Pinc.3
     
    Dim I1 As Integer
     
     
    Echo Off
     
    Led = 0                                                     ' LED einschalten
     
    Stepper1_enable = 1                                         ' Stepper1 off
     
    I1 = 0
     
    Do
       Toggle Led
       Waitms 75
       I1 = I1 + 1
    Loop Until I1 = 20
     
    Wait 5
     
    Stepper1_direction = 1
    Stepper1_enable = 0                                         ' Stepper1 on
     
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Config Timer1 = Timer , Prescale = 64                       ' Stiftleiste JP 1; Pin 26
    Enable Timer1
    On Timer1 Timer_irq
    Enable Interrupts
    Timer1 = 64286
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
     
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
      Do
          Toggle Led
          Waitms 200
      Loop
     
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    End
     
    'Dies ist der Programmteil, der in dem von ihnen gewählten
    'Intervall aufgerufen wird
    Timer_irq:
    Timer1 = 64286.
    Stepper1_step = 0 : Waitus 1 : Stepper1_step = 1
    Return
    Sollte das Programm in Ordnung sein, kann der Fehler an folgender Stelle liegen:

    Falsche Frequenz bei der Schrittmotoransteuerung
    Falscher Kabelanschluss
    Defekt beim Schrittmotor
    Defekt beim Treiber

    Hat jemand noch einmal eine Idee, vielleicht hat jemand den gleichen Schrittmotor?
    Mercury Motor
    SM-42BYG011-25
    48/2011
    http://www.sparkfun.com/products/9238

  6. #26
    Erfahrener Benutzer Robotik Einstein Avatar von Geistesblitz
    Registriert seit
    15.03.2011
    Ort
    Dresden
    Alter
    36
    Beiträge
    1.937
    Hast du den Treiber schonmal getestet? Reicht ja ein einfacher Taktgeber für Step und ein Schalter für Direction. Dann kann man da schonmal die Fehler ausschließen.
    Outputs werden übrigens so konfiguriert:
    Config Portc.0 = Output
    aber
    Config Pinc.0 = Input
    So kann man da zumindest nichts falsch machen.
    Solche Sachen wie Stepper1_enable und Stepper1_reset würde ich erstmal auch aus dem Code nehmen, um es übersichtlicher zu halten. Zum Testen ist es dann meist einfacher, diese Anschlüsse mit Kabel auf High oder Low zu legen. Weißt du denn schon, welche Pegel an diesen Anschlüssen die Richtigen sind?
    An der Frequenz kann es jedenfalls nicht liegen. Wäre die zu hoch, würde er zumindest Geräusche machen.
    Ich kann wirklich nur raten, sich erstmal mit dem Treiber vertraut zu machen, bevor man mit dem µC da ran geht. Wenn man zu viel auf einmal macht, findet man die Stelle mit dem Problem nicht mehr so leicht. Musst versuchen, den Fehler systematisch einzukreisen.
    Jetzt, wo ich es sehe: Pin 6 ist das Äquivalent zu Stepper1_step, richtig? Wenn der richtig umgeschaltet wird, kann das Problem schonmal nicht da liegen. Ich tippe mal auf Reset (kommt das im Code überhaupt irgendwo vor, außer in der Definition?) oder Enable. Oder mal ne ganz banale Frage: Am Treiber ist auch die Leistugsversorgung angeschlossen?

  7. #27
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.07.2004
    Ort
    Mammendorf
    Alter
    67
    Beiträge
    1.062
    Übrigens, für wenig Geld gibt es die Platine StepRocker von Trinamic. Ich habe mich für Ics dieses deutschen fabless Herstellers entschieden. Mit der kostenlosen IDE kann man man sehr einfach testen, durch Eingabe der Schrittezahl. Lässt man also nur einen Schritt jeweils machen, so kann man die Pegel an den Leitungen zum Motor messen und so sehen ob man den Motor richtig versorgt. Die Platine ist so klein, dass ihr Einsatz auch als Alternative zu den Produkten von Robotikhardware.de gesehen werden kann, bzw. sollten die es ins Programm aufnehmen. Das Bauteil besitzt neben der Unterstützung von Mikroschritten auch Logik zur Erkennung von Schrittfehlern. Hier der Link bei Conrad.
    MfG

    Hellmut

Seite 3 von 3 ErsteErste 123

Ähnliche Themen

  1. Schrittmotor verliert Schritte
    Von DF8UZ im Forum Motoren
    Antworten: 4
    Letzter Beitrag: 26.10.2010, 20:01
  2. Schrittmotor verliert Schritte
    Von bcs im Forum Motoren
    Antworten: 2
    Letzter Beitrag: 07.08.2010, 17:45
  3. Einzelne Schritte mit Schrittmotor
    Von Timotor11 im Forum Motoren
    Antworten: 10
    Letzter Beitrag: 17.09.2009, 17:09
  4. Antworten: 4
    Letzter Beitrag: 26.09.2008, 08:39
  5. Wie viele Messungen maximal mit dem internen ADC pro Sekunde
    Von Florian im Forum AVR Hardwarethemen
    Antworten: 17
    Letzter Beitrag: 02.04.2005, 23:13

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress