- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 8 von 8

Thema: Schrittmotor zeitpräzise steuern

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Geistesblitz
    Registriert seit
    16.03.2011
    Ort
    Dresden
    Alter
    37
    Beiträge
    1.937

    Schrittmotor zeitpräzise steuern

    Ich probiere in letzter Zeit mit Schrittmotorsteuerungen herum, allerdings bin ich mit dem jetzigen noch nicht so ganz zufrieden. Bisher Lasse ich einfach Schleifen laufen, in denen dann um einen konstanten Wert gewartet wird bevor der Port einen kurzen Impuls erhält. Allerdings addiert sich zu der eingestellten Wartezeit die kurze Rechenzeit für Schleife und Portsetzen. In diesem Fall ist das noch nicht ganz so problematisch, wenn man allerdings Rampenprofile oder inverse Kinematiken zwischendurch ausrechnen möchte beeinflusst das die Genauigkeit der Impulszeiten doch schon. Wie geht man das denn besser an? Ich versuche mich auch gerade, mit Timern und Interrupt einzulesen, allerdings weiß ich nicht, wie man sowas auf Schrittmotorprogramme anwenden kann. Erst recht weiß ich nicht, wie man mehrere Schrittmotoren unabhängig voneinander steuern kann. Es gibt doch sicherlich Leute hier, die sowas schonmal gemacht haben, oder?

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Genau für diese Aufgabe gibt es Timer und Interrupts. Über Timerinterrupts kann man Aufgaben zu recht genau definierten Zeiten Ausführen lassen. Insbesondere addieren sich dabei kleine Fehler nicht auf, weil die Zeit unabhängig per Hardware läuft. Damit kann man dann auch mehrere Motoren unabhängig laufen lassen.

    Ein mögliche Form wäre es die Schrittmotorsteuerung komplett den Interrupt zu verlegen. Für das Hauptprogramm kann das dann so aussehen als hätte man einen unabhängigen Controller für die Schrittmotoren, dem man nur noch sagen muss, wo der Motor hin soll, und ggf. wie schnell. Nach jedem Schritt wird die Zeit für den nächsten Schritt berechnet und der Timer (als eine Art Wecker) entsprechend gesetzt das dann der nächste Interrupts auftritt. Auch werden die schon gemachten Schritte mit gezählt um zu sehen ob das Ziel schon erreicht ist.

    Richtig gemacht sollte dabei keine Warteschleife mehr auftreten und die Zeiten allein durch den Timer bestimmt werden.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Geistesblitz
    Registriert seit
    16.03.2011
    Ort
    Dresden
    Alter
    37
    Beiträge
    1.937
    Das hört sich wirklich nach dem an, was ich suche. Jetzt wäre es nur interessant zu wissen, wie sowas für die konkrete Problemstellung aussehen muss. Wo kann man denn Beispielskripte dazu ansehen (vorzugsweise in Bascom)? Und wie realisiert man eine Steuerung für mehrere Motoren? Mehrere Timer verwenden? Wobei, man hat ja nur 3 zur Verfügung...

  4. #4
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Man braucht nicht für jeden Motor einen eigenen Timer. Es reicht 1 Timer, der die ganze Zeit durch läuft und es wird nur das Output compare Register angepasst. Das entspricht in etwa der Weckzeit für einen Wecker. Man hat bei Timer 1 in der Regel 2 solcher Register. Für mehr Motoren wird es aber schon etwas aufwendiger.

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Geistesblitz
    Registriert seit
    16.03.2011
    Ort
    Dresden
    Alter
    37
    Beiträge
    1.937
    Ich bin jetzt gerade dabei, ein wenig mit dem Timer herum zu probieren, allerdings gibts da wohl noch ein paar Verständnisprobleme. Ich habe jetzt folgenden einfachen Code geschrieben:
    Code:
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 1000000
    $baud = 9600
    
    
    Config Portc.1 = Output
    Config Timer1 = Timer , Prescale = 256
    Enable Timer1
    On Timer1 Led
    Enable Interrupts
    
    Led:
    Toggle Portc.1
    Timer1 = 34215
    Return
    Eigentlich müsste die LED etwa alle 16 Sekunden an/aus gehen, stattdessen flackert sie aber nur ziemlich schnell...was mache ich falsch?

  6. #6
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Es fehlt irgendwie noch ein Hauptprogramm. Da sollte einfach eine Endlosschleife rein, oder wenn man es ganz vornehm will, auch noch den µC in den Idel- Mode versetzen. Ich weiss nicht was Bascom am Ende des Programms macht, und wie der µC darauf dann reagiert. Das könnte aber die Ursache sein.

Ähnliche Themen

  1. schrittmotor steuern
    Von watermelon im Forum Software, Algorithmen und KI
    Antworten: 6
    Letzter Beitrag: 17.11.2010, 21:23
  2. Schrittmotor über Schrittmotor steuern?
    Von Tarribo im Forum Motoren
    Antworten: 1
    Letzter Beitrag: 06.06.2010, 23:40
  3. Schrittmotor mit LPT steuern
    Von timo1105 im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 11.11.2006, 12:40
  4. Schrittmotor von Hand steuern??
    Von heduobacht im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 31.08.2006, 18:07
  5. Schrittmotor mit PC steuern
    Von SK112 im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 08.01.2005, 09:23

Berechtigungen

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

LiFePO4 Speicher Test